トップページ⇒tech
1001コメント325KB

【初心者】Java質問・相談スレッド81【大歓迎】

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/02/11(土) 19:46:58
過去ログ、関連スレッド、よくある質問とその回答、
質問をする前に、貴方が見なければならないサイトについての情報は、
下の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質問・相談スレッド80【大歓迎】
http://pc8.2ch.net/test/read.cgi/tech/1138455638/

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

JavaScriptの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc5.2ch.net/hp/

次スレは>>980あたりで。
0153デフォルトの名無しさん2006/02/13(月) 21:03:50
配列をcsv形式にしてファイルに出力したいんだけど、string配列を要素ごとに分解しないで出力する方法ってありますか?
そもそもその方法と、配列を分解して間にコンマを挟むやり方で、どっちが速く出力できるんでしょうか
0154デフォルトの名無しさん2006/02/13(月) 21:13:28
> string配列を要素ごとに分解しないで出力する方法ってありますか?
ない。for で回せ。
0155デフォルトの名無しさん2006/02/13(月) 21:18:35
>>154
あ、無いんですか・・・
速さ云々の問題じゃないですね
ありがとうございました
0156デフォルトの名無しさん2006/02/13(月) 23:39:10
直列化復元をしようと思ったのですが、JメニューアイテムにAbstractActionを継承したクラスをセットすると復元時にIOExceptionを返してうまくいきません。
ちなみに↓のように問題の箇所をコメントアウトしてやると直列化復元ができました。

import java.awt.event.ActionEvent;
import javax.swing.*;

public class ThmMarkup extends JMenu {
private static final long serialVersionUID = -7741431003723696257L;

/* [Markup]
* Markup
*/
public ThmMarkup() {
super("Markup");
setMnemonic('M');
JMenuItem tmp1 = new JMenuItem(/*new Ts()*/);
tmp1.setText("Markup");
add(tmp1);
}
}

class Ts extends AbstractAction {
private static final long serialVersionUID = -7802062679011228602L;

public void actionPerformed(ActionEvent e) {
}
}
01571562006/02/13(月) 23:44:14
>>156
すみません..文章が疑問形になってないですね。

156の直列化復元が失敗する理由が分かるかた教えて下さい。おねがいします。
0158デフォルトの名無しさん2006/02/14(火) 01:04:20
>>156
クラスを入れ子にしてみたらどうだろう
0159デフォルトの名無しさん2006/02/14(火) 02:16:01
assertって、バイトコードでは特別な命令があるのでしょうか。それとも単に、
if (xxx) { throw new AssertionError(); }相当の普通のバイトコードが挿入されるのでしょうか。
0160デフォルトの名無しさん2006/02/14(火) 02:21:18
ttp://uploaderlink.hp.infoseek.co.jp/cgi-bin/512kb/src/up3969.png.html
0161デフォルトの名無しさん2006/02/14(火) 08:02:03
>>159
if (xxx) { throw new AssertionError(); }相当のコードが挿入されます。
0162デフォルトの名無しさん2006/02/14(火) 11:19:03
>>161
なるほど。ありがとうございました。
0163sage2006/02/14(火) 14:36:07
プログラムAからプログラムBに値を受け渡したいのですが
プログラムBで受け取ることができません。
プログラムAから値を送信するところまでは確認できたのですが
プログラムBで値を取得する良い方法はないでしょうか?
0164デフォルトの名無しさん2006/02/14(火) 14:37:29
あげてしまった・・・。
0165デフォルトの名無しさん2006/02/14(火) 14:43:37
>>163
その文章で問題解決できる人がいると思うのか?
0166デフォルトの名無しさん2006/02/14(火) 14:44:45
どうやって値をわたしてるの?

シリアライズでソケット通信かな?
RMIかな?
SOAPかな?
XMLRPCかな?

