[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 03/18 08:43 / Filesize : 244 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 17:53:34 ]
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作板をご利用ください。pc10.2ch.net/hp/

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

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

前スレッド
【初心者】Java質問・相談スレッド113【大歓迎】
pc11.2ch.net/test/read.cgi/tech/1204363011/

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

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

585 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 18:44:49 ]
質問です!!!!
try{
System.out.println("文字を入力してください");
BufferedReader br = new BufferedReader(
new InputStreamReader( System.in ) );
String str = br.readLine();

System.out.println(str+"をファイルに出力します");
FileWriter fw = new FileWriter( "test.txt" );
fw.write( str, 0, str.length() );
fw.close();
}
catch( IOException e ){
System.out.println(e);
}
これで実行して文字を打ち込んでもファイルに出力されないんですがどこがおかしいですか?

586 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 18:56:53 ]
>>585です
ちゃんと出力されてました
すいませんもう二度と書き込みませんのでどうか許してください

587 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 19:10:03 ]
>>578
サンキュー
該当の RFC、ナナメ読みしただけではどこが該当してるんか分からんかったが
参考文献に定義ソースと思しきデータの場所見つけたので張っとくわ。
ftp://elsie.nci.nih.gov/pub/tzdata2008b.tar.gz

588 名前:デフォルトの名無しさん [2008/04/23(水) 21:04:20 ]
Javaアプリケーション上から別のDOSで動くアプリケーションを呼び出したいのですが
どうすればよいのでしょうか?
Robotクラスでも何とかできるのですが、DOSアプリなので表示の必要は無く、
見た目上はJavaアプリケーションしか走ってない状態がいいのですが、方法がわかりません・・・。
よろしくお願いします。

589 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 21:08:40 ]
>>588
ProcessBuilder

590 名前:デフォルトの名無しさん [2008/04/23(水) 21:15:27 ]
>>589
おおありがとうございます!でけますた!!

591 名前:588 mailto:sage [2008/04/23(水) 21:43:42 ]
>>589
あまりにも感謝の気持ちが強いのでお礼の気持ちでうp
image.i-bbs.sijex.net/bbs/mini/1208006729394o.jpg
blog67.fc2.com/r/rakuen2/file/20080328_009.jpg
g003.garon.jp/gdb/Go/yK/E4/Gb/Jf/Uf/B3/LT/Wp/Y5/x8/F1C6.jpg


592 名前:589 mailto:sage [2008/04/23(水) 21:45:04 ]
なぜ、女なんだ

593 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 21:47:00 ]
グロ貼んな



594 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 22:39:15 ]
うpじゃねーし

595 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 23:35:55 ]
近所の猫も飼い主に捕れたてのネズミをプレゼントしようとしてたな

596 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 23:45:17 ]
>>540ですけど下の様なエラーが出ます。

javax.servlet.ServletException: Processing of multipart/form-data request failed. Stream ended unexpectedly
at org.apache.struts.upload.CommonsMultipartRequestHandler.handleRequest(CommonsMultipartRequestHandler.java:194)
at org.apache.struts.util.RequestUtils.populate(RequestUtils.java:405)

commons-fileupload-1.1.1.jarだったのをcommons-fileupload-1.2.1.jarに変更してみてからは上のも含め下の様なエラーが出ることもありました。

javax.servlet.ServletException: Header section has more than 10240 bytes (maybe it is not properly terminated)
at org.apache.struts.upload.CommonsMultipartRequestHandler.handleRequest(CommonsMultipartRequestHandler.java:194)
at org.apache.struts.util.RequestUtils.populate(RequestUtils.java:405)


javax.servlet.ServletException: Stream ended unexpectedly
at org.apache.struts.upload.CommonsMultipartRequestHandler.handleRequest(CommonsMultipartRequestHandler.java:194)
at org.apache.struts.util.RequestUtils.populate(RequestUtils.java:405)

この状況を改善するにはどうしたらいいでしょうか・・・

597 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 00:08:02 ]
>>586
絶対に許さない。絶対にだ。

