【初心者】Java質問・相談スレッド75【大歓迎】
1 :
デフォルトの名無しさん :
2005/11/13(日) 14:48:57
今ここに宣言する!!! 「2ゲットズサー三三三三三⊂⌒⊃゚Д゚)⊃」
華麗に3ゲット
4 :
デフォルトの名無しさん :2005/11/13(日) 15:32:23
String型の文字列のn番目の文字を抽出することってできますか?
5 :
前スレ998 :2005/11/13(日) 15:33:09
前スレ1000ありがとうございます。 Javaを独学で学ぼうとしているものです。 独学でマスターするには ■ともかくプログラミングする環境を整える。Javaならば、開発のためのソフトなどを用意しインストールして使える状態にする。 ■後は、ひたすらプログラムを書く! ということなので 初心者におすすめのソフトがあればお教えください。
>>5 前スレ1000で回答もらってたじゃない
マルチは嫌われますよ
>>4 これくらい低レベルな質問なら、おれでもわかる。
char c = s.charAt(n);
8 :
デフォルトの名無しさん :2005/11/13(日) 15:37:49
9 :
デフォルトの名無しさん :2005/11/13(日) 16:01:33
文字データの数字を数字に変換するにはどうしたらいいですか?
char c = '9'; int i = c - '0'; String s = "10"; int j = Integer.parseInt(s);
11 :
デフォルトの名無しさん :2005/11/13(日) 16:26:26
>>10 ありがとうございました
じゃあ逆に
数字を文字に変換することってできますか?
>>11 APIくらいみやがれ
各種型から文字列にしたいのなら
String.valueOf( 123 )
逆に各種型からIntegerにしたいのなら
Integer.valueOf( "123" )
FloatやDouble、Longなどもこの規則で統一された
13 :
デフォルトの名無しさん :2005/11/13(日) 16:41:00
14 :
13 :2005/11/13(日) 16:44:02
たびたびすいませんが n文字の文字列から先頭のn-1もじを抜き取りたいんですが 簡単にできる方法ってないですか? 自分は 1からn-1番目の文字列をひとつずつcharAtで抜き取るぐらいしか 思いつかないんですがこれだとすこしコードが汚くなって いやなんですが・・・
>>14 > たびたびすいませんが
> n文字の文字列から先頭のn-1もじを抜き取りたいんですが
> 簡単にできる方法ってないですか?
あります。以上。回答もらったらWiki更新しようね。
16 :
デフォルトの名無しさん :2005/11/13(日) 16:53:14
Wikiってなーに?
17 :
デフォルトの名無しさん :2005/11/13(日) 16:59:42
型 Thread からの static メソッド sleep(long) には静的にアクセスしてください。 ↑このエラーメッセージってどういうこと? 静的にアクセスってどうすればいいの?
ウイッキーさん
19 :
デフォルトの名無しさん :2005/11/13(日) 17:07:36
型 Thread の static メソッド のsleep(long) に静的にアクセスしろって事。
21 :
デフォルトの名無しさん :2005/11/13(日) 17:18:39
前スレ987です。 ご意見くださったとおりいろいろ試しましたが まだ良い方法が見つからないです。 onejarも調べて見ましたが、私にはいまいちわかりませんでした… やりたいことは、a.jarとb.jarをまとめてc.xxx にして a.jarとb.jarにクラスパスを通すということです。 jarは実行形式でなく、単なるライブラリであって、アプリから参照されます。 何かご存知の方よろしくです。
22 :
578 :2005/11/13(日) 18:31:52
23 :
デフォルトの名無しさん :2005/11/13(日) 18:33:08
質問です ティンティン変数って何ですか?
基本的な質問で申し訳ありませんが、質問させてください。 コンパイルしようとすると 「シンボルを解釈できません」と出てきます。 パスもクラスパスも1文字にいたるまで確かめたのですが間違っていません。 何より、一ヶ月前にはコンパイルできたものができなくなっているのですが、なにが原因なのでしょうか。 今日、別のマシンでコンパイルしてみたらできたのですが。
>>16 >>1 参照
>>17 Thread.sleep();
>>21 「いまいち」などと曖昧な書き方ではなく何がわからないか具体的に書きなさい
>>23 Java関連の用語ではない
>>25 その情報からでは一ヶ月前から現在にいたるまでに変わった何かが原因としか言えない
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class HelloApp extends JFrame implements ActionListener { public static void main(String[] args) { new HelloApp("HelloApp").show(); } public HelloApp(String title) { と続くプログラムなのですが、6行目の new HelloApp("HelloApp").show(); は具体的にどんなことをしているのですか?
>>27 まず言語の基本から勉強したほうがよくないか?
具体的に答えたところでこの質問の答えからは得られるものはないだろうし
>>28 いや、基本は少しやったんで、とりあえずここだけ聞きたいんです
よろしくお願いします
>>27 下記の二行と同じ
HelloApp x = new HelloApp("HelloApp");
x.show();
>>29 基本ができてないからそんなこともわかんないんだと思うよ
>>27 show()じゃなくてsetVisible(true)でないと警告でるかもね
>>33 注: HelloApp.java は推奨されない API を使用またはオーバーライドしています。
注: 詳細については、-Xlint:deprecation オプションを指定して再コンパイルしてくだ
さい。
という警告が消えました。ありがとうございます。
35 :
デフォルトの名無しさん :2005/11/13(日) 21:53:59
メッセージダイアログのメッセージを 改行できる記述ってありませんか? JOptionPaneのshowMessageDialog()メソッドを 使っているのですが、メッセージが長くて、結果として 横長のダイアログが表示されてしまいます。
\n
37 :
デフォルトの名無しさん :2005/11/13(日) 22:10:30
>>36 不正な文字とエラーが出るのですが、以下の場合どうするのでしょう?
JOptionPane.showMessageDialog(null,
"改行を" + \n + "試みています"
);
40 :
デフォルトの名無しさん :2005/11/13(日) 22:25:07
>>38 すいません。ありがとうございました。
>>39 そうですね。基本がなってないですね。
文法書の最初から読み返す事にします。
41 :
デフォルトの名無しさん :2005/11/13(日) 22:56:07
先生!jpg画像を加工したいです! どの辺参照すればいいですか!
>>41 画像全般扱うJava2D
画像のロードセーブのImageIO
配列を書くまでは分かるんだが、 そこからどう使えばいいかわかんない・・・。 int[] date = {12,13,14,15,16,11,10}; この先どうやって使うんですか?
どんなふうに使いたいんですか。
>>44 例えば、平均を求めたいときとか、合計を求めたいときの使い方は
どうすればよいのでしょう?
数字の並べ替えってどうやるんですか? どなたか教えてください
>>45 int[] date = {12,13,14,15,16,11,10};
int sum = 0;
for(int i = 0; i<date.length; i++ ){
sum += date[i];
}
System.out.println("合計:" + sum);
System.out.println("平均:" + ((float)sum / date.length));
つーか宿題スレにいったら?
>>46 java.util.Arrays.sort(date);
javaでCのsetprecisionみたいなことやるのってどうすればいいんですか
>>49 System#printf()
とか使う
Systen.out.printf() だっけか
52 :
デフォルトの名無しさん :2005/11/14(月) 09:50:21
オブジェクトのIDって取得できますか? 具体的にはMapとList(を実装したクラスのインスタンス)だけでいいのですが、RubyのObject#__id__ のように、オブジェクト固有のIDみたいなのが取得したいです。
>>52 java.lang.System#identityHashCode(Object)
int じゃ足りなくなったらどーすんだろ? とか思ったが、まーいーや。
2億もあれば十分じゃね?
JFileChooserでファイル選択ダイアログを表示すると 例外が発生します。 fonts/fallbackにフォントへのリンクを作成してから 例外が発生するようになりました。 fonts/fallbackのリンクを消すと日本語は表示できませんが、 例外は発生しません。 環境は SUSE Linux9.3 JDK1.5.0_04 です。 解決方法わかる方、よろしくおねがいします。
56 :
デフォルトの名無しさん :2005/11/14(月) 11:35:14
toString、equal とはどういったメソッドなのでしょうか?
58 :
デフォルトの名無しさん :2005/11/14(月) 12:24:13
Cでいうところのargv[0]はどうやって取得? System.err.println("usage: java " + argv[0] + "filename"); ってやりたいよな。いちいちクラス名に合わせて書き換え?
>>58 > System.err.println("usage: java " + argv[0] + "filename");
> ってやりたいよな。
java -jar されてる場合とか java -cp されてる場合とか考えたら、それじゃ拙いだろ。
60 :
デフォルトの名無しさん :2005/11/14(月) 13:33:08
クラスAとクラスBがあって、クラスAの中で作った変数をクラスBでも使えるようにするにはどうしたらいいんでしょうか? イベント処理で、テキストフィールドを持つクラスAと、テキストフィールドに入力された変数に合わせてグラフィックスで描画を行うクラスBとの間の変数のやり取りの仕方がわかりません。
61 :
デフォルトの名無しさん :2005/11/14(月) 13:36:54
java.sql.Connectionクラスの commit、closeについてですが、 closeすると、commitも自動で行われるのでしょうか? それとも、別々にやらないとダメなのでしょうか?
>>61 DBってもんはオートコミットになってなければ勝手にコミットすることはないと思うのだが
>>62 どっかでオートコミットが設定されてる文があるのかも・・
しらべてみま〜す
ありがとうございます(・∀・)ノ
ドライバによってオートコミットの初期状態は違う可能性あり トランザクション開始する前にはかならずオートコミットをOFFにしよう
>>64 あれまっ!そうなんですか?!
マジでよ〜く調べたほうがよさそうだ〜〜(´д`)
66 :
デフォルトの名無しさん :2005/11/14(月) 14:16:15
数字を比較する場合にint型の変数を符号で比較する場合と String型で数字をequalsメソッドで比較した場合、 速度的には符号(==など)が早いのでしょうか? それとも変わらないのでしょうか? 微々たる差ではありますが気になったもので。
>>66 == のほうが断然速い。
ただし、プログラム全体からみれば微々たる差なのはそのとおり。
>>65 まあ調べた方がよいのは確かだが、実装レベルでいえば
>>64 の言うとおり「トランザクション開始する前にはかならずオートコミットをOFFにしよう」
を守っておけば問題ない、というかむしろそうすべき。
ドライバ側で仕様変更が起こるかもしれないとか、RDBを問わず動作させねばならんとかあるわけで。
70 :
デフォルトの名無しさん :2005/11/14(月) 14:36:27
>>68 さん
レス、ありがとうございます。
やっぱり微々たるものですか・・・
byte[]でデータ入力があり、その値によって処理分岐をさせる場合、
一度int型に変換して符号で比較するぐらいなら、
String型のまま比較してもかわらなそうですね・・・。
>>60 ほかのクラスの変数を直接参照することはできない。
一方が他方の参照を保持しておくか、または描写するメソッドの引数として渡す。
class TextField {
private String text;
public TextField(String text) { this.text = text; }
public String getText() { return text; }
}
class Renderer {
// 方法1. TextFieldオブジェクトの参照を保持しておき、それを描写する
private TextField textfield;
public Renderer(TextField textfield) { this.textfield = textfield; }
public void render() {
String text = textfield.getText();
}
// 方法2. TextFieldオブジェクトを引数として渡す
public void render(TextField textfield) {
String text = textfield.getText();
}
}
>>13 String str = "foobar";
String pre = str.substring(0, 3); // 先頭から3文字とりだす
String post = str.substring(4); // 4文字目以降を取り出す
String last = str.substring(str.length() - 1); // 最後の一文字だけを文字列として取り出す
>>69 ありがとうございます〜
やっとわかってキタ━━━━(゚∀゚)━━━━ッ!!っす!
74 :
デフォルトの名無しさん :2005/11/14(月) 16:51:17
javaでUDP通信を行ないたいのですが、データの受信を以下のようにスレッドで設計しました。 void run(){ DatagramSocket sock = new DatagramSocket(port); while(true){ sock.receive(datagram); 処理… } } この処理中に新しいパケットが届いた時、ループが返ってきた時にそのパケットはちゃんと処理されるのでしょうか?教えて下さい、よろしくお願いします。
75 :
デフォルトの名無しさん :2005/11/14(月) 18:03:00
超初心者ですので馬鹿な質問かもしれませんが教えてください。 このように同じ内容のthreadを2個立ち上げ、その中で同じ内容のタスクaaaを newでコールしたとき thread1:new aaa thread2:new aaa 呼び出したタスクaaaはthreadのようにそれぞれマルチに動いているのでしょうか? それとも処理が終わるまで待っているのでしょうか?
>>75 タスクaaa の実装によるとしか言いようが無い。
あと、「threadを立ち上げ」とか「タスクaaa をnewでコール」とか
抽象的な表現は止めてコンパイル可能なプログラムで示せ。
77 :
デフォルトの名無しさん :2005/11/14(月) 18:23:47
すいませんでした threadの開始はこんな感じです(中身は長いので省略しました) Runnable r = new Runnable() { public void run() { boolean connFlag = connectableFlag; int res = ResultCode.SUCCEEDED; :省略 if (cms != null) { cms.clientConnected(clientProp); } }; new Thread(r).start(); そのthreadのなかでnewでコールしている部分です MessageSender ms = null; ms = new MessageSend(getInetAddress(), PortNum, dataSocket);
78 :
デフォルトの名無しさん :2005/11/14(月) 18:46:16
>>74 UDPだと受け取れないパケットは取りこぼすんじゃないですかね
SWTのImageDataでwidthとheightの値を小さくすると画像の右と下を削れますが、 左と上を削るにはどうすればよいでしょうか。
SWTスレいったほうがいいんじゃね
int[] data = {10,11,12,50,4,3,2,1}; このデータを使って最大値、最小値、合計、平均を求めるのがわかんない。 一つ一つはなんとかわかるんだけど、 全部一気にやるといっつもエラーがでる…。 なんででしょう?
>>74 ソケットの受信バッファが十分空いてりゃ大丈夫じゃない?
84 :
79 :2005/11/14(月) 20:16:29
85 :
デフォルトの名無しさん :2005/11/14(月) 21:40:37
prepareStatementを使ってデータベースに登録するため、 getTimeでDate型の時間を受け取り、Timestamp型に変更して登録したいのですが、 クラスキャストエクセプションが出てしまいます。どうしたらよいのでしょう? クラス名 **** = new クラス名(); ←get,setを持っているクラス String sql = "INSERT INTO RESERVATION VALUES(?) "; pstmt.setTimestamp(1, (Timestamp)****.getTime());
>>85 そのDateってjava.util.Dateだろ?
java.sql.Timestampとまったくべつのクラス渡してればエラーが出るのは当たり前
java.sql.Timestampのインスタンス作ればいいだけ
どこを迷うことがあるのさ
コンストラクタも1つしかないし
pstmt.setTimestamp(1, new Timestamp(****.getTime().getTime()));
配列自体はソートせずに、大きいものから表示したいのですがどんな方法がありますか?
作業用の配列でも用意してそれをソートすれば
OS のクリップボードに画像を貼り付けたいのだが(Java 1.4 系)、 Windows だと上手く動くのに、Linux だと張り付かない。 このあたりはVMの実装依存なんですか?
>>88 int限定
int[] data = {0, -20, 100, 5, 0};
int min = data[0], max = data[0];
for (int d : data) {
if (d > max) max = d;
if (d < min) min = d;
}
for (int i = max; i >= min; i--) for (int d : data) if (d == i) System.out.println(d);
93 :
92 :2005/11/14(月) 23:40:59
こっちの方がキレイ int[] data = {0, -20, 100, 5, 0}; int min = data[0], max = data[0]; for (int d : data) if (d > max) max = d; for (int d : data) if (d < min) min = d; for (int i = max; i >= min; i--) for (int d : data) if (d == i) System.out.println(d);
94 :
92 :2005/11/14(月) 23:49:04
バグってたけど(゚ε゚)キニシナイ!!
95 :
デフォルトの名無しさん :2005/11/14(月) 23:58:03
>>93 それだとminとmaxの差が大きいと時間が掛からんか?
// 生成
java.util.Random random = new java.util.Random();
int[] data = new int[100];
for(int i=0; i<data.length; i++) data[i] = random.nextInt();
// ソート&表示
int[] cdata = data.clone();
Arrays.sort(cdata);
for (int i = cdata.length - 1; i >= 0; i--) System.out.println(cdata[i]);
97 :
デフォルトの名無しさん :2005/11/15(火) 00:18:13
98 :
デフォルトの名無しさん :2005/11/15(火) 00:34:59
99 :
デフォルトの名無しさん :2005/11/15(火) 00:53:42
JEditorPaneにHTMLのっけると、動作が非常に重いです なんとかなりませんか? それとも、そういう仕様でしょうか?
100 :
デフォルトの名無しさん :2005/11/15(火) 02:12:54
携帯電話でSessionを管理するにはどのようにすればよいのでしょうか? JSP→Servlet→JSP(セッションの値表示)→ Servlet(セッションの値がとれない) いままでシュミレータを使っていてうまく動作していたのですが、 携帯で実際に操作してみると、sessionの値がnullで Server エラーになって しまいました。。
101 :
デフォルトの名無しさん :2005/11/15(火) 06:17:49
>>100 サーバー側に渡してないからでは?
携帯だとCookieは使えないものが多いらしいから
JSPの中で自分で渡さないとダメだよ
>>100 HttpServletResponseのencodeURL()メソッドのAPIドキュメント見れ
103 :
74 :2005/11/15(火) 11:56:51
>>78 ,82
ありがとうございます。
実際このようなソースを書いてみたのですが、どうも取りこぼしてるような気がします。受信バッファのサイズを見てみたのですが、かなり大きかったので、受信バッファサイズに関しては大丈夫だったみたいです。
ではもしこのようなものを取りこぼさずに処理したい場合どうすればよいのでしょうか?
受け取る部分だけループで回して、受け取ったパケットの処理は別スレッドでやるというのが正解なのでしょうか?
104 :
デフォルトの名無しさん :2005/11/15(火) 11:57:35
JAVAのAPIでデータを圧縮するようなものはありますでしょうか? 通信メッセージのサイズを抑制したいのですが。
UDPってのは取りこぼしてもいいから、という作り方しないとだめだからな 再送とかそういうメッセージ関係も自前で処理しなければならん
108 :
74 :2005/11/15(火) 13:10:19
>103,107 ありがとうございます。 そうですね、TCPに変えることも考えますw 再送処理とかめんどくさいのでw
109 :
104 :2005/11/15(火) 13:17:13
>106さん ありがとうございます!
110 :
デフォルトの名無しさん :2005/11/15(火) 13:54:44
質問なのですが、JAVAでIPv6プログラミングをしたいと思っています。そこでまず @自分のマシンのあるインターフェースについているv6アドレスを取得することはできるのでしょうか? AInet6Addressオブジェクトはどういう風に作成したらよいのでしょうか?例えば Inet6Address ia = Inet6Address.getByName(www.abc.net); のようにやってもエラーがでて InetAddress ia = Inet6Address.getByName(www.abc.net); のようにするとv4アドレスしか取得できません。 誰か知ってる人いたら教えてください。お願いします。
getByNameなんてInetAddress6では実装してないぞ APIマニュアル読んでくれ
>>110 Googleさんがご存知でしたので、聞いてみてください
113 :
デフォルトの名無しさん :2005/11/15(火) 14:52:53
超あほな質問ですいません。 質問1 ↓スレッド内部でこのような静的なフラグをもったとき private static boolean SendEnd = true; フラグはスレッドごとに持つのですか?それとも1個が書き換えられる? 質問2 ↓スレッド内部でこのようなメソッドを持った時 public void setSendEndOn(boolean flag) { SendEnd = true; } 静的(static)を使用しないで他のタスクから見る方法はありますか? public void setSendEndOn(boolean flag) { SendEnd = true; }
114 :
デフォルトの名無しさん :2005/11/15(火) 14:55:01
修正 質問2 ↓スレッド内部でこのようなメソッドを持った時 public void setSendEndOn(boolean flag) { SendEnd = true; } 静的(static)アクセスを使用しないで他のタスクから見る方法はありますか?
115 :
110 :2005/11/15(火) 15:01:08
>111 APIによるとInet6AddressはInetAddressから継承されているみたいなんですけど、これじゃダメなんですかね? >112 java,IPv6などのキーワードで色々調べてみたのですがどうも見つかりません。もしよろしければ教えていただけますか?
>>113 staticなメンバはクラスにくっつく
ただ、スレッドの最適化でコピーが作られる場合がある
質問2は意味が分からん
>>115 マニュアル見てるならわかるはずだが継承してるけど、継承先実装してないだろ
だからInetAddressの実装が返されるだけ
119 :
デフォルトの名無しさん :2005/11/15(火) 15:13:11
>>116 しつこくてすいません
確認させていただくと
スレッド1 true
スレッド2 false
スレッド3 true
と書き換えた場合
スレッド1で再度見た時はtrue
スレッド2で再度見た時はfalse
スレッド3で再度見た時はtrue
にならないで最後に変更したものが入るという事でよろしいでしょうか?
質問2はつまり「static宣言してないメソッド(質問1で宣言したフラグだ
けでもいいです)を他のタスクから見る方法はありますか?」ということです。
120 :
110 :2005/11/15(火) 15:17:40
>>115 なるほど、そうですね(汗)できないはずだ…
>>118 ありがとうございます、読んでなかったです。とりあえずこれから読んでみます。
質問1のフラグは静的メンバだからそのクラスのどのインスタンスからも見れる メソッドを他のタスクから見るってのがいまいちよく分からない
>>119 基本的にはそう
クラスというものにくっつくから実態はひとつだけ
ただ、同期化処理が入っていないのでマルチスレッドのときに動作は保障されない
単純なフラグの上げ下げと取得順序を意識しなくていいというのなら
volatile宣言いれるといいかと
質問2はまたもや意味が分からん
123 :
デフォルトの名無しさん :2005/11/15(火) 15:39:10
>>121 すいません
僕も良くわかってないんでもう一度良く考えて投稿します
ありがとうございました
JTableに得られた文字列や値を次々と格納する方法ってあります? String name[] ={"項目1", "項目2" ,"項目3"}; String data[] ={a1 , a2, a3};//a1,a2,a3は得られ次第格納 lb = new JLabel("結果"); tb = new JTable(data, name); sp = new JScrollPane(tb); のようにしたら一応String型のデータもあるのですが互換性のない型となりました・・ a1〜a3までint型のものまでStringに変換してからとか必要なのでしょうか? あるいは記入方法が間違っているのでしょうか?
JTableのデフォはDefaultTableModel使ってると思うが これはObjectが格納可能 intは入らない が、オートボクシングでIntegerに変換されて入っているのでは?
126 :
デフォルトの名無しさん :2005/11/15(火) 19:57:39
お尋ねします。 JFace/SWT で、スタンドアロンなアプリケーションを作っている最中です。 TabItem の 画面を 2分割しようと、createContents メソッドの中で TabFolder tabFolder = new TabFolder(parent, SWT.NONE); TabItem tabItem = new TabItem(tabFolder, SWT.NONE); SashForm sash1 = new SashForm(tabFolder, SWT.NONE); SashForm sash2 = new SashForm(tabFolder, SWT.NONE); Composite comp = new Composite(tabFolder, SWT.NONE); comp.setLayout(new FillLayout()); tabItem.setControl(comp); などとやっているのですが、どうも間違っているようです。 2分割の方法に付いて、御教示いただければ幸いです。
SWTスレいったほうがええ
>>127 わかりました。もう少しだけ待って、向こうに引っ越します。
129 :
デフォルトの名無しさん :2005/11/15(火) 20:54:31
>>126 あたしゃSWT使ったこともないがこうじゃないかね?
TabFolder tabFolder = new TabFolder(parent, SWT.NONE);
TabItem tabItem = new TabItem(tabFolder, SWT.NONE);
SashForm sash = new SashForm(tabFolder, SWT.HORIZONTAL);
tabItem.setControl(sash);
Composite comp1 = new Composite(sash, SWT.NONE);
Composite comp2 = new Composite(sash, SWT.NONE);
comp1.setLayout(new FillLayout());
comp2.setLayout(new FillLayout());
130 :
デフォルトの名無しさん :2005/11/15(火) 21:35:22
131 :
デフォルトの名無しさん :2005/11/15(火) 21:47:59
Java WebStart(javaws.exe, *.jnlp)を試してみようと思っています。 javaws.exe や *.jnlp を実行するとNullPointerException が発生し、 Javaアプリケーションキャッシュビューアが起動します。 ちゃんと起動できていないように思うのですが、この挙動で正しいのでしょうか? 違うようなら何がいけないのか、ヒントだけでも教えてください。 環境は、 OS: Windows XP SP2 jdk: j2sdk5.0 update 5 を jre 抜きで c:\java\dk 以下に jre: j2re5.0 update 5 を c:\java\re 以下に PATH: %PATH%;c:\java\dk\bin;c:\java\re\bin です。
>>130 > jdk1.5.0_05用
なんてものは存在しない。存在しないので変換なんかできない。
エンコーディング指定したいなら javac -encoding UTF-8 とかで指定。
133 :
131 :2005/11/15(火) 21:50:28
あ、ちょっと違った。 javaws.exe を起動 → Javaアプリケーションキャッシュビューア起動 *.jnlp をクリック → 対象アプリケーションが起動 いずれも、ぬるぽのエラーメッセージの後です。
134 :
デフォルトの名無しさん :2005/11/15(火) 22:02:47
JavaWebStart対応アプリを つくるときにおすすめの開発環境って何かない? Eclipseを使ってるんだけど 専用プラグインでできる? それともVEプラグインでできる? できるとしたらどれがおすすめ? だれかご教示ねがいまっせ
135 :
デフォルトの名無しさん :2005/11/15(火) 22:11:07
あるクラスでComponentクラスのcreateImage()を使いたいのですが、 Componentクラスを継承せずに使うにはどういう風に書けばいいのでしょうか? 感覚的には MemoryImageSource memory_image = new MemoryImageSource(width,height,buf,0,width); Image img = (new Component).createImage(memory_image); みたいな感じで書きたいのですが、、 ご教授お願いします。
Component#createImageが本当に必要なのか考えるとか
137 :
130 :2005/11/15(火) 22:19:23
・ソimport java.awt.event.*; 1行目から↑で実行しても文字化けしてしまいます・・。 何かツールなどを使って変換するのでしょうか? >132 javac -encoding UTF-8 TextEditor.javaとかやってみましたが よくわからんとです・・
139 :
130 :2005/11/15(火) 22:32:42
んじゃ消すねー
要はcrimsonを使わなきゃいいって話だからXercesにいれかえるとか IBM JRE使うとかでもいい。
143 :
デフォルトの名無しさん :2005/11/15(火) 23:04:57
strutsでスケジュール管理を作っているのですが Listenerを使って名簿テーブルから「Name」「Id」を取得しDropDownListに「Name」を表示したいのですが、まず、Listenerがよくわかりません public class StartPageListener implements ServletContextListener{ public void contextInitialized(ServletContextEvent event){ ServletContext context = event.getServletContext(); try{ ScheduleManager smanager = ScheduleManager.getManager(); List userList = smanager.getUsers(); //ScheduleManagerで「Name」「Id」をリストで取得しました context.setAttribute(); //ここで何を書けばいいのかわかりません } catch(Exception e){ System.exit(0); } } public void contextDestroyed(ServletContextEvent event){ ServletContext context = event.getServletContext(); context.removeAttribute();
144 :
デフォルトの名無しさん :2005/11/15(火) 23:25:14
jbuilderを使って動画を再生したいのですが 動画のソースをどの部分に書けばいいのかわかりません。 Application、Frameどちらかのソースなのか 他にソースを作らなければならないのか教えてください。 まだjavaを始めたばかりの初心者なのでどうかレスしてください。
145 :
教えてください :2005/11/15(火) 23:32:34
javaで作成したアプリケーションの検索スピードを上げるため、Jetコンパイラの Excelsior Jetを使用したところ一応のスピードアップは見られたのですが、検索 を重ねているうちに、マシンがフリーズしてしまいます。 使用したメモリの解放が上手く行われていないようなのですが、どなたか解決方法 をご存知の方がいらっしゃいましたら教えてください。
プロファイラでどこでメモリリークしてるかつかめばいいだけでは
147 :
130 :2005/11/15(火) 23:56:21
GUIの立ち上がったアプレットの スクリーンショットとる方法ありますか?
148 :
デフォルトの名無しさん :2005/11/16(水) 00:25:06
サーバサイドjavaで設定用のダイアログボックスを使いたいのですが どうすれば良いのでしょう? 親となるメインウインドウにボタンを作って、そこをクリックすると新しい ウインドウが出るようにして、そのウインドウで設定用のチェックボックスや テキストボックスを作ればいいところまでは分かるのですが、その 結果を親ウインドウに反映させるのはどうすればいいのでしょうか? その結果を別の新規ウインドウや自分自身に反映させる方法は分かるのですが・・
質問おねがいします <%= new java.util.Date() %> JSPファイルでこのように記述すると、 Wed Nov 16 00:31:32 JST 2005 このように時刻が表示されるのですが、 これをミリ秒で表示したいときは、どのように記述すればよいのですか?
>>149 <%= new java.util.Date().getTime() %>
APIドキュメントぐらい見てから質問しろよな・・・
>>150 すいません、右も左もわからない初心者なもので・・・
以後気をつけます
ありがとうございました
GCの管理から外れたインスタンスを確保するにはどうすればいいの? C#ではできるのになんでJAVAだとできないのやっぱり糞言語だからかな?
153 :
デフォルトの名無しさん :2005/11/16(水) 02:55:18
すいません。 DAOとvalueobjectなんですが? 実行したときに、serchingがかかって、type一覧が出力されるのですが? どれを選んでいいのかわかりません。
155 :
デフォルトの名無しさん :2005/11/16(水) 03:08:10
今。参考書見ながらEclipse勉強しています。 postgresからデータを引っ張るためです。
Java だって、下手糞に書けばメモリリークくらい出来ますよ
Sun Java Studio Enterprise 8ってどうなの? ずっとeclipse3でコード書いてきてそこまで不満は 無いんだけど・・・・デモ見る限りかなりの出来と 思うんだけど・・・・・
NetBeansベースだからできはいい
>>152 ホレ今思いついたままに書いてみたぞ。
そんな物が必要だと思ったことは一度もないけどな。
import java.util.HashSet;
import java.util.Set;
public class UnGabage {
public UnGabage() {
instSet.add(this);
}
public void delete(){
instSet.remove(this);
}
static Set instSet = new HashSet();
}
160 :
デフォルトの名無しさん :2005/11/16(水) 10:29:45
ta.setComponentPopupMenu(popup); popup.addPopupMenuListener(new PopupMenuListener() { public void popupMenuWillBecomeVisible(PopupMenuEvent e) { copy.setEnabled(ta.getSelectionStart() != ta.getSelectionEnd()); cut.setEnabled(ta.getSelectionStart() != ta.getSelectionEnd()); } public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {} public void popupMenuCanceled(PopupMenuEvent e) {} }); は何をしているのでしょうか?急ぎなので簡単にお願いします、¥すみません
161 :
デフォルトの名無しさん :2005/11/16(水) 10:32:27
>>151 >すいません、右も左もわからない初心者なもので・・・
お箸を持つ方が右で、茶碗が左だろ?
これだから初心者は・・・
>>161 左利きかもしれないけどな。
これだから初心者は・・・
左利きのプログラマーなんていない
>>152 はSoftReferenceの使いかたも知らないアホということで
166 :
110 :2005/11/16(水) 12:18:29
168 :
166 :2005/11/16(水) 12:36:05
169 :
126 :2005/11/16(水) 12:41:42
>>129 遅レスすみません、まさに希望どおりになりました。
TabItemはCompositeの子ではないので、TabItem1つ1つにCompositeを
割り当ててやる必要があるのですね。
ありがとうございました。
>>160 ポップアップメニューの登録。
ポップアップメニューが表示されるときに、ta(=テキストエリア?) で選択されてれば、
(ポップアップメニューの?)copy と cut を有効にする。そうでなければ copy と cut は無効。
172 :
166 :2005/11/16(水) 12:55:21
>>167 すみません、できました…。が結局変わりません。システムプロパティを見てみると
java.net.preferIPv6Addresses=true
java.net.preferIPv4Stack=false
になっていますが、システムプロパティ変更後のソースに
InetAddress ia[] = InetAddress.getAllByName(args[0]);
for(int i = 0;i < ia.length;i++)
System.out.println(ia[i]);
として引数にlocalhostと入れても出力は
localhost/127.0.0.1
となってしまいます…。
>>172 1.4.2 だと InetAddress の staticイニシャライザでシステムプロパティ見て設定してる、
だから、一旦 InetAddress を使った後では System.setProperty とかやっても無駄。
>>172 普通、localhostは、当たり前のように127.0.0.1のループバックだと思うんだが。
マシン名渡してみれ。
>>173 のような事情だと、javaのコマンドラインで
-Djava.net.prefer...ってやらないとダメなんでないかい。
176 :
172 :2005/11/16(水) 13:27:00
>>173 すみません、勉強不足のためよくわかりません…。とりあえずソースを載せます。
import java.net.*;
import java.util.*;
import java.io.*;
class a{
public static void main(String args[]){
try{
FileInputStream propFile = new FileInputStream("b.properties");
Properties p = new Properties(System.getProperties());
p.load(propFile);
System.setProperties(p);
System.getProperties().list(System.out);
InetAddress ia[] = Inet6Address.getAllByName(args[0]);
for(int i = 0;i < ia.length;i++)
System.out.println(ia[i]);
}catch(Exception e){
}}}
プロパティファイルb.propertiesも載せます。
java.net.preferIPv6Addresses=true
java.net.preferIPv4Stack=false
ちなみにOSはFreeBSD5.4RELEASE-p8です。
>>174 マシン名を渡してもダメでした…。
>>176 うちだと動くよ。
%uname -a
FreeBSD home.dangan.local 5.4-RELEASE-p7 FreeBSD 5.4-RELEASE-p7 #1: Thu Oct 27 17:40:13 JST 2005 root@******:/usr/obj/usr/src/sys/******* i386
%cat test.java
import java.net.*;
public class test {
public static void main(String[] args) throws Exception {
System.setProperty( "java.net.preferIPv6Addresses", "true" );
InetAddress addresses[] = InetAddress.getAllByName("localhost");
for( int i = 0 ;i < addresses.length ; i++){
System.out.println(addresses[i]);
}
}
}
%javac test.java
%java -showversion test
java version "1.4.2-p7"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2-p7-root_12_sep_2005_03_09)
Java HotSpot(TM) Client VM (build 1.4.2-p7-root_12_sep_2005_03_09, mixed mode)
localhost/0:0:0:0:0:0:0:1
localhost/127.0.0.1
IPv6がちゃんとインストールされていないとか
180 :
172 :2005/11/16(水) 13:57:15
>>177-179 うわ…。177氏のソースをそのまま動かしてみたところ動きませんでした…。
最後のjava -showversion testの出力結果を載せます。
java version "1.4.2-p7"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2-p7-root_20_oct_2005_13_24)
Java HotSpot(TM) Client VM (build 1.4.2-p7-root_20_oct_2005_13_24, mixed mode)
localhost/127.0.0.1
ifconfigの結果を見るとfxp0のinet6にv6アドレスはついてます。(リンクローカルとグローバルの二つ)
>>179 IPv6って明示的に何かをインストールすべきなのでしょうか??
>>180 jdk14 を make するときに、WITH_IPV6 してなかったとか?
182 :
172 :2005/11/16(水) 14:10:56
>>181 あまり覚えてませんが可能性はありますね…。それって調べる方法あるんですかね?
あともしそれを入れるとしたら一回deinstallしてからreinstallですかね?
184 :
デフォルトの名無しさん :2005/11/16(水) 15:24:13
Java初心者ですが、Javaを使って下記の様なメニューリストを作成したいと思っています。 ↓こっちのメニュー(リンク)にカーソルを合わせる ┌─┐┌───┐ ├─┤│ │ ├─┤│ │ ├─┤│ │ └─┘└───┘ ↑こっちに説明&リンク表示(最初から文章) <外部CSS> #left{float:left(以下略)} #infospace{省略} <head>〜</head>内 <script language="javascript"> <!-- function p(x) {document.getElementById('text').innerHTML=x;} --> </script> <body>〜</body>内 <div id="menulist"><table><tr><td onmouseover="this.style.backgroundColor='#ffffff'" onmouseout="this.style.backgroundColor=''"> <a href="左側のリンクURL" onMouseOver="p('右側に表示される説明')">左側に表示されるリンク</a></div></td></tr></table> <div id="infospace">右側のエリアに最初から表示される文章</div> としたのですが、右側のエリアにリンクを貼る事ができません。 1、左側のメニューは全てリンクです。 2、右側のエリアには最初から説明文を表示させます。 3、左側の各リンクにカーセルを合わせた時に、右側のエリアに説明を表示させ、 なおかつ説明内にリンクを設置したいのです。
186 :
デフォルトの名無しさん :2005/11/16(水) 15:30:37
板違いでしたか…スミマセンorz
187 :
172 :2005/11/16(水) 15:38:51
>>183 すみません、どういう意味ですか??
とりあえず今jdkをインストールしなおしてます…。
portsからmakeしているのですが、オプションにWITH_IPV&というのがありました。
これってmake installするときに指定するものなんですか?それとも途中でオプションの指定画面のようなものが出るのでしょうか?
>>187 まずネットワークインターフェースの列挙からしてみたらという意味だ
環境がようわからんのでな
189 :
172 :2005/11/16(水) 15:51:48
>>188 なるほど、とりあえず今jdkをdeinstallしてしまったので、また入ったらやり直してみます。
deinstallって初めて聞いた
>>187 make -DWITH_IPV6=yes とかしときゃよかったような。
jdk14 はオプションの設定画面は出なかったと思われ。
>>182 あるのかもしれんが、俺は知らない。
もしあったら教えてくれ。
非推奨はアノテーションとJAVADOCの両方に記述すべきですか? 二重記述でなんかいやなんですが…
アプレットでゲーム(キーボードイベントを用いて)を造っているのですが、 アプレットビューアでアプレットを起動 ↓ アプレットの領域内をマウスでクリック ↓ キーボードが機能する (キーを入力するとその結果がアプレットに表示される) 領域内をマウスでクリックが嫌だったので、 init(); に setFocusable(true); を追加すると アプレットビューアでアプレットを起動後、領域内をマウスでクリックしなくてもキーボードは機能してくれました。 その後、インターネット上に、アプレットを公開したのですが アプレットビューアでは出来たはずの、領域内をマウスでクリックしなくてもキーボードは機能する。が出来ず、 一度領域内をマウスでクリックしなければ、キーボードが機能してくれませんでした。 インターネット上で、アプレットの領域内をマウスでクリックせずにキーボードが機能してくれるようにする にはどうすればよいでしょうか? 文字が多くてスミマセンでした。 お願いします。
195 :
デフォルトの名無しさん :2005/11/16(水) 20:12:49
すみません、どうしても分からないので質問させてください。 String型の文字列を int 型に直したいのですが。 コンパイルは通りますが、以下のようなエラーが起きます。 エラー箇所は Byte byt = new Byte(str); でエラーが起きているとでます。 java.lang.NumberFormatException : Value out of lange. Value : "250" Radix : 10 ソースは以下のとおりです(切り抜き) str = strPool.substring(bigin, end); System.err.println("str = " + str); Byte byt = new Byte(str); return byt.intValue(); str は String str; として定義されています。 System.err.println(); によって出力してみたところ、 str には "250" が入っています。 調べてみたところ127以下の数字なら無事変換できるのですが、128以上だと上記のようなエラーが起こります。 あ、ここまで書いて気づいたのですが、もしや Byte って1バイト以上の数字が扱えないから、128以上ではエラーが 起こるのでしょうか?
おめでとう
byteは-128〜127だ
>>195 byte配列にするクラスメンバ関数がStringにあったと思うが。
getBytes()だっけか?
>>195 strに"127"を入れてエラーにならなかったら
その仮説で良いと思うけど
201 :
鯖男 :2005/11/16(水) 20:49:06
どなたか教えてください。 マルチクライアント非対応サーバになんとしても接続したい場合 InetSocketAddress socketAddress = new InetSocketAddress("localhost", 1234); Socket socket = new Socket(); while ((socket.isConnected()) == false) { try { socket.connect(socketAddress,0); } catch (IOException e) { System.out.println("未接続"); } } のようなコードではダメなのはなぜでしょうか?
202 :
デフォルトの名無しさん :2005/11/16(水) 20:49:30
つーかよintにしたいだけなら int i = Interger,parseInt(str); でおわりだろ
つっこむべき所はbiginだと思うの
206 :
デフォルトの名無しさん :2005/11/16(水) 21:24:51
わざわざByteを使っている理由は、ただ単に私が初心者で
StringをIntにしたいと思い、ドキュメント眺めてたら
たまたま最初にByteをみつけたから使っていました。
>>204 (( ゜д゜))ガーン
スペルミス
オートボクシングとか働くから、プリミティブ型とオブジェクト型、あまり区別しなくていいかもね。 多態性で問題が生じることはあるかもしれないけどー。
yield文とはどういうものなのですか?
210 :
デフォルトの名無しさん :2005/11/16(水) 22:27:31
日本語扱うならbyteが基本だけどな。 Strは入力も出力もUTF-8で統一してないと問題が発生する。 ありがちなのがメール(ISO2022JP)との入出力で問題発生。 SunがUTF-8以外でも非破壊で扱えられる様にStrを拡張してくれないと困る。
211 :
デフォルトの名無しさん :2005/11/16(水) 22:40:22
>>210 UTF-8?
何をお馬鹿なことを書いてる?
Java StringはSJISでもEUCでも何でも扱えるよ
API見直せ
>>211 入出力の時に変換しているだけで内部は常にUNICODEだったはず
UTF-8で統一しても問題が発生することがあるよ 文字コードとUnicodeのマッピングの関係で
つーか、MS932かそれ以外でだな しかもMS932が一番シェアあるもんだから厄介だという
215 :
189 :2005/11/16(水) 23:48:28
レスが遅くなってすみません。javaでWITH_IPV6オプションを入れようとしていたものです。 先ほど一回jdk14をdeinstallしたあと # make -DWITH_IPV6=yes install と打ったのですが、177氏のテストプログラムが動きませんでした。(v4アドレスしか出てきませんでした。)とりあえずもう一度jdkをdeinstallしました。WITH_IPV6オプションを指定する方法を色々調べたところ # make CFLAGS+=WITH_IPV6 install とあったのですが、これが正しいのでしょうか?
216 :
デフォルトの名無しさん :2005/11/16(水) 23:55:15
>>75 Javaに「タスク」なんて用語なはないのでイマイチ意味があいまいだが
synchronizedで排他しない限り
どのメソッド内(コンストラクタも含む)のコードも別スレッドで同時に
動く可能性はある。
217 :
デフォルトの名無しさん :2005/11/17(木) 00:12:13
超初心者で、今日から始めた者ですが… コンパイルの時に 警告: この文字は、エンコーディング MS932 にマップできません。 \0 は不正な文字です。 と沢山出て困っています。 全文字を半角に書いた上でやっているのですが…
218 :
デフォルトの名無しさん :2005/11/17(木) 00:14:13
>>215 FreeBSDは使ってないが、
# make CFLAGS+=-DWITH_IPV6 install
だと思うぞ。
>>217 ソースコードをWindowsのメモ帳でUnicodeで保存してないか?
>>201 そのコードで動きそうなもんだが、何がダメなんだ?
>>215 ちょっと試してみる。
#make clean ; make -DWITH_IPV6=yes patch
===> Cleaning for rpm-3.0.6_10
===> Cleaning for unzip-5.52_2
(中略)
===> Applying extra patch /usr/ports/java/jdk14/files/disable-ipv6.patch
===> Applying FreeBSD patches for jdk-1.4.2p7_2
あ、ダメだ。disable-ipb6.patch が当たってる。
# make clean ; make CFLAGS+=WITH_IPV6 patch
===> Cleaning for rpm-3.0.6_10
===> Cleaning for unzip-5.52_2
(中略)
===> Applying extra patch /usr/ports/java/jdk14/files/disable-ipv6.patch
===> Applying FreeBSD patches for jdk-1.4.2p7_2
これもダメみたい。
#make clean ; make -DWITH_IPV6 patch
===> Cleaning for rpm-3.0.6_10
===> Cleaning for unzip-5.52_2
(中略)
done
===> Applying FreeBSD patches for jdk-1.4.2p7_2
これなら大丈夫っぽい。
223 :
デフォルトの名無しさん :2005/11/17(木) 01:08:52
初心者ですすいません。 org.apache.jasper.JasperException: JSPのクラスをコンパイルできません 理由はなぜなんでしょうか?
224 :
デフォルトの名無しさん :2005/11/17(木) 01:12:43
TreeNode型の変数のノード名をString型で取りたいのですが、 Node型のgetNodeName()の様な関数も見当たらず、お手上げな状態です。 どなたかご教授願えますでしょうか?
225 :
189 :2005/11/17(木) 01:14:04
>>222 わざわざありがとうございます!それで今試しているところです。結果がわかり次第また書き込みます。一つ質問があるのですが、make patchということはそれが終わったあとmake installを行うことでインストールが終了するということですよね?
226 :
デフォルトの名無しさん :2005/11/17(木) 01:18:39
org.apache.jasper.JasperException: JSPのクラスをコンパイルできません なぜですか?
227 :
217 :2005/11/17(木) 01:24:23
>>220 ありがとうございます!
ANSIで保存したところ、無事にコンパイルできました。
>>223 org.apache.jasper.JasperException: Unable to compile class for JSP
でググれ
229 :
201 :2005/11/17(木) 01:40:20
>>221 サーバが他のクライアントと接続を切ってすかさずListenに入って
いるのですが、このコードではwhileを抜けれずループしっぱなし
になるんです。
230 :
c言語初心者 :2005/11/17(木) 02:03:48
コマンドライン引数で指定した解像度と明るさのPPM画像ファイルを生成する。 /* #include <stdio.h> #include <stdlib.h> #include “ppm.h” /*PPM画像ファイル処理関数ライブラリ*/ Int main(int argc,char *argv[]) { FILE *fpout; /*出力ファイルポインタ*/ unsigned char *buf; /*画像データバッファへのポインタ*/ int width; /*画像の幅*/ int height; /*画像の高さ*/ int br; /*画像の明るさ*/ int i,j /*注目ピクセルの座標(横、縦) */ int k; /*注目ピクセルの先頭からの位置*/
231 :
c言語初心者 :2005/11/17(木) 02:12:47
質問というよりプログラムが長いのでいくつかに分けて書き込みます。 下記の二つのプログラムをまとめて一つにするには、どうしたらよいですか? /* コマンドライン引数で指定した解像度と明るさのPPM画像ファイルを生成する。 /* #include <stdio.h> #include <stdlib.h> #include “ppm.h” /*PPM画像ファイル処理関数ライブラリ*/ Int main(int argc,char *argv[]) { FILE *fpout; /*出力ファイルポインタ*/ unsigned char *buf; /*画像データバッファへのポインタ*/ int width; /*画像の幅*/ int height; /*画像の高さ*/ int br; /*画像の明るさ*/ int i,j /*注目ピクセルの座標(横、縦) */ int k; /*注目ピクセルの先頭からの位置*/
232 :
c言語初心者 :2005/11/17(木) 02:13:38
/*コマンドライン引数の個数チェック*/ if(argc<5){ printf(“Usage:%s<outfile><width><height><bright>\n”,argv[0]); exit(0); } /*コマンドライン引数で指定されたファイルをバイナリ書き込みモードでオープン*/ if(NULL==(fpout = fopen(argv[1],”wb”))){ printf(“%sをオープンできません\n”,argv[1]); exit(-1); } /*画像の横幅を取得*/ Sscanf(argv[2],”%d”,&width); if(width <=0){ printf(“画像の横幅の指定が不正です\n”); exit(-1); } /*画像の高さを取得*/ sscanf(argv[3],”%d”,&height); if(height <=0){ printf(“画像の高さの指定が不正です\n”); exit(-1);
233 :
c言語初心者 :2005/11/17(木) 02:15:23
} /*画像データバッファを取得*/ if(NULL==(buf = malloc(width*height*3*sizeof(unsigned char)))){ printf(“画像データバッファの取得に失敗しました\n”); exit(-1); } /*画像データバッファに画像データを書き込む*/ for(j = 0;j < height; j++){ for(i = 0; i <width; i++){ k = (i+j*width)*3; buf[k+0] =(unsigned char)br; buf[k+1] =(unsigned char)br; buf[k+2] =(unsigned char)br; } }
234 :
c言語初心者 :2005/11/17(木) 02:16:23
/*PPMヘッダーをファイルに出力*/ put_ppm_header(fpout,width,height,PPM_DEPTH); /*画像データバッファの内容をファイルに出力*/ fwrite(buf,width*height*3*sizeof(unsigned char),1,fpout); /*画像データバッファを解放*/ free(buf); /*ファイルクローズ*/ fclose(fpout); retrun0; ここまでが一つで、
235 :
c言語初心者2 :2005/11/17(木) 02:20:22
/* PPM画像の平均輝度を算出する。 */ #include <stdio.h> #include <stdlib.h> #include “ppm.h” /*PPM画像ファイル処理関数ライブラリ*/ /*ピクセルのRGB各要素から,輝度を求める*/ int brightness(unsigned char *dat) { unsigned int r,g,b; unsigned int br; /*ピクセルの輝度*/ r=(unsigned int)dat[0]; g=(unsigned int)dat[1]; b=(unsigned int)dat[2]; br=(77*r+151*g+28*b)/256; return(int)br; }
236 :
c言語初心者2 :2005/11/17(木) 02:22:36
r=(unsigned int)dat[0]; g=(unsigned int)dat[1]; b=(unsigned int)dat[2]; br=(77*r+151*g+28*b)/256; return(int)br; } Int main(int argc,char*argv[]) { FILE*fpin; /*入力ファイルポインタ*/ unsigned char*buf; /*画像データバッファへのポインタ*/ int header_len; /*画像データのヘッダのバイト数*/ int width; /*画像の幅*/
237 :
c言語初心者2 :2005/11/17(木) 02:23:50
int height; /*画像の高さ*/ int depth; /*画像のデータ最大値*/ int br; /*ピクセルの輝度*/ int sum; /*輝度値の合計*/ double br_mean; /*平均輝度*/ int i,j; /*注目ピクセルの座標(横、縦)*/ int k; /*注目ピクセルの先頭からの位置*/ /*コマンドライン引数の個数チェック*/ if(argc<2){ printf(“Usage:%s<infile>\n”,argv[0]); exit(0); } /*入力ファイルをバイナリ読み取りモードでオープン*/ if(NULL==(fpin = fopen(argv[1],”rb”))){ printf(“%sをオープンできません\n”,argv[1]); exit(-1); }
238 :
c言語初心者2 :2005/11/17(木) 02:24:44
/*入力ファイルのヘッダ情報を取得*/ header_len = read_ppm_header(fpin,&width,&height,&depth); /*ヘッダが不正な場合は終了*/ if(header_len < 0){ printf(“入力ファイルのヘッダが不正です\n”); exit(-1); } /*画像データバッファを取得*/ in(NULL==(buf = malloc(width*height*3*sizeof(unsigned char)))){ printf(“画像データバッファの取得に失敗しました\n”); exit(-1); } /*画像データの本体をバッファに読み込む*/ fseek(fpin,header_len,SEEK_SET); /*ヘッダの分だけ飛ばす*/ fread(buf,width*height*3*sizeof(unsigned char),1,fpin);
239 :
c言語初心者2 :2005/11/17(木) 02:25:47
/*バッファ内の画像データの平均輝度を求める*/ sum = 0; for(j = 0;j < height;j++){ for(i = 0;j < width;i++){ k = (i+j*width)*3; /*j行i列のピクセルはkバイト目*/ br = brightness(buf+k);/*該当ピクセルの輝度*/ sum += br; /*輝度値の総和*/ } } br_mean =(double)sum/(double)(width*height); /*平均輝度を表示する*/ printf(“%sの平均輝度:%lf\n”,argv[1],br_mean); /*画像データ用バッファを解放*/ free(buf); /*ファイルクローズ*/ fclose(fpin); return0; }
240 :
c言語初心者2 :2005/11/17(木) 02:27:24
/*バッファ内の画像データの平均輝度を求める*/ sum = 0; for(j = 0;j < height;j++){ for(i = 0;j < width;i++){ k = (i+j*width)*3; /*j行i列のピクセルはkバイト目*/ br = brightness(buf+k);/*該当ピクセルの輝度*/ sum += br; /*輝度値の総和*/ } } br_mean =(double)sum/(double)(width*height); /*平均輝度を表示する*/ printf(“%sの平均輝度:%lf\n”,argv[1],br_mean); /*画像データ用バッファを解放*/ free(buf); /*ファイルクローズ*/ fclose(fpin); return0; } の二つです。長すぎて面倒だと思いますがどなたかお願いします。
>>230 Javaで全部書き直せ。話はそれからだw
243 :
デフォルトの名無しさん :2005/11/17(木) 06:23:09
MS932って日本語対応してないような。。。 宿題の丸投げかよ(w
オブジェクトを丸々コピーするにはどうしたらよいでしょうか? Hoge a = new Hoge(); Hoge b = new Hoge(); a = b; //これではだめですよね? a.copyFrom(b); //こんな感じで中身もコピーしたいのですが・・・
>>244 cloneメソッドを自分でオーバーライド
> MS932って日本語対応してないような。。。 > MS932って日本語対応してないような。。。 > MS932って日本語対応してないような。。。 > MS932って日本語対応してないような。。。 > MS932って日本語対応してないような。。。 > MS932って日本語対応してないような。。。 > MS932って日本語対応してないような。。。
248 :
225 :2005/11/17(木) 11:13:15
JAVAでIPv6プログラミングをしたいと言っていて、WITH_IPV6パッチを当てていたものですw
ようやくできました!!どうやら正解は
>>222 氏の
# make clean ; make CFLAGS+=WITH_IPV6 patch ; make install
みたいです。これでインストールしなおしたら
>>177 氏のテストプログラムが正しく動くようになりました。
長い間レスしてくださったみなさん、本当にありがとうございました!
249 :
デフォルトの名無しさん :2005/11/17(木) 11:29:04
自ら作成したbyte[]をzip圧縮し、ファイルにではなく 新たなbyte[]の変数へ置き換えようと思います。 (byte[] planeByteArray →圧縮しサイズ抑制→ byte[] zipedByteArray) zipファイルは作成する必要がなく、byte[]データの圧縮のみ行えればよいのですが、 ZipEntryクラスのインスタンスを生成する時に指定する、コンストラクタの 引数(ファイル名)は適当な文字列を入れてよいのでしょうか? それともZipEntryを使わずにデータのみzip圧縮が可能なのでしょうか?
>>249 圧縮したいだけ(zipとの互換性いらない)なら、GZIPOutputStream使えば?
蛇足:
plane -> plain
ziped -> zipped
だと思われる。
253 :
249 :2005/11/17(木) 11:54:33
>>251 さん
要求メッセージの一部に圧縮データを付加、応答メッセージには圧縮データを
そのまま乗せてもらい解凍するので、内部で扱えれば問題ない(zip互換必要なし)です。
GZIPOutputStreamは考慮してませんでした。ありがとうございます調べてみます。
>>250 ,
>>252 さん
現在は適当にzent = new ZipEntry("test.zip");のようにして使っています。
さすがにこれは自分でもどうかと思っていたところです。
254 :
249 :2005/11/17(木) 11:55:33
スペルミスの指摘もありがとうございます(^^;
>>224 JTreeに限らずSwingはtoString()をデフォで表示するという特徴がある
つまり、実装クラスがStringならそのまま文字列なのだがそれ以外もありえるので
文字列とは限らない
ノード名を取得すると考えずに
DefaultMutableTreeNodeをつかってユーザーオブジェクトのセットをしたほうがらくだと思われ
そのユーザーオブジェクトにStringいれてもいいしコレクションだろうがBeansだろうが自由にすればいい
リストボックスだろうがテーブルだろうがコンボボックスだろうが、入るのはクラス
これがSwingの楽な点でもある
String a; String b; a="a"; b="b"; a=b; とするとaに"b"が入りますか? それともaがbを指すだけですか?
>>257 a が、そのとき b が参照していたもの(この場合は"b")を参照するようになる。
>>258 さんくす。やっぱりそうですよねー
中身をコピーしたい場合はどうすればよいでしょうか・
>>259 a = new String( b );
>>260 さんくす。
>>261 そのとおりです。すみません。
ちなみにDate型はどうやってコピーすればよいでしょうか?
>>262 Date date2 = (Date)date1.clone();
>>263 ありがとうございます。
なるほど。キャストしないといけなかったですか。
265 :
224 :2005/11/17(木) 15:22:45
>>255 さん
貴重なお時間を使っての回答ありがとうございます。
Node型とTreeNode型で互換性が無さそうだったので、
DefaultMutableTreeNode型もそうなのかとスルーしていたのですが、
ダメ元でTreeNode型の変数をDefaultMutableTreeNode型に型キャストして
toString()をかけたらノード名が出てきました。
>>255 さんのおかげです。本当にありがとうございました。
>>244 はString とその他のクラス(とプリミティブ型)の違いを理解できなくていずれ嵌るんだろうな。
散々がいしゅつなねただが・・・。
>>265 ほかにもDefaultなんちゃら〜ってのがたくさんあるけど
Swingは標準でそれ使ってる
逆にこれらを継承していったり実装していけばいい
ソースコードをみるとこの辺わかるよ
Swing部分のソースコードは分かりやすいから斜め読みしてみるといい
API見るときは既知の実装されたクラスとかのリンクみるといいよ
if (obj instanceof Foo) で obj が Foo クラスのインスタンスかどうか調べることができますが、 この Foo を実行時に指定するにはどうしたらいいでしょうか。 つまりコンパイル時には Foo というクラス名がわからなくて、設定ファイルなどからクラス名を読み取った場合などです。 ついでに try { ... } catch (Excetion ex) { ... } で Exception のクラスを実行時に指定する方法も教えてください。
>>289 1つめ:
obj.getClass() == {Foo}.getClass() で、とりあえず同じクラスかどうかは分かる。
instanceofと同じ動作なら、{Foo}.getClass().getInterfaces() .getSuperclass()とかで
じっくり追いかければ判断は可能。
リフレクションとか使うともっと簡単にできるのかな。
そもそもこんな処理をしないように書けるんじゃないか?
2つめ:
無理
271 :
270 :2005/11/17(木) 16:35:32
訂正 x {Foo}.getClass().getInterfaces() .getSuperclass() o obj.getClass().getInterfaces() .getSuperclass()
>>269 両方とも無理。
前者は Class#isInstance(Object) とか Class#isAssignableFrom(Class) とかで代用可能。
後者をやろうとすると、実行時にバイトコードいじるしかなさそう。
try{
//いろいろ
}catch(Exception ex){
if(HogeException.class.isInstance(ex)){
//こっちは良いとしても
}else{
//こっちはどーしよーもない。
//throw ex;するには throws Exception しなきゃあかんし
//握りつぶすのもいかんだろ。
}
}
public class RaceDemo { private final static int NUMRUNNERS = 2; public static void main(String[] args) { SelfishRunner[] runners = new SelfishRunner[NUMRUNNERS]; for (int i = 0; i < NUMRUNNERS; i++) { runners[i] = new SelfishRunner(i); runners[i].setPriority(2); } for (int i = 0; i < NUMRUNNERS; i++) runners[i].start(); } } ↑をコンパイルしようとすると「シンボルを解釈処理できません」と出るのですが どこがいけないのでしょうか?
>instanceofと同じ動作なら、{Foo}.getClass().getInterfaces() .getSuperclass()とかで じっくり追いかければ判断は可能。
>>273 SelfishRunnerクラスはどこにあるのだ?
>>273 >for (int i = 0; i < NUMRUNNERS; i++)
行末に { がないけどコピペミスなのかどうなのか・・・・
277 :
デフォルトの名無しさん :2005/11/17(木) 18:47:24
>>273 SelfishRunner というクラスは java.lang.Thread をextends してるかな。
エスパー募集かよ
エスパー伊藤:はい〜
初期化つきインスタンスフィールドについてなのですが、 必ず上から下に向かって初期化が実行されるという保証はないのでしょうか? (初期化のために下で宣言されている変数を使用してはいけない というのはわかったのですが) 例えば下の様なコードがあった場合、x生成のコンストラクタには0が 引数に渡されて、y生成時には1が渡される保証はないのでしょうか? class Foo { private int i = 0; private Bar x = new Bar(i++); private Bar y = new Bar(i++); : }
>>281 Fooのコンストラクタ内でやれば問題ないだろ
import java.util.Formatter; public class PrintfTest { public static void main(String[] args) throws IOException { int nn=1234; String ss="abcd"; Formatter fmt=new Formatter(); fmt.format("nn=%d ss=%s\n",nn,ss); //7行目 System.out.println(fmt); } } 上のプログラムの7行目で、Eclipseにformatメソッドの引数の型が 違うといわれますが、どう直せばいいでしょうか? お願いします。
>>284 ありがとうございます。安心しました。
そんなところに書かれていたんですね。
>>283 Window -> Preferences -> Java -> Compiler -> Compiler compliance level を 5.0 にすれ
日本語化してる場合は ウィンドウ -> 設定 -> Java -> コンパイラー -> コンパイラー準拠レベル
JRE が 5.0 でも Eclipse 内蔵コンパイラの Compiler compliance level が 1.4 だと
可変長引数は使えない。
>>287 ピンポイント!!
うまくできました。
全くそのとおりでした。本当にありがとう。
285さんもありがとう。
289 :
デフォルトの名無しさん :2005/11/17(木) 21:41:17
初心者です。コンパイルはできるのですが、うまくいかないのはどうしてですか? お願いします。 import java.applet.*; import java.io.*; import javax.swing.*; public class test2 extends JApplet{ public void init(){ try{ FileWriter out = new FileWriter("aiueo.txt"); out.write("aiueo"); out.close(); } catch(IOException e){} } }
290 :
しろ :2005/11/17(木) 21:44:11
for文で画像の連続やってるんですが、どうしても連続にならないんですけど? ひとつしか表示されません。
291 :
デフォルトの名無しさん :2005/11/17(木) 21:51:13
Javaって変数名に日本語使えるんだ・・・ Javaソースファイルを書くときに、変数名を日本語にしている人って いないですよね?
>>290 さっぱり意味不明
>>291 書籍や雑誌のサンプルだと結構あるね
仕事でそれやってる人はいないと思うけどね
294 :
デフォルトの名無しさん :2005/11/17(木) 21:59:38
実行しようとすると、アプレットは初期化されていません。とでて、 コマンドプロンプトのほうには java.security.AccessControlException: access denied(java.io.FilePermission aiueo.txt write) とかが出てきます。
>>294 つーかaiueo.txtってもちろん存在するんだよな?
296 :
292 :2005/11/17(木) 22:04:31
お〜、いきなりレスが・・・ > 書籍や雑誌のサンプルだと結構あるね Javaを勉強して2日目ですが、いきなりのビックリです・・・ > 仕事でそれやってる人はいないと思うけどね やっぱりそうですよね。VBも変数名とかに日本語が使えるという話を 聞いたことがありますが、さすがに日本語で変数名とか付ける人は めったにいないですよね・・・
297 :
291 :2005/11/17(木) 22:05:15
すいません。↑の名前はは292ではなく、291です。 ごめんなさい・・・
298 :
デフォルトの名無しさん :2005/11/17(木) 22:06:33
>>295 その辺も試したのですが、あるないに関わらず同じエラーがでました。
299 :
デフォルトの名無しさん :2005/11/17(木) 22:08:00
どなたか教えてください。 マルチクライアント非対応サーバになんとしても接続したい場合 InetSocketAddress socketAddress = new InetSocketAddress("localhost", 1234); Socket socket = new Socket(); while ((socket.isConnected()) == false) { try { socket.connect(socketAddress,0); } catch (Exception e) { System.out.println("未接続"); } } ではなぜダメなのでしょう? サーバが他のクライアントと接続を切ってすかさず接続待ちの状態 に入っているのですが、このコードではwhileを抜けれずループしっ ぱなしになるんです。
>>298 まぁアプレットの制限を調べてから
プログラム書こうよね
>>291 public class クラス { public static クラス オブジェクト = new クラス();}
java使いって落ち着きが無いよね
303 :
デフォルトの名無しさん :2005/11/17(木) 22:26:25
305 :
デフォルトの名無しさん :2005/11/17(木) 23:54:37
質問です。 JavaMail API を使ってメール送信が出来るプログラムを作ったのですが、 jarにすると動きません(javaコマンドだったら動きます)。 JavaMail API を使っているクラスのコンストラクタ呼び出しで固まって しまっているようです。 どうしたらいいんでしょうか
どうかたまるんだよ コマンドラインからやるのとjarであることとは関係ないぞ
308 :
305 :2005/11/18(金) 00:56:17
>>306 ありがとうございます。
java -jar で動かしてみたら NoClassDefFoundErrorが出ていました
(
>>307 今までjarファイルダブルクリックで起動していたもので)
となると…jarから起動させたい場合はどうしたらいいんでしょうか。
よろしくお願いします
クラスパス入れてないだけかよ
310 :
305 :2005/11/18(金) 01:35:11
以下のプログラムを実行しようとしてもNoSuchMethodErrorが出てしまいます どうすれば解決するのか教えてください public class TwoThreadsDemo { public static void main (String[] args) { new SimpleThread("Jamaica").start(); new SimpleThread("Fiji").start(); } } public class SimpleThread extends Thread { public SimpleThread(String str) { super(str); } public void run() { for (int i = 0; i < 10; i++) { System.out.println(i + " " + getName()); try { sleep((int)(Math.random() * 1000)); } catch (InterruptedException e) {} } System.out.println("DONE! " + getName()); } }
312 :
デフォルトの名無しさん :2005/11/18(金) 11:35:55
文字コードについて悩んでいます。 FileInputStream inReader = new FileInputStream(args[0]); BufferedReader bufReader = new BufferedReader(new InputStreamReader(inReader, "えんこーど")); として、一行一行 で読んでは、書き(ISO2022JP)というだけのプログラムなのですが、 入力で何を指定しても inline = bufReader.readLine(); で止まってしまうのです。必ずというわけではありません。 何処かの行で止まり、とまる行はファイルと転送モードが同じであれば、毎回同じ行で止まります。 (アスキー転送でもバイナリ転送でも、どちらでも発生しますが、止まる部分は違います。) 前提として、Windowsからfedoraに転送したものを読み込みます。 苦肉の策で、iconvを使用して、Shift-JISからいったんUTF-8に変換し UTF-8として読み込んでいます。 しかし、毎回事前にiconvを走らせるのは面倒ですし、いろんなミスの不安が付きまといます。 それ以前に、どの程度iconvが信頼できるのかわかりません。fromをShit-JISとひとくくりに 扱ってる所も不安です。 どうにかJava内だけで対応出来ないでしょうか。
>アスキー転送でもバイナリ転送でも なんだそりゃ
多分、FTP でサーバにアップして、 そのサーバで当該プログラムを実行している、ということなんだろう。 エンコードはあってるの? バイナリデータをダンプするなり、バイナリエディタで開いて確認したりしてみた? ※Reader でないものを inReader などと名付けるのが気色悪い。 inStream とかにしたらどうよ。
>>312 ・「止まる」というのが文字通りプログラムがそこでフリーズするのか、
それとも例外でも投げられるのか。
・InputStreamのまま読んでみるとぜんぶ読めるのかどうか。
・一番重要な "えんこーど" というのが "Shift_JIS" なのか
"Windows-31J" なのか。
>>311 どこでNoSuchMethodErrorが出ているのかな?
--- チラシの裏 --- 最近、基本がなってない質問が多いのは 卒研が本格的になってきたからな
>>311 NoSuchMethodError は、
コンパイル時の環境(ライブラリパスなど)より実行時の環境が古い時などに起こる。
自作のクラスの古い class ファイルが残ってたり、
JDK と JRE のバージョンが違ってないかチェック。
319 :
312 :2005/11/18(金) 14:12:10
>>314 そうです。一番大事な所が説明不足でした。すいません。
FTPもしくはJavaのFileUploadでテキストファイルをアップロードしています。
(FileUploadはバイナリ転送なので、FTPでアップロードした場合と同じ所で止まります)
エンコードには何を指定しても、止まってしまいます。
>>315 例外無しでフリーズします。
InputStreamのまま読むのも試してみます。
"えんこーど"には何を指定してもダメでした。
"2005/11/18"という文字列からDate型の変数を作りたいのですが どのようなコーディングになりますでしょうか? よろしくお願いします。
どなたか知っていれば教えてくだされ。 製品を jar として納品しますが、ソースは納品しません。 そこで、jar 使用時に例外が発生した場合、スタックトレース内にソースの情報を含めたくないのです。 例えば下↓の文の場合、3:だけは表示したくないのです。 1:java.sql.SQLException: No suitable driver 2: at java.sql.DriverManager.getDriver(Unknown Source) 3: at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:743) 利用者側のソース情報が表示される分には何の問題もありません。 jar のオプションでできるのでしょうか。 それとも StackTraceElement を加工するしかないのでしょうか。
>>322 コンパイル時のオプション。デバッグモードオフでコンパイル汁
326 :
デフォルトの名無しさん :2005/11/18(金) 15:26:09
2つのjavax.sql.RowSetをひとつのトランザクションとして一まとめに処理したい場合って どうするのですか?
327 :
322 :2005/11/18(金) 15:31:00
>>323 ありがとうございます。
情報が不足していたので補足します。
納品するのは「デバッグモードオフで実行するアプリ」ではなく、
開発者が使用する「クラスライブラリ」なのです。
なので開発者がデバッグモードのときでも非表示としたいのが目的です。
323さんのご指摘で実現できる方法があれば是非おしえてください。
>>317 確かにこの時期APIマニュアルも読んでないのが多いんだよな
あとは基本的な言語使用とか
330 :
デフォルトの名無しさん :2005/11/18(金) 18:00:41
>>327 Javaってインタプリタって知ってる?
バイトコードを展開すればソース取れるんだが。
331 :
322 :2005/11/18(金) 18:17:37
知りません、知るつもりも無いですが javaなんて本当は使いたくないのに
332 :
322 :2005/11/18(金) 18:21:20
ヤりません、ヤるつもりも無いですが セックスなんて本当はヤりたくないのに
テキストファイルを読み込まずに何行あるか分かるメソッドないですか? やっぱり一度読み込んでカウントするしかないんですかね。
335 :
デフォルトの名無しさん :2005/11/18(金) 18:50:18
>>334 実際に、どういった場合かを書いた方が良いと思うよ。
>>336 きっとこういった場合だと思うよ。
String[] lines = new String[file.getLines()];
ただただ配列に入れたいだけ。
338 :
334 :2005/11/18(金) 19:58:41
テキストファイルのファイル名に、 行数を埋め込むようにすることで、実現できました。
仕様でカバーできるならそれでもいいんじゃないかな 俺ならファイル名には格納せんが
340 :
デフォルトの名無しさん :2005/11/18(金) 20:18:01
>>331 Javaも使いこなせないようでは
この先仕事は無いぞ
>>334 そんなメソッドどんな言語でも実現不可能
>>341 読み込む処理を自分で書かずに、だったら実現できそうだけど。
commons io 使えば FileUtils.readLines(file, encoding).size() で取れるし。
343 :
デフォルトの名無しさん :2005/11/18(金) 22:35:11
344 :
デフォルトの名無しさん :2005/11/18(金) 23:04:06
Javaアプレットかサーブレットで書かれた掲示板とかご存知の方いないでしょうか? あまり複雑な物じゃなくて自分でソース書き加えてカスタマイズ可能な物ならなお嬉しいのですけど
自作した方が早いな。めどいけど。
サーブレットの自作なら簡単だが、レンタルで設置する環境が少ない。 アプレットも最新のJDKを使えば余裕で作れるが、1.1しか使っちゃいけないみたいな空気。
347 :
デフォルトの名無しさん :2005/11/19(土) 00:32:30
Javaってインタプリタって知ってる? バイトコードを展開すればソース取れるんだが。
知ってるけどそれが何か? ネイティブだって逆コンパイルできますよ。
いや、俺は醤油派だし
350 :
デフォルトの名無しさん :2005/11/19(土) 01:10:28
ServerSocketでポートをオープンして そのポートに来た通信をすべて特定の他のマシンのポートへ転送。 他のマシンからの返信もそのままソースへ戻す 単にTCP通信を転送するだけのプログラムってどうすりゃいい?
>>350 accept()したらスレッド起こして他のマシンへTCP接続
→「キタ通信を読んで他のマシンへの接続に書く」を「キタ通信」が
切れるまでくり返す。
というかJavaの課題か、それ?
352 :
344 :2005/11/19(土) 01:22:27
サーブレットなら自前で動かす環境はあるのですが、 どうも最初から作るのが面倒なので、適当な物無いかと探してます。 自分でカスタムするといっても、登録メンバーに投稿内容をメールで転送したいと思う程度なので 掲示板としてある程度完成したものでも構いません。 使い方としてはグループウェア的な感じで使おうかと思ってます。 やっぱり最初から自作の方が早いですかねぇ
掲示板程度ならJSPベタでもぜんぜん行ける。 ちょい時間を投資する余裕があるなら、Struts+Velocityあたりがオススメ。 メール転送機能のこと考えるとVelocityの整形機能はアプリの質を上げてくれるはずだよ。
掲示板程度JSP+Beansとかのベタのほうがいいかと JSPはEL使えるし楽チン
掲示板の整形とメールの整形が同じ手法でできるならそっちのが楽じゃねーの?
質問です よくJSPで、HTML部とプログラム部は分けなさい、と言われますが、それは初めに一気に処理をしてそれから出力しろということですか? Perlの癖があって、感じがつかめません
そういうこと
PerlだってHTMLとプログラムが入り混じってたら最悪だろ
359 :
デフォルトの名無しさん :2005/11/19(土) 10:50:20
jarコマンドについてですが、 foo.jarとbar.jarがあって、これを解凍後に再度hoge.jarとして 一つにアーカイブしたいのですが、jarコマンドで可能でしょうか? jarファイル数は任意で、ファイル名はワイルドカードを指定したいです。 jar -xvf *.jar rem 解凍 jar -cvf hoge.jar -C . . rem 圧縮 batファイルで上記を考えたのですが、なぜか解凍が 実行できないです。 同一ディレクトリにあるjarファイルを一度に解凍するのは 無理なのでしょうか? ANTじゃないと厳しいでしょうか。
for %%j in (*.jar) do jar -xvf %%j
>>359 forを使えばできるよ
for %I in ("*.jar") do jar -xvf %I
>>346 > サーブレットの自作なら簡単だが、レンタルで設置する環境が少ない。
自宅でLinuxなどをインストールしてサーバを構築せよ
>>359 EclipseのfatJarプラグインを使うと
そういうことが非常に楽にできるぞ
365 :
359 :2005/11/19(土) 14:18:28
>>360 >>361 センキュー!できたよ。
ただ、jardescとかわけのわからんファイルができるが何これ?
ほっといてOK?
>>364 これまた簡単! 今回はbatにするけど、いいですね。
366 :
デフォルトの名無しさん :2005/11/19(土) 16:32:04
java で、プロセス間の排他制御をやる方法って、 最新のバージョンならFibber・・・・なるクラスを使えば 良いみたいだけど、昔のjava(1.1とか、1.2とか)バージョンの場合、 どうするの? Thread間ならsyncronizedでいけるのは、分かっているんだけど、 教えて。
最新のバージョンでやればいいじゃない。 Javaなんてそれそのものがフレームワークなんだから Cと違ってできないものは梃子でもできないよ。 ↓以下俺への叩き
仏様はどのような悪人でも極楽浄土へ迎えてくれます
いまさら1.1の話されてもな プロセス間の制御ってことはアプリだろうし 古いJRE使うこともないような 複数のJREは共存できるんだし
370 :
デフォルトの名無しさん :2005/11/19(土) 16:53:33
>>367 最新のバージョンを使えない〜、としたら、
やっぱり、jni + C(セマフォ)ですか?
JNIを使える環境なら最新のprivateJRE使ったほうがはやいような・・・
373 :
デフォルトの名無しさん :2005/11/19(土) 17:35:27
>>371 最新のものを使えない前提で、考えると
やっぱりこれしかないんですね。orz
jni + c でいくしか。。。
javaノミと考えると、ファイルを使った排他制御があげられると
思うんですが、レースコンディションであぼ〜ん死遭難で、
駄目ですよね
排他すべきプロセスをみんなJavaにしてThreadで排他。
375 :
デフォルトの名無しさん :2005/11/19(土) 18:29:56
>>374 複数プロセス+マルチスレッドで、syncronized って有効なんですか?
1プロセス+マルチスレッドならば、いけると解釈したのですが・・・・。
A1プロセス--A(Thread+syncronizedなプログラム)
B1プロセス--
この状態で、排他制御してくれるということですか?
いや無理だろ。 MySQLとかで擬似通信しちゃえ。
377 :
デフォルトの名無しさん :2005/11/19(土) 18:49:02
>>376 データベースが使えれば、そうしますけどね。
A1プロセス-- プログラム--データベース(排他制御)ってことですよね。
B1プロセス--
解決策としては、バージョンを上げる以外としては、セマフォ?
これ以外なにかあります?
環境がわかんね
PrivateJREがわかってないんじゃ・・・
380 :
デフォルトの名無しさん :2005/11/19(土) 19:46:00
Private JRE ってなんですか?
>>377 UNIXのシェルみたいにファイル作ればどうだ
1.2だったらFile.createNewFileがアトミック性があるので 排他制御に使えなくもない。
383 :
377 :2005/11/19(土) 20:06:02
>>381 I/O かむと、おそいんで、ほんとぜろこんまな世界の同時排他制御は
むりですよね。
>>382 その手は、微妙に危険だと思ってるんですが・・・。
レースコンディションみたいな状態だと、隙間にはいりますよね。
Private JRE って、一つのクラスのみを 最新の jar ファイルを
クラスパスに入れてコンパイルして使用するって言うことですか。
384 :
382 :2005/11/19(土) 20:49:12
>>383 隙間にはいらないことが保証されているって意味だよ。
つーかAPIマニュアルよめ。
排他制御にファイルを使いたくないんなら、ソケット使えばいいじゃん。 簡単だぜ。
386 :
377 :2005/11/19(土) 21:43:14
共有メモリ代わりにRMIサーバーを利用してセマフォ作っとくとかは?
388 :
デフォルトの名無しさん :2005/11/20(日) 01:43:53
arraylistの前方検索なのですが、 arraylist.indexOf(Object elem)を、 arraylist.indexOf(Object elem,int fromindex) の様に使いたいですが、できるでしょうか?
>>388 indexOf(Object, int) は Vector にはあるんだけどね。
390 :
デフォルトの名無しさん :2005/11/20(日) 02:12:16
vectorはレガシーコレクションだから使わないほうがいい、 と聞いていたので躊躇っていたのですがやはりそれしかないですか。 うーむ、あったら便利なのに。 arraylistでは無理という認識であってますか?
ArrayListならRandomAccess可能なんだからget(i)でいいじゃん。
>vectorはレガシーコレクションだから使わないほうがいい、 理由は違うと思う
395 :
デフォルトの名無しさん :2005/11/20(日) 02:24:09
ってことは for(int i=fromindex;i<arraylist.seze();i++){ arraylist.get(i).equals(対象); } でやるってことですか?
396 :
デフォルトの名無しさん :2005/11/20(日) 02:25:43
あ、すいません。いまみてきます。
>>395 ArrayListだから許容できる荒業だとは思うけどねぇ
398 :
デフォルトの名無しさん :2005/11/20(日) 02:27:40
あ、なるほど。 これでできそうです。ありがとうございました。 あと非常に勉強になりました。重ねて感謝します。
JFrameとかに付けた複数のコンポーネントを枠で囲いたい場合、目的のコンポーネントを付けたJPanelにsetBorderする以外の方法はありますか?
400 :
デフォルトの名無しさん :2005/11/20(日) 09:13:10
classファイルからjavaファイルに変換するデコンパイラってありませんか? ソースをなくしてしまってclassファイルだけ残っているので困っています。
jad
402 :
400 :2005/11/20(日) 12:43:46
すみません。誰かお願いします。 今日中にどうしてもソースが必要なんです。 よろしくお願いします。
こたえてもらってるじゃん。
>>400 わからなければクラスファイルをどこかのアプローダにUpしてください
デコンパイルして渡します
クラスパスってPCを起動する度に毎回設定しなきゃならんのか?
そうでもない。
C言語のライブラリパスと一緒だ
409 :
400 :2005/11/20(日) 14:09:49
>>404 すみません。仕事のものなので外には出せないんです。
方法があれば教えていただきたいです。
どなたかよろしくお願いします。
デコンパイラ以外に有効な解決策があると思うが いきなりデコンパイラに行くあたりが素敵でカワイソス
413 :
400 :2005/11/20(日) 14:36:10
自己解決しました( ´∀`)
どう解決したか書かないのも多いよな
415 :
400 :2005/11/20(日) 14:38:26
416 :
412 :2005/11/20(日) 14:52:47
>>415 スレ違いになるのでここでは回答しかねる
まあ
>>413 で解決したと言ってるのを信じようじゃないか
>>400 を見る
↓
回答を用意して書き込む直前にリロードして確認する
↓
>>413 を見る
↓
用意した回答を破棄する
↓
>>415 を見る
↓
(#´・ω・)
jad
jad jadclipse DJ
421 :
400 :2005/11/20(日) 15:46:43
>>416 なんとかお願いします。困っています。
>>417 解決していません。413は別の人です。
どうかアドバイスよろしくお願いします。
>>421 今忙しいので回答するにしても明日以降にしたいと思います
427 :
デフォルトの名無しさん :2005/11/20(日) 16:30:40
質問なのですが、intなどのプリミティブ型の変数を簡単に二進数表示するようなクラスとかってありますか?
Integer クラス
430 :
427 :2005/11/20(日) 16:40:07
431 :
427 :2005/11/20(日) 16:45:45
いえ、まだ解決していません たとえばどんな方法でしょうか?
432 :
427 :2005/11/20(日) 16:48:39
解決しました
433 :
427 :2005/11/20(日) 16:53:37
やめてください いじめないでください
トリ付けて質問すれば良いじゃない
435 :
427 :2005/11/20(日) 16:57:10
今からつけても、427を名乗る人がみんなとリップつけたらわからないじゃないですか・・・ 427書いた時点で書いていれば・・・
436 :
427 :2005/11/20(日) 16:57:50
他の掲示板で解決しました。 ここは役に立ちませんね
437 :
434 :2005/11/20(日) 17:00:14
>>435 いまさら 427 の質問の話をしてるわけじゃないよ
もう完全な回答が出てるし
IntegerのAPIリファレンスみれば解決してんじゃん 役に立ってるっつーの!(`・ω・´)
いったいいま何の話してるんだよ、質問させてくれよ
>>435 「みんなとリップつけたら」って、なんでいきなり口紅の話が?
冬だしな。薬用だろ。しかも北海道限定版
442 :
デフォルトの名無しさん :2005/11/20(日) 21:48:27
トランプゲームを作っているのですが、 このようなトランプゲームで 手持ちのカードを表示するパネルってのは どのように設計すべきなのでしょうか? 大まかな形が出来上がったものの いざ、手持ちのトランプを減らしたり増やしたりするときに更新しようとすると できなくて困っています。 今は card1 などはJPanelを継承したクラスのインスタンス JPanel panel = new JPanel;() panel.add (card1); panel.add (card2); 更に元のPanel.add.(pael); こんな感じで 更新する時には panel = new JPanel;() panel.add (card1); panel.add (card2); panel.add (card3); 更に元のPanel.add.(pael); という感じでやっているのですが、これでは更新されません。 この方法で更新する方法があれば教えてもらいたいです。
トランプくらいなら JPanel を継承して paint で描くのが一番楽。
revalidate()する
445 :
442 :2005/11/20(日) 22:21:24
>>443 今作り直しをしようとしているところですが、
paintってのは
paint()
ですか?
それとも
paintComponent(Graphics g)
のことですか?
>>444 それはちょっと無理そうです。
public void paint(Graphics g);
パネルをカードにするなよ馬鹿。 ぐらふぃっこに落とせ。な?
SwingコンポーネントをつかってというのならLabelとかJPあねl使ってというのは別に悪くはないな ただ、それが動的に計算できないようなんで自前描画もだめっぽいけど
Flashで作れば?自作画像もガンガンイベント受け取るよ。
>>446 SwingではpaintComponentじゃないのか?
452 :
442 :2005/11/20(日) 22:48:35
>>446 わかりました。ありがとうございます。
>>447 >パネルをカードにするなよ馬鹿。
そうですか・・・
Graphicsに落とします。
>>449 趣味ではなく
javaでの課題なのです・・・
どうやらcore javaの上巻だけでは資料が足りないようなので
明日にでも買ってくることにします・・・
>>452 > どうやらcore javaの上巻だけでは資料が足りないようなので
> 明日にでも買ってくることにします・・・
ぐぐればおk
454 :
デフォルトの名無しさん :2005/11/20(日) 23:00:29
class ThreadX extends Thread { String msg; ThreadX(String x) {msg = x;} public void run() { for (int i=0; i<100; i++) { System.out.print(msg); } } } public class ThreadDemo { public static void main(String args[]) { Thread th1 = new ThreadX("a"); Thread th2 = new ThreadX("b"); th1.start(); th2.start(); try {th1.join(); th2.join();} catch (Exception e) {e.printStackTrace();} } } の「aとbが混ざるまでの繰り返し回数を調べる」とはどういうことでしょうか? 実行するたびに実行結果が変わるのですが。
宿題は宿題スレ池
今Javaの課題をやっているのですがご教授願えませんでしょうか。 ・JFrameのサブクラスを作成しそのコンテントペインに前回作成したパネルを 載せること。 ・ウインドウ上部の×印をクリックウインドウを閉じたときにプログラムが終 了するようにウインドウリスナーを登録せよ。リスナーは匿名内部クラスにす ること。 ・メニューバーを実装し、「ファイル」→「終了」を選択するとプログラムが 終了するように。「ヘルプ」→「バージョン情報」を選択するとメッセージダ イアログが表示されるように。「終了」と「バージョン情報」について、それ ぞれキーボード入力Ctrl+xとCtrl+Shift+vでも実行されるようにし。なおか つリスナークラスを独立したクラスにしなさい。 という、課題なのです。 途中までは作ってみたのですが、どうしても完成しません。お願いします。
457 :
456 :2005/11/20(日) 23:02:45
スレ違い、失敬
Javaでコールバックってどうやって書けばいいの? 計算終わったら別のクラスに結果を通知するイベント 発生させたいんだけどどうやって書くの?Cしか書いたことないから 解らない
>>458 interface Callback { void invoke(); }
private Callback callback;
public void setCallback(Callback c){ callback = c; }
public void method(){
//いろいろ
callback.invoke();
}
>>366 > java で、プロセス間の排他制御をやる方法って、
> 最新のバージョンならFibber・・・・なるクラスを使えば
> 良いみたいだけど、昔のjava(1.1とか、1.2とか)バージョンの場合、
Java SE6 Mustangでしかできないとおもったけど
できるんだ。
>>461 デザインパターンにコールバックはあったっけ?
459以上に適切に説明できないと思うんだけど。
>>462 この手のスレは気分だけ上級者を味わいたいと思う輩が多いから・・・
お前を筆頭にな
465 :
デフォルトの名無しさん :2005/11/21(月) 08:11:09
藻前方助けてください for文で1〜1000の数値を出力して、その1〜1000の合計の値を出力するプログラムを 作成しているんですが、1〜1000の出力は出来ても1〜1000の合計を算出する方法が分かりません! 今出来てる分は public class Goukei{ public static void main (String args[]){ int a=0; for(a=1; a<=1000; a++){ System.out.println(a); } } } 一応1000まで表示させるということでここまでは自力でも書けましたが・・・・ 合計を算出するまでが出来ませんorz どなたかアドバイス願います・・・・
宿題スレ行け
>>466 合計しようとする努力しろよ
int sum = 0;
for(int i=1; i<=1000; i++){
sum += i;
}
System.out.println(sum);
469 :
えり :2005/11/21(月) 11:07:00
教えて下さい(ノ_・。) 今携帯からHPを作ってるのですが画像をアップロード出来るのはパソコンからだけですか?
板違いのような気がするが。
471 :
425 :2005/11/21(月) 11:20:06
>>471 decompile Javaでぐぐれば掃いて捨てるほど出てくるよ
473 :
えり :2005/11/21(月) 11:52:54
ゴメンなさい。2チャン初心者なので…質問するとこもっと探してみます。 すいませんm(__)m
初心者ならもっとよく調べろ、ぼけ
475 :
デフォルトの名無しさん :2005/11/21(月) 11:58:35
フレームにメニューバーをつけて、メニューバーにメニューを貼りつけ、 さらに、そのメニューにサブメニューとして"数字"というのをつけます。 で、"数字"というサブメニューに1〜5の数字を持つメニューアイテムを貼ります。 それで、以下のようなプログラムを書いたんですけど、ヌルポが出てしまいます。 どこがダメなのかわかりますか? 入りきらないので、ソースは次のレスに張ります。
476 :
475 :2005/11/21(月) 12:00:31
import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Sample extends JFrame{ Container c; MenuBar mb; Menu menu, submenu1; MenuItem menuitem[]; Sample(){ super("サンプルフレーム"); c = this.getContentPane(); c.setLayout(new BorderLayout(20,20)); mb = new MenuBar(); this.setMenuBar(mb); menu = new Menu("メニュー"); mb.add(menu); submenu1 = new Menu("数字"); menu.add(submenu1); menuitem = new MenuItem[5]; for(int i=0; i<menuitem.length; i++){ menuitem[i].setLabel(Integer.toString(i)); submenu1.add(menuitem[1]); } } public static void main(String[] args){ JFrame frame = new Sample(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(500,400); frame.setVisible(true); } }
477 :
475 :2005/11/21(月) 12:03:37
ああっと、 submenu1.add(menuitem[1]); は submenu1.add(menuitem[i]); ですね。 ヌルポはかわりませんが・・・。
>>476 こういうのが必要です。
menuitem[i] = new MenuItem();
配列の勉強が必要かな。
nullpo
480 :
466 :2005/11/21(月) 12:56:24
回答ありがとうございます。JAVAにも宿題スレあったの知りませんでした・・・(ノД`) スレ汚しして申し訳ありません。
481 :
475 :2005/11/21(月) 13:31:18
>>478 できました、ありがとうございます。
なるほど、intなどの配列とGUI部品の配列では、少し勝手が違いますね。
JListに関する質問です。 javax.swing.JListで表示した内容を、クリアし別のデータを 再度表示させる方法を知りたいのですが、どなたかご教授ください。
>>482 まず聞きたいがAPIマニュアルはよんだ?
>>482 1.読み込む
2.表示する
3.クリアする
4.1に戻る
486 :
デフォルトの名無しさん :2005/11/21(月) 16:33:36
JavaScriptでWindowsの×ボタン制御って可能なんでしょうか? ウィンドウ右上の×ボタンを押された際に、 閉じてよいかの確認のダイヤログを表示し、 [はい]が押された時のみウィンドウを閉じるよう制御したいのです。 function test(){ if (confirm("閉じていいの?")) { window.location.href="/login/logout.do"; } else { } } window.onbeforeunload = test; この形だとconfirmの結果がfalseでも閉じるイベントが継続して ウィンドウを閉じられてしまうのですが・・・
まあ、MustangでもJavaScriptが使えるようになるんだから このすれでいいジャマイカ
scriptが使えるのは言語だけであってブラウザの制御とは関係ないんじゃ・・・
491 :
質問 :2005/11/21(月) 22:44:00
数値をアスキーコードを用いて変換したいのですが、簡単な方法無いですか? 102(8進数)=66(10進数)=Bの流れで変換したいのですが・・・
492 :
デフォルトの名無しさん :2005/11/21(月) 23:04:29
うむ、MustangではPHPやGroovyも使えるようなので このスレでも質問を受け付けてもいいじゃろお
BufferedReader br = BufferedReader(なんたら); String line = null; while(br.ready()){ line = br.readLine(); System.out.println(line); } とかいう処理でbr.ready()で回すのってあまり使わないほうがいい?
普通こうやるんだけどね。なんでそれやろうとおもったの? String line = null; while((line = br.readLine())!=null){ System.out.println(line); }
レイアウトマネージャーの利点と欠点て何でしょうか? GUI設計してて分からなくなってきた…
利点:コンテナサイズに合わせて自動的に大きさ調整してくれる 欠点:ある程度 『型』 にはまったレイアウトしか作れない ……他に何かあったっけ?
497 :
デフォルトの名無しさん :2005/11/21(月) 23:39:23
↑こんなんはどうかな。 String line; Scanner sc=new Scanner(なんたら); while(sc.hasNext()){ line=sc.nextLine(); System.out.println(line); }
>>495 プラットフォームによるコントロールの大きさやフォントの違いなどで
固定配置ではあるプラットフォームではうまく表示されていても
別のプラットフォームでは意図したように表示されない可能性あるという問題を
ある程度吸収してくれるというメリットがある
>>494 > String line = null;
このnullは何?
for (String line; (line = br.readLine()) != null; ){ ... }
>このnullは何? まぁ、いいやん >for (String line; (line = br.readLine()) != null; ){ ... } Javaだけやっている人はこの書き方は出来ない
for の3番目の式が空白なのって、なんか違和感あるでス (;_ _)
>494 この書き方自体は俺が書いたわけでないんで どうしてかというのには答えられない。 教授が回すのは好ましくないっていってたような 気がしたんだがどうしてなのかなぁ?と思って ここに質問してみた。
普通にJavaやっている奴は
>>494 でいい
>>493 だって回していることに変りは無い、もちろん間違っていない
>>499 のやり方はJavaやっている人間から見たら基地外だが、間違っていない
ストリームの状態を指すだけだから ファイルの終わりをさすかどうかとは別
>>503 499のforイディオムってふつーだろ?
スコープ考えたらむしろ推奨だと思うが?
意図的な { String 〜 while(〜){ 〜 } } のほうが好きだな 後でその部分だけメソッド化とか容易だし
509 :
デフォルトの名無しさん :2005/11/22(火) 03:48:48
PHPのexplodeみたいな関数ありますか? explodeみたいな関数とは、指定文字で分割して 配列に格納する関数です。 よろしくおねがい致します。
>>509 String.split("正規表現")
512 :
デフォルトの名無しさん :2005/11/22(火) 03:58:10
便乗ですが、 正規表現を使わずにexplodeする方法はありませんか?
>>513 jakarta commons lang 使って StringUtils.split(str, separator);
516 :
デフォルトの名無しさん :2005/11/22(火) 10:39:29
入力された日付の文字列が正しいものかを判定しbooleanで返すメソッドを作りたいと思っています。Calendarなどを使い日本形式(?)の日付を判定することはできたのですが、 これを英形式の日付にも対応させたいと思っています。 どのようにすればよいか教えていただけないでしょうか。 trueを返す文字列 2005/11/11 2005-11-11 11 Nov 2005 (基本的にDBの日付型に登録できるものはtrueを返すようにしたい)
>>516 どのようにって、普通に対応させれば良いのでは?
何を教えて欲しいのかわからん。
丸投げしたいなら宿題スレにでも行ってくれ。
518 :
デフォルトの名無しさん :2005/11/22(火) 11:53:22
WebサービスとしてApacheAxisを採用しているのですがクライアントパソコ ンの性能のようでサーバーとの通信が遅く応答に15秒以上掛かっています。 いろいろ調べましたが、あきらかにクライアント側のAxisの処理に時間が掛 かっています。性能はクライアントのCPUが600MHzでサーバー側が1GHzで す。 Axisを最適化する方法もしくは早くする方法はありませんか。 また、Axisより早いSOAPを知らないでしょうか。ちなみにクライアントを 1GHzにすれば4秒ぐらいにはなりますが、顧客のパソコンが600MHzなので それに合わせる必要があります。 よろしくお願いします。
519 :
デフォルトの名無しさん :2005/11/22(火) 12:02:22
>>516 日付チェックなら、calendar.setLenient(false)で良いかと
>516 つ正規表現
「JTextFiledに半角英数字しか入力できない」といった制限をもうけることができますか? ↓当方が作成したこのやり方では上手くいかないみたいです。。。 JTextFiled text = new JTextFiled(); text.setDocument(new LimitedDocument(nMax)); private class LimitedDocument extends PlainDocument { LimitedDocument(){ } public void insertString(int nOffset, String str, AttributeSet attr){ try { //半角英数字以外ならreturn if(!isHarfOrNumber(str)){ return; } super.insertString(nOffset, str, attr); } catch (BadLocationException e) { DialogUtil.showSystemErrorDialog(); } } }
>>500 > >for (String line; (line = br.readLine()) != null; ){ ... }
> Javaだけやっている人はこの書き方は出来ない
意味がわからん。
それだったらCしかやってない香具師もその書き方できないことになる。
523 :
521 :2005/11/22(火) 13:01:03
/** * 文字列が半角英数字・もしくは半角数字かを判断します。 * @param 対象文字列 * @return 半角英数字-true それ以外-false */ private boolean isHarfOrNumber(String str){ if(str == null){ return false; } int nLength = str.length(); for (int i = 0; i < nLength; i++) { char aChar = str.charAt(i); if(!((aChar >= 'a' && aChar <= 'z') || (aChar >= 'A' && aChar <= 'Z') || (aChar >= '0' && aChar <= '9'))){ return false; } } return true; }
>>516 複雑なregexな正規表現つかうまでもなく
DateFormatで解決できる。
こいつでぐぐるかjavadoc見よ
"{0}/{1}/{2}"
"{0}-{1}-{2}"
"{1} {2} {0}"
こんな感じだったかな。こいつをつかってパースして
>>523 Jakarta Commons Validatorを使うとかなり楽だよ
jws使うんでjarにしてるんですが、ちょっと質問させてください。 main.jar --> commons-io.jar への呼び出しは、普通に-cp commons-io.jarとか jnlpで<resources>に書いておくとクラスパス通るんですが、 main.jar --> 俺.jar +- commons-io.jar とすると、NoClassDefFoundErrorが出ます。 俺,jarの中に入れたjarファイルにはクラスパス通せないんでしょうか? 俺.jarのMANIFEST.MFには、common-io.jarのClass-Path:を書いてあるのですが。 jarの仕様上、そういったことは出来ないんでしょうか。
527 :
デフォルトの名無しさん :2005/11/22(火) 15:37:57
>>518 速度が問題になるサービスにJavaは不向き。
速度のためならFire 10kが買えるほどの大富豪クライアントに納品しないと(w
528 :
デフォルトの名無しさん :2005/11/22(火) 15:39:59
ユーティリティクラス内のサブクラスは 普通のユーティリティクラス(public static)と同様に Static(private static)で作るべきなのでしょうか?
通常、ユーティリティークラスは状態を持たないので サブクラス(内部クラスのこと?) もstatic classで良いと思われ
>>518 マルチポスト氏ね
531 :
528 :2005/11/22(火) 16:03:09
>>529 さん
解説ありがとうございます。
確かに状態を保持しないのでstaticで良いですね。
ユーティリティクラスはstaticメソッドしかもたないなら なぜサブクラスが必要なのか理解できない。 大抵finalにして デフォルトコンストラクタもprivateにして 不用意なアクセスを禁止すると思うのだが。
533 :
デフォルトの名無しさん :2005/11/22(火) 17:36:13
JLabelのに表示している画像 を返して、 一致するならコンソール出力させたいのですが、次の記述ではコンパイルもとおりません。 ご指摘よろしくお願いします。 if(label.getIcon==("../images/test.gif"); System.out.println("test.gif"); }
>>533 構文エラー
っつーかそれって画像を比較してないし
>>533 "../images/test.gif" てStringオブジェクトとして判断されるよ
536 :
デフォルトの名無しさん :2005/11/22(火) 18:14:12
>>534 >>535 具体的に、どう対処したらよいでしょうか?
==("../images/test.gif"){
という部分は使いたいので、getIconメソッドでは無理かとかんがえています。
日本語が壮絶に微妙だな。
>>536 NetBeansでもEclipseでも、フリーのIDEを落としてくる。
で、ネットか本で、基本的なjavaの構文を勉強する。
そうすりゃコンパイルは通るように書ける。
今のレベルでは、ここに張り付きっぱなしになるし、誰も答える気すら起きない。
教育スレではないのでね。
>>536 if文自体がきちんと書けてない等、かなりの初歩的なミスが目立つので
もうすこし基本を勉強しなされ
540 :
デフォルトの名無しさん :2005/11/22(火) 19:40:00
ある文字列から、特定の文字だけを消す処理って、どうしたらいいでしょうか? 特定の文字で分割する処理があるので、それを使って、 分割後を繋げるという方法ならできるのですが、 今一効率が悪そうな感じがしまして・・・。 何かよい方法があれば、ご教授願います。
replaceでいいんでないの? s.replace("特定","");
542 :
デフォルトの名無しさん :2005/11/22(火) 19:47:29
>>541 あ、replace関数がありましたか・・・。
見落としてました。ありがとうです。
>>541 replaceAll() じゃないと文字列の場合出来ないと思うが?
質問です. たとえば文字コードSJISで書いたソースをデフォルトの文字コードがeucJPな環境で コンパイルして実行すると日本語の表示が文字化けしてしまいますけど,これを回避する 方法はありますか? ソースの文字コードをeucJPに直してからコンパイルすると正常に表示されますが, いちいち変換するのも面倒なので困ってます.
ごめん。replace()でも出来るな。CharSequenceの方で。
>>543 は忘れてくれ。
>>544 javac -encoding Shift_JIS *.java
547 :
544 :2005/11/22(火) 20:40:34
>>546 そのやり方をするなら
Apache Antでbuild.xmlを書かせることをお勧めしたいな。
<!-- compile java sources -->
<property name="encoding" name="Shift_JIS" />
<target name="compile">
<delete dir="${classes}" />
<mkdir dir="${classes}" />
<javac srcdir="${source}"
destdir="${classes}"
encoding="${encoding}"
debug="on"
optimize="off"
deprecation="off"
excludes="${excludefiles}"
>
</javac>
</target>
Shift_JISよりもWindows-31Jの方がもしかしたらいいかも。
すんません。String#charAt(int index) が導入されたバージョンについてなんですが、 このメソッドは 1.0 から存在し、1.4 からは CharSequence#charAt(int index) の実装として定義されるようになった って認識であってます?
そんなもんjavadoc見ればいいだろ
javadoc 見た上での疑問でした。 導入されたバージョンは記述無し、CharSequence は 1.4 から導入なんでどうなのかな、って。
553 :
540 :2005/11/22(火) 23:21:29
再び質問すみません。 上の回答の通り、replaceではダメでしたので、 replaceAllを使おうとしたのですが、 「シンボルを解釈処理できません。」と出てきます。 使った記述は↓ですが、 String tmp_str = "abc"; tmp_str = tmp_str.replaceAll("a", "b"); どうしてもエラーを修正できません。 何が行けないのでしょう・・・。
エラーが出るのはコンパイル時なのか実行時なのか。 コンパイル時なら jdk 最新版にすれば通るような予感。
555 :
540 :2005/11/22(火) 23:30:30
コンパイル時です。 replaceAllって、最近追加されたものなのですか? とりあえず、更新してきます。 回答ありがとうございました!
version 最初に確かめろや。ちなみに replaceAll は 1.4 から追加されてる。
>>549 一番いいのはShift_JISを完全に使用禁止に撤廃し
UTF-8で統一することだね。
>>553 > 何が行けないのでしょう・・・。
この「でしょう」っていいかたが
人様を見下しているようでムカツクので
質問に答える気が失せるんだよな。
いかにも自分のやっていることは正しくて
Javaコンパイラが悪いんだ、
質問に答えてくれるのがあたりまえなんだと
主張しているようで。
ほっとけ。本気でムカついたら、萌えキャラが困り果てて泣きついてくる姿を想像して和むんだ。
ヲタとそれに関連する物 (とくにアニメ) がムカつく
561 :
デフォルトの名無しさん :2005/11/23(水) 00:17:30
質問です 初心者で表現がおかしいかもしれませんが、例えとして、1の処理を[5回]、2の処理を[3回]、3の処理を[6回]、4の処理を[6回]、 1〜4の処理を上記の回数処理したあとまた最初に戻りループするプログラムがあるとします (ここでの処理1〜4は結構長いもの) そうする場合、一つのクラスに if (1の処理は五回未満){ 1の処理 }else if(2の処理は3回未満){ 2の処置 }else if(3の処理は6回未満){ 3の処置 }else if(4の処理は6回未満){ 4の処置 } としてループさせるのと
562 :
540 :2005/11/23(水) 00:18:31
>>558 そのような意味を込めて言ったわけではないのですけど・・・。
すみませんでした。
563 :
デフォルトの名無しさん :2005/11/23(水) 00:18:52
if (1の処理は五回未満){ 1(); }else if(2の処理は3回未満){ 2(); }else if(3の処理は6回未満){ 3(); }else if(4の処理は6回未満){ 4(); } 1のクラス 2のクラス 3のクラス 4のクラス としてクラスを呼び出すのは、どちらが軽く処理されるのでしょうか? mainのクラスを膨大にするより、クラスを別に作ってそっちで処理した方がいいのでしょうか? iアプリのゲームを作っていてループさせることを考えているのですが 電池の消費量や、動作の重さがきになるので・・・ 勿論、1〜4の流れを綺麗に固定の回数とかではなく、 いろんな要素での条件判断の上、処理を行うのですが、上手な説明の仕方がわからなくて・・・ どなたか詳しい方居ましたらお願いします 分かり辛いかもしれませんが・・・
>>560 そいつはスマン。
だけど、どうであれ自分の都合の良い方に解釈した方が気分的に良いだろうとは思った。
>>559 アニヲタネタを持ち出すとますますむかついてくるな。
アニヲタでないのにアニメ好きそうだろ
とか言ってくる奴や上司みているとぶん殴りたくなってくるんだよな。
>>565 よく何か揉め事が起きると
「どうしてこんなことになったんでしょう」
とか無責任なことをいって責任を他人になすりつけて
甘えて自分があたかも
当事者でないかのようなフリをして逃げる奴がいるんだ。
そういう奴みたいでムカツクんだよね。
MLとか掲示板とかでもよくみかけるがね。
被害者面して自己解決しようとしないオバサンみたいなのに多いがな。
>>563 > if (1の処理は五回未満){
> 1();
> }else if(2の処理は3回未満){
> 2();
> }else if(3の処理は6回未満){
> 3();
> }else if(4の処理は6回未満){
> 4();
> }
> 1のクラス 2のクラス 3のクラス 4のクラス
> としてクラスを呼び出すのは、どちらが軽く処理されるのでしょうか?
> mainのクラスを膨大にするより、クラスを別に作ってそっちで処理した方がいいのでしょうか?
>
> iアプリのゲームを作っていてループさせることを考えているのですが
> 電池の消費量や、動作の重さがきになるので・・・
> 勿論、1〜4の流れを綺麗に固定の回数とかではなく、
> いろんな要素での条件判断の上、処理を行うのですが、上手な説明の仕方がわからなくて・・・
で、どれくらい時間がかかるんだよ。
一回のループが大した時間でないなら電池消費量なんぞ
気にせんでもええだろしな。
パフォーマンスのことは実際に作ってそれが終わってから考えるべきだ。
作ってる最中にそんなこと考えているとコードが汚くなるし
自分が何をやろうとしていたのか忘れる。
各パターンで実際に自分で試してみるのがいい。
>>567 しかし、確かにそういう奴はいるが、どう考えてもこの状況はそれと違うだろう。
まして「何がいけないのでしょう」と聞いている。言葉上に失礼な点もないし、
内容的にも、俺はこいつが自分のミスを認識していると解釈すると思うのだが。
ここは質問スレなのに、一体どうあんたはどう聞かれたら気がすむのかと。
なんか日本語的に終わってるな。俺の文章。
ポチる前に分かりやすいよう並び替えたら、めちゃくちゃになってしまった。全文訂正。
>>567 確かにそういう奴はいるが、しかしどう考えてもこの状況はそれと違うだろう。
まして「何がいけないのでしょう」と聞いている。言葉上に失礼な点もないし、
内容的にも、俺はこいつが自分のミスを認識していると解釈するが。
ここは質問スレなのに、一体あんたはどう聞かれたら気がすむのかと。
571 :
デフォルトの名無しさん :2005/11/23(水) 01:17:34
あの質問が有ります。 javaのインターフェイスって 要するにクラスのグループ化が目的で インターフェイスで定義されてる抽象メソッド実装して 使うモノですよね・・・・ でもSerializableやswingのActionListenerとか いんたーそれ自体がクラスのシリアル化やボタンアクションの 機能を持ってるみたいな気がするんですけど・・・・ これってどうなんでしょうか・・・・?
>>571 j
訂正
いんたー → インターフェイス
でした。
573 :
デフォルトの名無しさん :2005/11/23(水) 01:19:54
Webページを取得し、 そのページの文字コードをUTF-8に変換したいのですが、 簡単な方法はないでしょうか? HTTPかHTMLのヘッダのcharsetから分かるとは思いますが、 書かれていない場合などにも対応できる方法はないでしょうか? ライブラリなんかがあるといいですが。。
574 :
デフォルトの名無しさん :2005/11/23(水) 01:34:03
コンストラクタで得た値を使って、privateの配列を 作りたいと思うのですが、どうすればいいのでしょうか? たとえば、 public class AAA{ private int size; private double[] input = new double[size]; AAA(int a){ size = a; } } これだと、input配列が上手く出来ていないようです。 どなたか教えてくださいm(__)m
>>574 public class AAA{
private double[] input;
AAA(int size){
input = new double[size]
}
}
576 :
デフォルトの名無しさん :2005/11/23(水) 01:44:19
悲しいほどに美しく動きました。 有難うございました。
最近、本当に礼を言っているのか どう見ても精子なのかわからなくなってきた orz
> javaのインターフェイスって >要するにクラスのグループ化が目的で ちがう
真・コンピュータ用語辞典
"どうしてでしょう
どうしてでしょう?
【発言・行動】
・メーリングリストなどで見かける、自称「初心者」の質問の仕方。
・「どうしてでしょう?」と書かれても、自分のところの開発・実行環境も書いていないし、エラーの状態も書いてないではねぇ〜。
・そう言う大事な情報を書かないのは、どうしてでしょう? こっちが聞きたい・・・。"
http://glossary.tank.jp/t0270.html
>>579 ああそういうやつがあるのか。
でもそういうのがダメなら、一体どう聞けばいいのだろうね。
なぜ初心者に「どうしてでしょう」が多いのかといえば、
それは日本語で聞いているからと言う理由以外はないだろうね。
「どうしてでしょう」に他意やまして悪意があるわけではない。
しかし、
>>558 少なくとも「人様を見下してるようでむかつく」は曲解以外の何者でもないと思うが。
「情報が足らなくて分かるはずもない質問を平気でしてくる奴ばかりでうんざり」とかなら、
まあそうだろうね、でもここ初心者の質問スレだしそういういうのもしょうがないかな、ってなるけど。
581 :
540 :2005/11/23(水) 02:25:03
うぅ、私の失言でここまで事が大きくなるなんて; 本当にごめんなさい! あれからJDKを更新したのですが、何故か未だにreplaceAllが使えないです;; java -versionでバージョンを調べても、ちゃんと java version "1.5.0_05" Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_05-b05) Java HotSpot(TM) Client VM (build 1.5.0_05-b05, mixed mode, sharing) なっているのに、依然として hunter.java:292: シンボルを解釈処理できません。 シンボル: メソッド replaceAll (java.lang.String,java.lang.String) 位置 : java.lang.String の クラス tmp_str = tmp_str.replaceAll(" ", ""); が出てきます・・・。 CharSequenceの方も検索して、それで出てきた方法で試しましたけど、ダメでした。
>>580 「どうしてでしょう?」って聞かれたら
「君が間違ってるから」って言いたくなるんじゃないかと
「ありますか?」って聞かれたら
「あります/ありません」って言いたくなるし
583 :
デフォルトの名無しさん :2005/11/23(水) 02:28:11
>>578 そうなんですか・・・・?
詠んでる本にはそう書いて有りました。
では何が目的なのでしょうか?
>>581 「うぅ」とか「;」とか「!」とか「;;」とか「・・・」とか
見事なまでに神経を逆撫でする表現がお得意なご様子
585 :
デフォルトの名無しさん :2005/11/23(水) 02:33:29
日本企業に勤務する海外ITエンジニアの悩み − @IT自分戦略研究所
"ケース2 質問や確認をするとき
(×)「〜でしょう?」 → (○)「〜ですか」
これは目上の相手を「むっ」とさせることが多い注意ポイント。
しり上がりの調子で文を結び、質問としているが、いい方によっ
ては非常に無礼に聞こえる可能性が高い。スキルがあるのにこ
の点で損をしていることは、Bridge Career Chainの第3期に相当
する人材など、日本での勤務経験がある方にも意外と多い
(Bridge Career Chainについては本連載第4回「中国人ブリッジ
SEのキャリアパス」を参照)。
全体に共通することだが、日本語が少々しゃべれる外国人に対し
て日本人は一般に寛容である。その一方で「何だ、この人は!
失礼ないい方だな」と思っても、よほどのことがない限り相手の
日本語を直接注意することはないと考えた方がよい。"
http://jibun.atmarkit.co.jp/ljibun01/rensai/noeinjp13/noeinjp01.html
586 :
デフォルトの名無しさん :2005/11/23(水) 02:35:16
別に効き方が気に入らなければ 無視すれば良いのでは? ってかインターフェイスが クラスのグループ化が目的な面も かなり有ると思うですけど。 それ以外に何か有るんですか・・・・?
>>582 それはただのイジワルというか冗談でしょ。
真面目な状況なら普通は、
「どうしてでしょう」→考えうる可能性を提示
「ありますか?」→ある/なし+軽く解説
情報が足らない→何を知らせればいいか(不足している情報はなにか)を伝える
だとおもうけど。
>>585 わざわざそんなのをコピペして
ネチケットを啓蒙する方が怖い。
でしょうか?で答えてる普通の人も居る
589 :
デフォルトの名無しさん :2005/11/23(水) 02:37:31
java3Dのこいつは読んどけって入門書ありますか? 3D関連スレで同じ質問をしていた人がいましたが、特に答えられてないようなので 質問・相談スレに聞きにきました。
590 :
デフォルトの名無しさん :2005/11/23(水) 02:41:46
通りすがりですが。
>>581 pathが怪しいと思う。
コンパイルする時javacをフルパスで打ってみて。
例えば、
C:\j2sdk1.4.2_01\bin\javac Hoge.java
という感じで。
>>587 おっしゃる通り「真面目な状況なら普通は」ということかと思う
ここでのやりとりが「真面目な状況」なのかどうかが疑問だし
ボランティアの回答者に「普通は」と言って多くを求めない方が良さそう
もしも回答してもらえて解決策が見つかればラッキーかと思う
>>591 ってか掲示板で
585みたいなビジネスマナーを出すのも
おかしい。
586こそ普通の状態。
答えたく無ければ答えなくて良いわけだし
それとも日本語を訂正させて「むっ」しない
質問の仕方をしたら答えるってワケでも無いでしょうに。
ここは聞く自由も有れば答えない自由も有る。
しかし590さんは漢だな〜 大体、日本語にケチを付ける奴に限って 何ひとつ答えずに板が荒れる原因にもなる。
>>585 そんなのもあるのか。一応参考にしておこう。
しかし話し言葉において、それは外国人が日本語をよく知らずに
なんでも語尾上げで質問することにより生ずる問題じゃないかな。
>>593 質問への注目を集めるために質問者が煽りを自演して
耐えかねた人から回答を引き出すという手法もあるようですよ
596 :
591 :2005/11/23(水) 02:53:20
>>592 なんで自分宛てに
>>585 の話を「おかしい」と指摘されてるのかよくわからないけど
とりあえずビジネスマナーに適ったやり方をしておけば避けられるトラブルもありそう
>>597 確かに外人でしかも口答と
掲示板の文字では全然意味が違う。
単に気に入らないから変なコピペで
叩く理由を追加しただけでしょ。
正しい日本語の話題は文字コードだけで
十分。
>>597 日本人だろうと外国人だろうと
会話だろうと書面だろうと
友人相手だろうと顧客相手だろうと
いかなる状況でも無難になるように
しっかりと準備した形にしておけば
より安全なんじゃない?
>>599 だからさっき俺は
>>594 で
>>585 が「いかなる状況でも無難」と言うものではなく
「口頭」かつ「外国人」と言う条件下で無難なものにすぎないといったのだが。
しかし、これではただの正しい日本語の議論になってしまって有意義でないな。
VMのメモリが9G割当しても2Gしか割り当てられない バグがあるのを見つけたんだけどどこに言えば改善してもらえるの?
603 :
デフォルトの名無しさん :2005/11/23(水) 03:28:57
>>601 恐らくそれはバグではありません。
32ビットCPUでアプリが使用可能なメモリは最大4GBまでです。
604 :
デフォルトの名無しさん :2005/11/23(水) 03:40:29
で誰かインターフェイス分かる方は クラスのグループ化が目的以外の 主要な目的とSerializableとかのインターフェイスの 挙動の謎を教えて頂けないですか?
605 :
デフォルトの名無しさん :2005/11/23(水) 03:43:11
インターフェースのどのような挙動が謎であると思われているのでしょうか。
606 :
デフォルトの名無しさん :2005/11/23(水) 03:49:36
>>605 すいません
571でも書いたのですが
自分が考えるavaのインターフェイスとはクラスのグループ化が目的
インターフェイスで定義されてる抽象メソッド実装して使うモノ。
でもSerializableやswingのActionListenerとか
それ自体がクラスのシリアル化やボタンアクションの
機能を持ってるみたいな気がするのですが・・・・
この挙動が自分には分からないのです。
607 :
デフォルトの名無しさん :2005/11/23(水) 03:58:06
>>606 それ自体が機能を持っているわけでは在りません。
例えばSerializableは中身が空のinterfaceであり何の機能も持ちません。
それをimplementsする事により、プログラマがそのクラスのシリアル化を
許可するという意思を示しているに過ぎません。
オブジェクトのシリアル化を行っているクラスでは、該当のクラスがSerializableを
implementsしているかいないかを判定し、
「プログラマがシリアル化を許可しているクラスなのでシリアル化しよう」とか
「プログラマがシリアル化を許可していないからシリアル化しないことにしよう」とか
決定しているわけです。
ActionLisnerに関しては、何かのクラスにそのリスナを登録しておき
何かのイベントが発生した場合(例えばボタンが押された等)に
そのリスナのメソッドを呼んでもらうためのものです。
>>601 動かしてるプラットフォームぐらいは書こう。
ふつうの設定のIA-32 Windowsならアプリケーションが扱えるメモリは2GB未満。
609 :
デフォルトの名無しさん :2005/11/23(水) 04:06:54
>>607 さっそくのご回答有り難う御座います。
なるほど・・・・・
”オブジェクトのシリアル化を行っているクラス”ってのも
Serializableを実装してるって事ですか・・・・?
Objectクラスの様にオバーライドして使うメソッドが有るとか・・・・
自分で言って居て良く分からん・・・・・
>>607 すいません。
もっと勉強して来て出直し来ます。
有り難う御座いました。
611 :
デフォルトの名無しさん :2005/11/23(水) 04:12:31
>>609 >”オブジェクトのシリアル化を行っているクラス”ってのも
>Serializableを実装してるって事ですか・・・・?
違います。例えばあなたがSampleという名前のクラスを作成したとします。
Sampleクラスのシリアル化を行っても良いか悪いかの決定権は
あなたにあります。シリアル化を希望するならばSerializableを
impelmentsします。
シリアル化を実際に行っているクラスがSerializableをimplements
しているわけではありません。
シリアル化を行っているクラスに、あなたのSampleクラスが渡された場合、
そのクラスは
「むむ、Sampleクラスをシリアル化しろとの指令が来たけど、このクラスはシリアル化しても良いのかな?
Serializableをimplementsしていればシリアル化しても良いということだから、SampleクラスがSerializableを
implementsしているか調べよう」
という判断をしているわけです。
612 :
540 :2005/11/23(水) 04:14:38
>>590 見事にパスの設定忘れでした。
設定したところ、無事にコンパイルできました。
ありがとうですm(_ _)m
613 :
デフォルトの名無しさん :2005/11/23(水) 04:17:58
>>611 本当に良い方ですね・・・・・
アホな質問に真摯に答えて頂いて有り難う御座います。
使用方法
シリアライザブルなオブジェクトをシリアライズする場合には
java.io.ObjectOutputStream、シリアライズしたオブジェクトを復元する
場合にはjava.io.ObjectInputStreamを使用します。
ってネットで見かけたのでここら辺のクラスが絡んでそうですね・・・
確かにこのインターフェイスの使い方を見ると
単純にインターフェイスとはクラスのグループ化が目的だけが目的とは
言えないけど・・・・・
Serializable x = new SampleClass()てのも有り得るワケですね・・・・
614 :
デフォルトの名無しさん :2005/11/23(水) 04:23:05
>>613 interfaceはクラスのグループ化・・というよりは
その名の通り「インタフェース」を提供するものです。
「このinterfaceを実装したクラスには必ずこういうシグニチャのメソッドがあるよ」という
約束をするわけです。
ですのでSerializableはinterface本来の使い方とは異なる特殊な使い方だと言えます。
615 :
デフォルトの名無しさん :2005/11/23(水) 04:27:30
>>614 自分の言う”クラスのグループ化”ってのは
実装クラスに同じシグニチャの(型と名前)メソッドを実装させて
インスタンス化の場合に便利にするって事が「インタフェース」
と考えてました。
便乗質問 シリアライズできるクラスって 「そのクラス内で使用されているクラスが、すべてシリアライズできるクラス」 でいいんでしょうか?
それに自分が詠んだ本には 継承やインターフェイス(継承するモンは無いですが)を使う時は このンスタンス化の場合に便利にするって事だけの場合に使って。 それ以外はコンポジションやデリゲーションとか使えって書いて有ったし。
618 :
デフォルトの名無しさん :2005/11/23(水) 04:32:32
>>615 >インスタンス化の場合に便利にするって事が「インタフェース」
>と考えてました。
それは多分誤解です。
例えば、ボタンがあります。
このボタンが押されると、ブザーが鳴るのか、核ミサイルが飛ぶのか
それはまだ判りません。
例えばその時、
「このボタンが押された時は、ButtonListenerインタフェースのonClickメソッドを
呼ぶから、そのonClickメソッドの実装は、ブザーを鳴らすなり、ミサイルを
飛ばすなりスキにしてね」
という約束事にしておくわけです。
後は、プログラマが、そのButtonListenerというインタフェースを実装したクラスを
スキに作ってボタンに渡してやればよいのです。
619 :
デフォルトの名無しさん :2005/11/23(水) 04:36:15
>>616 それは違います。そのクラスの中にシリアル化できないクラスが含まれていれば
シリアル化できません。
>>617 経験を積めば段々判ってくると思うので、まずはいろんなコードを読んだり
プログラムを沢山書けば、自然にわかってくるはずです。
JavaのIDEが無料になりすぎてどれがいいのか分かりません。 使った人とか適当でもいいので特徴とか教えてください。
621 :
デフォルトの名無しさん :2005/11/23(水) 04:39:20
>>615 >インスタンス化の場合に便利にするって事が「インタフェース」
>と考えてました。
便利にするには通常のクラスのほうが便利なんじゃないでしょうか。
派生クラスのほうで基底クラスとは違う処理のメソッドがなければオーバーライドしなければいいのですから。
interfaceを用いる場合は、このinterfaceから派生するクラスには
「このメソッドがなければならない」という縛りをつける時に使用する、でどうですか?
623 :
デフォルトの名無しさん :2005/11/23(水) 04:44:58
普通のインターフェイスは何となく分かるんですが・・・ Serializableは特殊で swingのActionLisnerは・・・・音を出す、核のミサイルってのは 自分で実装するのは分かるけど ボタンアクションは・・・・・要するにGUIでユーザーがボタンをクリックした 時にそれアクションをするクラスが無いと駄目ですよね?
624 :
デフォルトの名無しさん :2005/11/23(水) 04:47:39
>>621 インタフェースを提供するのがinterfaceです。
でも、今は深いことを考えずに先に進む事が重要だと思います。
ではおやすみなさい。
625 :
質問 :2005/11/23(水) 04:48:23
>>491 でも書いたのですが、JAVAでアスキーコードとか用いて数値を変換するのプログラムとか教えてください。
>>622 長々と付き合って頂いて有り難う御座います。;
この話題が気になって未だにeclipse3を立ち上げられない・・・・
「このメソッドがなければならない」という縛りをつける時に使用する」
が正に継承(実装する時)のキモと思うですけども
インターフェイスAを実装したB,C,Dが
A b = new B()
A c = new C()
A d = new D()を必ず保証するのが抽象クラスや
それを更に制約を強化したのがインターフェイスと考えてましたが・・・・
>>619 えーと、確認です
>>616 「そのクラス内で使用されているクラスが、すべてシリアライズできるクラス」 → シリアライズできるクラス
>>619 「そのクラスの中にシリアル化できないクラスが含まれている」 → シリアライズできないクラス
で
>>616 が違っていると言われた点はどこですか?
>>620 とりあえずEclipseでは?
情報も多いし、使用しているところも多い。
>>629 Sun Java Studio Enterprise
Sun Java Studio Creator
とかあたりはどうなんでしょう。
JDeveloperとかも無料になってるし。
Microsft Visual Studio Express Edition
も一応J#とかいうへんなのは在るみたいですが。
>>625 >>491 「数値を変換する」の意味がよくわかりませんが
int型数値を10進、8進で表現したいのであれば Integer.toString(int i, int radix)
文字コードとして扱いたければcharにキャストするだけ
なのだが…ちがうのか?
J#って使ってるひといるのかな? J#の存在意義がまったくわからない。 使っている人がいたら挙手、お願いします。
>>625 >>491 つ[ Integer.parseInt(String s, int radix) ]
>>518 WebServiceというCPUリソースを大量消費するテクノロを使うのに
なんでクライアント機は600MHzのマシンなんだ?
パソコンの中の人はXMLをエンコードしたりデコードしたり必死なんだぞ。
あれこれ努力する前にクライアント機を新調してくれ!
…と上司に報告だ!
パフォーマンス面の問題の場合、ソフトウェアで努力するよりはハード ウェアを買ってしまったほうがコストが低いことが多い。
チラシの裏 スレ伸びてると思ったら 自治厨てかマナー厨が沸いてたのね お前がどう思うかなんてどうでもいいんだよね 愚痴りたかったらマ板でどうぞ
640 :
質問 :2005/11/23(水) 08:57:18
>>631 >>633 数字を10,8,2進数に変換するのはInteger.parseInt(String s, int radix)を使えば良いと分かりました。
例えば、Bはアスキーコードでは102(8進数)なのですが、キーボードからBと入力したら102(8進数)と処理するプログラムを作りたいのですが、
アスキーコードをプログラムに関連付けるみたいな事は出来ないのでしょうか?
説明下手ですいません。
まぁ上で言葉遣いがどうとか発狂してた
>>558 も
チラシの裏というか便所の落書きの
>>636 も
全く無意味なマスターベーションだな
>>640 > キーボードからBと入力したら102(8進数)と処理する
これじゃわからん。
644 :
質問 :2005/11/23(水) 09:24:45
>>640 例えば実行結果ですが
A〜Zまでのアルファベッドを入力して下さい。
B
Bは8進数で102です。
こんな感じです。
それ宿題だろ? だったら宿題スレ池
>>644 char c = //入力
System.out.println(c + "は8進数で" + Integer.toString(c, 8) + "です。");
じゃいかんのか?
っつーか、
>>631 で回答貰ってるような。
>>640 たしかに宿題っぽいからスレ違うかもね。
たぶんこんな感じかな。
【キーボード(標準入出力の場合)】
Integer.toOctalString(入力された文字)で8進数に変換できる。
【文字列の場合】
文字列のStringオブジェクトからtoCharArray()でcharの配列を取得。
Integer.toOctalString(char配列[index])で8進数に変換できる。
【補足】
2進数・・・Integer.toBinaryString(int)
8進数・・・Integer.toOctalString(int)
16進数・・・Integer.toHexString(int)
648 :
質問 :2005/11/23(水) 09:37:29
>>646 あ、アスキーコードとか使わなくてもInteger.toString(int i, int radix) を使えばいいんですね。
ありがとうございます!
キーボートで押されたキーを判別するなら KeyEventを拾って KeyEvent#getKeyChar() てか明らかに宿題だな
5.0以降ならprintf 使ってもOK。 System.out.printf("%1$cは8進数で%1$oです。", (int)c);
651 :
質問 :2005/11/23(水) 09:40:53
647>>さんもありがとうございます! 次からは宿題レスに行きます。
652 :
デバッグよろ :2005/11/23(水) 11:01:09
import java.io.*; public class Drink{ public static void main(String[] args){ BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); try{ // System.out.println("飲み物は何が好きですか?\n1 オレンジジュース\n2 コーヒー\n3 ミルク"); System.out.println("飲み物は何が好きですか?"); System.out.println("1 オレンジジュース"); System.out.println("2 コーヒー"); System.out.println("3 ミルク"); String line = reader.readline(); int n = Integer.parseInt(line); switch(n){ case 1: System.out.println("オレンジジュースです。") break; case 2: System.out.println("オレンジジュースです。") break; case 3: System.out.println("オレンジジュースです。") break; } }catch(IOException e){ System.out.println(e); }catch(NumberFormatException e){ System.out.println("数字の形式が正しくありません。"); } } }
654 :
デフォルトの名無しさん :2005/11/23(水) 11:21:03
コマンドラインで appletviewer test.html と実行するとき、appletviewerを略してappvと出来るようにしたいのですが、教えてください! appv test.html こんな風にする方法です。
655 :
652 :2005/11/23(水) 11:23:56
>>653 あっ、間違えてた。でもそこは関係ないじゃん。コンパイルすると100個くらい
エラーが出る。エロイ人!!おせーてください。
>>655 宿題なら宿題スレに行く方が良いと思うよ
仕様が不明な状態ではデバッグは無理だよ
>>652 String line = reader.readLine();//Lを大文字
と
System.out.println("オレンジジュースです。");//;追加×3
658 :
652 :2005/11/23(水) 11:40:45
>>627 あるインスタンスのtransientでないフィールド(クラス、インスタン共)の
インスタンスがSerializableでかつ、それらのインスタンスを再帰的に調べてもずっと
Serializableなインスタンスばかり含まれる場合のみシリアライズを実行可能、ってことだろう
例えばシリアライズしたいインスタンスのクラスに、public Parent p; というフィールドがあって
public Parent implements Serializable {....}
であったとしても
public Child extends Parent {
private NotForSerialize a;//シリアライズできないクラス
}
となっていて、 p = new Child(); と代入されていた場合は
この「インスタンス」はシリアライズできない
ってことが619の言いたい事ではないかな?
class抜けてたよorz
>>604 デザインパターンの本を読め
そうすれば謎は解ける。
とりあえず結城浩の「Java言語で学ぶデザインパターン入門」でも
よんどけばわかる。
あと、「シリアライズできない」の意味も2重にあるね → 実行時例外 NotSerializableException 発生 → 例外は発生しないが、シリアライズ・デシリアライズの結果が「正しく」ない ex)スーパークラスがSerializableじゃなかった
663 :
デフォルトの名無しさん :2005/11/23(水) 12:46:56
>>630 Sun Java Studio Enterprise
Sun Java Studio Creator
がただになったってことは
NetBeanはいらなくなる?
NetBeansのほかにCreatorもEnterpriseも複数インストールするのだるいんだよね。
メインはEclipseを使っているだけに。
GUIを作るときだけCreatorを使うっててもありか。
CreatorでGUIだけって・・・正気か
666 :
デフォルトの名無しさん :2005/11/23(水) 14:57:17
JAVA 2 SDKダウンロードしたいんだけど サン・マイクロシステムズのHP落ちてない?? 他に方法ない??
>>668 jp.sun.com でもいけたぞ。
ちょっとつながらなかっただけで鯖落ちを疑うなよw
>>670 マジで.落ちてないんだ.
何回やっても繋がらないOrz
>>672 おれも繋がるぞ。
繋がらないのは、まぁいわゆるウイルスだ。気にするな。
でもここからJ2SDKのダウンロードページに行けるの?
SunのWebサイトが繋がりにくいのも事実だ。
675 :
デフォルトの名無しさん :2005/11/23(水) 17:30:04
>>654 でも載せたのですが、コマンドラインでappletviewerを略す方法教えてください。
>>675 それは Java に関する質問というよりもむしろ OS 関連の質問になります
残念ながらスレ違いですので適切な場所に移動してご質問ください
677 :
デフォルトの名無しさん :2005/11/23(水) 17:47:10
classファイルをバイナリ解析する方法があると聞いたのですが、どうやればいいのでしょうか? また、解析するとどのような情報がわかるのでしょう?
678 :
666 :2005/11/23(水) 17:56:00
気がついたら3時間・・・・ 俺釣られてる??マジで落ちてない??
>>677 >解析するとどのような情報がわかるのでしょう
ソースコードがほぼ完全に復元できます。
class のフォーマットについて死ぬほど詳しく載ってる書籍があったと思ったけど、
名前忘れた。スマヌ。
>>680 >ソースコードがほぼ完全に復元できます。
これはすばらしい・・・
ううむ、なんと言う書籍なんでしょうねぇ。
Webで探してもあまり多くの情報は出てこないし・・・
何ヶ月か前にJAVAを始めて現在数値計算用のプログラムを作っているのですが、 整数の値がLong型で表すことができる値を超えてしまった場合の例外処理はできるのでしょうか?
>>682 Long型の定義がわからないので答えようがありません。
大文字小文字もだけど、全角半角もちゃんと区別しろよ。
684 :
デフォルトの名無しさん :2005/11/23(水) 19:25:52
このサイト見たらプログラムもあるし、画像処理何でも出来るってサイトない?
ない
686 :
デフォルトの名無しさん :2005/11/23(水) 19:45:48
あるだろ?
687 :
デフォルトの名無しさん :2005/11/23(水) 19:46:49
>>683 すみません
整数を表すデータ型のlongです
Javaには整数型のオーバーフローはないよ
オーバーフローはするだろ。例外は飛ばないけど。
? オーバーフローしないよ
691 :
682 :2005/11/23(水) 20:02:03
>>688-689 dクス
確かにオーバーフローはしないんですが符号が
入れ替わって何事もなかったかの様に動作するのが気に食わないのです
別の対策を考えてみます
なにをオーバーフローという言い方するかの問題だけな希ガス そもそも桁数が大きい場合BigIntegerとかBigDecimalとかがあるわけだが それらは考慮したのかな
693 :
689 :2005/11/23(水) 20:05:34
>>690 ,691
表現できるビット数を超えてしまって意図しない値になることを
オーバーフローと呼ばないのであれば何もいうことはない。
694 :
デフォルトの名無しさん :2005/11/23(水) 20:23:51
>>692 BigIntegerなどについては現在考慮中ですが、
まずはエラー処理をきちんとしておきたかったのです。
>>693 確かにそうなのですが、
エラーとしてプログラムが止まってくれないのでこのような表現をしていますた。
>>665 CreatorってGUIを作るために
生まれたんじゃないのか?
SwingとかではなくWebのGUI専用か?
>>672 リロード汁。
shift押しながらブラウザのリロードボタンを押せ
>>675 >>676 OSの問題でなくても解決できることはある
それは、バッチファイルやシェルスクリプトの他に、
Apache Antを使う方法だ。
cmdタスクまたはexecタスクを使うことになるが。
だがM$-DOSバッチファイルやシェルスクリプト、GNU make
よりもわかりやすく書くことができる。
698 :
デフォルトの名無しさん :2005/11/23(水) 21:57:24
>>678 ブラウザのキャッシュを消せ。
ダウンロードページをもう一回最初からたどれ。
ダウンロードに失敗して
ブラウザの戻るを一回押しただけだと
赤い背景のボックスで警告が出るだろう。
そしたらもっと「戻れ」
わからなければjava.sun.comの最初のぺーじで
シフトキーをおしながらなんどもリロードしろ。
>>683 確かにLong型は存在しないがLong型とlong型は存在するんだな
702 :
デフォルトの名無しさん :2005/11/23(水) 22:01:20
>>699 親切にサンクス
以前も秀丸+antだけでSwingで電卓作ったんだが
なんとかレイアウトとか出たが、
デザインパターンを応用する方法がわからなくて。
GUI開発やるときロジックとGUIをどう分離するか
気になって。
Eclipse3.1でVisual Editorプラグイン使って
開発すること考えたんだが、使い勝手悪いという噂を聞いて
SunのIDEのほうがいいとか聞いたので今検討しているのでありますなのだ。
>>694 Long.MAX_VALUEを越えることがわかってるなら
BigInteger使った方が楽でいいよ。
longの最大を超えるほど計算する必要が
ないってことがわかってるならBigIntegerつかわなくてもいいけど
途中の計算で越えることがあるならBigIntegerつかってもいいかと。
パフォーマンスに多少悪影響はでるけど、
小数点数なら10進2進変換誤差が無い分精度が保てる。
>>691 >
>>688-689 > dクス
> 確かにオーバーフローはしないんですが符号が
> 入れ替わって何事もなかったかの様に動作するのが気に食わないのです
> 別の対策を考えてみます
longって例外も履かないそんな恐ろしいもんだったのか
へぇー。
履くようにstaticメソッドとかで設定することってできないのかな。
あ、strictfp修飾子をclassやメソッドの頭に追加するだけじゃ解決しない?
か?
strictfpは浮動小数点専用だった スマン関係なかった
>>704 メジャーどころの言語だとlongに限らず整数型は全部そうだろ。
いやC#はコンパイルオプションで例外をはくようにできるんだったか。
>>706 MSIL にはフロー時に例外吐く命令があったはず。Java には無いんだっけ?
なんかこええな。 事前にこのプログラムはlongのmaxを越えてしまいそうか 推測できるようにしておかないととんでもないことに なりそうだな。
>>702 NetBeansおとしてくれば?
レイアウトマネージャの勉強になると思うよ
JPanelにボーダーセットしてみれば各種パラメータの動きが分かると思う
Swingを本格的にやりたい場合現実的にNetBeansしかないからね
あとはノウハウとか貯めていければ
>>708 何の言語でも範囲を特定しておくのは普通なんじゃ・・・
>>702 VEは重たいから、そのうちだんだん苦痛になってくるよ
コーディングで対処した方が実は効率よかったりする
>>710 ってことは最初からBigIntegerってことかね。
っていうかlongでmaxを越えることって滅多にないってこと?
doubleで限界を超えることがあるなら
んなことはないと思うのだが。
Mathクラスにhtpot()なんてメソッドが追加されていることに 初めて気づいた。 へぇー 今まで自作してたけどこいつをつかえば 複素数クラスを自作しているときにわざわざ作ってしまったのだが。 他にもいろいろあるんだなlog10()とかlog(n+1)とか。 双曲線関数とか。ulpとか それよりlog2()はないのか? log_n(a)がないってことはやっぱりlog(n,a)みたいなメソッドを自作ってことか。
立方根cbrt()も追加されていた。 ただしaconh(), asinh(), atanh()が ないのが残念だ。
>>711 コードレベルでいいレベルならそれでもいいけど
実際のところ画面数が多いとかコンポーネントの数が多い場合
コードレベルで開発されたら仕事だったらそいつぶっとばしてるけどね
>>712 doubleで超えるって・・・何の計算するんだ?
そもそも浮動少数は範囲が保証じゃなくて有効桁数で保持してるだけ
誤差を前提にそれらしい値をとるだけ
それはBigDecimalでもどこで切るかというだけでいえることだけどね
>for (String line; (line = br.readLine()) != null; ){ ... } じゃぁおまえらこの書き方普通に使うんだな? 「やめましょうよぉこういう書き方すんの(苦笑)」と、言われるのがオチだ
牧瀬理穂って34才なのか
719 :
デフォルトの名無しさん :2005/11/23(水) 23:24:23
JAVA初心者です。 プログラムを書いていて、try−catchを用いて例外処理を加えると 互換性のない型というエラーがでてしまいます。 これはどうしてなのでしょうか?? ご教授お願いします。
720 :
デフォルトの名無しさん :2005/11/23(水) 23:34:29
>>661 こんばんわ
自分は"10日でおぼえるJavaオブジェクト指向入門教室"
って本を読んでいまして・・・・・
まぁ10日で覚えられるワケも無く・・・・・
昨日自分なりに考えた訳ですけども
Serializableは特別として
swingのActionListenerインターフェイスを使う時はactionPerformed()メソッドを
実装するワケですけども実際使う時はactionPerformed(ActionEvent e)で
このActionEventのオブジェクト eを受け取るからボタンアクションした時の
トリガーで自分が実装した処理を行うワケですよね・・・?
だから別にインターフェイスがボタンアクションの挙動を持ってるワケでは無い。
違うでしょうか・・・・?
>>719 あなたが互換性のない型の値を誤った方法で処理しているからでしょうね
>>720 勉強し始めて10日しか経ってないのなら、機械的にコードを書くだけに留めた方が吉。
下手に考えるとドツボにハマるよ。
とりあえず、class と interface に意味的な差はあまり無いことだけ覚えとけば良い。
技巧的な差はかなり大きいんだけど。
726 :
デフォルトの名無しさん :2005/11/23(水) 23:47:12
>>724 いえいえ。
javaを勉強し始めたのはもう随分前です。
前のスレでも書きましたけど
eclipse3やmysql、tomcat,jamesとかでweb鯖を実験的に
立てたりしてるんですけど・・・・
設定ばっかり詳しくなってもう少しjavaの基本の事を
勉強しようと思ったので・・・・・
どうも根っこの部分が分からないと気持悪いので質問してます。
分かってないのにアホな質問を連発してすいません。
>>720 結城浩の本は初心者向けで
わかりやすいからデザインパターンの
本もさくっ、さくっ、と読めるぞ。
packageがなんであるか、オーバーライドがなんであるか、
interfaceとabstractがなんであるるかが概要程度で
わかっていれば問題なしに読める。
クラス図とか(独自記法だがバージョンの古い)UML使って解説
してるからわかりやすい。例もあたえているし
ソースコードもすべて書いてるのでさくっといける。
とりあえずデザインパターンの第一章 Iteratorパターンと
次のパターンAdapterパターンを読めば
interfaceがなんであるかすぐわかる。
メソッドの引数に自分が定義したinterfaceの型を指定するとか
いうやり方もにもinterfaceは使える。
ほかに、一つのオブジェクトに対して、複数の型を持たせられるという
メリットもある。それもメソッドの引数にしていするためだが。
メソッドの引数をserializableインターフェースを実装したクラスの
オブジェクトだけしか入れたくないときとかに役立つ。
public Serializable doMethod(Serializable serializableObject){
・・・・ new ObjectOutputStream(・・・・・・・serializableObject・・・・);
}
みたいなものとか。直列化可能なオブジェクトしか使えないメソッドってことで。
>>727 なるほど・・・
金が無いんで立ち読みして良さ気だったら買います。
>>715 >
>>712 > doubleで超えるって・・・何の計算するんだ?
> そもそも浮動少数は範囲が保証じゃなくて有効桁数で保持してるだけ
> 誤差を前提にそれらしい値をとるだけ
10進2進変換誤差もある程度解決できるし、金融系にも使えるし
研究にもつかえるし、ま、いいんでないかと。
あとJakarta Commons MathのAPIに
BigMatrixというクラスが追加されたぞ。
BigDecimal対応だ。待ちに待っていた、という感じだぜ。
今まで自作していたんだけどな。
Overview (Math 1.2-dev API)
http://jakarta.apache.org/commons/math/apidocs/org/apache/commons/math/linear/package-summary.html > それはBigDecimalでもどこで切るかというだけでいえることだけどね
その心配も、Java SE 5 Tigerから追加された
java.math.MathContextというクラスで解決できる。
こいつで桁数精度を指定してnewしたオブジェクトと、
RoundingMode列挙型をBigDecimalのコンストラクタに指定すれば
自動的に指定された場所で切ってくれる。
すでに列挙型定数としてDECIMAL_128とかいうのがあって
そいつを指定すれば128bitsで計算してくれる。
C#のdecimal型とほぼ同じ精度で計算ができるようになる。
BIgDecimalにはスケールというフィールドが用意されていて
そいつをBigDecimal#setScale()で調整できる。
Commons Mathは複素数や正規分布とか統計学とか
ガンマ関数、β関数とかも追加されて気がつけば
凄いことになってるな。
>>728 図書館にリクエストするという方法もあるぞ。
結城浩はキリスト教徒だからなのか
わかりやすく解説してる感じがする。
その代わり初心者向けなので
慣れてくると物足りないと感じてくる。
そのときは他の本も読むべし。
>>726 そんなに設定ができるってことは
他の原語の経験もありそうだな。
他の原語の影響で基本文法しってるなら
Javaもすぐに習得できるだろう。
今までどんな原語を覚えていたかにもよるが
Cをしっていればすぐにわかる。
>>730 別にキリスト教徒かどうかは良いですけどw
昔、図書館にリクエストしたら古い本は駄目でした。
でも有名な人の本なら他の地域の図書館に有るかもですね。
でもインターフェイスって普通に実装して使う以外に
引数にして使うとかも有るんですね・・・・・
想像した事も無かった。
>>732 あ〜。妙な解釈すると、インタフェイスは 『多重継承できる抽象クラス』 でしかないのよ。
インタフェイスを特別な何かと思っちゃダメ。
>>731 いいえ、友達のプログラマ崩れ?っぽい奴が
居ていくつか本を貰ってjavaを独学でやりました。
javaはコードはeclipseで何とか楽出来てますけど
環境作る方が時間食ってる気もします。
もう少しjavaの基本を高めて複雑なプログラム作りたい
と思って・・・・・
735 :
デフォルトの名無しさん :2005/11/24(木) 00:14:22
>>721 >>722 >>723 どうしてもエラーが消えず、例外の簡単なプログラムを作って
みたのですが、これでも互換性のない型とでてしまいます。
何が行けないのでしょうか??
class ArithmeticException {
public static void main(String args[]) {
int a = 10;
int b = 0;
int c;
try {
c = a / b ;
System.out.println( "c = "+c );
}
catch(ArithmeticException e){
System.out.println( "ArithmeticException!! bが0のため計算できません。" );
}
finally {
System.out.println( "Exception checking completion" );
}
}
}
ご教授いただけたら幸いです!!
>>733 それって良く言いますよね・・javaは多重継承が無い代わりに
インターフェイスが有るって・・・。
インターフェイスAとXを実装したB,C,Dが
A b = new B()
A c = new C()
A d = new D()
や
X b = new B()
X c = new C()
X d = new D()
って使える場合が多重継承ですよね・・・
プラグラムでAやBを意図的に選択する・・・・・
ヤバイ、8ビットの俺の頭が痛くなってきた
>>735 問題なのは、この行
>class ArithmeticException {
こう変えれば治る
>class ArithmeticExceptionSample {
>>736 そう考えるから難しい。
単純に、B, C, D は A として扱うこともできる、X としても扱うこともできると考えれば良い。
ActionListener と Serializable を実装した Sample クラスは、
ActionListener として扱うことが出来るし、
Serializable としても扱うことが出来る。
>.>738 この場合は 例えば X b = new B() でAの抽象メソッドAmethd()は b.Amethd()っでも利用出来るワケですか? 自分は主にjsp/servletを書いてますけど インターフェイスはSerializable以外実装した覚えが無い。 インターフェイスを使うレベルって何か相当高そうですね・・・・
わりとオブジェクト指向のことは忘れて 「Javaはこう書かないとダメらしい」ぐらいでもいいんじゃないかなぁ。 コードをがしがし書くうちに 「なんかおれ似たような処理、あちこちに書いてるなぁ」 とか思い始めたら「継承」「ポリモーフィズム」の出番だ。 GUIまわりを扱うとどうしても継承やらポリモーフィズムが出てきちゃうんで コンソールアプリケーションでロジックを極めてから 外のグラフィカルな世界に出ていければいいんだけど… …いまどきCUIなんてつまらないかもね。
741 :
デフォルトの名無しさん :2005/11/24(木) 00:32:04
>>735 互換性のない型のエラーがやっと消えました(;_;)
ありがとうございました。
もっともっと勉強します(;_;)
>>741 あ、ちなみに何でクラス名を変えるとエラー消えるのかもちゃんと考えとくことを薦めるよ。
ヒントは、この行の ArithmeticException はどのクラスを指していたか。
>catch(ArithmeticException e){
743 :
デフォルトの名無しさん :2005/11/24(木) 00:36:12
>>740 あなたはどんな場合にインターフェイスを
使ってらっしゃるんですか・・・・?
言葉では難しいかも知れませんけど良ければ参考に
したいので教えて頂けますと有り難いのですけども・・・・
>720 > 10日でおぼえるJavaオブジェクト指向入門教室 これあんまり薦めない。 丸の内とらの書いた本って他はどうか知らないけど、 「10日で〜」に限っては身についた気がしない。
745 :
デフォルトの名無しさん :2005/11/24(木) 00:46:45
触って慣れるに限るよな。 そういう本を読んだ奴に限ってmainに全部突っ込みたがる
746 :
740 :2005/11/24(木) 00:52:12
>>743 正直、あまり使わない。
interfaceは本当に根幹に近い基底クラスの代わりにしか使わないから
一からライブラリを構築しようとするときにしか使わない。
でもJavaの場合、標準のAPIでも大抵の物は用意されているし
用意されていなくても、オプションで世界標準ともいえるような有名どころが作った
ライブラリが無料で手に入る。
まず既存のクラスから派生できないか考えて、たいていどこかに落ち着く。
interfaceをもし使ったとしても教科書どおりの使い方しかおれにはできないです。
>>743 まぁ書いた人にもよるでしょうけど
jsp/servletの山田先生のは分かりやすくて良かったです。
でもjavabeanくらいしか使って無いですね・・・・
>>746 なるほど・・・・
でもインターフェイスの基本をちゃんと分かってれば
ライブラリとかも使いやすいですよね・・・・
>745 というか、この手の指南本って ほとんどmainの中に全部が突っ込まれてないか? 図書館にあるのをいくつかちらっと覗いてみたが、 ソースがずーっと何ページも続くものの多いこと。 むしろ良書ってどれなのか教えてほしいくらいだよ。
>>739 > X b = new B();
Xに入れたものはXで定義したメソッドしか呼べない。
751 :
750 :2005/11/24(木) 01:05:33
訂正 Xとそのスーパークラス(もしくはスーパーインターフェース)で定義されているメソッドしか呼べない。
752 :
デフォルトの名無しさん :2005/11/24(木) 01:07:05
>>749 その本ではデザインパターンの基本だけ
GoFのTmplateやFacadeなんかも
教えていて・・・
インターフェイスの項目も
実装したオブジェクトを配列でインスタンス化して
mainで使うサンプルが有りました・・
>>750 ご親切に有り難う御座います。
>>746 えー?クロージャ作るのに使いまくりですが。
>>729 いや、MathContext使っているからこそ
今まで以上に有効桁数を意識するんだけどな
でも演算するたびにこまめにMathContext設定するのも割りとだるいね
BigDecimalは演算のたびに新しいBigDecimal返すから仕方ないんだけど
BigDecimalを3で割ったらエラーでましたとか
なんつーかもっといい実装というか使い方はできないのかなぁと
プリミティブのように扱いたいところだね
>>748 そうですね。
知識としては必須ですよ。
みなさん ご親切に有り難う御座いました。 自分なりに頑張ってレベルアップして 行きたいと思います。 m(_ _)m ペコリ
まだまだ始めたばかりですがjavaを勉強しております。 equalslgnoreCaseの使い方がいまいち解らなく質問させてもらいます。 取りあえず書いたプログラムは import java.io.*; class StringTest1{ public static void main(String args[]) throws IOException{ System.out.println("irete"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); System.out.println("irete"); String str2 = br.readLine(); boolean flag = str1.equalslgnoreCase(str1); if (flag == true ){ System.out.println("issyo"); } else{ System.out.println("tige-"); } } } です。修正していただけると幸いです。
>752 「10日でおぼえるオブジェクト指向入門」のことか? うん、持ってるから知ってるよorz この本よりも「オブジェクト脳の作り方」のほうがためになる。 サッとさらった程度だが、何だか分かりやすくて良い。 内容が気安い感じがするんだよな。 イラストはダサいが。
>>757 何を質問したいのかコードから全く見えないので、とりあえずequalsIgnoreCaseだけ説明。
つーかメソッド名の通りなので、説明するほどのコトでもないのだが
「文字列かどうかを判断する (大文字/小文字を無視) 」ってだけ。
"ABC".equals("ABC") true
"ABC".equals("abc") false
"ABC".equalsIgnoreCase("ABC") true
"ABC".equalsIgnoreCase("abc") true
760 :
759 :2005/11/24(木) 01:42:00
訂正 x 「文字列かどうかを〜 o 「同じ文字列かどうかを〜
>>759 ありがとうございます。
意味解りませんよね。すみません
しかも、プログラム間違えてるし…。
str1とstr2に大文字小文字の変化だけつけた文字列を入れて
一緒なのか確認したかったのです。
どうやらコンパイルしようとすると
boolean flag = str1.equalslgnoreCase(str2);
この文法が間違っているようでコンパイルできなかった為に
equalslgnoreCaseの書き方を知りたかったのです。
762 :
746 :2005/11/24(木) 01:47:17
>>753 Javaで無理してクロージャもどきを使わなくてもいいと思う。
軽く鬱病
入れて なんてまた卑猥なプログラムですこと
時間も時間だし、ireteと書いた。 今は反省している。
知ってる? Javaを極めたヤツのことを Java man って言うんだぜ!
Javaのマニュアル見るコマンドだな。
>761 boolean flag = str1.equalsIgnoreCase(str2); といれてみては?
DIとAOPを勉強しようと思ったらどの本読めばいいでしょうか? なんか最近シーサーとかAspectJを使うよりもああゆうのを 全部一から創って見たいのですがどこから手をつけていいやら ここにいる人はそんなの簡単にできるけど時間が無くてやらないって 聞いてきたのでもし知っていたら、本とか資料とか教えてください。
>>768 本当にありがとうございます。
できました。 lとIの違いだったとは…。
やっと寝れます。
>>766 いや、J2EEエンタープライズアーキテクトです
>>735 > class ArithmeticException {
これはこれを見たとき、わざとやってる釣りかと思った。
今日からJAVAはじめようと思って、ダウンロードしたまではいいのですが、 パス、クラスパスの設定のところで詰まりました。WindowsXPです。 パス、クラスパスを設定し、その場で作ってみたサンプルプログラムを実行するとうまくいきます。 ところが、一度コマンドプロンプトを閉じ、再度コマンドプロンプトを立ち上げると、 先ほど設定したはずのパス、クラスパスが無かったことになってしまっているようです。 原因がわかる方いましたら、解決策を教えてくださいませ。
774 :
デフォルトの名無しさん :2005/11/24(木) 08:45:33
Javaに関係ないし。 Windows板に逝け。
>>773 コンパネ-->システム-->詳細設定-->環境設定に設定する。
778 :
デフォルトの名無しさん :2005/11/24(木) 10:50:24
環境変数に書いちゃったら他のJAVAプログラムが参照しちゃうよな
パスの設定は環境変数でいいんじゃね? クラスパスは起動時に指定するにしても
>>776 では、良いやり方キボンヌ。あ、酔っぱらいオヤジが絡んでるだけかw
>>780 「スレ違いの質問には回答しない」というのが「良いやり方」なのかと思った
783 :
デフォルトの名無しさん :2005/11/24(木) 11:26:26
>>775 セキュリティ的に問題が(w
他のプログラムからも参照できちゃうよ(w
納品のときにもいちいち設定してくれとか言うのかな?
世界規模で1万台のPCのインスコ作業とか氏ぬね(w
いんすこ作業するのはクライアントのシステム部なのでどうでもいい 請け負う場合でも外注なのでどうでもいい
>>775 コンパネわらた
コンパネっていったら
普通コンクリートパネルだろw
>>783 >
>>775 > セキュリティ的に問題が(w
> 他のプログラムからも参照できちゃうよ(w
>
> 納品のときにもいちいち設定してくれとか言うのかな?
> 世界規模で1万台のPCのインスコ作業とか氏ぬね(w
そこでNotron Ghostの出番ですよ
>>783 うは、すごい人キタ━━━━━━(゚∀゚)━━━━━━ !!
スタンドアロンのPCでJavaの勉強したいってだけだろうに。
世界規模のインストールまで!
おもろいな、このスレ。
世界規模を持ち出すまでもなく、 自PCでも必要なクラスパスはアプリによって違うんだし、 システム環境変数に設定してしまうのはおすすめできかねる。
だからApache Antを使うか、 マニフェストに書き出すのがいいかと でFatJARを使って
環境変数とかがわからいないレベルを相手に いつもAntを持ち出すのはどうなんだろう・・・
え? クラスパスなんて環境変数わからなくても使えるじゃん オプションで-classpathをしてしてさ。 それをやるんだったらAntの<classpath>,<pathelement>とか つかったほうがましでしょ。 環境変数で面倒なことになるより、こっちを勧めた方が 将来ためになるし開発効率もあがる。
794 :
デフォルトの名無しさん :2005/11/24(木) 14:13:09
すみません。 Javaで作ったアプリケーションをJavaアプレット化する場合、 一般的にどのような所に注意すればよいでしょうか?
>>794 何をしたいかによる。
気をつける前にアプレットを使った場合と
使わない場合のGUIアプリを作ったことがあるのか?
797 :
デフォルトの名無しさん :2005/11/24(木) 15:13:35
このソースをコンパイルしてIE6(VMはアップデートしていません)で実行しようとすると "class test not found" と言われます appletviewer では実行できるので何が悪いのかわかりません どこが悪いのでしょうか コンパイルはこうしています javac -source 1.2 -target 1.2 test.java --- test.htm --- <HTML><BODY> <APPLETCODE="test" width=320 height=240> </APPLET> </BODY></HEAD> 次レスがソースです
798 :
797 :2005/11/24(木) 15:15:20
-- test.java 1/2 -- import java.awt.*; import java.lang.*; import java.applet.Applet; public class test extends Applet implements Runnable{ public Thread m_thread = null; public void paint(Graphics g){ g.drawString("aaa", 0, 20); } public void update(Graphics g){ paint(g); } public void start(){ if(m_thread == null){ m_thread = new Thread(this); m_thread.setPriority(Thread.MIN_PRIORITY); m_thread.start(); } } public void stop(){ if(m_thread != null){ m_thread = null; } }
799 :
797 :2005/11/24(木) 15:15:54
-- test.java 2/2 -- public void run(){ Thread thread = Thread.currentThread(); while(m_thread == thread){ try{ thread.sleep(10); }catch(InterruptedException e){ return; } repaint(); } } }
>>797 MSJVM使ってんなら javac -target 1.1 test.java にせんと動かんぞ。
801 :
797 :2005/11/24(木) 15:21:44
>>800 javac -target 1.1 test.java
とすると
javac: 1.1 は無効なソースバージョンです。
と出るんです
VMを更新してないIEでも実行できるようにしたいのですが
1.5は捨てて少し古いバージョンを入れたほうがいいということでしょうか
<APPLET CODE="test.class" width=320 height=240> にするととどう?
803 :
797 :2005/11/24(木) 15:32:26
>>797 書き写しの間違いだろうけど
</HEAD>じゃなくて</HTML>だよね
805 :
797 :2005/11/24(木) 15:37:40
あ、すみません写し間違いです
あと APPLETとCODEの間も空白が抜けてるな
807 :
デフォルトの名無しさん :2005/11/24(木) 15:39:16
>>787 Javaの仕事受けたのでこれから勉強する所かもよ(w
808 :
797 :2005/11/24(木) 15:45:57
何度もすみません… コピペするとこうなっております… <HTML> <BODY> <APPLET CODE="test" width=320 height=240> </APPLET> </BODY> </HTML>
>>808 当然、classファイルもHTMLとともに、置いているんだよな。
810 :
797 :2005/11/24(木) 16:09:36
自己解決しました javac -source 1.2 -target 1.1 test.java としてVMを1.1のままソースのバージョンを1.2にすれば動作するようです みなさんどうもありがとうございました!
JFileChooserでファイル名変更を不可にする、新規フォルダ作成を不可にするの2点が上手くいきません 随分以前にどなたかのサイトで見たような記憶もあるのですが、たどれなくなってしまって、 Swingは今更かも知れませんが、この辺ご存じの方居ませんでしょうか?
最も基本的なことやってなかったってか
ファイルに1行につき1単語が書いてあって、何行あるか分からない場合、 全ての単語をString型の配列に入れるにはどうすればいいんでしょうか?
readLine で読み取った端から ArrayList に入れて、最後に String[] に変換。
818 :
816 :2005/11/25(金) 02:20:50
ありがとうございます。
819 :
デフォルトの名無しさん :2005/11/25(金) 02:24:27
ファイルサイズからわかるから ArrayListではなくいきなりString[]にいれつことができるのでは?
820 :
816 :2005/11/25(金) 02:27:31
ファイルサイズからでも行数がわかるということでしょうか?
ダウンロードしたライブラリはどこに置けば良いんでしょうか・・・。 macOSXを使用していて、java mail を使用したいと思いって落としたんですけど、やりかたがよくわからなくて・・・。
822 :
デフォルトの名無しさん :2005/11/25(金) 04:41:14
携帯からなんですけど 最近JAVA関係の資格をとりたいと思いまして、とるならばSJC-Pをとって次に SJC-Dをとるのが無難なんでしょうか?
823 :
821 :2005/11/25(金) 07:07:27
>>821 つまらない質問してスイマセンでした。
自己解決しました。
/System/Library/Java/Extensions/以下にjarファイルをコピーして、適当にインポートしたらコンパイルできました。
824 :
デフォルトの名無しさん :2005/11/25(金) 09:35:30
import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class L2 extends Applet{ Button btn1; Button btn2; Button btn3; Button btnClear; Image[] myImg; int flag; public void init(){ myImg=new Image[3]; myImg[0]=getImage(getDocumentBase(),"1.gif"); myImg[1]=getImage(getDocumentBase(),"2.gif"); myImg[2]=getImage(getDocumentBase(),"3.gif"); Panel myPanel1=new Panel(); myPanel1.setLayout(new GridLayout(1,3)); myPanel1.add(btn1=new Button("1")); myPanel1.add(btn2=new Button("2")); myPanel1.add(btn3=new Button("3")); setLayout(new BorderLayout()); add(btnClear=new Button("画像消去")); add("North",myPanel1); add("south",btnClear); btn1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ flag=1; repaint(); } });
825 :
続き :2005/11/25(金) 09:36:36
btn2.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ flag=2; repaint(); } }); btn3.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ flag=3; repaint(); } }); btnClear.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ flag=4; repaint(); } });
826 :
続き :2005/11/25(金) 09:38:09
flag=0; } public void paint(Graphics g){ switch (flag){ case 0: break; case 1: g.drawImage(myImg[0],1,1,this); break; case 2: g.drawImage(myImg[1],1,1,this); break; case 3: g.drawImage(myImg[2],1,1,this); break; } } } このプログラムを実行するとコンパイルは出来ますが、アプレットは初期化されていません。と出ます。何故か分かりますか?教えてください。 アプレットのHTMLはごく普通です。
>>824-826 add(btnClear=new Button("画像消去"),BorderLayout.SOUTH);
add(myPanel1,BorderLayout.NORTH);
//add("south",btnClear);(゚听)イラネ
それと
flag=4;はflag=0;のほうがわかりやすい。
829 :
デフォルトの名無しさん :2005/11/25(金) 12:14:01
コンパイルすると 〜〜は推奨されないAPIを使用またはオーバーライドしています。 詳細については、-deprecationオプションを指定して再コンパイルしてください。 と表示されるのですがなにが間違っているのでしょうか? 初心者ですいませんが、よろしくお願いします
830 :
デフォルトの名無しさん :2005/11/25(金) 12:21:18
>>827 出来ました!アプレット上手く行きました!ありがとうございました!
>>829 推奨されないAPIを使用またはオーバーライドしているんだろう。
832 :
829 :2005/11/25(金) 12:25:32
>>831 すいません、その場合どうすればよいのでしょうか?
>>832 ・ APIリファレンス見て、代わりに使えるメソッドを使用する。
・ javac -deprecation オプションを使用して その場しのぎ。
まずは833氏の最初の策を必ず実行して、 簡単な書き換えが不可能だと分かるまでは 二番目は実行しないこと。
835 :
829 :2005/11/25(金) 12:36:41
>>833 ありがとうございます
>>834 とりあえず2番目を実行してしまったのですが何故いけないのでしょうか?
ちなみにコンパイルすると
java.lang.Threadのresume()は推奨されません。
thread.resume();
と出て実行されませんでした
ホントに初心者ですいません
>>835 >何故いけないのでしょうか?
仕様を推奨されていないモノを無理矢理使うことになるから。
仕様を推奨 ↓ 使用を推奨
839 :
829 :2005/11/25(金) 12:48:03
>>835 すごい連鎖反応が起きているな。
新しいものにコード書き換えた方が早いな
Eclipseを使用した環境でアプリを作りたいと思っています。 特定キーを押した場合に、特定の動作を取るという内容なのですが… これを非アクティブ時、つまりフォーカスの失われた時にも動作させるには どうすれば良いのでしょうか? FocusListenerやWindowListenerでは、 enableEventの監視を続けてはくれませんでした。 動作としては「Joy○key」の様な動きをして欲しいと思っているのですが… 先輩方、お力をおかし下さい…
最初にEclipseを使ったとかいって、 何がいいたいのかわからないが 別にEclipseは関係ない話だな
844 :
デフォルトの名無しさん :2005/11/25(金) 15:05:15
Eclipse隔離スレって無かったっけ?
846 :
デフォルトの名無しさん :2005/11/25(金) 16:08:49
JavaでMySQLを動かそうと考えています。 最初にサーバーにログインするときのパスワードは コンソールで入力させようと考えているのですが 普通にInputStreamReaderを用いると入力した文字がバレバレになってしまいます。 なんとかこれを「*」などの文字に変える方法はありませんか?
>>846 JavaSE 6.0 で java.io.Console#readPassword()
6.0かThx!
849 :
841 :2005/11/25(金) 16:51:52
すいません、Toolkit#addAWTEventListener()ですよね… 引き渡し方が解らないんですが、どうすれば良いんでしょう_| ̄|○ voidだって事でてっきりenableEventの様な使い方かと思ったんですが… どこかクラスを作ってimplementし、そっちのdispachメソッドの内部で処理するんでしょうか。 Toolkit.getDefaultToolkit().addAWTEventListener()をMainコンストラクタで生成し、 そっちに回してみたんですが非アクティブだと反応してくれないんです。 …ひよこな私をお助けくだせえorz (ちなみにEclipseと書いたのは使用環境を伝えたかったのみで、他意はございません)
まずはSwingとかAWTとかの基本的なイベントから勉強しよう 途中をすっ飛ばして結果だけ求めてもまた同じところで躓くから
javaプログラムをコンパイルするときにクラスパスを指定するやりかた(javac -classpath c:\〜 こんなの)で、 クラスパス指定先の.jarを二個以上指定するにはどうやって記述するんだっけ?
確かコロンかセミコロンでつなげればよかったはず・・・
それがうまくいかないんですよ javac -classpath "C:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\sample\WEB-INF\lib\jfreechart-0.9.20.jar";"C:\Program Files\ApacheSoftware Foundation\Tomcat 5.0\webapps\sample\WEB-INF\lib\jcommon-0.9.5.jar" CircleChartMap.java コンパイル文はコレ↑なんですが、もしかしたらクラスパスが↑で指定したjar二つしか効いてなくて、windowsの環境変数に登録されてたクラスパスの設定が消えているんでしょうか 既存のクラスパスに追記する形で指定ってどうやるんでしょうか
Windowsならセミコロン、ゆにっくす系ならコロン
>>854 javac -classpath %CLASSPATH% ;.....でできないかな
>>853-856 できました!
ありがとうございます
javac -classpath "%CLASSPATH%;C:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\sample\WEB-INF\lib\jfreechart-0.9.20.jar;C:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\sample\WEB-INF\lib\jcommon-0.9.5.jar" CircleChartMap.java
これで正解だったみたいです
>>857 あんまり長いパス名は
環境変数で TOMCAT_HOME
とかで定義しといたほうがいいぞ
ラッパクラスの配列から基本型の配列に変換する方法や、その逆の方法は、 要素を一つづつ移すしか無いのでしょうか?
860 :
デフォルトの名無しさん :2005/11/26(土) 00:33:32
>>850 正にその通り。
htmlも分からん素人状態でeclipseを使おうとしたら
まだ本とかも出て無くて設定だけで時間を食って
java自体の勉強はすっ飛ばし・・・・
まぁ勉強にはなったが。
eclipse使い始めて一年経ってやっとantを使いましたよ。
861 :
デフォルトの名無しさん :2005/11/26(土) 01:32:26
strutsを勉強中なのですが"saveErrors"を使った処理がわかりません。 ***.jspにテキストフォームを2つ持ち、そこに「intA」「intB」があり、A>Bとなるときにエラーメッセージを出力したいです。 struts-configでvalidator="true"とinput=***.jspを定義し(他の設定も正しいとして) ActionFormでint A、int B を持ち、 ***.jspに<html:errors/>を書き ***.jspのActionとして、***Action.javaを定義したのですその先の書き方がわかりません if(A>B){ return(mapping.getInputForward()); }
862 :
デフォルトの名無しさん :2005/11/26(土) 16:02:36
JavaのSwingでJButtonを継承して複数行のラベルを表示できるボタンを作っています、 ラベルの行数によってボタンの高さを変えるためコンストラクタを以下のようにしました。 CButton(String[] s,int pw){ super(); strs = s;//strsはラベルを保持するメンバ変数 FontMetrics fm = getGraphics().getFontMetrics(); Dimension ps = new Dimension(pw,strs.length * fm.getHeight());//pwは横幅 setPreferredSize(ps); } しかしこのようにするとぬるぽが発生してプログラムが終了してしまいます。 原因はgetGraphics()はコンポーネントが描画できないときはnullを返すためのようですが、 これを解決するためにはいつフォントの高さを取得してサイズを設定すればよいのでしょうか?
複数行なんてテキストをhtmlで与えればいい話だろ Swingの部品はほとんどhtmlを解釈してくれるぜ
864 :
デフォルトの名無しさん :2005/11/26(土) 16:10:44
>>863 それは知りませんでした。
ありがとうございました。
実際に描画される時になってから決めればいいんじゃないの?
866 :
デフォルトの名無しさん :2005/11/26(土) 16:15:23
strutsもswingも隔離スレ有るのに。
swingはあれ、ネタスレだとおもた
Swingの場合コアAPIにはいってきたからだぶりやすい
869 :
デフォルトの名無しさん :2005/11/26(土) 18:07:12
>>861 saveErrorsメソッドについては、requestまたはsessionにActionMessagesを保存する為のメソッドです。
Actionクラスのソースコードを読めばわかりますが、
その際のkeyには"org.apache.struts.action.ERROR"という文字列が使われているようです。
<html:errors/>タグはrequestまたはsessionスコープの中を探して
"org.apache.struts.action.ERROR"というキーでActionMessagesオブジェクトがあれば
それを表示する仕掛けです。
しかし、a > bの比較をActionクラスの中で行うのは、あまり良くないと思います。
validatorのvalidwhenなどを使うのはどうでしょうか?
870 :
デフォルトの名無しさん :2005/11/26(土) 18:35:31
30ミリ秒ごとに、アプレットに1づつ大きくなる数字を表示したいんですが、 ぬるぽが出ます。構成もいまいちよくわかってません。ご教授ください。 public class MyApplet extends Applet{ static int count=0; public void init() { Timer timer1=new Timer(); timer1.schedule(new MyTimerTask(),30); } public void paint(Graphics g) { g.drawString(String.valueOf(count),20,20); //この行でぬるぽ } } class MyTimerTask extends TimerTask{ Graphics g; int count=0; MyApplet ma=new MyApplet(); public void run() { count++; ma.paint(g); } }
871 :
デフォルトの名無しさん :2005/11/26(土) 18:38:09
DefaultTableModelを利用して、テーブルを作成したのですが、 ある一部のセルの背景色を変えたいと思っています。 どうしたらいいかアドバイスをください。
>>870 timer1 MyAppletのメンバにしたほうがいいんでは?
>>870 >ma.paint(g);
この行の g には何が入ってるの?
ma.repaint(); に変えれば良い筈。
874 :
873 :2005/11/26(土) 18:41:59
いや、すまん。872 の言うとおり、それ以前の問題だったな。
>>870 Applet#paint()は明示的に呼んじゃだめ
876 :
870 :2005/11/26(土) 19:09:09
ぬるぽはなくなり、アプレット上に数字も表示されましたが、数字が初期値0のままです。 各所にSystem.out.println();を挿入して調べたところ、 init()、paint()、run()がこの順に1回づつしか実行されていませんでした。 おねがいします。 public class MyApplet13 extends Applet{ int count=0; Timer timer1; public void init() { timer1=new Timer(); timer1.schedule(new MyTimerTask02(),30); } public void paint(Graphics g) { g.drawString(String.valueOf(count),20,20); } } class MyTimerTask02 extends TimerTask{ int count=0; MyApplet13 ma13=new MyApplet13(); public void run() { count++; ma13.repaint(); } }
>>876 スケジュールの指定が間違っているに一票
一番大きい原因は 『表示している MyApplet13 以外の MyApplet13 を repaint しようとしている』 だけど、 他にもスケジュールが 『 30 ミリ秒後に 1 回だけ実行』 になってるとか。
あ、まだあった 『値を更新しているのは MyTimerTask02.count だけど、表示しているのは MyApplet13.count の方』
880 :
デフォルトの名無しさん :2005/11/26(土) 19:45:55
流れ切ってスイマセン! Java等をこれから勉強しようと思い、明日 中古PCを買いに行きます。 予算は六万円なのですが、どの程度のスペックの物を買えば良いでしょうか? Win95時代にN88をいじっていた程度で最近の標準的スペックがまったくわかりません。 どうぞ温かい返答お願いします!
run()の中はループにしないと一回実行してスレッドは終了する
>>880 とりあえずSunのWebサイトを見て必要スペックを確認してみてはどうか
基本的にハイスペックであればハイスペックであるに越したことはないし
標準的なスペックと言われても何をもって標準とするかなんて難しい
883 :
デフォルトの名無しさん :2005/11/26(土) 19:49:06
>>876 Timerクラスの使い方のほか、他にもいくつかバグがあります。
明確なミスなので、冷静になってソースを見渡せばすぐに気付くはず。
勉強だと思って良く考えて。
884 :
876 :2005/11/26(土) 19:49:19
スケジュールは timer1.schedule(new MyTimerTask02(),30,30); と直しました。 >>原因は?『表示している?MyApplet13?以外の?MyApplet13?を?repaint?しようとしている』 どう記述しましょうか?3回目ですすみませn
>>881 Timer で回す場合は繰り返し実行される (場合もある)
886 :
884 :2005/11/26(土) 19:51:22
もう少し検討してみます。 みなさんあり。
>>884 タイマーは UI スレッドととは別のスレッドだから、
count を volatile 指定するのが普通のやり方
ただし int は原子性は保たれてるので、
速度をかすめとりたいなら、また話は別だが
>>880 そいや、今更ながら eclipse の推奨スペックってどのくらいなんだ?
メモリが重要らしいけど、メモリ高くてかなわん
おしえてエロイ人
889 :
876=884 :2005/11/26(土) 20:27:47
MyTimerTask02クラスを、MyApplet13クラスの内部クラスとしたらうまくいきました。 外部のクラスとしてMyTimerTask02クラスを定義したいときは、 何かしらの記述が必要みたいですね・・・
>>871 セルレンダラ使う
TableColumn::setCellRenderer
あたりをみてごらん
>>889 静的でない内部クラスのインスタンスは
その外側のインスタンスの上に作られるっぽく、
外側のインスタンスフィールドにアクセスが可能
別々に作ったら、共有するための何からの工夫が必要になる。
ところで、eclipse でデフォルトの設定だと
外側のクラスの private なフィールドにアクセスしようとすると、
「フィールドをパッケージプライベートにしろ、遅くなる」
って警告が出てくるんですが、これって本当?
まあ、どこでカプセル化するかの考え方によるんだけど、
最近、クラスの一部ともいうべきインナークラスのために、
他のクラスに晒すのは、どうなんだと思うようになった。
892 :
デフォルトの名無しさん :2005/11/26(土) 20:55:12
>>891 EclipseのVersion: 3.1.1をデフォルト設定のまま使用していますが
そのようなメッセージは出ないようです。
jdkは1.4.2_01と1.5.0_5で試しました。
>>892 JDKは関係ないだろ。
デフォルトのコンパイラはEclipseが独自に持っているのだから。
894 :
デフォルトの名無しさん :2005/11/26(土) 21:12:34
>>893 そうなんですか、知らなかったです。
試しにパフォーマンスに差が出るのか試しましたが、差も無いようです。
895 :
デフォルトの名無しさん :2005/11/26(土) 21:43:21
Windows上で、ドライブのボリュームラベルを知る手段はありますか?
appletviewerで標準でないライブラリを使用したアプレットを実行すると、例えば java.lang.NoClassDefFoundError: org/jfree/data/CategoryDataset というようなエラーが出ます。「NoClassDefFoundError appletviewer」でぐぐると 同様の問題に当たっている人がいるようですが、解決方法は見つけれませんでした。 書いている途中できづきましたが、非標準のライブラリを使用するアプレットは 実行する人(ブラウザ)もそのライブラリを使えないと意味がないですよね。 という事でappletviewerのクラスパス関連が怪しいと思いますが、 ハッキリとした情報をお持ちの方は教えて下さい。 あと、そのプログラムは java hoge では実行できる事を確認しています。
クラスパスを通す
898 :
デフォルトの名無しさん :2005/11/26(土) 22:02:51
javaで普通のアプリって向いてるの? 何に使われてるのが多いの?
>>898 「普通のアプリ」の定義が曖昧すぎて何とも答えようがない。
普通のi-アプリは、Javaで書かれてます。
>>898 何に使われているのが多いのか。
・サーバサイドシステム(Webシステムなど)
・携帯アプリ(iアプリなど)
・アプレット(証券のオンライントレードシステムなどでよく見る)
シェアという意味では、どの分野もいまいちじゃねーの? サーバーサイドが一番シェア率高いかな。
903 :
898 :2005/11/26(土) 22:36:40
>>898 おお、参考になります
web系が多いのか
勉強を進めていってるんだけど、何をしたらいいのかいまいち分からんのです
904 :
898 :2005/11/26(土) 22:37:06
勉強目的なら普通にSwing使ってスタンドアロンアプリでいいのでは? 業務系はわりとあるよ
907 :
898 :2005/11/26(土) 22:53:01
初めて聞く単語です スタンドアロンアプリっすね しらべてみます ありがとう
908 :
さくら :2005/11/26(土) 22:54:38
あの、Microsoft Word に付着できるプロトタイプ・アプリが作りたいんですけど、 誰か無機能アプリ(外見だけの為のアプリ)が作れる英語のサイト知りませんか? 友達が教えてくれないんですよ。。。(−_−)
909 :
898 :2005/11/26(土) 22:54:38
>>906 雑誌あまり見たことなかったです
ありがとう 漁ってみます
マイクから音声を入力してファイルに保存したいのですが、 どのクラスを使用すればマイクからの入力データを扱えるのでしょうか?
MCI
>>911 サウンド周りの基本のJavaSoundをなぜ調べない
最低限マニュアルくらい見てくれ・・・
OGGライブラリの日本語解説ってない?
英語まったく読めない俺でも使えたから サンプル見れば大丈夫かと すんごい簡単だから
916 :
デフォルトの名無しさん :2005/11/26(土) 23:36:54
初心者です。 html側から input type="text" でjspに値を渡し jsp側で request.getParameter でString型の変数に入れ その変数をif文で条件分岐させたいのですが うまく処理してくれません。 変数が受け取った値とif文で設定している半角英数字とが 一致したときの処理をさせたいのですが 同じ値を入れても、elseのほうへ飛んでいってしまいます。 どなたかお願いします。
>916 一応聞くけどequal()使ってるよね?
>>916 <input>タグにname属性は入れたかい?
getParameterの引数は"text"じゃなくてそっちだぞ
919 :
916 :2005/11/26(土) 23:41:14
いえ、使ってません。 …といいますか、equal()がよくわかりません。 ちなみに、変数をintで取り if文の条件も数字を設定すれば うまくいくんですよね…
920 :
916 :2005/11/26(土) 23:43:20
>>918 さん
おっしゃるとおり
<input>のnameに設定したものを
jsp側のrequest.getParameterに設定しています。
922 :
916 :2005/11/26(土) 23:58:12
>>917 さん
今まで「equals()」そのものを知らなかったんで
「==」で判断させていました。
さきほど、equalsについて少し調べてみまして
結果、利用方法等もわかり無事きちんと動きました。
917さんをはじめ、皆さんどうもありがとうございました!
「参加の時代」ってキーワードはいいんだけど デスクトップ環境やCGIレンタルの代替とかに食い込んでいかないとどうにもならんね 鯖だけでは終わって欲しくないけど、アプローチが弱い気がする
デスクトップは、Java Desktop System や Looking Glass が 頑張ってるけど、このあたりはやはりVM上で動くJavaは不利だ・・・。 先日のJavaOneTokyo2005で、Sunはちょっとしたネットカフェみたいな コーナーを設置して、Solaris/Java Desktop System のマシンを数台 解放していたけど、「Java Desktopはこんなに重い」をアピールして しまっていたようで逆効果だったような気がする。
あれの重さはJavaが原因じゃない希ガス
926 :
デフォルトの名無しさん :2005/11/27(日) 00:38:23
Exception in thread "main" java.lang.NoSuchMethodError: main というエラーはmain関数がないよ、って言ってるのですか?
うん
んだす。その手のエラーは大抵mainがstaticじゃないってのとjarでメインクラスの指定し忘れがあるかです。
929 :
デフォルトの名無しさん :2005/11/27(日) 00:42:16
アプレットビューアからはJTextAreaオブジェクトに書かれた文字列をCtrl + Cでコピーできたのですが。 HTMLに同様のアプレットを埋め込みwebブラウザから見たところ、JTextAreaオブジェクトに書かれた文字列がコピーできなくなりました。 アプレットビューアとwebブラウザでは何故動作が違うのでしょうか?
厳密にはstatic メソッドが無い場合
>アプレットビューアとwebブラウザでは何故動作が違うのでしょうか? アプレットビューアとwebブラウザが違うから
932 :
929 :2005/11/27(日) 00:54:50
>>931 アプレットビューアとwebブラウザの動作は違うのですか。
ありがとうございました。
では、webブラウザからJTextAreaオブジェクトに書かれた文字列のコピーをしたい場合はどうすればよいのでしょうか?
>>929 それサンドボックスのセキュリティでひっかかってる
たとえばかってにバックグラウンドでクリップボードを取得して掲示板にばら撒いたり
したら大変なことになるでしょ?
934 :
929 :2005/11/27(日) 01:03:30
>>933 なるほど。
javaアプレットって使いづらいですね。
よくよく、考えればjavaアプレット自体あまりみない気がしてきた。
本来javaはどのような場面や、プログラムで活躍するのでしょうか?
アプレットはリッチクライアントとしてしか今は利用されてないかと 制限がいやなら普通にアプリケーション作れば? 順番的には先にアプレットを触るというのがおかしいと思うけど
>なるほど。 ほんとにわかったのか? >javaアプレットって使いづらいですね。 上級者しか使いこなせないしな >よくよく、考えればjavaアプレット自体あまりみない気がしてきた。 上級者しか使わないしな >本来javaはどのような場面や、プログラムで活躍するのでしょうか? 上級者が利用する場面
>順番的には先にアプレットを触るというのがおかしいと思うけど 入門書がそうなっているからなぁ ホント、アレはやめて欲しい
938 :
929 :2005/11/27(日) 01:12:32
すみません、自分まんま入門者です。 WisdomSoftのjava入門ではプリケーションよりアプレットが先に説明されていたので、てっきりアプレットのほうが簡単なのだと思っていました。
アプレットはフレームワークであることを理解しないときっついからな
上の方にもあったけど、証券のオンライントレードシステムでは アプレットをよく見る。
941 :
929 :2005/11/27(日) 01:22:35
>>940 ブラウザよりも
アプレットのほうが「おかしな操作するユーザ」やブラウザの違いからアプリケーションを守れるからね
HTTPではなくて独自のプロトコル使えるし
>何故、サンドバッグによって妨害されないのですか? サンドバッグではなく「サンドボックス」な 3回までOKなんだよ
>>922 みたいなequals()を==と間違って
使ってしまう輩に対しては
是非ともCheckstyleを使って貰いたい。
こいつを使えば、あやまって==を使っているコード
があるところを自動的にチェックしてくれる。
Eclipseでも使えるので
CheckStyleプラグインをダウンロードだ。
ベータ版でも十分使える。しかもJava SE 5 Tigerでも使えるようになった。
CheckStyle-4.0.0.-beta6を入手せよ。
そしてequlas()メソッドの問題などを検出できるように設定せよ。
945 :
929 :2005/11/27(日) 01:45:48
>>サンドバッグではなく「サンドボックス」な
>>3 回までOKなんだよ
すみません、間違えてました。
どう考えてもサンドバッグはありえないですよね。。
アプリケーションから入って、もっとjavaやプログラミングのこと勉強してから出直します。
ご迷惑、お掛けしました。
>>924 漏れもJavaOneTokyo2005言ってきたが
あれはそんなに重いか?
たまたま何かあったんではないかと。
重たいのもあったが、
8年前に大学にあったSolarisマシンでもあんなもんだったな。
NetScape起動するのにちょっと時間がかかってたような。
漏れはSun Rayしか使ってないが
>>928 mainがpublicじゃないってのもある。
Java認定試験アソシエイツにもその例題があった
>>934 短絡的だな。
セキュリティにひっかかるといっても
Appletが入ったJarファイルにsignjarで署名すれば
引っかからないわけだが。
>>937 いつの時代の入門書だ。
最近のはServletやDBが多いかと。
もしくは本当に基本文法のみ。
ファインドバグだろ普通
952 :
デフォルトの名無しさん :2005/11/27(日) 02:19:14
>>790 > 現在、GNU Classpathはjavax.swing以下のパッケージを除く
> ほぼすべてのパッケージでJDK1.2と100%に近い互換性を実現している。
> (略)
> ロードマップによると、JDK1.2に関してのより高い互換性と安定性を
> 実現した時点で正式リリースとする予定になっている。
これって「予定」っていうのか?
表示されないみたいだね
>>846 入力を促す画面になったら
そこでGUIを起動してパスワード用フォームに
入力させるというのはどうだろう?
もしくは、一時入力したら即座に文字を消去し*に変換するという
やり方とか。
BSキーを押すと*を一つ消して前に戻り、入力によって
メモリに確保された文字も一時消去する、ってなかんじのをエンター
押すまで。
956 :
デフォルトの名無しさん :2005/11/27(日) 07:56:34
6532個のデータがあるMySQLを Javaで呼び込んでも呼び込めません。 解決方法おしえてください。
957 :
デフォルトの名無しさん :2005/11/27(日) 09:25:10
説明不足ですいませんでした。 少ないデータなら呼び込めるのですけど、 6532個もの大きなデータになると エラーになりました。
読み込むのならよくやるのだが、呼び込んだことがないのでわからん。 確かなんとか条例で禁止されてたような気がする。 まあ、どうせ環境問題に帰着するのさっw
959 :
デフォルトの名無しさん :2005/11/27(日) 09:37:40
>>957 すいません読み込むでした。
恥ずかすぃ
>>960 System.out.print(msg); を System.out.print(i+":"+msg); に変えればいいとおもう 混ざっているか混ざっていないかは 出力データ見れば一目瞭然だし そのときのカウンタの値も表示されるのでOK だと思うんだがどうよ なんせ、質問の意味がよーわからん 何がしたいのか・・・
962 :
960 :2005/11/27(日) 14:19:20
mysqlにJDBC経由で接続しているんですが、日本名のカラムの値が 取り出せなくて困っています。 rs.getString("<Column_Name"); // カラム名は日本語。これだと例外 rs.getString(1); // これだとちゃんと取得できる 試しにResultSetMetaDataオブジェクト使ってカラム名を参照してみたところ、 文字化けしていました。 どなたか詳しい方いらっしゃいましたら原因教えてもらえませんか? コネクタにはMySQL Connector/J 3.1.11を使っています。
>>963 ResultSetMetaDataというものをResultSetから取り出して
getClumnName()でどんな名前でカラムが格納されているのか確認しよう
おそらく文字化けしたカラム名が格納されているはずなので
rs.getString("文字化けしたカラム名");だと取得できる
普通カラム名に日本語は使わない
965 :
デフォルトの名無しさん :2005/11/27(日) 15:20:56
オブジェクト指向について分からないことがあるのでどなたか教えてください。 フィールドとして宣言した変数には自動的に初期値が入るんですよね? その時点でフィールドは初期化されているのに、 コンストラクタもフィールドの初期化を勝手にしてくれるんですよね? なぜ何度もフィールドの初期化を繰り返すのかがよく分からないのですが・・・。 もしよかったら教えてください!
カラム名に日本語を使う使わないは条件次第だが、単純に接続のミスしてると思われ 接続URLとか大丈夫なの? 環境とかさらさないとどうにも
>>965 コンストラクタは主に初期化のルーチンを自分で書けるってだけ
968 :
デフォルトの名無しさん :2005/11/27(日) 15:24:46
>>957 どんなエラーが出たか書かないと
毎度の用に無視されるぞ。
どうせメモリが足んないとかだろうが
>>966 >rs.getString(1); // これだとちゃんと取得できる
なので接続のミスなのか?
カラム内の取得データが文字化けしていないのだったら
エンコードの問題ではない
ドライバがカラム名に関してエンコード対応していないだけだろうなので「カラム名に日本語」使わないと思う コレは俺の考え
どの道その文字化けしたデータでgetString("文字化け文字")しないといけないので
String col="文字化けしていないカラム名";
String col2=new String();//←文字化けした文字列をわざと作る
getString(col2)
しかないだろう
>>965 自動的に入る初期値ってのは、すべてのクラスに対して同じ値になる。
コンストラクタはパラメータがあれば、そのパラメータを使って初期値を任意に実行時に決定することもできる。
971 :
965 :2005/11/27(日) 15:31:03
>>967 早速のレスありがとうございます。
ルーチンという言葉を初めて聞いたのでぐぐってみたのですがよく分かりませんでした。
せっかく教えてもらったのにすいません。
どういう意味なのかもう少し簡単に教えてもらえませんか?
× 自動的に入る初期値ってのは、すべてのクラスに対して同じ値になる。 ○ 自動的に入る初期値ってのは、すべてのインスタンスに対して同じ値になる。
>>963 > mysqlにJDBC経由で接続しているんですが、日本名のカラムの値が
> 取り出せなくて困っています。
>
> rs.getString("<Column_Name"); // カラム名は日本語。これだと例外
とりあえず文字列リテラル内の < が気になった
>>965 確かに
class Clazz{
String string1=null;
}
とやる意味は無い
975 :
965 :2005/11/27(日) 15:44:43
>>972 >>974 レスありがとうございます。
深く考えすぎなんですかね?
とりあえずこういうものなのだと思ってもう少し勉強してみます。
ありがとうございました。
>>964 ,
>>966 ,
>>969 ,
>>973 レスどうもです。
文字化けしたカラム名でrs.getStringやったらちゃんと取得できました。
接続URLは、
Connection dbConn = DriverManager.getConnection("jdbc:mysql://localhost/empdb?useUnicode=true&characterEncoding=SJIS","root","");
こんな感じでUnicodeとかSJISオプションを外したりしても結果は一緒…(´・ω・`)
ちなみにテーブル名も日本語なんですが、SelectやUpdateは
日本語混みで普通に通ります。
なので、やっぱりコネクタ(=ドライバ?)が日本語カラム名に
対応してないのかなぁと。。。
>とりあえず文字列リテラル内の < が気になった
SI系のドキュメント書くときとかで、変数の場合は
斜体+<>で表現する事が多いかも。MSとか
あ、すんません。 mysqlは5.0.15でOSはXP SP1です。 いずれちゃんとLinuxに導入しようとは思ってますが。。
979 :
デフォルトの名無しさん :2005/11/27(日) 16:07:37
>>968 すいません。
こういう感じです。
java.sql.SQLException: Column index out of range.
at com.mysql.jdbc.ResultSetMetaData.getField(ResultSetMetaData.java:468)
at com.mysql.jdbc.ResultSetMetaData.getColumnName(ResultSetMetaData.java:337)
at isbn_mysql.main(isbn_mysql.java:42)
>>979 それ件数ではなくエラーメッセージどおりなんじゃ・・・
>>978 とりあえずSJIS指定はmずいんじゃない?
WinならMS932とかwindows-31J
あと、DB自体のエンコーディング指定とかどうなってるかによるか
ひとりだけ、似たようなDBの質問に間違えて反応している件について
983 :
979 :2005/11/27(日) 16:28:59
?????
>980 次スレお願い。
986 :
デフォルトの名無しさん :2005/11/27(日) 16:44:59
.bmpファイルをhtmだと表示できて、AppletViewerだと表示できないのですが、 AppletViewerは .bmp ファイルの表示不可ですか? JavaJDK1.3です。
ブラウザがBMP表示できるだけ AppletViewerはJavaなのでBMP表示できるようにお前が作らないと無理だろ ちなみにAppletをブラウザに持ってきても同じこと
ありがとうございます。
じわりじわりと 20秒おきに1000を狙う俺
じわりじわりと 20秒おきに1000を狙う俺
じわりじわりと 20秒おきに1000を狙う俺
そういうのは次スレリンクの後な。まっとれ。
着信アリこえええええええええええ
じわりじわりと 20秒おきに1000を狙う俺
じわりじわりと 20秒おきに1000を狙う俺
うめるぞ
埋めりゃいいだろカスが。 ↓1000取って喜んでるルールも守れない厨房。
OKwwwwwwwwwwwwwwwwwww
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。