【初心者】Java質問・相談スレッド82【大歓迎】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/02/25(土) 23:38:06質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/
これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。
よくある質問
・「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
http://www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals を使え。
前スレッド
【初心者】Java質問・相談スレッド81【大歓迎】
http://pc8.2ch.net/test/read.cgi/tech/1139654818/
/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。
JavaScriptの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc5.2ch.net/hp/
次スレは>>980あたりで。
0357デフォルトの名無しさん
2006/03/03(金) 00:35:29int i = '胃';
System.out.println( Integer.toBinaryString(i));
こんなんでどうでしょう?
0358357
2006/03/03(金) 00:45:41String str = "東京特許許可局";
for (int i = 0; i < str.length(); i++){
System.out.println( Integer.toBinaryString(str.charAt(i)));
}
あとマルチポストイクナイ
0359デフォルトの名無しさん
2006/03/03(金) 00:47:20マルチプル・インスタンスも継承も、直接は多態性ではないよ。マルチプル・インスタンス自体は
多態性とはいっさい関係ないと思う。
本来の話で言えば、型のことは一切考えず、いろんなオブジェクトに全く同じメッセージ(たとえば
draw)を送ると、それぞれに応じた処理が動くことをいうよね。
いろんなオブジェクトがList内に入っているとき、構造化プログラムならまず種類をしらべて、種類に
応じた別の関数を呼ぶようにしないといけない。でもオブジェクト指向言語では、ともかく draw という
メッセージを送れば、それぞれのオブジェクトがそれぞれの処理を行ってくれる。同じ処理なのに、
送る先のオブジェクトが違えば動作も違うから「多態」でしょう。
Java的にいえばすべて同じDrawableオブジェクトなのに、draw()を呼ぶごとに(実クラスが何かに
応じて)動作が変わる。でも見た目上は、それらはDrawableオブジェクト。だから多態性、なんじゃない?
0360デフォルトの名無しさん
2006/03/03(金) 01:07:38わかりました!早速やってみます!!
0362デフォルトの名無しさん
2006/03/03(金) 03:24:48聞き逃げ厨 って言葉の響きにワロタ
0363デフォルトの名無しさん
2006/03/03(金) 05:10:590364デフォルトの名無しさん
2006/03/03(金) 05:14:490365デフォルトの名無しさん
2006/03/03(金) 05:17:23今 Brew より Java の方が多いんだっけ?
0366デフォルトの名無しさん
2006/03/03(金) 07:04:200367デフォルトの名無しさん
2006/03/03(金) 07:06:380368デフォルトの名無しさん
2006/03/03(金) 08:15:450369デフォルトの名無しさん
2006/03/03(金) 08:59:050371デフォルトの名無しさん
2006/03/03(金) 09:13:000372328
2006/03/03(金) 09:22:05>>334の説明を理解したうえで >>338 の指摘も考えてみたんですが。
よくある多態性の説明だと >>338 だと思うんですね。
・同一クラスから派生した複数のクラスのオブジェクトがある。
メッセージに対してクラスごとにそれぞれ異なる、「態」をなす。
>>334 さんの説明だと、同一クラスからインスタンス化された
複数のオブジェクトがそれぞれのオブジェクトの状態により異なった「態」をなす
っていう説明だと思うんですが、それも含めて多態性と呼んじゃって
いいもんなんでしょうかね。
もっとも>>334さんがナナシクラスとそこから派生したレス番号クラスっていう
意味で書いてたら僕の読み違いなんですが。
0373デフォルトの名無しさん
2006/03/03(金) 09:29:19HttpSessionインタフェースを持つオブジェクトを得られますよね。
このsessionインタフェースを持ったオブジェクトの実体って何なんでしょうか?
そういうことは考えちゃだめってこと?
0374デフォルトの名無しさん
2006/03/03(金) 09:50:02>>359 は読みましたか?
0375デフォルトの名無しさん
2006/03/03(金) 09:54:16その実装が何であるかまでを深く追求しないのはニュートンの時代からの科学的方法論です。
0377デフォルトの名無しさん
2006/03/03(金) 12:30:43それおれもワロタ
いつからかこのスレには聞き逃げ厨が
繁殖するようになったなw
0378デフォルトの名無しさん
2006/03/03(金) 13:02:490379デフォルトの名無しさん
2006/03/03(金) 13:05:290380デフォルトの名無しさん
2006/03/03(金) 13:12:350381デフォルトの名無しさん
2006/03/03(金) 13:44:020382デフォルトの名無しさん
2006/03/03(金) 14:00:27ところがたまに文字化けが起こるため、ブラウザ側ではメタタグでShift_JISを指定して受け取ってます。
これっていいんでしょうか?
Windows31JとShift_JISの関係を教えてもらえませんか?
0383デフォルトの名無しさん
2006/03/03(金) 14:04:12良いよ。
Content-Type の charset 属性と出力文字エンコーディングを分離できてない
サーブレットの仕様が糞なだけ。
0384デフォルトの名無しさん
2006/03/03(金) 14:08:40Windowsは正確にはWindows31J(拡張シフトJIS)という文字コードが標準。
JIS X 0208(第1水準・第2水準)に、NEC/IBM外字を加えたもの。
0385デフォルトの名無しさん
2006/03/03(金) 14:43:46ありませんか?
0386デフォルトの名無しさん
2006/03/03(金) 14:49:49新しいImageを作成することはできますか?
0387デフォルトの名無しさん
2006/03/03(金) 14:56:20BufferedImage
0388デフォルトの名無しさん
2006/03/03(金) 15:10:55JavaMail使って取り出すには、どうやればいいんでしょう?
0389デフォルトの名無しさん
2006/03/03(金) 15:17:12感謝
0390388
2006/03/03(金) 17:24:56ttp://www.rgagnon.com/javadetails/java-0458.html
0391デフォルトの名無しさん
2006/03/03(金) 17:31:160392デフォルトの名無しさん
2006/03/03(金) 17:34:00Judeで出来なかったっけ?
0393デフォルトの名無しさん
2006/03/03(金) 17:51:37いや、クラス図は作ってくれるけどオブジェクト図は無理。
オブジェクト図は実行時の動的な側面を持つものなので、
UMLツールで生成するのは無理じゃね?
プロファイリングツールの出番だと思う。
0394デフォルトの名無しさん
2006/03/03(金) 17:57:240395デフォルトの名無しさん
2006/03/03(金) 18:01:57ソースからUMLのシーケンス図を生成できるフリーのツールってありますか?
0396デフォルトの名無しさん
2006/03/03(金) 18:21:080397391
2006/03/03(金) 18:32:090398デフォルトの名無しさん
2006/03/03(金) 19:00:07int bb = 0;
bb = aa++;
out.println("aa++ bb="+bb);
aa = 3;
bb = 0;
bb = ++aa;
out.println("++aa bb="+bb);
0399デフォルトの名無しさん
2006/03/03(金) 19:26:17JListを使っているのですが、リストに入れた文字の大きさを変えるには
どうすればいいでしょうか?
modelもJListと一緒に使っています・・・
0400デフォルトの名無しさん
2006/03/03(金) 21:02:31メモリ上にずっと置いておけないぐらいのデータを扱うプログラムを書いているのですが
ある一定量を超えたらファイルに書き出してくれる(LRUとかでキャッシュしてくれるとなおよし)
ようなArrayListなどのコレクションってないでしょうか?
外部ライブラリとかでもかまいません。
ちょっと違うかもしれませんが、RubyのPstore(http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=PStore)のJava版
のようなライブラリでもOKです。
識者の方ご意見御願いします。
0401デフォルトの名無しさん
2006/03/03(金) 21:30:54やってくれるようなフレームワークはありませんか。
0402デフォルトの名無しさん
2006/03/03(金) 21:33:52ttp://java.sun.com/j2se/1.5.0/ja/docs/ja/api/javax/swing/JList.html
JList#setCellRenderer()が使えるよ。
0404デフォルトの名無しさん
2006/03/03(金) 21:36:05○ >>399
0405404
2006/03/03(金) 21:36:41気づいておったか。
0406デフォルトの名無しさん
2006/03/03(金) 21:39:40トンクス!
だがものすごくこれに関する資料が少ないなw
0407デフォルトの名無しさん
2006/03/03(金) 22:30:11Dialogの例外処理ってどうしたらよいのでしょうか?
0408デフォルトの名無しさん
2006/03/03(金) 22:45:120409デフォルトの名無しさん
2006/03/03(金) 22:47:25Dialog で例外処理が必要になるプログラムを作らない。
0410デフォルトの名無しさん
2006/03/03(金) 23:44:10どなたかのアドバイス、ご指摘を頂ければと思い、書かせて頂きました。
内容としては、
文字入力待ち→何らかの文字列を入力してEnter→その文字列が表示されて
再び文字入力待ち→入力された文字列が「q」一文字の場合は表示せず終了
というものなのですが、コンパイルが通らずにいます。
public class WaitingAgain {
public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
try{
String line = reader.readLine();
System.out.println(line);
if (line = reader.readLine() equals('q')) {
System.out.println();
}
} catch (IOException e) {
System.out.println(e);
}
}
}
}
0411410
2006/03/03(金) 23:47:18ご指摘があれば宜しくお願い申します。上のソースでは、うまく
改行されずに見にくくなってしまい、申し訳ありません。
0412デフォルトの名無しさん
2006/03/03(金) 23:53:570413デフォルトの名無しさん
2006/03/03(金) 23:58:13この最初の for 文はなんだ? args.length 回のループ? args.length の意味分かってないのか?
> BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
これは問題ない。
> if (line = reader.readLine() equals('q')) {
これダメ。既に line に1行読み込んでいるんだからそれと比較すればいいだけ。
if (line.equals("q")) { だ。 q はシングルクォーテーションで括ってはいけない。
ダブルクォーテーションだ。
ちなみに Java はダブルクォーテーションで括った文字列の定数は String
クラスのインスタンスだ。なので "abc".charAt(1) のような書き方も可能。
(この場合 'b' が返される)
で、"q" の入力により終るんだろ? "q" が来るまでは同じことを繰り返すん
だろ? だったら外側のループは無限ループにしてしまえ。for (;;) {...} か
while (true) {...} の形だ。で、line.qeuals("q") が true の時に break で
終りにさせろ。
以上。
0414デフォルトの名無しさん
2006/03/03(金) 23:58:29引数を使用するのか?
>if (line = reader.readLine() equals('q'))
if((line = reader.readLine()).equals("q"))
0415デフォルトの名無しさん
2006/03/04(土) 00:08:11よく見ろ。そこで readLine() しなくてもいいんだって。
0416デフォルトの名無しさん
2006/03/04(土) 00:16:180417デフォルトの名無しさん
2006/03/04(土) 00:25:48・readLine()で入力読み込み
・読み込んだものを表示
・読み込んだものを"q"と比較
・"q"なら改行
また読み込みに戻り繰り返し。
System.out.println()ってIOExceptionを引数に
取れたっけ?
0418デフォルトの名無しさん
2006/03/04(土) 00:30:00取れる。
参照型は Object の奴があるし、プリミティブ型のも全部用意されてるから
println は全ての型に対応してるよ。
0419デフォルトの名無しさん
2006/03/04(土) 00:33:280420デフォルトの名無しさん
2006/03/04(土) 00:37:520421410
2006/03/04(土) 01:08:26皆さん、わざわざ、夜中に様々なご指摘ありがとうございます。
大変有難く存じます。
特にwhileや”については、最近オブジェクト指向の事について
よく分からずにしているうちに大事な点忘れてきている様です。
皆さんの色々なレス、いい意味で刺激になります。m(__)m
0422デフォルトの名無しさん
2006/03/04(土) 01:10:43this.getClass().getName();
を呼び出すと、子クラスの名前が返ります。
で、ふと思ったんですが
これって、子をnewした段階で、
ファイルは別でも子と親はもはや同じファイルに記述されてるのと
意味的には一緒、と捉えても良いって事なんでしょうか
0423デフォルトの名無しさん
2006/03/04(土) 01:17:50> 意味的には一緒
ってのが何を言ってるのか良くわからんが
多態の事を言ってるなら、「〜と捉えても良い」ような気もする。
0424デフォルトの名無しさん
2006/03/04(土) 01:41:52コレで理解できるかもしれない。
8.4.8.5 例: 隠ぺいされたクラスメソッドの呼出し
http://www.y-adagio.com/public/standards/tr_javalang2/classes.doc.html#229207
> ファイルは別でも子と親はもはや同じファイルに記述されてるのと
> 意味的には一緒、と捉えても良いって事なんでしょうか
他人と意思の疎通が出来なくなるような世界を構築することは、
今後、学習を進める上で大いなる障害になるだろう。
0425デフォルトの名無しさん
2006/03/04(土) 02:31:05同じファイルに書くことと、継承することは意味が違うだろ。
親クラスに書いてあるthis.getClass()が子クラス自体を返すのは、
thisはどんなときでも、メソッド検索の最初のオブジェクト(この場合
子クラス)を指すからだ。まあ、子クラスのインスタンスが生成された
とたんに「俺様(this)」が生成され、それ以降ずっと、俺様は俺様って
ことだ。
0426デフォルトの名無しさん
2006/03/04(土) 03:43:55配列を宣言する時に私はString lpStr[];と記述しています。
しかし幾多の参考書や入門サイトではString[] lpStr;とも宣言しています。
どちらも意味的には同じですよね
0427デフォルトの名無しさん
2006/03/04(土) 03:46:48過去ログに出てたなぁ、というか俺が質問した内容でもあるんだがw
String[] lpStr; の方が一般的らしいよ
変数の方に[]をつけるのはCの名残みたいなもんとか
0428デフォルトの名無しさん
2006/03/04(土) 03:55:06デファクトスタンダードに則って配列はString[] 〜と宣言していく事にします。
ありがとうございました
0429デフォルトの名無しさん
2006/03/04(土) 04:11:14クラスAが定義されているとして
クラスAのメンバ変数は
int[] lpiFlags = {0,1,2,3,4};
String str = "ぬるぽ";
などと宣言されているとします。
そこで何が問題かというと次の様に宣言されている時に困ってしまいました
int []lpiFlags = {0,1,2,3,4};
String str = "lpiFlagsの要素の個数 "+lpiFlags.length;
クラスAのインスタンスが作成された時にこれら変数と初期化作業を行われる訳ですが、
Javaではこの変数の宣言と初期化作業の順番というのは厳密に定められているのですか?
もし定められてなければコンストラクタで初期化作業をしなくてはならないので・・
0430デフォルトの名無しさん
2006/03/04(土) 04:28:52そういう怪しいコードを書くと、3日後ぐらいには後悔するから。
さて、お決まりの言語規定からの引用
12.4.2 初期化手続きの詳細
http://www.y-adagio.com/public/standards/tr_javalang2/execution.doc.html#44630
8. 次に,クラス変数初期化子及びクラスの静的初期化子,又はインタフェースのフィールド初期化子の
いづれかを,記述してある順序に,それらが単一ブロックであるものとして実行する。ただし,例外として,
値がコンパイル時の定数であるfinalクラス変数及びインタフェースのフィールドは,最初に初期化するもの
とする(8.3.2.1, 9.3.1及び13.4.8)。
0431デフォルトの名無しさん
2006/03/04(土) 04:52:27日本語の言語規定もしっかりあるのですね
今一度しっかり読んできます
0432デフォルトの名無しさん
2006/03/04(土) 08:11:00ちょいとごめんなさいね。
( ・∀・) | | ガッ
と ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V`Д´)/
(_フ彡 /
0433デフォルトの名無しさん
2006/03/04(土) 08:49:01いい本ある?
0434デフォルトの名無しさん
2006/03/04(土) 08:51:46それぞれのボタンのJButtonオブジェクトを取得したいのですが、
どう取得するのが普通でしょうか。
一応こんな↓ムリヤリな方法では取得できたのですが・・・
JButton openButton = (JButton)((JPanel)((JPanel)getComponents()[2]).getComponents()[3]).getComponents()[0];
よろしくお願いします。
0435デフォルトの名無しさん
2006/03/04(土) 12:19:332. そのインスタンスのクラスがSerializableを実装していた
3. そのインスタンスをObjectOutputStreamとかでファイルに書き出した
そのとき
4. ObjectInputStreamでそのファイルからインスタンスを取り出す
ってのは可能ですか?
外部のJarファイルはクラスパスの外です。
0436435
2006/03/04(土) 13:29:15ClassNotFoundExceptionが出ますた
どうやって読み込んでやればよろしいでしょう
0437デフォルトの名無しさん
2006/03/04(土) 13:29:501 でインスタンスを作ったクラスローダの支配下にあるなら普通にできる。
そうでないなら ObjectInputStream#resolveClass(ObjectStreamClass) を上書きして
外部jarを読み込んだクラスローダを使って自力でクラスを解決してやればできるはず。
0438デフォルトの名無しさん
2006/03/04(土) 13:32:24Thank you!
0439デフォルトの名無しさん
2006/03/04(土) 13:32:59クラスパスが通って無いのに、最初のインスタンスを
どうやって生成したのだろう…
0440デフォルトの名無しさん
2006/03/04(土) 13:37:26URLClassLoaderです。
0441デフォルトの名無しさん
2006/03/04(土) 13:54:03なるほど。それで >>437 なのね。
0442デフォルトの名無しさん
2006/03/04(土) 18:04:030443デフォルトの名無しさん
2006/03/04(土) 18:06:348文字のどんなランダム文字列なのかを説明しなさいってばよ。
半角英数字でやるのと2バイト文字の全てとでは手法も違うよ
0444デフォルトの名無しさん
2006/03/04(土) 18:08:330445デフォルトの名無しさん
2006/03/04(土) 18:40:15せめて getComponent(2) とかにすれば?
0446デフォルトの名無しさん
2006/03/04(土) 18:41:57まぁいっか。5分くらいで作ったので性能のほどはシラネ
private static char[] hankaku =
("ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ "abcdefghijklmnopqrstuvwxyz"
+ "0123456789").toCharArray();
private Random rand = new Random();
public String getRandomString(int length) {
char[] value = new char[length];
for (int i=0; i<length; i++) {
value[i] = hankaku[rand.nextInt(hankaku.length)];
}
return new String(value);
}
0447デフォルトの名無しさん
2006/03/04(土) 18:59:03for(int i=;i<10;i++){
String test_i
}
変数名の一部に変数名を使うというのは
例えばこれで、test_1、test_2・・・が10個宣言されるようなイメージです。
例えばの話です。
0448デフォルトの名無しさん
2006/03/04(土) 19:08:45そういう場合は配列がいいかと
String[] testArray = new String[10];
for(int i = 0; i < 10; ++i)
{
testArray[i] = "ぬるぽ";
}
0449デフォルトの名無しさん
2006/03/04(土) 19:14:20HashMap<String, String> map = new HashMap<String, String>();
for (int i=1; i<=10; i++) {
map.put("test_" + i, "String_" + i);
}
System.out.println(map.get("test_3"));
0450デフォルトの名無しさん
2006/03/04(土) 19:35:18getComponent()の引数なのですが、私の環境に
合わせて決め打ちとかしてしまってよいものなのでしょうか。
0451デフォルトの名無しさん
2006/03/04(土) 19:39:18コンストラクタのなかで特定しちゃいなよ
0452デフォルトの名無しさん
2006/03/04(土) 20:32:49その方法はちょっと考えたのですが、ボタンのテキストって
環境依存とかしないものなのでしょうか。
0453デフォルトの名無しさん
2006/03/04(土) 21:34:21setApproveButtonTextなんかでテキストを変えられるようだが。
0454デフォルトの名無しさん
2006/03/04(土) 22:21:28>>432
0455デフォルトの名無しさん
2006/03/05(日) 00:03:190〜0x1f はコントロールなので抜きな。
for (int i = 0; i < 8; i++)
System.out.print((char) (Math.random() * (0x10000 - 0x20) + 0x20));
System.out.println();
でも、本当はこれではダメ。というのはサロゲートな文字があって、
char 2 つないと1文字を表現できないから。
0456デフォルトの名無しさん
2006/03/05(日) 00:04:55半角文字? そりゃいかんな。Unicode 2.0 にはたしかに HALFWIDTH の
文字はある。あるのだがどちらにしろ環境依存だ。画面にどういった幅で
出るかは予想できない。
■ このスレッドは過去ログ倉庫に格納されています