598 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 03:40:32 ]
>>582-584
その通り。POP3では既読/未読の区別はない。


599 名前:デフォルトの名無しさん [2008/04/24(木) 11:10:18 ]
wicket.ApplicationPagesがimportできないのは…なぜ!?

ちなみにwicketのversionは1.2.7です。
参考サイトはversion1.1.1を使ってるから名称が変わってるのかな?;
誰か教えてください><

600 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 11:13:56 ]
バージョンのせいにしたいならバージョン入れなおして
試せよ

601 名前:デフォルトの名無しさん [2008/04/24(木) 11:20:11 ]
だってversion1.1.1が見つからなかったんだもん〜♪

602 名前:デフォルトの名無しさん [2008/04/24(木) 11:39:25 ]
javaからMySQLに接続し、データベースを操作するプログラムを作っています。

System.out.println("商品コードを入力してください。(5文字)");
System.out.print("商品コード:");
String str=br.readLine();

このstrの頭が全角スペースや半角スペース、未入力のときに例外処理(「未入力です」と出力など・・)を行う記述を教えてください。


603 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 11:42:46 ]
if (str.startsWith(" ") || str.startsWith(" ") || str.length() == 0) { System.out.println("未入力です"); }



604 名前:デフォルトの名無しさん [2008/04/24(木) 11:48:44 ]
>>603
できました!
ありがとうございます!!

605 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 12:47:55 ]
>>603
startsWithが先頭。
ということは最後の文字を弾くには・・?

606 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 13:48:14 ]
endsWith

607 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 10:51:20 ]
>>602です
strにコードを入力させ、そのコードの情報を出力するプログラムなのですが


String str=br.readLine();
String sql = "select * from kadai where コード='"+str+"'";
ps = con.prepareStatement(sql);
ResultSet rs = ps.executeQuery();

while(rs10.next()){

// コードデータを取得
String a = rs.getString("コード");
String b = rs.getString("名前");
String c = rs.getString("電話番号");

// データの表示
System.out.println("コード :"+a);
System.out.println("名前  :"+b );
System.out.println("電話番号:"+c );
}


ここで入力したコードに該当するコードがなかった場合、「コードは存在しません」と出力させる記述をお教えください。
ExcuteUpdateならintにして0か1で返ってきたのですがExcuteQueryだとできなくて・・

608 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 10:53:52 ]
jar実行ファイルで起動するアプリを作ってるんだけど、わからない事があるので質問します。

antでコンパイルとjar作成をしてるんだけど、jarの中にLogback用設定ファイルを置きたい。

設定ファイルはクラスパスが通ってる場所に置けばいいらしいが、どこに置けばいいですか?
あるいは、MANIFEST.MFのクラスパス属性にこう書けば良いよってのがあれば教えてください。

609 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 11:15:25 ]
>>607
先にResultSetの件数を調べて、0件なら該当無しとすればいいかと
www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=26815&forum=12&5

課題乙w

610 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 11:17:34 ]
>>607
正しいやり方というか、標準的なやり方ではないかもしれんが

int count=0;
while(rs10.next()){
    // 処理...
     count++;
}
if(count<1) {
    System.out.println("コードは存在しません");
}

とでもしたら?

611 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 11:30:15 ]
>>610
できた!
あ〜そんな手が・・

612 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 11:36:37 ]
>>608
普通は出来ないような気がするけど、FatJarとかなら出来るんでないかな?

613 名前:608 mailto:sage [2008/04/25(金) 11:44:06 ]
>>612
なるほど、もしかしたら設定ファイルじゃなくて、jarに突っ込んだLogbackのjarが見れてないのかも知れません><

FatJar試してみます!ありがとうございました。



614 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 11:51:05 ]
実際のところ「Write Once, Run Everywhere」ってホントなのですか?
環境依存とかないのですか?

615 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 12:00:08 ]
PC 程度以上ならどれでも動くよう作りこむことは出来る。
ただし実行環境や DB なんかのミドルウェア依存のコード書けば依存するに決まっている。
動かねぇと言ってる奴の大概はテメェのバグとどっからが環境依存かを分かってない無知。