エスパー募集!
0167デフォルトの名無しさん2006/02/14(火) 14:59:32
ヒント:アクセス修飾子
01681632006/02/14(火) 15:08:05
言葉足らず過ぎで申し訳ない・・・
リストボックスのSERECTタグから拾った値を別のプログラムのJavaのプログラムに渡したいのです
0169デフォルトの名無しさん2006/02/14(火) 15:11:05
・・・どこが笑いどころだ?
俺にはわからん・・・歳食ったなぁ
0170デフォルトの名無しさん2006/02/14(火) 15:14:26
日本の将来が心配になってきますた。
0171デフォルトの名無しさん2006/02/14(火) 15:16:43
>>169
SERECTあたりかと
0172デフォルトの名無しさん2006/02/14(火) 15:17:36
>>170
大丈夫、ここでたたいておけば>>163みたいなやつがプログラマにならずに済む。
彼の日本語からすると、できる人間じゃないので
きっと土方とか交通整理とかそういうことをやって下から我々を支えてくれるよ。
0173デフォルトの名無しさん2006/02/14(火) 15:26:48
SERECTに禿ワロタ
0174デフォルトの名無しさん2006/02/14(火) 15:27:47
うちの会社にも似たようなのがいるんですが、どうしたら良いですか?
0175デフォルトの名無しさん2006/02/14(火) 15:28:49
KUBI
0176デフォルトの名無しさん2006/02/14(火) 15:29:30
だから、クラス名はカタカナに変換しないで、ちゃんと記述してください。
それから、種別や所属を表す修飾語をもっと使ってください。
# フレームでも Swing のフレームなら、JFrame クラスのことだな、って分かるわけですよ。
0177デフォルトの名無しさん2006/02/14(火) 16:13:38
KUVIっていいな
0178デフォルトの名無しさん2006/02/14(火) 17:13:09
>>168よりむしろその後の一人芝居の笑いどころがわからんのだが
0179デフォルトの名無しさん2006/02/14(火) 17:31:49
フーン
0180デフォルトの名無しさん2006/02/14(火) 17:36:17
こりゃまじめにエスパー募集してもらわんと
0181デフォルトの名無しさん2006/02/14(火) 17:46:31
>>172の笑いどころてこれだろ
>プログラマにならずにすむ
  ↓
