【初心者】Java質問・相談スレッド111【大歓迎】 at TECH
[2ch|▼Menu]
1:デフォルトの名無しさん
08/01/13 00:25:22
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作板をご利用ください。URLリンク(pc10.2ch.net)

過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
URLリンク(www.wikiroom.com)
これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。

よくある質問
・「コマンドまたはファイル名が違います」
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 URLリンク(www.wikiroom.com)
・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」

前スレッド
【初心者】Java質問・相談スレッド110【大歓迎】
スレリンク(tech板)

/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝のう存じます。

次スレは>>980あたりで。

2:デフォルトの名無しさん
08/01/13 00:34:43
ニダ。

3:デフォルトの名無しさん
08/01/13 00:35:32
   ∧  b
  /●ヽ/
 (∧_∧)  / ̄ ̄ ̄ ̄ ̄
 ( ´∀`)< しねよおめーら
 (    )  \_____
 | | |
 (__)_)

4:デフォルトの名無しさん
08/01/13 00:46:56
>>スレリンク(tech板:987番)

2つめの質問について。
(5)です。
URLリンク(www.javainthebox.net)
とか、"Java 可変長引数"あたりのキーワードで調べれば?

1つめの質問について。
ちゃんと調べてないけど、コンパイル段階で
> それ1つだけ
になってるんじゃ?つまり検索は発生しない。


5:987,993
08/01/13 01:12:58
>2つめの質問について。
>(5)です。
>URLリンク(www.javainthebox.net)
>とか、"Java 可変長引数"あたりのキーワードで調べれば?
>
>1つめの質問について。
>ちゃんと調べてないけど、コンパイル段階で
> それ1つだけ
>になってるんじゃ?つまり検索は発生しない。

「それぞれ1つだけ書いたら」というのは、その時は
method("str2");で、(1)(3)(4)のどれもが呼ばれますよね、
シグナチャとしてはマッチしてますよね、
ということの単なる確認(思考実験)です。
実際には(1)(3)(4)をオーバーロードメソッドとして書いて、
(1) public void method(String... s) {}
(3) public void method(String s) {}
(4) public void method(String s,int... i) {}
それからmethod("str2");します。
その時(1)が呼ばれるらしい事は分かっているのですが、
じゃ、(1)を削ったら(3)(4)どっち?と。
で、そもそもどういう検索順なの?と。
という事なんです(^^;

--
リンクは、見てみました(どうもありがとうございます)が、
第一引数から可変長をアーリーアクセス扱いの時期の
記事のようで・・・
可変長引数のあるオーバーロードメソッドの検索順の定義
までは追求なさってないようでした。


6:987,993
08/01/13 01:18:51
それと書き忘れましたがsuperからの継承かどうかも関係あるのかも・・・
というのもわかってません(^^;


7:デフォルトの名無しさん
08/01/13 03:14:35
質問です
文字列から数字だけを取り出そうとすると

at java.long.Integer(Integer.java …) ってエラーがでます。


ボタンが押されたらサイトにアクセスしてhttpの文字列から数字だけを取り出すプログラムです

8:デフォルトの名無しさん
08/01/13 03:20:22
質問です、で始めるなら何を聞きたいか明確に述べなさい。

9:デフォルトの名無しさん
08/01/13 04:09:48
質問です。
いつになったらsunは符号なし整数を使えるようにしてくれますか?
バイナリデータ扱うとすごく大変です。

10:デフォルトの名無しさん
08/01/13 04:10:14
>>5
URLリンク(www-06.ibm.com)
の39ページ。
大本に当たりたいのなら
URLリンク(jcp.org)

> その時(1)が呼ばれるらしい
いや(3)。>>4の説明を読んで何故(1)だと思うの?

11:デフォルトの名無しさん
08/01/13 07:22:24
NodeList を for でまわしてノード参照しながら、そのうちの特定のノードを削除とかすると
NodeList の長さが変ったりするバカ仕様は何なの?

12:デフォルトの名無しさん
08/01/13 07:38:07
>>11
1999 年頃だったかな。IBM の何とかという日本人 (後に AlphaWorks に逝った) が Java の
お勉強に作った xml4j と言う XML パーサがデファクトスタンダードとして世に広まってしまって、
その頃からそういう動きだったよ。その後 Apache に引き継がれ Xerces と名を変え、今の
JDK の標準 XML 実装として使われている。だから XML 関連 API の C 臭さ、使いにくさ、
挙動の不自然さ全てこの日本人のせい。

13:デフォルト
08/01/13 09:35:55
javaのプログラマになったらどんな仕事がありますか?

14:デフォルトの名無しさん
08/01/13 09:47:44
>>13
仕事してません><

15:デフォルトの名無しさん
08/01/13 11:11:52
バイナリデータと整数の符号の有り無しの相関関係がわからない

16:デフォルトの名無しさん
08/01/13 12:12:14
一番上のビットが+/-に使われるか使われないかの違い。
情報工学の本見れば必ず書いてある。

17:デフォルトの名無しさん
08/01/13 13:42:15
それは知っているけど、なんで大変なの?

18:デフォルトの名無しさん
08/01/13 13:50:23
byte の負値が暗黙変換で int に格上げされると上位 3 バイトのビットが全て立ってしまう
(例: 0x80 → 0xFFFFFF80)。そのままビット論理和やビット論理積取ると想定外の結果に
なるから、byte → int 格上げ時には必ず 0xFF でマスクしてやる必要がある。
だがこれを忘れてもコンパイルは通るし、負にならない限りは正しく動いてしまうからちょっと厄介。

19:デフォルトの名無しさん
08/01/13 13:55:28
実行時バグの追跡はしんどいからな

20:デフォルトの名無しさん
08/01/13 13:59:14
学校のjavaの課題むずい…

21:デフォルトの名無しさん
08/01/13 14:07:02
>18
普通はbyteのままでやるもんじゃないのか?

22:987,993
08/01/13 14:10:39
>10
ありがとうございます!
確かに・きっちり一致・autoboxing・可変長引数の順に拡張して
探していくとありますね。langspec-3.0.pdfの本ネタの方にも
phase1,2,3で上記検索をしていくことが
15.12.2 Compile-Time Step 2: Determine Method Signatureに
書いてありました。助かりました!


23:987,993
08/01/13 14:12:00
そもそも私がおかしいと思って質問したのは、actualtests(笑)に
QUESTION: 118
class Alpha {
public void foo(String... args)
{System.out.print("Alpha:foo ");}
public void bar(String a)
{System.out.print("Alpha:bar ");}
}
class Beta extends Alpha {
public void foo(String a)
{System.out.print("Beta:foo ");}
public void bar(String a)
{System.out.print("Beta:bar ");}
public static void main(String[] argv) {
Alpha a = new Beta();
Beta b = (Beta)a;
a.foo("test");b.foo("test");
a.bar("test");b.bar("test");
}
}
answer:
Alpha.foo Beta.foo Beta.bar Beta.bar
とあったからです。
Alphaのfooはstaticじゃないです。煙が出るほどみましたから(笑)。


24:987,993
08/01/13 14:13:16
おかしいおかしいと考えていて、langspec-3.0.pdfも見ましたが
今回みたいにここの個所しか定義の記述がある分けないというところまで
たどり着けないでいました。
ありがとうございます。
これは、一般化すると仕様の読みが足りないだけなので、
wikiはいいですよね。actualtests警告という事はあるかもですが。
ほんとうにありがとうございます。


25:デフォルトの名無しさん
08/01/13 14:17:40
>>21
byte 対 byte のビット論理演算は int。まぁ大抵はシフト演算 + ビット論理演算で併せて使うから、
想定外のところのビットが立ってるとおかしな結果になる。

一般的なのだと 4 バイト整数のバイトオーダー変換とか、8 ビットバイトバイナリを 6 ビットずつ
整数化するような処理考えてみ。

26:987,993
08/01/13 14:18:45
引用した035-055のQ118のactualtestsバージョンは070507でした。


27:デフォルトの名無しさん
08/01/13 16:49:09
>>21
バイナリ演算のつもりでやってても、式中で暗黙に int へ変換されてたりしてハマる事は結構多い。
バイナリをいじるコードを書くときは、しつこく ( b & 0xff ) と書いておいた方が無難。


というか、普通にこれはJavaの言語仕様が腐ってると思うんだけど、こういう仕様である必然性って何かあるのかね。

28:デフォルトの名無しさん
08/01/13 16:52:33
何でこんな仕様なの? と疑問に思ったら BugParade で検索するとすっきりする。
余計にモヤっとすることの方が多いかも知れんが。

29:デフォルトの名無しさん
08/01/13 19:05:30
URLリンク(java-house.jp)

30:デフォルトの名無しさん
08/01/13 19:10:00
int a=Integer.valueOf(str).intValue() が使えないんですけどどうすればいいですか?

31:デフォルトの名無しさん
08/01/13 19:41:46
>>30
1. 文末にセミコロンが入っているかチェック。
2. str に正しい値が入っているかをチェック。
3. a を正しく使用しているかチェック。

つーか valueOf(String).intValue() とかやるくらいなら parseInt() 使え。

32:デフォルトの名無しさん
08/01/13 19:50:00
>>29
それって、Cでバッドノウハウが使えちゃうことを説明しているだけで、
Javaで警告すら出ない理由にはなってないような・・・。

33:デフォルトの名無しさん
08/01/13 20:18:29
>>32
何に対してどういう警告を出せと言ってるの?


34:デフォルトの名無しさん
08/01/13 20:24:52
それを言われると確かに困るが・・・

35:デフォルトの名無しさん
08/01/13 21:10:21
Cから初めて、今Javaやってるのですが
クラスやら継承やらが、複雑で…というか
スパゲッティプログラムになりやすい?じゃヴぁって


なんか、.がつくたびに、クラス見て戻って先に進めない。疲れる

36:デフォルトの名無しさん
08/01/13 21:34:03
そりゃCでも構造体とか関数使いまくれば一緒じゃ?

37:デフォルトの名無しさん
08/01/13 21:45:32
>>35
一般的にはJavaのほうがスパゲッティになりにくい。
>>35が書きづらく思ってるのは単に慣れてないだけ。

下の方は、EclipseなりNetBeansなりでコードアシスト使えばいい。

あと、文面からしてクラスや継承を使いすぎてる感じがする。
必要のないところにまでそういう機能を使う必要はない。
Cからの人なら、最初はC的に書いて、徐々にOOPに置き換えていけば一番楽だと思う。

38:デフォルトの名無しさん
08/01/13 21:48:03
jarの中からjarが置かれているディレクトリを取得するにはどうすれば良いでしょうか

new File(".").getAbsoluteFile();
で取得出来ると思っていたのですが
cd /hoge
/usr/java/jrexxx/bin/java -jar /usr/local/XXX.jar
で取得出来たのはカレントディレクトリの/hogeでした・・・。

39:デフォルトの名無しさん
08/01/13 22:09:34
できないので諦めろ

40:デフォルトの名無しさん
08/01/13 22:16:27
>>39
ありがとうございます
System.getProperty("java.class.path")から無理やり取るか思案中です。
それとも.shとか.batとか用意してjarと同階層から起動すれば良いのか・・・鬱だ。

41:デフォルトの名無しさん
08/01/13 22:18:28
すみません。2回目の質問です。

現在googleカレンダーのjava用apiを勉強しているのですが、ライブラリのimport
ができなくて困ってます。
コンパイルの際、必要なjarファイル(gdata-client-1.0.jarとgdata-calendar-1.0.jar)
はちゃんと指定してるつもりですがimportしたパッケージが存在しませんというエラー
が出てコンパイルが出来ません。

(コンパイルのコマンド)
javac -classpath /home/〜/gdata-client-1.0.jar:/home/〜/gdata-calendar-1.0.jar GCAccessor.java
(エラーメッセージ例)
パッケージcom.google.gdata.dataは存在しません
・・・

開発環境はOSはVineLinux4.1、jdkは1.6.0_03です。
ちなみに同じコードをwindowsでやった場合はコンパイル・実行できましたが
linuxではコンパイルすらできません・・・。

ネットでいろいろ調べたのですが、原因が分かりませんでした・・・。
ここなら詳しい方がいそうなので、どなたか原因の分かる方教えていただけないでしょうか?

42:デフォルトの名無しさん
08/01/13 22:21:26
>>37-38
ありがとー
今、入門書系を片手に、チマチマサンプル弄くってる。

どうも、Cで慣れすぎてて。
privateやらそこらは理解できたけど、継承やらのところでウワー、うぜーとおもて

43:デフォルトの名無しさん
08/01/14 01:05:22
>>38
System.out.println(MyClass.class.getResource(MyClass.class.getName().replace('.', '/')));

44:ぽっぽ
08/01/14 01:25:11
入力ストリームですが、

BufferedReader rd = new BufferedReader(new InputStreamReader(System.in,1));  //第二引数のバッファサイズを1で指定

String str = rd.readLine();
System.out.println(str);  //strの内容を表示

↑の文で入力した内容を表示させたとします。
で、一行目でバッファのサイズを1で指定してるので、
1文字しか読込めないプログラムになったと思うのですが、
最後のprintで確認すると入力した分がそのまま表示されます。

バッファサイズが1なので abcdefg と入力すると
a だけが表示されると思ったのですが、何か理解が間違ってますか?

45:デフォルトの名無しさん
08/01/14 01:28:52
間違ってます。
バッファサイズを何だと思ってるの?

46:デフォルトの名無しさん
08/01/14 01:39:35
>>44
バッファサイズというのは一度に読み込める量を決めるもので、それを超えて読み込めない
という制限をつけるものではない。

100 バイトのデータ読むのに 5 バイトのバッファを用意すれば 20 回も I/O が発生して
効率が悪いが、100 バイトのバッファなら 1 回で読み込める。逆に 1000 バイトのバッファは
使わないメモリ 900 バイト分の無駄。

47:デフォルトの名無しさん
08/01/14 01:43:31
>>44
str を洗濯機、入力した文字列を風呂の残り湯、
バッファサイズをバケツの容量と考える。
洗濯に必要な水が30リットルだったとする。
これに対してバケツの容量は5リットルだとしよう。

さて、君はあきら君にバケツを使って
洗濯機に風呂の残り湯を汲み移すように言いつけた。
バケツで5リットルしか汲めないので、
あきら君は洗濯機には5リットルを移して作業を完了した。

あきら君の仕事に満足できないと思えるなら
1文字だけ読み込むという動作が正しくないと理解できるはず。

48:デフォルトの名無しさん
08/01/14 01:47:17
いや、あきら君はポンプを使うべきだ。

49:デフォルトの名無しさん
08/01/14 01:49:02
>>48
それを言うなら、
仕事はあきら君ではなくポンプに行わせるべきだ
じゃね?

50:ぽっぽ
08/01/14 01:50:35
なるほど・・・。
strに格納できる文字数の上限かと誤解してました。
先輩方ありがとうございます。

51:デフォルトの名無しさん
08/01/14 01:53:33
>>47
質問者の期待する結果から違ってるんだからそんな例は意味がない。

52:デフォルトの名無しさん
08/01/14 02:41:07
>>50
ソースを使え、ルーク。

53:デフォルトの名無しさん
08/01/14 07:47:24
>>11
NodeListってDOMの?
それならDOMのNodeListはライブオブジェクトだから。
変更はすぐさま反映される。そういう仕様。

54:デフォルトの名無しさん
08/01/14 08:10:45
>>53
XPath で取得した NodeList では反映さないので、仕様として甘いといわざるをえんがな。

55:デフォルトの名無しさん
08/01/14 08:25:51
それ実装の問題

56:デフォルトの名無しさん
08/01/14 08:52:56
DOM の状態が変る or ノード取り出すたびに XPath 評価しなおして反映させるのが
現実的なわけないんだから、NodeList を live とした時点で仕様が破綻してるのも分からんのか。

57:デフォルトの名無しさん
08/01/14 08:55:10
DOMだったら反映させても非現実的にはならんと思うけど。

58:デフォルトの名無しさん
08/01/14 08:59:13
ん、ひょっとして XPath がどれだけ遅いかご存知でない?

59:デフォルトの名無しさん
08/01/14 09:03:52
W3Cに文句言えよ。バカじゃないの?

60:デフォルトの名無しさん
08/01/14 09:04:01
XPath使ってない場合の話

61:デフォルトの名無しさん
08/01/14 09:19:12
暴れるだけだからバカの相手はしなさんな

62:デフォルトの名無しさん
08/01/14 09:23:09
>>59
仕様の問題か実装の問題かで何でいきなり W3C までエスカレーションすんだよw アホ?

63:デフォルトの名無しさん
08/01/14 09:33:14
W3C って API やらスキーマだけ規定して オナヌー してるところでしょ。
「俺たちは崇高な活動家。ありがたい API 作ってやったから勝手に
実装して使っとけ。実装側から提案なんてありえないw」 臭がとても強いところ。

64:デフォルトの名無しさん
08/01/14 09:46:46
あそこは今は大手 IT 企業のアーキテクト連中の肩書きアップの場になってる。
キャリア官僚が省庁や特殊法人渡ってるのとよく似てる。

65:デフォルトの名無しさん
08/01/14 11:02:17
うろ覚えの記憶なので恐縮ですが
メソッドだか関数だかに変数を引数として渡した時、
呼び出し先でその引数に変更を加えることで、元の変数も同様に変化させるには
どうすれば出来たんでしたっけ。戻り値を使ったわけではなかったと思います。

66:デフォルトの名無しさん
08/01/14 11:11:09
>>65
可変オブジェクトを、複製せず、そのままメソッドに渡せば良い。

67:デフォルトの名無しさん
08/01/14 11:18:07
リターンバッファという奴です。

68:デフォルトの名無しさん
08/01/14 12:51:57
>>67
それってもしかして、CやC++のポインタに相当する?

69:デフォルトの名無しさん
08/01/14 12:53:49
Jtableにて1列のみクリック不可(選択編集不可)にしたいんですが、
どうすればいいでしょう?

70:デフォルトの名無しさん
08/01/14 13:11:47
>69
JTableModel#isCellEditable

71:デフォルトの名無しさん
08/01/14 13:35:54
>>66-67
ありがとうございます。
一般的に参照渡しって言われるようなものですね。

72:デフォルトの名無しさん
08/01/14 13:41:24
>>70
早速のレスありがとうございます。

JTableModel#isCellEditable

とは、TableModeインターフェイスのisCellEditableを使えということでしょうか?
isCellEditableメソッドを調べますと
rowIndex、columnIndex に位置するセルが編集可能な場合に true を返します。
と出てきました。

import java.awt.*;
import javax.swing.*;
class JTableTest extends JFrame {
JTableTest() {
getContentPane().setLayout(new FlowLayout());
JTable tb = new JTable(3, 3);
tb.setValueAt("あああ", 0, 0);
tb.setValueAt("いいい", 1, 1);
tb.setValueAt("ううう", 2, 2);
JScrollPane sp = new JScrollPane(tb);
sp.setPreferredSize(new Dimension(230, 80));
getContentPane().add(sp);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("JTableTest");
setSize(250, 120);
setVisible(true);
}
public static void main(String[] args) {
new JTableTest();
}
}
とした場合 A列を、選択編集クリックすべて不可にしたいのですが、どうすればいいでしょうか?

73:てきとう
08/01/14 13:44:09
JTable tb = new JTable(3, 3){
  public boolean isCellEditable(int r, int c){
    return (r != 0);
  }
};


74:デフォルトの名無しさん
08/01/14 13:59:30
>>73様 レスありがとうございます。

JTable tb = new JTable(3, 3);

JTable tb = new JTable(3, 3){
    public boolean isCellEditable(1,1){
        return (1 != 0);
    }
};

と変えてみましたがコンパイルエラーになってしまいました。
以下エラーメッセージ
JTableTest.java:9: 型の開始が不正です。
public boolean isCellEditable(1,1){
    ^
JTableTest.java:11: <identifier> がありません。
}
^
エラー 2 個

しつこくて申し訳ありませんが、よろしくお願いします。

75:てきとう
08/01/14 14:03:59
まちがえたw JTable のメソッドじゃねーやハズカピー

JTable tb = new JTable(new DefaultTableModel(3, 3){
  boolean isCellEditable(int row, int column){
    return (column != 0);
  }
});


76:デフォルトの名無しさん
08/01/14 14:05:16
>>74
(思わずカエレ!!と言ってしまいそうになる)

それは無名クラスの定義文です。
内部クラス > 無名クラス(途中)
URLリンク(www.javaroad.jp)

>>75
有るにはありますが、挙動に注意です。

77:デフォルトの名無しさん
08/01/14 14:25:38
>>75
>>76

どうもありがとうございました
とても勉強になりました。

78:デフォルトの名無しさん
08/01/14 18:26:56
javaのとっかかりで
GUIを作りながら勉強できるサイトとかありますか?

79:デフォルトの名無しさん
08/01/14 18:39:59
>>78
URLリンク(java.sun.com)
日本語版ってあるんだっけ…?



80:デフォルトの名無しさん
08/01/14 18:44:24
出来れば日本語で
ほんとの初心者向けのが助かります

81:デフォルトの名無しさん
08/01/14 19:15:31
創るJavaじゃね?

82:デフォルトの名無しさん
08/01/14 19:24:31
>>81
宣伝乙。どこにGUIの話が載ってるの?
URLリンク(book.mycom.co.jp)

83:デフォルトの名無しさん
08/01/14 19:52:56
GUIなら最近java6対応の本が出てたな。

84:デフォルトの名無しさん
08/01/14 19:58:44
NetBeansでつくって学ぶ Java GUI & Webアプリケーションと書いてあるが?

85:デフォルトの名無しさん
08/01/14 20:24:46
教えて下さい

コマンドプロンプトでjava -version 入れたら
Error: could not open `C:\Program Files\Java\j2re1.4.2_16\lib\i386\jvm.cfg'
こんなエラーが表示されます。
J2SDKを1.4.2.16→1.4.2.10と変えたらこんな事に・・・
どうすればよいのやら・・・

86:デフォルトの名無しさん
08/01/14 20:39:04
>>85
たぶん環境変数の問題だと思うけど、
取り敢えずコントロールパネルの中の"Java"を起動してみて
期待する設定になってるか見てみたら?

87:デフォルトの名無しさん
08/01/14 20:44:53
というか1.4.2の最新って1.4.2.14くらいじゃなかったけ?


88:デフォルトの名無しさん
08/01/14 20:45:35
ああ、バージョンダウンしたのか。

89:デフォルトの名無しさん
08/01/14 20:57:15
>>86
コントロールパネルにJava Plug-in があって
それ起動しようとしたらエラー・・・

>>88
バージョンダウンです

90:sage
08/01/14 21:11:26
うぅぅぅ
the time zone update file
がダウンロードできない(T_T)

Welcome xxx | Logout
[continue]

先に進まない

91:デフォルトの名無しさん
08/01/14 21:14:05
前のバージョンをアンインストールして再インストールする方をクリーンインストール。
たぶん、ごみが残るからごみは手動で消す。

92:デフォルトの名無しさん
08/01/14 21:14:39
>>89

93:デフォルトの名無しさん
08/01/14 21:57:17
>>91
85です。解決しました。

1_4_2_10や1_4_2_16はうまくいかなかったです。
なぜうまくいかないのか今はわかりません。今後調べてみます。


ひとまずアンインストールを行った後、1.5.0_14をインストールし、
ユーザ環境変数のみ
PATH
C:\Program Files\Java\jdk1.5.0_14\bin
に設定して、
javac
java -version
の確認がとれました。
ありがとうございました。

94:デフォルトの名無しさん
08/01/14 22:04:27
java_home設定しといた方が良いよ。

95:デフォルトの名無しさん
08/01/15 04:51:51
Stringで受け取った文字列に対しての色変更はどのようにしたら良いのでしょうか?


96:デフォルトの名無しさん
08/01/15 04:56:49
>>95
・Stringには色はありません。
・標準入出力には色を付けられません。
・Graphics.setColorを使えばいいと思うよ。
・何十回も質問を読み直してから来ればいいと思うよ。

97:デフォルトの名無しさん
08/01/15 05:06:32
なんというおもしろ質問

98:デフォルトの名無しさん
08/01/15 06:24:40
>>95
勘で。
スレリンク(tech板:354番)


99:デフォルトの名無しさん
08/01/15 07:22:05
javaはコンソール制御できないからなぁ。

100:デフォルトの名無しさん
08/01/15 07:24:22
そういや一応、Cursesはあるよね。

101:デフォルトの名無しさん
08/01/15 07:28:53
エスケープシーケンスでできんじゃね? NT 系のコマンドプロンプトでできなくなったんだっけ?

102:デフォルトの名無しさん
08/01/15 07:59:24
できない

103:デフォルトの名無しさん
08/01/15 09:50:35
double/doubleを小数点以下第一位まで表示するにはどのようにすればいいのでしょうか??

104:デフォルトの名無しさん
08/01/15 10:25:54
formatでいんじゃね

105:デフォルトの名無しさん
08/01/15 10:35:26
URLリンク(www.hcn.zaq.ne.jp)
ここのシューティングのJAVA版が動かないんですが。どうしたら動きますか?


106:デフォルトの名無しさん
08/01/15 12:13:48
作った人に聞く

107:デフォルトの名無しさん
08/01/15 12:53:22
MozillaParserを使い始めたんですが
クイックスタートに載ってる

File parserLibraryFile = new File("./native/bin/MozillaParser" + EnviromentController.getSharedLibraryExtension());
String parseLibrary = parserLibraryFile.getAbsolutePath();
MozillaParser.init(parseLibrary, "C:\\dapper\\mozilla\\dist\\bin");
Document domDocument = MozillaParser.getInstance().parse("<html>Hello world!</html>");
MozillaParser.getInstance().stopRunning();

がうまく動きません
Pathなどは通してありMozillaParserそのものは呼び出せますが
メソッドが呼び出せません

ひょっとして仕様変ってますか

108:デフォルトの名無しさん
08/01/15 12:56:55
エラーメッセージは?

109:デフォルトの名無しさん
08/01/15 13:21:59
SE 6 で JavaScript 使えるようになったことだし、そろそろ PDA のフルブラウザ程度の
標準 GUI コンポーネント作れよというチラ裏。

110:デフォルトの名無しさん
08/01/15 13:37:25
つJavaFX Mobile

111:デフォルトの名無しさん
08/01/15 13:48:40
>>12
NodeListの動作はW3C DOMが決めているものだから、xml4j云々は関係な
いでしょ。W3C DOMの仕様だって、IEとMozillaのJavaScript DOMの挙動
を明確化するところから始まったものだし。



112:デフォルトの名無しさん
08/01/15 15:17:41
java初めて1ヶ月の初心者です。
エクリプスで普通に実行できるプロジェクトが、DOSからjreで起動しようとするとシンボルが見つかりませんエラーを頻発するのは何が原因と考えられますか?
ちなみにjavacをやっても、同じ数だけ、クラスが見つからないよエラーが出ます。

113:デフォルトの名無しさん
08/01/15 15:20:11
クラスパス関連

114:デフォルトの名無しさん
08/01/15 16:05:05
URLリンク(www.uploda.net)
サンプルみながら弄くってるのですが

ボタン押したら終了するようなのって
このソースのどこら辺をどう変えたらいいですか

115:デフォルトの名無しさん
08/01/15 16:10:00
>114
jframe.setDefaultCloseOperation(jframe.DO_NOTHING_ON_CLOSE);
JavaDoc、JFrameのsetDefaultCloseOperationの項目を嫁

116:デフォルトの名無しさん
08/01/15 16:10:54
actionPerformed の中でイベント e.getSource() が終了ボタンかどうかを判定して
終了ボタンなら終了動作をすれ

117:デフォルトの名無しさん
08/01/15 16:17:12
>>actionPerformed の中でイベント e.getSource() が終了ボタンかどうかを判定して
すんません、どうやって判定するんですか

118:デフォルトの名無しさん
08/01/15 16:17:37
==

119:デフォルトの名無しさん
08/01/15 16:49:14
ネットで既にあるアプリケーションのサンプル、ソースを見ると
Main.java A.java B.java のようにクラスごとにファイルを分割しているもの
見るのですが、どのように分割したファイルを関連付けすればいいのでしょうか

例えばMenuItem等の基本的機能を実装したMain.javaに、
JTreeを実装したA.java、TextAreaを実装したB.javaを追加するような形です

120:デフォルトの名無しさん
08/01/15 16:52:03
同じパッケージ (同じディレクトリに保存してある) なら何もしなくても使えるだろ。

121:デフォルトの名無しさん
08/01/15 16:57:19
すみません、表現がおかしかったですね
・MainでMainメソッド等を作った
・A,BでMainメソッド込みで必要な機能をそれぞれ作った
 ↑
 これをMainに関連付けるにはどうしたらいいのでしょうか

122:デフォルトの名無しさん
08/01/15 17:00:46
↓エスパー求む

123:デフォルトの名無しさん
08/01/15 17:01:32
すみませんが、質問です。
intの配列を、リストに変換するライブラリはないでしょうか?
commons にありそうな気がするのですが。

Arrays.asList() を使ったのですが、
intの配列だと、配列全体を一要素とするリストができてしまいます。
java.util.Arrays.asList(new int[]{1,2,3})
=> (java.util.Arrays$ArrayList<E>) [[I@18f6235]

Integerの配列なら、そのままリストに変換されるのですが。
java.util.Arrays.asList(new Integer[]{1,2,3})
=> (java.util.Arrays$ArrayList<E>) [1, 2, 3]


124:デフォルトの名無しさん
08/01/15 17:04:21
なんか最近質問も回答もひどいな。

125:デフォルトの名無しさん
08/01/15 17:11:56
>>123
一発変換じゃないけど、commons lang の
Integer[] org.apache.commons.lang.ArrayUtils#toObject(int[])
とかで、いったんInteger[]に変換してからArrays#asList()で変換するとか。

126:デフォルトの名無しさん
08/01/15 17:14:33
>>121
「関連付ける」っていう表現がJava歴12年の私によくわからない。
何を心配しているのだ?


127:デフォルトの名無しさん
08/01/15 17:15:42
List<Integer> list = new ArrayList<Integer>();
for(int i: array){
  list.add(i);
}

なぜこの程度のコードのために非標準ライブラリを使おうとするんだ?

128:123
08/01/15 17:27:31
>>125
おお、これでOKです!ありがとうございます。
URLリンク(commons.apache.org)(int[])

>>127
まあループをなるべく書かないのがポリシーなのだと思ってください。
LISPで再帰せずにmapを使うようなものです。
commons-langは、まずどんなプロジェクトでも使わないことはないし。

129:123
08/01/15 17:39:13
趣味じゃなくて実用の話をすると、これは配列の中身をログに書き出すために、
リストに変換したかったのです。配列#.toString()と違い、List#toString()は
各要素を出力してくれますので。

ロギングのためにわざわざループを書いたり、その後使うあてのない諸々の変
数を宣言したりするのは煩雑ですが、これなら一行ですみます。

log.debug("x = " + Arrays.asList(ArrayUtils.toObject(xarray)));


130:デフォルトの名無しさん
08/01/15 17:41:35
それは十分趣味だと思うが。

131:デフォルトの名無しさん
08/01/15 17:51:26
>>129
そーゆー用途なら java.util.Arrays#toString(int[]) でも良いのでは?
もっとも、1.5以上じゃないと使えないけど。

132:デフォルトの名無しさん
08/01/15 18:05:40
final
static final
static

の使い分けがわかりません。

final float TEST = 1.0f;
static final float TEST = 1.0f;
static TEST = 1.0f;

どういう状況・どういう時に使い分けるのですか?

133:デフォルトの名無しさん
08/01/15 18:13:45
>>132
メンバ変数の話だとすると、
final
変更できないメンバに付ける。コンストラクタで初期化することはで
きるので、あるインスタンス内でのみ有効な実行時定数として使う
static final
そのクラスの全インスタンスに共通の定数として使う
static
そのクラスの全インスタンスに共通の変数として使う



134:デフォルトの名無しさん
08/01/15 18:17:52
>>133
ありがとうございます。
static final は Cでいうと #define みたいなものと捕らえて大丈夫ということでしょうか?


135:デフォルトの名無しさん
08/01/15 18:23:12
>>134
そんな感じですね。

例を思いついたので書いてみる
class 人間 {
static final int 足の数 = 2; // 足の数は全人類共通
static int 人口;
final String 名前; // 名前は一度決めれば変わらない

人間(String n) {
名前 = n;
}
void 出生() {
人口++;
}
void 死去() {
人口--;
}
}


136:デフォルトの名無しさん
08/01/15 18:24:23
定数の特徴がstaticでfinalなんだよ
って昔言われたな

137:デフォルトの名無しさん
08/01/15 18:26:21
>>135
わかりやすい例で納得できました
ありがとうございます

138:123
08/01/15 18:36:34
>>131
> そーゆー用途なら java.util.Arrays#toString(int[]) でも良いのでは?
> もっとも、1.5以上じゃないと使えないけど。

おおお!全然知りませんでした!ありがとうございます。
早速これに乗り換えます。

139:デフォルトの名無しさん
08/01/15 18:41:14
>>135
カタワは人間でないt(ry

140:デフォルトの名無しさん
08/01/15 19:23:05
>>139
カタワは基本構造から差し引かれているわけだから2本って定義は間違ってないよ。


141:デフォルトの名無しさん
08/01/15 19:48:07
java.nio.channelsのSelector#wakeupについて教えて下さい。

このメソッドはSelector#selectの待ち合わせを解除するものですが、
動かしてみたところ、
Selector#selectで待ち合わせていないときに(複数回)Selector#wakeup
を呼び出すと呼ばれた回数だけ次のSelector#selectで待ち合わせをしなくなるように見えますが
そういうものですかね?






142:デフォルトの名無しさん
08/01/15 20:05:46
>>129
>List#toString()は
>各要素を出力してくれますので。

そうとは限らない。おまいは何か勘違いしている。
Listの実装に何を使うかによって違う。



143:デフォルトの名無しさん
08/01/15 21:16:48
import java.util.*;

class Super {}
class Sub extends Super {}
public class Main {
    static void test1() {
        List<? extends Super>s = new ArrayList<Sub>();
        s.add(new Super());    //あ
        s.add(new Sub());    //い
    }
    static void test2() {
        List<? super Sub>s = new ArrayList<Super>();
        s.add(new Super());    //う
        s.add(new Sub());    //え
    }
    public static void main(String args[]) {
        test1();
        test2();
    }
}

上記コードの あ・い・う・え すべて「シンボルを見つけられません。」というエラーになるんですが
本には あ・い はエラー、う・え はOKって書いてあるんです。
これて、本が間違ってるんでしょうか?それとも何かコンパイラーの設定とかあるんでしょうか?
本はソフトバンククリエイティブの 「 Java2 Exam 310-055 」で、336ページです。
ここだけがどうしても理解できないので、スッキリしたいです。

144:デフォルトの名無しさん
08/01/15 21:32:51
ひどいコードだな。

145:デフォルトの名無しさん
08/01/15 22:30:40
>>141
URLリンク(java.sun.com)()
>ある選択操作から次の選択操作までの間にこのメソッドを 2 回以上呼び出しても、
>1 回だけ呼び出したときと同じ結果になります。

ってあるから、もしそうだとしたらバグかな?
どうでもいいとは思うが

146:デフォルトの名無しさん
08/01/15 22:34:42
漠然とした質問で申し訳ありませんがお聞きします。
eclipseなどだと、ソーエディタの変数名にマウスカーソルを合わせたりすると「型名 変数名 -クラス.メソッド」
という感じで表示されますよね?
この文字列ってどうにかして取得できませんか?イメージとしては
元のJavaのソースコードを食わせて、すべての変数に対して「型名 変数名 -クラス.メソッド」
が取得できればいいです。
eclipseはJavaで書かれていると聞いたので、こういったことを処理するクラスがあるのでしょうか?

147:デフォルトの名無しさん
08/01/15 22:39:24
>>146
リフレクションAPIを使うといいよ

148:デフォルトの名無しさん
08/01/15 22:40:23
Eclipseはすべて自前でやっている
Eclipseのプラグインを作ってEclipse(というかJDT)の機能を使うって手もあるけど・・・

そのJavaのソースコードを普通にコンパイルして、実行時にリフレクションで取得する方が簡単と思う
たとえばAっていう名前のクラスなら A.class.getDeclaredMethods() とか

149:デフォルトの名無しさん
08/01/15 22:41:14
>>146
できねーよ。自分でパーサー組んでコンテキスト分析すれ。

150:デフォルトの名無しさん
08/01/15 22:42:28
>>147
早速のご回答ありがとうございます
大変恐縮なのですが、そのAPIはどのパッケージにあるか教えていただけますか?

151:デフォルトの名無しさん
08/01/15 22:44:43
おまいら別クラスの任意の位置のローカル変数にどうやってリフレクション使わせる気だ。

152:デフォルトの名無しさん
08/01/15 22:53:16
変数名が要るのか、失敬
それなら、classファイルのデバッグ情報を読む・・・ちょっと手間だな

153:デフォルトの名無しさん
08/01/15 23:35:59
>>105
ダブルクリック。

154:デフォルトの名無しさん
08/01/16 00:01:28
>>143
本の通りで、コンパイルエラーになるなら本が間違ってる。
もしくは、本の説明が足りない。もしくは、本にとってあなたは想定外の人物。

私の環境だと「え」以外はエラー。

155:デフォルトの名無しさん
08/01/16 01:03:42
>>143 の疑問は解けないかもしれないが、今回探した中では一番読み応えのあった文章
Javaの理論と実践: Generics、了解!
(初級:ただし、JDK 5.0でのgenericの基本に慣れている必要がある)
URLリンク(www.ibm.com)

156:デフォルトの名無しさん
08/01/16 13:20:37
>>121

Main.java
 ……
 static int hogehoge = 1;
 static A a = new A();
 static B b = new B();
 ……
 a.starting();

A.java
class A {
 public void starting() {
  int i = Main.hogehoge;
  Main.b.ending(i);
  ……
 }
}
試せ。適当に書いてみてエラーが出なければ多分正しい

157:デフォルトの名無しさん
08/01/16 15:01:17
Iteratorを使ったループでの同期化について質問させてください。

動画の描画のような、毎秒数十回呼び出されるループ内で、ArrayListをIteratorで回してます。その一方で、別スレッドからこのArrayListに追加するためのメソッドがあります。

(例)--------------
ArrayList<Hoge>() hoge = new ArrayList<Hoge>();

loop(){ // 毎秒数十回呼び出すループ
 Iterator<Hoge> it = process.iterator();
 while(it.hasNext()){
  Hoge h = it.next();
  if(!h.loop()){ // Hoge内のループがfalseを返したら削除
   it.remove();
  }
 }
}

public void addHoge(Hoge h){
 hoge.add(h)
}
------------------

こういう場合にIteratorループでConcurrentModificationExceptionが起こらないようにするには、どうすれば良いのでしょうか?

synchronized修飾子で囲ってみたり、Collections.synchronizedList使ってみたりと色々試したのですが、どうしてもConcurrentModificationExceptionが起こってしまいます。

大人しくVector + Enumerationを使ったり、for(int i = 0; i < hoge.size(); i++) で回せば解決するのですが、Iteratorでの解決策が無いはずは無いと思うのです・・・。

158:デフォルトの名無しさん
08/01/16 15:15:37
loopの中をsynchronized(process)で、
addの中をsynchronized(hoge)で
くくる?
URLリンク(www.nextindex.net)

159:デフォルトの名無しさん
08/01/16 15:17:19
CopyOnWriteArrayListを使ってIterator#removeの代わりにList#removeにする・・・とか。

160:デフォルトの名無しさん
08/01/16 16:34:58
JAVAを使う職業に転職したいのですがいい本はないでしょうか?
今は会社員ですが、辞める予定ですので、早く覚えたいのです。

161:157
08/01/16 16:47:54
さっそくのご回答有難うございます。

そしてすいません、4行目の

Iterator<Hoge> it = process.iterator(); は、
 ↓
Iterator<Hoge> it = hoge.iterator();

の間違いでした。

>> 158さん
ありがとうございます。
どちらのメソッドもsynchronizedブロックで括るということですね。
むむむ、しかし試してみたところ、やはりadd後に即、loop内でConcurrentModificationExceptionが起こってしまいました。

ArrayListをiteratorで回してる最中は、追加・削除等の処理は一切行っちゃダメってことなんですかね。何か凄く不便に感じます。
多分、僕が無知なだけなんだろうとは思いますが・・・。

>>159さん
やや!並行処理用のコレクションがあったとは知りませんでした。
パフォーマンスも満足行くものみたいですね。
ありがとうございます、活用してみます。

やはり、並行処理するならば、ArrayListにこだわるのは良くないということなんでしょうかね。

MapにはConcurrentHashMapがあるようですね。以下のサイトを参考にしました。
URLリンク(www.itarchitect.jp)

返答ありがとうございます。

162:デフォルトの名無しさん
08/01/16 16:51:04
>>157
API を読みましょう。ってことなのでしょうか
URLリンク(java.sun.com)

163:デフォルトの名無しさん
08/01/16 16:57:34
>157
List list = new ArrayList() {
  @Override
  public Iterator iterator() {
       ArrayList list = new ArrayList(this);
       return list.iterator();
  }
}

164:デフォルトの名無しさん
08/01/16 20:20:23
<fmt:bundle> と <fmt:setBundle> って機能まとめて一つで良いよなぁという独り言。

165:デフォルトの名無しさん
08/01/16 23:17:07
>>163

it.remove();


166:デフォルトの名無しさん
08/01/17 09:41:33
すいません、Javaを勉強しようと思っているのですが
色々種類がありすぎてどれから始めるのが良いのか分かりません。
おすすめとかありますか?
ちなみに、僕のスペックです。
・経験言語
 Perl(4年)/PHP(3年)
 Ruby(半年)/C(半年)
 JavaScript(1年)

167:デフォルトの名無しさん
08/01/17 09:54:15
Java の色々種類って何だよ
開発環境なら Java SE 6.0 + Eclipse 3 使っとけ。
GUI なら Swing (Java SE 標準) 使っとけ。
Web 系なら Tomcat 使っとけ。
データベースなら PostgreSQL 使っとけ。
i-Appli, ゲームは知らん。

168:デフォルトの名無しさん
08/01/17 10:40:08
>166
得意分野から入るってならばSeasar2あたりでJ2EEをやる
Ruby(Rails)やったことあるならば大雑把には感覚つかめる筈
まったく知らない分野に手を伸ばしたいならばSocket通信とSwingあたりがいいかと思われ。
簡単なチャットプログラムあたりを作成するのがちょうどいい

169:デフォルトの名無しさん
08/01/17 14:43:05
JDK6に含まれている JDBC 4.0 APIには、DataSet<T>やBaseQueryなどが
含まれていないようなのですが、これらは、他のライブラリに入っているのでしょうか?
 それとも、JDBC 4.0仕様から削除されたのでしょうか?

170:デフォルトの名無しさん
08/01/17 15:27:49
リファレンス実装が十分固まらないうちにリリースに間に合わなくなって 1.6 から除外された。
その後は知らん。

171:デフォルトの名無しさん
08/01/17 15:30:36
>>167
MySQL勧めとけ

URLリンク(internet.watch.impress.co.jp)

172:デフォルトの名無しさん
08/01/17 15:37:09
Sun に買われた Cobalt がどうなったか知らんのか。

173:デフォルトの名無しさん
08/01/17 16:45:23
Stream の close() の仕方について質問です。
以下のようなみたいなコードがあったとき、

FileInputStream fis = new FileInputStream("hoge.txt");
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);

今まで以下のように書いていました。

br.close();
isr.close();
fis.close();

ところでピアソンの「プログラミング言語Java 第4版」p.450(20.4 InputStreamReader と OutputStreamReader という節)
をみると、以下の記述があります。

>どちらの場合も、変換ストリームをクローズすると、関連付けされているバイトストリームもクローズされます。
>標準ストリームを変換するような場合には、クローズされるのは常に好ましくはないかもしれません。
>したがって、変換ストリームをいつクローズするかは慎重に検討してください。

これをよむと、以下のように isr.close() するだけで fis も close() されるという理解でよいですか?

br.close();
isr.close();

以下のように br.close() だけだと、isr と fis は close() されないですよね。

br.close();


174:デフォルトの名無しさん
08/01/17 16:48:59
創るJava って第2版がでるんだな。(2008/1/23)

175:デフォルトの名無しさん
08/01/17 17:00:26
>>173
br.close()だけでぜんぶクローズされるはず。
手元にソースがなくて確認はしてないけど、ストリームにかぶせるタイ
プのストリームはぜんぶclose()で中のストリームのclose()を呼んでい
たと思う。


176:デフォルトの名無しさん
08/01/17 17:08:09
>173
その文章書く時間あるならば、先にJavaDoc嫁
void close() throws IOException
    このストリームを閉じ、関連付けられているすべてのシステムリソースを解放します。ストリームがすでに閉じている場合、このメソッドを呼び出しても何も行われません。

177:173
08/01/17 17:15:07
>>175
どうもありがとうございます。BufferedReader のソースを見たところ、
close() の内部で、BufferedReader のコンストラクタで受け取った Reader の close() を呼んでいました。

今後プログラムを書くときは、br.close(); だけを書くようにしよう。

>>176
すみません、聞く前に javadoc 読むようにします。
ちなみに PrintWriter#close() は、Javadoc では「関連づけられているすべてのリソースを開放する」とは
書かれていませんでしたが、ソースを見ると、やはりコンストラクタで受け取った Writer をclose() していました。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5372日前に更新/229 KB
担当:undef