616 名前:608 mailto:sage [2008/04/25(金) 12:00:53 ]
>>612
早速試してみたところ、いともあっさりと出来ました!
改めてありがとうございます!

617 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 12:13:03 ]
>>614
各JVMでの、微妙な挙動の違いがトラブルの元になったりする
だから、どうしてもプラットフォームごとに動作試験をすることが欠かせない場合もある

そのことを指して(場合によっては皮肉を込めて)
Write Once, Test Anywhere
と言われることもある

618 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 13:08:49 ]
>>615
>>617
なるほど。参考になりました。

619 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 15:36:32 ]
テキストファイルを読み出すときに、指定した文字コードで化ける文字が含まれてたら
例外にしたいんだけどどうすればええんじゃ。

620 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 21:07:17 ]
>>619
java.nio.charset.CharsetDecoder#onUnmappableCharacter(CodingErrorAction)
java.nio.charset.CharsetDecoder#onMalformedInput(CodingErrorAction)

621 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 23:30:29 ]
>>619
可能です。
以上。
はい次の方。

622 名前:デフォルトの名無しさん [2008/04/25(金) 23:49:00 ]
SDKのインストールに関して質問させてください

SDKのインストールの途中、以下のエラーメッセージが出てしまいました
「このインストールに必要なキャビネット ファイル
'st160000.cab'は壊れているため使用できません。
ネットワークエラーまたはCD-ROMからの読み取りエラーが発生したか、
このパッケージに問題がある可能性があります」

以下のページ(英語)で同じ症状が出てるようなのですが、よくわかりませんでした…
forums.java.net/jive/thread.jspa?messageID=254470

行き詰まってしまいました。何かヒントを教えていただきたいです
よろしくお願いいたします

623 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 00:39:54 ]
同じJNLPファイルをwww.java.com/ja/でダウンロードした実行環境で実行した結果
二台のPC中、片方だけ「could not create the java virtual machine」というエラーが出るのですが

何度か再インストールを試してみたり開発環境をつっこんでみたり、ぐぐって見たりもしたのですが
大体再インストールで直っている例が多く、具体的に何か弄ったり手動で消すような項目も見当たらず
行き詰っています。
何かしら糸口でも構わないので教えていただけないでしょうか。



624 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 00:42:15 ]
>>622
可能ならブラウザのキャッシュを消してから、
ダウンロードし直し。

625 名前:デフォルトの名無しさん [2008/04/26(土) 01:28:14 ]
eclipseの参照検索のソース見たいんですが、ソースzip内のどこら辺か知ってる人いたら教えてください
出来れば主要クラス、仕組がざっくりと分かるサイトなんかも・・・

626 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 03:09:02 ]
Javaで一般に使ってスピードが速い変数はどれですか?
intは整数のみだし doubleは64bitで大きいし
floatが適していますかね?
でもあまりfloat使ってるの見かけないような。

627 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 04:41:46 ]
そんなの気にしない

628 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 05:29:27 ]
>>626
実数型のfloatよりも整数型のint方が圧倒的に速い。

しかし、現実には>>627の言うとおり。
そんなのを気にするほど神経を使うのなら、
そもそもJavaを選択することが間違っていると言える。
Cかアセンブラでも使っておけ。

629 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 10:40:13 ]
>>626
まず原則としては>>627>>628の言う通り。
あと、一般的には、CPUで直接計算可能なdoubleの方がfloatより速い。
(もちろん例外はある)

630 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 10:52:03 ]
Intel CPU とか、小数は 80-bit で double より大きいだろ・・・。

631 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 10:56:35 ]
>>629
float がCPUで直接計算できないとでも?

632 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 11:04:37 ]
>>626
言語としてのJavaからはint演算とfloat演算でどっちが速いとか遅いとかは一切言えない。

