1 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 17:52:10 ] プログラミング言語Javaに関する質問スレです。 JavaScript, Ajaxの質問は、ここでは受け付けていません。 Web製作管理 pc11.2ch.net/hp/ Webプログラミング pc11.2ch.net/php/ をご利用下さい。 よくある質問 ・「コマンドまたはファイル名が違います」 「'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 「Exception in thread "main" java.lang.NoClassDefFoundError: 」 www.wikiroom.com/java/?path,classpath ・String に == は使うな。equals() を使え。 ・「\12288 は不正な文字です。」 文字リテラル以外で全角スペースは使えません。半角スペースに。 ・その他の質問→「APIのjavadoc見ろ」 前スレッド 【初心者】Java質問・相談スレッド115【歓迎】 pc11.2ch.net/test/read.cgi/tech/1210529127/ 次スレは>>990 あたりで。 過去ログ、関連スレッド、よくある質問とその回答など、 質問をする前に、貴方が見なければならないサイトについての情報は、 下のwikiのページにまとめてあります。 www.wikiroom.com/java/
304 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:01:40 ] 298 = 馬鹿 ってことぐらいしか分からない
305 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:01:46 ] >>302 分かってるに決まってるだろwww
306 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:02:12 ] 盛り上がって参りました(棒読み) >>299 あれは参照渡しに使えるけど、参照そのものではない
307 名前:デフォルトの名無しさん [2008/06/18(水) 00:02:47 ] もうツマンネー自演はいいから
308 名前:デフォルトの名無しさん [2008/06/18(水) 00:04:13 ] >>288 をこのスレの方々はどう考えてるのか教えていただけないでしょうか・・
309 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:05:04 ] void 参照渡し(ref int[] data) { data = new int[] { 4, 5 }; } int[] a = { 1, 2, 3 }; 参照渡し(ref a); 出力(a);//{4, 5}が出力される C#だとこんな感じ
310 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:05:33 ] ポインタの話と同様、 void foo(int[] hoge) { hoge = new int[10]; } で int[] data = new int[5]; foo(data); とやっても data が参照してるのは new int[5] のままであって new int[10] ではない。 Java の引数が本当に参照渡しなら、data は new int[10] を指すようになる。
311 名前:256 mailto:sage [2008/06/18(水) 00:08:05 ] 一応、ロムしてましたが、 アプレットはオフラインはできない という答えを受け取って消えます。 さようなら。
312 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:08:13 ] >>309 と >>310 の差をきちんと理解し実感していれば Java が参照渡しなんて口が裂けても言えなくなる。 「Java が参照渡し」 という言葉は初心者にいらぬ誤解を与える邪悪な言葉だ。
313 名前:デフォルトの名無しさん [2008/06/18(水) 00:09:48 ] いつの時代でも、Cのポインタを理解するのは鬼門ってこと char*manko=&tinpo
314 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:12:21 ] >>310 それってdataはnew int[10]になるんじゃないの?
315 名前:デフォルトの名無しさん [2008/06/18(水) 00:12:59 ] >>312 じゃ、何渡しがいいかな?
316 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:13:34 ] 「オブジェクトの参照値渡し」とか?w
317 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:14:07 ] >>315 ポインタ渡しでいいよ。 ぬるぽとか言うくらいだし。
318 名前:デフォルトの名無しさん [2008/06/18(水) 00:14:30 ] 一応、ポインタを全快に理解してないと、GCを実装できないんだが・・
319 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:14:48 ] お前らが頭いいのは分かったが 何言ってんのかがさっぱり分からん!
320 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:15:48 ] >>314 ならないよ
321 名前:デフォルトの名無しさん [2008/06/18(水) 00:15:54 ] >>316 あまり厳密に突っ込みを入れたくは無いだが、それは「インスタンスの」じゃないの?
322 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:17:34 ] >>314 みたいなのが出てくるから Java は参照渡しとか言うのは邪悪としか言いようが無いんだよな。
323 名前:デフォルトの名無しさん [2008/06/18(水) 00:19:12 ] Javaやる前にCを勉強してください。それも鬼門とか超難関といわれる「ポインタ」(と参照)についてしっかりやっておかないとついてこれなくなります。
324 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:20:57 ] >>315 参照の値渡しでいいんじゃね?
325 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:21:17 ] Cに参照はないし 別にポインタは難関でもなんでもない。
326 名前:デフォルトの名無しさん [2008/06/18(水) 00:23:45 ] アパマンの奴はDQNしかない。「とーちゃん。派遣面接受かったみたいだよー」のあの派遣会社のCMと同程度のDQNしかいない。
327 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:33:46 ] >>326 なにいってんだ?同じ人間だし、確かに変なやつだとしてもな、どこかにいいところがあるだろ。 そういうところを互いに評価しないといけないんじゃないのか?
328 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:38:13 ] >>321 java.sun.com/docs/books/jls/third_edition/html/typesValues.html#12028 > An object is a class instance or an array. だから「オブジェクト」のほうが正確なんじゃないかな?
329 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:44:08 ] いや、Java的にはね
330 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 01:00:22 ] >>328 たぶん君もアパマンのDQNと同等と思ったけどね、そう噛み付きなさんなw
331 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 01:03:15 ] 「アパマン」「DQN」がマイブームの香具師がいるな
332 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 01:03:53 ] オレ的解釈だと、C的にはオブジェクトの」、Java的にはインスタンスの」かな。 オブジェクトの単語自体があいまだからなんともいえないけど。>>328 の引用は単なる君が権威主義(英語とかSUNとか)が好きなだけじゃないのかな?
333 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 01:05:57 ] よくわからんw
334 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 01:09:26 ] >>328 は権威にあこがれるDQNってことじゃないの?
335 名前:デフォルトの名無しさん [2008/06/18(水) 01:17:09 ] >>328 ,331,333 食わず嫌いはいけませんね。 そうなってしまったのは、あなたの人格が歪んでるからでしょうか?
336 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 01:55:47 ] 権威も何も、Sunが作った言語なんだから、 Sunの見解を参照するのは当然でしょ。
337 名前:デフォルトの名無しさん [2008/06/18(水) 02:26:01 ] 英語の文脈で使われるobjectと日本語の文脈で使われるオブジェクトは違うでしょ javaを使うならJLSは当然第一に参考にすべき文書だけど日本語に訳する時に直訳はいかんよ
338 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 06:28:49 ] >>268 >Cに参照渡しはない >>270 >用語は違うがあるけど? Javaでいう参照渡しはC/C++でいうアドレス渡し ところで、 >>270 >Cやったこと無いくせにに、適当なこと言う言うな ??
339 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 09:11:17 ] toStringで任意の型のオブジェクトを文字列に変換することができますが、 逆に、Type型の値と文字列からオブジェクトを作成するような枠組みは無いのでしょうか? よろしくお願いします。
340 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 10:00:02 ] >>339 意味がよく判らないんだけど、 "int", "1" => int で 1 "float", "1" => float で 1.0 みたいな感じ? で、それは既存の組み込み型だけでいいの?
341 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 10:32:46 ] sprintf() の 逆なら atoi() static Integer Integer.valueOf(String s) <指定された String の値を保持する Integer オブジェクトを返します。> Type型と文字列から、じゃなくて? 表現は正確に。
342 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 11:56:44 ] Cのscanf()に相当する関数が欲しいって話かな。
343 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 12:15:23 ] スクリプト系言語のeval相当のものが欲しいようにも読める
344 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 12:34:41 ] そこでJson-libですよ。
345 名前:339 mailto:sage [2008/06/18(水) 13:50:08 ] 説明がわかりにくくてすみません。 Object a = fromString(java.util.Date.class,"2008/1/1"); System.out.println(a.getClass()); // class java.util.Date System.out.println(a); // Tue Jan 01 00:00:00 JST 2008 Object b = fromString(Integer.class,"10"); System.out.println(b.getClass()); // class java.lang.Integer System.out.println(b); // 10 上のfromStringのように、文字列と変換後の型を指定すると、 文字列を指定した型のオブジェクトに変換できるような物が欲しいのです。 .NETのTypeConverterのように、 既存の組み込み型や標準ライブラリで定義された型に対して使用でき、 さらに、自分で作成したクラスに対する動作も指定できるような枠組みがあればよいのですが このようなものはありませんでしょうか?
346 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 13:51:30 ] JDK6でrhinoでevalすればいいだろ
347 名前:346 mailto:sage [2008/06/18(水) 13:53:03 ] >>343-344 あてね
348 名前:デフォルトの名無しさん [2008/06/18(水) 13:57:57 ] Class.forName()
349 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 13:59:30 ] >>339 「toStringの逆」という変換が一般には無理だとわかった上で? 具体例をどうぞ
350 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 13:59:51 ] やべ遅れたw
351 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 14:32:23 ] リフレクションで出来そうじゃない?
352 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 14:35:23 ] よくわからんけど、インターフェースが統一されないとやなのか
353 名前:デフォルトの名無しさん [2008/06/18(水) 15:20:13 ] いやいや、単なるC#宙でしょ
354 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:00:56 ] 自分で作ればいいんじゃない Object fromString(Class c, String s) { if (c == Date.class) return DateFormat.getInstance().parse(s); if (c == Integer.class) return Integer.parseInt(s); if (c == Float.class) return Float.parseFloat(s); 以下略 }
355 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:52:10 ] toStringが返す文字列からオブジェクトを復元することは汎用的には無理
356 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:42:53 ] Object#toString()ってサブクラスの実装依存じゃなかったっけ?
357 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:41:28 ] うん。というか、 Object#toString()がオーバーライドされていないと、 クラス名とハッシュ値しか返ってこないから、 インスタンスの内部状態を知ることができない。
358 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:58:04 ] ttp://msdn.microsoft.com/ja-jp/library/ayybcxe5(VS.80).aspx Windows フォームのプログラミング 方法 : 型コンバータを実装する ここなんかを見ると、GUI要素のプロパティをいじる時に文字列を経由したりするよねっていう感じの 用途がかいま見える
359 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 19:02:03 ] TypeConverterってそういうもんだよ 実装したらメタデータとして型やプロパティに指定しといてリフレクションで取ってくるの
360 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 19:39:10 ] これは邪道かな(あとPnutsですまん) pe = class java.beans.PropertyEditorManager::findEditor(Integer.TYPE) pe.setAsText("100") println(pe.value - 1) // 99 pe.value = 200 println("200".equals(pe.getAsText())) // true
361 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:27:12 ] だからそれならrhinioで出来るって
362 名前:デフォルトの名無しさん [2008/06/18(水) 20:36:38 ] このスレでは、String.charAtやClass.forNameじゃ不満なのか? もう答えるつもりないし、どうでもいいけど
363 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:45:44 ] >>361 ぐぐったら前立腺マッサージャーが出たYO
364 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:44:13 ] >>362 Class.forNameは外していると思うけど、String.charAtはまあまあかな。桁数チェックにもなるし。
365 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:09:43 ] だれだ、おまえ?
366 名前:デフォルトの名無しさん [2008/06/18(水) 22:50:54 ] >>364 ここではあなたの評価を気にしながら質問に答えなければいけないのですか?
367 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:14:03 ] >>366 どこからそういう疑問が湧いたのですか?
368 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 00:12:43 ] C言語でいう int data = 3; printf("%3d",data); のように右寄せするメソッドご存じないでしょうか?
369 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 00:17:55 ] >>368 System.out.print(String.format("%3d", data));
370 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 00:18:33 ] >>368 System.out.printf
371 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 00:18:54 ] または System.out.format("%3d", data);
372 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 00:19:10 ] ごめん,かぶった.
373 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 00:19:32 ] System.out.printf(); 改行は ¥n ではなく %n を使う。
374 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 00:29:23 ] >>369-373 迅速にお答えいただきありがとうございました。
375 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 01:13:23 ] 1.4系だったという落ちですね。わかります。
376 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 02:40:00 ] 質問です 開発は windowsXP+Eclipseで行い、jarファイルを生成 実行は Solaris10 にて行いました 実行時にエラーとして Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Layout at Cardget.<clinit>(Cardget.java:40) と出てしまったのですが、ドコから調べればよいかヒントなど ありませんでしょうか 実行方法は $ java -cp zgss_core.jar Cardget としました
377 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 02:59:14 ] log4jをクラスパスに通せ
378 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 04:00:33 ] うむ
379 名前:デフォルトの名無しさん [2008/06/19(木) 04:29:15 ] if(test[s]<test[t]){ int tmp=test[t]; test[t]=test[s]; test[s]=tmp; } と if(test[s]<test[t]){ int tmp=test[s]; test[s]=test[t]; test[t]=tmp; } はどっちを書いてもいいの?
380 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 04:35:39 ] どこに
381 名前:デフォルトの名無しさん [2008/06/19(木) 08:01:31 ] そのソースだけだと、どっちでもいいとしか言えんがなw
382 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 09:17:15 ] TraverseEventってなに? マウスイベントとか、キーイベントで、ででてくるんだけど、 イマイチ英和辞典の訳じゃ掴めない。 trav・erse ━━ vt. 横切る, 横断する; 通過する; あちこち動く;
383 名前:デフォルトの名無しさん [2008/06/19(木) 11:25:27 ] 質問させてください。 Mapの値を降順に表示したいんです。現在下のような記述をしてるのですが、 どうも最善な気がしません。これよりマシな方法をごぞんじなら教えてください。 Mapのインスタンス名はmapです。 Set<Integer> ts = new TreeSet<Integer>(); ts.addAll(map.values()); List<Integer> order = new ArrayList<Integer>(); order.addAll(ts); for(int i= order.size()-1; i>=0; i--){ int num = order.get(i); for(Entry<String, Integer> en:map.entrySet()){ String key = en.getKey(); Integer value = en.getValue(); if(value == num){ StringBuilder sb = new StringBuilder("Products: "); sb.append(key).append(": Number: ").append(value); System.out.println(sb.toString()); } } }
384 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 11:32:59 ] TreeSetの値を出力すればいいのではなくて?
385 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 11:54:42 ] >>383 値の降順にソートするコンパレータを設定したTreeMapにmapをputAllして、 そのTreeMapから順番に取り出せばいいんじゃない?
386 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 11:58:04 ] あ、キーの値じゃなくて値か じゃあ385はダメだね
387 名前:385 mailto:sage [2008/06/19(木) 12:08:03 ] Entryの値の方で降順にソートするコンパレータを設定したTreeSet<Map.Entry<String, Integer>>に map.entrySet()をaddAllして、そのTreeSetから順番に取り出せばいいのかな。
388 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 12:11:05 ] 配列に全部突っ込んでからソートした方が速そう
389 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 12:23:26 ] おおまかにはこんな感じかな? Set<Map.Entry<String, Integer>> set = new TreeSet<Map.Entry<String, Integer>>( new Comparator<Map.Entry<String, Integer>>() { public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) { return o2.getValue().compareTo(o1.getValue()); } }); set.addAll(map.entrySet()); for (Map.Entry<String, Integer> e : set) { System.out.println("Products: " + e.getKey() + ": Number: " + e.getValue()); } StringBuilderを使っているところはインスタンスをループの外で生成するのなら別だけど、 わざわざそう書かなくても+で結合する書き方でもコンパイラがそんな感じにしてくれる。 >>388 それもいいかも
390 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 12:34:23 ] どうもgenericsの記述量に負けてあまりシンプルって感じに見えないや。 流れは単にnew TreeSetしてaddAllだけなのに。
391 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 17:34:42 ] JavaSE6からjavax.tools.Compilerを使えばJREだけでJavaのコンパイルできるってこと?
392 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 18:05:52 ] >>391 JRE には tools.jar が無いから無理のはず。
393 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 18:18:21 ] JREにtools.jarは入っていないけれど、 tools.jarをJREといっしょに再配布するのは構わなかったはずなので、 あとはtools.jarにパスが通っていればおk
394 名前:393 mailto:sage [2008/06/19(木) 18:23:07 ] 自分の作成した動的コンパイル機能付きのプログラムを配布する場合、という意味ね 自分の環境だけでいいのなら素直にJDKをインストール
395 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 18:24:52 ] なるほど、tools.jarの再配布条件を調べてみます ありがd
396 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 22:17:29 ] 質問です jarを実行したところエラーが出まして Can't find resource for bundle java.util.PropertyResourceBundle, key table.section.pointup9 というエラーが出たのですが、ドコから調べていいのかわからず。 設定ファイルを読んで処理をするjarなのですが・・
397 名前:デフォルトの名無しさん [2008/06/19(木) 22:43:48 ] 久しぶりにJavaのお仕事… 既存のWebシステムに一画面追加するだけのお仕事だったのですが、 SIとSLを作成し、ローカルでコンパイルし、 作ったクラスファイルをUNIXサーバにFTPで配置したのに404 WebOTXを何度落とし上げしても404・・・ ずっと悩んでしまったんだけど、 これってもしやasant deployを忘れてるってことでおkですか?
398 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 22:52:14 ] >>396 その設定ファイルが正しく読めてない予感
399 名前:396 mailto:sage [2008/06/19(木) 23:00:58 ] pointup9 という項目を追加して読もうとしてるので、そこがおかしいみたいです・・ね javaのmain定義部分をもう少し見直してみます
400 名前:デフォルトの名無しさん [2008/06/19(木) 23:26:37 ] 初心者です 歌詞検索みたいなのってJavaでつくることは可能ですか?
401 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 23:34:30 ] データがあればね
402 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 00:00:07 ] >>383 もっと素直に ArrayList<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(map.entrySet()); Collections.sort(list, new Comparator<Map.Entry<String, Integer>>(){ public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) { return o1.getValue().compareTo(o2.getValue()) * -1; } }); for (Map.Entry<String, Integer> entry : list) { System.out.printf("Products: %s, Number: %s%n", entry.getKey(), entry.getValue()); }
403 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 00:23:02 ] > * -1; 初めて見た
404 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 01:26:42 ] そんな奴には Integer.MIN_VALUE を渡すことにしている。