>土方や交通整理で我々を下から(ry

プログラマも土方も>>172も目くそ鼻くそだろうと
0182デフォルトの名無しさん2006/02/14(火) 17:47:22
現在AWTを勉強しています

Componentで利用できる
setBackground , setFonメソッドなどと
Graphicsで利用できる
setColor , setFontメソッドなどの関係が判りません

Graphicsクラスは所謂デバイスコンテキストに当るクラスという事なのですが
Componentで設定されている背景色やフォントを参考に、このコンテキストにカプセル化されてる
各種プロパティが設定される・・・という感じでしょうか
0183デフォルトの名無しさん2006/02/14(火) 17:49:56
>>168
もう JavaScript 認定でいいよ。エスパーいらね

# プログラムのプログラムなんて、UTMかっ
0184デフォルトの名無しさん2006/02/14(火) 18:03:06
>>182
ドキュメントに関係があると記述されて無いなら無関係。
0185デフォルトの名無しさん2006/02/14(火) 18:03:22
>>183
解らなければ黙ってた方がいいよ
0186デフォルトの名無しさん2006/02/14(火) 18:06:06
まともな質問できない奴は徹底スルーすれば良い話
0187デフォルトの名無しさん2006/02/14(火) 18:23:48
InputMap ってなんですか?
例えば、JComponent の getImputMap(); メソッドを実行すると InputMap の戻り値が返って来るんですが、InputMap には何が入っているのでしょうか?
API ドキュメントを見るとインスタンスフィールドもスタティックフィールドも無いんですけど、この型は何をしているのでしょう?

ついでにマップの概念も分らないんです。
0188デフォルトの名無しさん2006/02/14(火) 18:33:20
>>184
paint(Graphics g)メソッド中で
setForeground(new Color(0xFF0000));
と前景色を赤255に設定し、g.fillRect(0,0,100,100);などと矩形を描画しますと赤色の矩形が描画されます。
(init()メソッドでsetForeground(0)と一応初期化しました);
ですからGraphicsクラスがComponentクラス乃至そのサブクラスのプロパティを参照してると思うのですが
0189デフォルトの名無しさん2006/02/14(火) 18:39:46
>>188
君がいってるのは、例えば C言語で(たしか)不定とされている動作
int i = 0; i = i++; printf("%d", i); に関して、特定のコンパイラで 0 と表示されたってレベルの話。

だからといって C言語の仕様で上記は 0 と表示されるべきであるか、ってのとは別の話だって言う事。
0190デフォルトの名無しさん2006/02/14(火) 18:43:17
>>187
デフォルトの動作を覚えておくもの
たとえばタブ押せばフォーカスがどんどん次のコンポーネントへ移動するでしょ?
ああいうのを実装しているわけだ

だから汎用的に使いたい場合、たとえばリターンキー押したら
次のコンポーネントへ移動するとかが簡単に実装可能

基本的にはすでに作成したコンポーネントからInputMapを取得して
それに対して変更箇所だけ設定するのが普通
0191デフォルトの名無しさん2006/02/14(火) 18:45:12
>>189
よく理解できません

int i=0;i = i++;printf("%d",i)
についてはちゃんと評価されると思いますが
iがインクリメントされ、その値をiに代入ですから問題ないと思いますが
期待された処理を行わないコンパイラもあるのですか?

それはともかくとして
きっとアレなんで1から勉強しなおしてきます
0192デフォルトの名無しさん2006/02/14(火) 18:46:30
>>191
違うんだよなあ。数パターン考えられるんよ。
0193デフォルトの名無しさん2006/02/14(火) 18:46:34
cの話題は荒れるから止めれ
0194デフォルトの名無しさん2006/02/14(火) 18:46:57
>>188
Graphics の初期値を Component に設定するという程度の認識で良い。
御託並べてるバカは無視。
0195デフォルトの名無しさん2006/02/14(火) 18:49:11
>>192
同じ C/C++ 使いとしておまえの文調から プンプン 臭う自慢臭が ハズイ から芯でくれ
0196デフォルトの名無しさん2006/02/14(火) 18:49:36
コンポーネントのプロパティと描画に使うメソッドとまったく違うものだろ
どう勘違いするんだ
0197デフォルトの名無しさん2006/02/14(火) 18:51:53

192 デフォルトの名無しさん sage 2006/02/14(火) 18:46:30
>>191
違うんだよなあ。数パターン考えられるんよ。
0198デフォルトの名無しさん2006/02/14(火) 19:00:56
「DQN って知らないでしょ? 語源は目撃ドキュンっていう番組で…」 とか嬉々としながら
女の子に説明してる系の痛い人が思い浮かびました。
0199デフォルトの名無しさん2006/02/14(火) 19:01:11
>>190さん
ありがとうございます。
getInputMap(); を実行すると、既にあるコンポーネントのデフォルトの動作が入った InputMap が取得できると言う事でしょうか?
馬鹿な事を言うと思うかも知れませんが、InputMapにはフィールドが無いのでどうやって覚えているんだろうって不思議です。
いろいろあるメソッドも、どこにどんな操作をしているのか、、さっぱり分りません。
すみません。
0200デフォルトの名無しさん2006/02/14(火) 19:05:10
>>199 は、調べ物をする際の典型的なトラップに、はまりかけてるように思える。
# そのうちソースを見ないと安心できなくなりそうだな。
0201デフォルトの名無しさん2006/02/14(火) 19:11:03
>>191
++が後ろにあるだろ。式の評価後にインクリメントされるわけだ。
じゃ、代入後のiがインクリメントされるのか、
代入前のiがインクリメントされるのかどっち?
0202デフォルトの名無しさん2006/02/14(火) 19:14:29
なんだ数パターンって2つじゃん
0203デフォルトの名無しさん2006/02/14(火) 19:14:30
>201
わざわざ蒸し返さなくていい。
0204デフォルトの名無しさん2006/02/14(火) 19:15:18
>>200
まさにソーッス。。(寒
どう理解したらいいのでしょう?
と言うか心構えの問題でしょうか?・・・ ツカレマシタ
0205デフォルトの名無しさん2006/02/14(火) 19:30:37
後置インクリメント演算子 > 代入演算子
お前馬鹿か?
0206デフォルトの名無しさん2006/02/14(火) 19:33:30
>>199
そういうこと
0207デフォルトの名無しさん2006/02/14(火) 19:34:45
はぁ
ttp://www.javaroad.jp/java_operator7.htm
0208デフォルトの名無しさん2006/02/14(火) 19:39:28
>>206さん
あまり深く考えないようにします。
本当にありがとうございました。
0209デフォルトの名無しさん2006/02/14(火) 19:42:43
>>205
そりゃ演算子の結合の優先順位だ。
知らない奴はこれ見て勉強して来い。帰ってくるな。スレ違いだしな。
http://www.kouno.jp/home/c_faq/c3.html
0210デフォルトの名無しさん2006/02/14(火) 19:45:23
↓おまえがな

209 デフォルトの名無しさん sage New! 2006/02/14(火) 19:42:43
>>205
そりゃ演算子の結合の優先順位だ。
知らない奴はこれ見て勉強して来い。帰ってくるな。スレ違いだしな。
http://www.kouno.jp/home/c_faq/c3.html
02111412006/02/14(火) 19:48:29
>>152
ありがとうございます。ほぼ>>147のコードのママで出来ました。別の部分にうっかりミスが
あり、昨日はうまくいかなかったのでした。
要はaddTableModelListener()の中で(何処からか送られてくる)TableModelListenerを保持しておいて
その登録されたListenerのtableChanged()を呼ぶということですね。

addTableModelListener()をオーバーライドして、この処理を書いてないため、>>145のようなやり方では駄目だったということだと思います。
(addTableModelListener()をオーバーライドしない場合は、AbstructTableModelのlistenerListフィールドをどうにかして使うのかな?)
0212デフォルトの名無しさん2006/02/14(火) 19:53:26
>>209
勉強になったぞ
02131422006/02/14(火) 19:54:19
あと勘違いで、自分ではTableModelインターフェースを直接実装してるつもりだったのですが、実はAbstructTableModelを継承してました。
つまり、おとなしくfireTableRowInserted()を使えという結論になりました。
0214デフォルトの名無しさん2006/02/14(火) 19:55:38
おとなしくDefaultTableModelをベースで作ったほうがはやかったりしてな
0215デフォルトの名無しさん2006/02/14(火) 20:00:58
>>214
そうでした。DefaultTableModelのようなaddRow()が出来ないから質問したのですが、そもそもなんでDefaultTableModel使わなかったんだろうか自分でも思い出せないorz
0216デフォルトの名無しさん2006/02/14(火) 20:12:04
>>209
だからさー、そんな基本的な薀蓄をいちいち Java のスレ来て高説ぶるの
見てて痛々しいからやめてくんない? Java では定義されてる動作だって
のも知らないの?

質問者置いてけぼりで自慢したい空気が行間からプンプン臭うよw
0217デフォルトの名無しさん2006/02/14(火) 20:13:21
スルー出来ないのはデフォルト動作です
0218デフォルトの名無しさん2006/02/14(火) 20:16:26
自分で多言語持ち出しといてバツが悪くなったらスレ違い、はねえわな。
0219デフォルトの名無しさん2006/02/14(火) 20:18:15
みんな同一人物だとでも思ってるのかな。
0220デフォルトの名無しさん2006/02/14(火) 20:21:22
それをわざわざ書き込むのは同一人物じゃなかったことにしたい人だけだな。
02211562006/02/14(火) 20:21:40
調べてみたらそれらしいのを見つけました。
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4966168
MenuItemPropertyChangeListenerのバグな気が。
0222デフォルトの名無しさん2006/02/14(火) 20:29:39
>>220
「同一人物じゃなかったことにしたい人」っていっても、不特定多数なわけだけど具体的に誰のこと?
あと、実際に「じゃなかったことにした」くない人の書き込みがないってどうしてわかるの?
0223デフォルトの名無しさん2006/02/14(火) 20:32:28
初心者以前の質問はスルーすることにしてますんで
0224デフォルトの名無しさん2006/02/14(火) 20:32:56
多数の書き込みがあるのにそれらが同一人物であると思っていそうな奴がいれば、面白いから突っ込みたくなる香具師は大勢いるんじゃないの?
0225デフォルトの名無しさん2006/02/14(火) 20:34:10
所詮年収600万以下のPGしか居ないようなスレだから仕方ない
0226デフォルトの名無しさん2006/02/14(火) 20:35:04
お前と俺しかいないよ
0227デフォルトの名無しさん2006/02/14(火) 20:35:37
何か顔真っ赤にしてる方がいらっしゃいますね。
0228デフォルトの名無しさん2006/02/14(火) 20:37:32
バレンタインに貰ったウィスキーボンボンで酔ってしまった
0229デフォルトの名無しさん2006/02/14(火) 20:38:11
お子様は今すぐ寝なさい
これが最終勧告です
0230デフォルトの名無しさん2006/02/14(火) 20:42:24
私をあまり怒らせないほうがいい
0231デフォルトの名無しさん2006/02/14(火) 20:50:09
>>221
ローカルで試そうとしたまま忘れてたがバグ?
次からちゃんとスタックトレースの内容も貼ってくれ。IOException だけじゃわからん。
02321562006/02/14(火) 21:00:26
>>231
すみません。本当に初心者なんでデバッグのときにIOExceptionを受け取ったらprintln("IOException")とかやっていたのでIOExceptionなんだとか思ってました。
今日スタックトレースをやってみてMenuItemPropertyChangeListenerに気づきました。
0233デフォルトの名無しさん2006/02/14(火) 21:03:43
種50で去年2000儲けたから働く気なんて失せる罠
会社で齷齪してる奴らは管理職を肥やすためにご苦労様です

>>376
取りあえず木あたりに今年一番の勝負賭けてみる
狙い目はM関連で
0234デフォルトの名無しさん2006/02/14(火) 21:34:33
ピンポイント誤爆キター
0235デフォルトの名無しさん2006/02/14(火) 21:36:10
>>233
2chでんなこと書いてて恥ずかしくないの?
0236デフォルトの名無しさん2006/02/14(火) 21:39:05
ハイハイ誤爆しましたよっと

>>235
ハズカチー(笑)
0237デフォルトの名無しさん2006/02/14(火) 21:43:00
【ピンポイント誤爆】
意味:誤爆に見せかけた別スレッドへの意図的な誤書き込み。主に見栄を張りたい厨房が行う。
0238デフォルトの名無しさん2006/02/14(火) 21:43:47
よかったな、3匹釣れてるぞ。
0239デフォルトの名無しさん2006/02/14(火) 21:44:42
よんひきだろ?>>238
0240デフォルトの名無しさん2006/02/14(火) 21:46:21
【ピンポイント誤爆】
意味:誤爆に見せかけた別スレッドへの意図的な誤書き込み。主に見栄を張りたい厨房が行う。
虚偽をバレナイと思い慣行する痛いアホが往々にしている。
02411562006/02/14(火) 21:54:45
ろっぴきだろ?>>239
0242デフォルトの名無しさん2006/02/14(火) 21:58:37
ほーら、七匹目がさっそく
0243デフォルトの名無しさん2006/02/14(火) 21:59:27
8ぴっきめが吠えてますがww
0244デフォルトの名無しさん2006/02/14(火) 21:59:59
九匹目もきたようです
0245デフォルトの名無しさん2006/02/14(火) 22:01:55
10って言ったら負けだかんね!
0246デフォルトの名無しさん2006/02/14(火) 22:02:41
11ぴきめっけ
0247デフォルトの名無しさん2006/02/14(火) 22:04:04
12匹目GET
0248デフォルトの名無しさん2006/02/14(火) 22:08:11
14匹めはマダかな〜
0249デフォルトの名無しさん2006/02/14(火) 22:11:19
>>248
14匹めはお前だろ
0250デフォルトの名無しさん2006/02/14(火) 22:13:01
じゃあ俺が 15 匹目ってことで良いよ
0251デフォルトの名無しさん2006/02/14(火) 22:14:12
>>250
計算できたない
0252デフォルトの名無しさん2006/02/14(火) 22:20:12
Ch2スレッド s = ch2.getプログラム板().getJava初心者質問スレ();
int count = 0;
while(s.getLength() < 1000) {
int tmp = s.getLength();
while(tmp == s.getLength());
if(s.getレス(s.getLength()).is釣られた())
count++;
}
■ このスレッドは過去ログ倉庫に格納されています