本番の実行環境と実際に使用するコード(マイクロベンチではなく)で速度比較するのが一番手っ取り早い。
詳しく知りたいならJITコンパイラのコード読んでみるとか、
そこまで元気がないなら、前スレ906の
> デバッグ版のJDKだと -XX:+PrintOptoAssembly オプション付きで起動すれば
> 出力できるらしいって d.hatena.ne.jp/kkawa/20080330 に書いてある。
でJIT後のアセンブリコード比較してみるとか。

633 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 11:12:52 ]
みなさんいろいろなご意見ありがとう。
VBではintよりdoubleが一番速いとききました(32bitだから?)。

Cへの流用も考えているので
整数ならint、実数ならdoubleを使うことにします。
Cではfloatよりdoubleが速いんですよね。



634 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 11:33:12 ]
VBはlongが速いだろ

635 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 11:33:48 ]
> Cではfloatよりdoubleが速いんですよね。
そんなんCPUの世代が変わっただけで逆転したり、
コンパイラの最適化が変わっただけで逆転したりするよ。

636 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 12:55:18 ]
使用型での2倍以下のの速度差を気にしてる初心者は
得てして100倍遅いアルゴリズムをどうどう使ったりしてるから注意

637 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 16:49:12 ]
>>623
iTunes classpath

638 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 18:21:35 ]
JRE5と6を両方インストールして
firefoxがJavaアプレットを実行するのは5
・・・という設定にするにはどうしたらいいですか

<JRE5>/bin/javacpl.exe でfirefoxのアプレットタグサポートをONにし
<JRE6>/bin/javacpl.exe ではOFFにする、
という方法を試みましたが、6で実行されてしまうようです
(OSはWindows Vista)

639 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 18:28:03 ]
>>638
Javaコントロールパネル->Java->Javaアプレットのランタイム設定でできない?

640 名前:638 mailto:sage [2008/04/26(土) 19:03:35 ]
>>639
その設定項目はパラメータの設定しかできないと思ってたんですが
有効/無効や優先順位も設定できたんですか?
もしそうであれば、設定方法を教えていただきたいです

それとも、パラメータでそういう設定ができるとか・・・?

641 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 19:46:02 ]
複数のJREがインストールされてたらチェックボックスでどれかえらべるだろ。

642 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 19:56:41 ]
32bit環境では例えばエクセルのVBAなどは常にIntegerよりはLongを使ったほうがいいってこと?

643 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 20:31:11 ]
>>642
VBAのスレで聞け。相手してくれる暇人がいるかどうかは知らんが。



644 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 02:19:56 ]
>>642
聞くな。測定しろ。

645 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 02:35:53 ]
だーから分かんねーならレスするなってんだよ

646 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 11:25:47 ]
お前が答えろ

647 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 16:13:55 ]
double の 小数点下2桁以下を切り捨てて
String に変換するにはどうすれば良いですか?

648 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 16:16:23 ]
NumberFormat

649 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 19:58:03 ]
そういえば昔初心者禁止を銘打った上級者スレがあった希ガス

650 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 20:00:44 ]
>>46
> 昔々、時は J2EE やら C#/.NET の登場やらでム板も大変盛り上がっていた頃のお話。
> それまで質問者の多数を占めていた 「自分で分析してキーワードで答えにたどり着ける」 層に
> 代わって 「動きませんできません」 系のニューエイジ層が増え始めた (ようは今の質問レベルに落ちた)。
> 業を煮やした誰かが 「初心者無視スレ」 を立ち上げたが程なく過疎。以後本スレの避難所として
> 細々と 1〜2 年 (くらいだったか?) 続いて終幕。ちょうど死滅スレ乱立時代の頃のお話。


やばい。懐かしすぎる。死滅スレ乱立懐かしい。DocletやEJBスレもあって懐かしかったあの頃w
あの頃は凄かった。あの頃の彼らをたまに見かけるのが笑える。
いまだに同じ文体でマ板のJava系スレでJava叩いて.NET奨めるレスを見かけることがあるw

651 名前:638 mailto:sage [2008/04/28(月) 00:10:38 ]
>>641
ウィンドウ内のどこにもチェックボックスが見当たりません・・・
解決の糸口が見えてきたような気がするのでいろいろ試してみます
ありがとうございます

652 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 04:34:29 ]
>>648
ありがとうございます

653 名前:623 mailto:sage [2008/04/28(月) 14:55:15 ]
色々とアンインストールしたりしながら試してみたところ
カスペルスキーをアンインストールしたら
could not create the java virtual machineが出なくなりました。
保護の一時停止しても駄目でアンインストールすると出なくなるんですが
もうセキ板行ったほうがいい気もするんですが何かご存知の方居ましたら教えてください



654 名前:デフォルトの名無しさん [2008/04/28(月) 17:33:30 ]
中小企業勤務の者なのですが、ここで質問をさせてください。
会社の簡単な経理システムをJavaで組もうと思っているのですが、
実際にアプリケーションとして使う場合、どのような形で配布をすれば良いのでしょうか?

会社のシステムは、

WindowsXP機 2台
Windows2003 Server機 1台
WindowsVista機 4台
MacOS X Tiger機 2台
MacOS X Leopard機 3台

です。それぞれで使えるようにとJavaで組もうと思っています。

655 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 17:36:29 ]
ダブルクリッカブルjarで十分

656 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 17:37:22 ]
アプレット

657 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 17:43:44 ]
JavaWebStart

658 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 17:44:42 ]
レスありがとうございます。
とりあえず組んでみて、jarにするかアプレットにするかアンケートをとってみます。

659 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 17:52:32 ]
JavaでのGUI開発にはNetBeansだな

660 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 18:10:04 ]
NetBeans使いってなんでEclipseに敵対意識持ってるの?

661 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 18:18:28 ]
>>658
鯖使えるならアプレットよりJavaWebStartの方が良いよ。
てかアプレットはやめときな。

662 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 18:22:20 ]
>>658
jar→(利点)普通のアプリとして組める。(欠点)配布やバージョンアップが面倒。
アプレット→(利点)配布やバージョンアップが楽。(欠点)アプレット特有の制限(ファイルアクセスとか)が付く。
JavaWebStart→(利点)普通のアプリとして組める。配布やバージョンアップが楽。(欠点)情報が少な過ぎ。

663 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 18:28:19 ]
>>660
GUIアプリを作るならNetBeansの方が便利だからじゃ?



664 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 18:46:16 ]
>(欠点)情報が少な過ぎ。
JDKのjavadocにあるドキュメントで十分だと思うんだけど、他になんかいる?

665 名前:デフォルトの名無しさん [2008/04/28(月) 18:52:57 ]
654ですが、再び質問です。

Javaのアプリケーションで入力した内容を、ワード形式、エクセル形式で出力をし、その中身を
www.legal.co.jp/products/mamoru/images/11.gif このような感じにする事は可能なのでしょうか?

666 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 18:54:51 ]
WordprocessingMLとSpreedsheetMLを利用すればおk。

667 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 18:55:10 ]
>>665
ブラクラ

668 名前:デフォルトの名無しさん [2008/04/28(月) 18:59:02 ]
>>666
ありがとうございます。調べてみます。

669 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 19:02:23 ]
Apache POIでもできるね

670 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 19:45:06 ]
Open Office

671 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 23:36:46 ]
GUIのプログラム作ってて
別クラスにリスナー登録して、イベントを処理させてるんだけど
ついついメインのウィンドウやらコンポーネントやらを
やたらとstatic化してしまうんだけど、なんかすっきりしない。。
GUIのデザパタとか、設計のしかたってみんなどうしてるの?


672 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 23:43:27 ]
それぞれが独立して使えるように作る

673 名前:622 mailto:sage [2008/04/28(月) 23:51:59 ]
>>624
ブラウザのキャッシュを消してからダウンロードし直してみましたが
PCの調子自体が悪くうまくいきませんでした
ですが別のPCを借りられたので、そちらにインストールできました
これから少しずつ勉強します
どうもありがとうございました



674 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 01:10:23 ]
>>671
メインは、イベントソースとなる子を作る際に自分自身への参照を渡しておく。
new Clild(this);

コンポーネントは、それを受け取ってリスナに渡し、このリスナを登録する。
public Child(Parent parent){
Listner listner = new Listner(parent)
addListner(listner);
}

自分はいつもこんな感じだけど、もっと良い方法があるような気がする。

675 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 10:44:42 ]
子は親に依存しないように作るのが理想

676 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 11:22:36 ]
>>674
this(親)そのものを渡すのではなく、Observerとして渡す
無理に親からObserverを引き剥がしても、無駄に複雑になるだけだから親の実装インターフェイスとしてObserverを定義するのが一般的。
そうすることで、子の親への依存関係が薄くなる。

677 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 11:48:18 ]
Buttonが特定の親からしか使えなかったらおかしいでしょ
それと一緒

678 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 12:09:17 ]
来月からPGとして入社予定で一からjavaを勉強しているものです。
とりあえず基礎の基礎からはじめてみたのですが、
文章の出力のところでわからないことがあるので質問させていただきます。

class Char2 {
public static void main(String[] args) {
char a = 'み';
char b = 'ん';
char c = 'な';
String d = "のピースイッツオーライ!";
int e = 3;

System.out.println(a);
System.out.println(a + b + c + d);
System.out.print(a + b + c + e + "つ食べる。");

}
}

こういうプログラムを組んだのですが、
出力結果が、

c:\java>java Char2

37244のピースイッツオーライ!
37247つ食べる。
c:\java>

こうなってしまいます。
なぜcharで宣言した変数が結合させると数値になってしまうのでしょうか?
よろしくお願いします。


679 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 12:14:27 ]
37244と37247の差にわろたw

680 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 12:43:49 ]
吹いたw
charじゃなくてStringを使えばいい
'な'じゃなくて"な"

681 名前:674 mailto:sage [2008/04/29(火) 12:45:37 ]
>>676
参考にしますアリガト

682 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 12:47:55 ]
charは文字コードを表せる範囲の「整数」を格納する型です。
(現実には1文字1charの関係は破綻してるのだけど)

整数としては
a = 12415
b = 12435
c = 12394
という量になります。

文字列なら、1文字であっても
String a = "み";
のように文字列で扱う方が自然なことが多いです。

System.out.printlnは
System.out.println(char)とSystem.out.println(String)(他にも)があって
前者は受け取ったcharの表す文字をプリントするので、aだけを渡した
ものは文字として表示できてますが、それ以外は a + b ...などが整数
の加算として行われてしまうので、期待通りになってないわけです。


683 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 12:48:57 ]
>677
あるボタンは特定の親に依存するのは別にありかと思う。
だが、親のある機能を実行するためのボタン(やメニュー)が複数ある事はよくある。
なので間接的に親を参照するってのが妥当。



684 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 12:52:05 ]
a + b + c + dはこうなる
int tmp = 'み'; // tmp == 12415
tmp += 'ん'; // tmp == 24850
tmp += 'な'; // tmp == 37244
String tmp2 = new StringBuilder().append(tmp).append("のピースイッツおーらい!").toString();
System.out.println(tmp2);
こうすればコンパイラを騙せる
"" + a + b + c + d

685 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 12:54:33 ]
>678
ポイントはprintメソッドの引数が色々(int char String)あって、演算子(+)の優先順位とかから選択されているってこと。
cahrを+でつなげると整数として加算されるけど、Stringと+でつなげた場合は文字列として結合される。

基本的には考えなければどの型になるか解らないような書き方をする方がよくないので、680が正解。
でも、学習の段階ではある程度の仕組みを覚えなければならないのも事実やね。

結論だけ言えば、
System.out.println(a); は aをcharとして認識。
System.out.println(a + b + c + d); は加算した整数として認識。
直、(char)(a + b + c + d) だと話も変わる
System.out.print(a + b + c + e + "つ食べる。");
これは、(a + b + c + e) + "つ食べる。" と考える。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<244KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef