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


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

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



1 名前:Javaが初心者 mailto:sage [2008/05/12(月) 03:05:27 ]
プログラミング言語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質問・相談スレッド114【大歓迎】
pc11.2ch.net/test/read.cgi/tech/1207385614/
次スレは>>990あたりで。

過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
www.wikiroom.com/java/

293 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 12:35:12 ]
すみません、質問お願いします。
今、JAVAの勉強でサーバとクライアントのプログラムを作っていて(クライアントからコマンドを送り、コマンドに応じてサーバから答えを返すプログラム)、
その中でサーバーから送られた文字列をクライアント側で表示する部分がどうしてもうまくいかず、原因がわからず困っています。
下記がおおまかなコードです(はしょりまくってますが)
・サーバ側
ServerSocket ss;
Socket s;
PrintWriter out;
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
out = new PrintWriter(s.getOutputStream(),true);
for(;;){
<ここにコマンドを受け取ってそれに応じた文字列を返すコードが入ります>
(例) out.println("aaaa\nbbbb\ncccc");
}


294 名前:デフォルトの名無しさん [2008/05/20(火) 12:35:33 ]
javaアプリのmainの変わりにjavaappletのinitにしても
appleが動きませんでした
どうしたら動くのか教えてください

295 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 12:35:41 ]

・クライアント側
Socket s;
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
〜〜〜〜〜〜〜〜〜〜〜〜〜
for(;;){
<ここにコマンドを入力してサーバへ送るコードが入ります>
String message;
while((message = in.readLine()) != null){
System.out.println(message);
}
}

クライアント側の、while文がうまくいかないみたいなんです。どうもnullになったら抜けるというのがだめみたいで、
例えば送られてくる文字列を2行にしておいてwhile文の条件を2回繰り返すというようにするときちんと文字列が2行出るのですが、
それを任意の行数にしたくて「 != null 」という条件にすると全部の行を表示した後になぜかクライアントが落ちてしまうのです。
質問がわかりにくかったらごめんなさい、何かわかる方がいましたら教えていただけないでしょうか。




296 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 12:41:08 ]
>>295
落ちてしまうって何か例外でも出てるの?
それ捕まえてスタックトレース表示してみれば?

297 名前:295 mailto:sage [2008/05/20(火) 12:51:01 ]
>>296
コマンドプロンプトでやってるんですが、落ちるっていうか全部の行を表示した後に何も表示されなくなるんです。
適当にキーを押しても一切反応せず、でもCtl-Cで終了すると何も表示されなくなったあとに入力したキーを実行しようとした形跡がバーッと表示されるんです。
・・・すみません、わかりにくいですね。こんな感じです。

C:\>java aaa
command : bbb
>>"ccc"
>>"ddd"

ここで本来なら再度command : と出るはずなのですがそれが出ず、ここで適当に「a」とか入力しても何も起こらず、
Ctl-Cを押すと

C:\>a
'a'は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチファイルとして認識されていません。

c:\>

となるんです。








298 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 12:55:12 ]
>>297
readLineで次のデータが送られてくるのをずっと待ってるだけでは?
サーバ側でSocketをcloseするかshutdownOutputすれば通信終了(EOF)になるのでreadLineがnullを返すはず

299 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 13:02:33 ]
ちなみに
while ((message = in.readLine()) != null)
でループするということはストリームが閉じられるまで繰り返すとい
うことだから、このwhileを抜けるともうinから読むことはできない。

コマンド-レスポンスを繰り返したいなら、このwhileでメッセージの終
了判定はできないよ。



300 名前:デフォルトの名無しさん [2008/05/20(火) 13:13:07 ]
javaアプリのmainの変わりにjavaappletのinitにしても
appleが動きませんでした
どうしたら動くのか教えてください

301 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 13:16:14 ]
javaアプリのmainの変わりにjavaappletのinitにしても
りんごが動くわけありません
りんごは手で持って動かしてください



302 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 13:16:53 ]
>>300
具体的に何をどう変更したのか書きなさい。
リンゴが動かないとは何なのか。


303 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 13:18:58 ]
www.hellohiro.com/socket.htm

304 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 13:19:26 ]
万有引力が働かない異世界だからです

305 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 13:20:37 ]
javaアプリのmainの変わりにjavaappletのinitにしても
appletが動きませんでした
どうしたら動くのか教えてください

306 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 13:27:07 ]
>>305
アプリとアプレットは別物なので、mainをinitに変えただけで動くわけはない
アプレットとして動くように作られていないのなら、アプレットとして動くように最初から作り直す必要があるかもしれない

307 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 13:29:04 ]
>>300
アプレットをアプリケーションとして動作させたいってことなら
initはあくまでも初期化処理のみ
メインの動作はstartで行うようにオーバーライドされていることが多いので
インスタンスの生成→コンテナに追加→initによる初期化→コンテナの可視化→startで開始
の順で行う

308 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 13:32:50 ]
ああ逆か
mainをinitに名前を変えてアプレットとして動作させようとしているのか
無茶な

309 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 16:05:00 ]
おまえらそんな餌に食いつくなよ

310 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 18:24:38 ]
アプリもアプレットも分からん人間には食いつきようもない餌だもんな。

311 名前:デフォルトの名無しさん [2008/05/20(火) 19:29:22 ]
#
# An unexpected error has been detected by Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x77fcd989, pid=1392, tid=2524
#
# Java VM: Java HotSpot(TM) Client VM (1.6.0-b105 mixed mode)
# Problematic frame:
# C [ntdll.dll+0x4d989]
#
# If you would like to submit a bug report, please visit:
# java.sun.com/webapps/bugreport/crash.jsp
#

何これ



312 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 19:31:30 ]
JVMのクラッシュ

313 名前:デフォルトの名無しさん [2008/05/20(火) 19:38:45 ]
設計根本的に変えたほうがいいのかしら

314 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 20:01:41 ]
マンガlovemakeの画像ってどうしたらコピーできますか?

315 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 20:49:29 ]
Javaのデスクトップアプリでデータをローカルで持ちたいとき、
Windowsアプリで言うリソースみたいなかたちで埋め込むにはどうしたらいいの?


316 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 20:59:03 ]
>>315
リソースファイルで埋め込めばいいよ

317 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:26:46 ]
>>293
>質問お願いします。
いや、質問してるのは君だから。
「回答お願いします」か「質問させて下さい」だろ。

318 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:58:43 ]
main(String[] args){
try{
HashMap<String , String> hashMap = new HashMap<String , String>();
putData(hashMap);
System.out.println("HashMap(bb) : " + hashMap.get("bb"));
System.out.println("HashMap : " + hashMap);
}
catch(Exception e){
e.printStackTrace();
}
static void putData(Map<String , String>map){
map.put("da" , "Five");
map.put("db" , "Four");
map.put("bb" , "Three");
map.put("bc" , "Two");
map.put("aa" , "One");
}
}
これの実行結果が
HashMap(bb) :Three
HashMap :{db=Four, da=Five, aa=One, bb=Three,bc=Two}
こんな感じになるんですが、これと同じように出力されるプログラムをHashSetで書くことはできますか?
もちろん、HashMapなので出力した際の順序まで一緒には出来ないのはいいんdねすが

319 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 23:12:25 ]
>318
DataEntry(String, String) というコンストラクタを持つクラスでも作って頑張ってください。

320 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 02:07:02 ]
HashSet クラスには get だの put だのいうメソッドはないから無理。

321 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 07:09:50 ]
HP-UXで稼動するWebシステムの保守を担当することになり
Java未経験ながらいきなり画面の追加をやらされることになりました。
(Webサーバ:SunOneでアプリサーバ:WebOTX、DB:Oracleです)

Javaは過去に勉強したこともありJavaDocなど使えば、何とかソースは読めるのですが、
ソースを格納するディレクトリの構成がイマイチよくわかりません。
なぜこのファイルはここのディレクトリに入れるのか?
とか、
このディレクトリに入れなければならないってのはどこで定義づけられているの?
というようなことです。

ソースの読み方のような入門書じゃなくて、
Webサーバのディレクトリ構成などJavaでのサーバ構築についての
書籍やアドバイスがあれば教えていただきたく。
「UNIXでJava使ってサーバ立てるならこれは基本書だろ!」
というようなものがあれば、ぜひ読んでみたいのですが。



322 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 07:34:32 ]
そんなんプロジェクト毎のルールだろ?
仕様書嫁よ。

323 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 09:51:11 ]
WEB-INFとかマニフェストファイルのことじゃないの?
いままでの開発をどうやってたのか知らないけど、
最近のIDEとかだと配備までやってくれるよ

324 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 09:56:55 ]
アプリケーションサーバのマニュアルを読め、で済む話。


325 名前:デフォルトの名無しさん [2008/05/21(水) 14:15:58 ]
特定の文字列が、作成可能な『ファイル』を示しているかどうかを判定するにはどうすればいいでしょう?
……いえ、以下のようなコードを書いてみたんですが、「a:\backup\」がtrueになるんですよ。

public boolean check(String fileName){
File tempFile = new File(fileName);
try{
tempFile.createNewFile();
if(tempFile.exists() == false || tempFile.isFile() == false){
return false;
}
tempFile.delete();
return true;
}catch (IOException e){
return false;
}
}

EclipseのデバッガでcreateNewFileまでで止めてみると、tempFileの中身は「a:\backup」として表示されています。
どうやら最後のパス区切りは無視されてるようなふいんき(……素でtypoした(汗))です。
これは「文字列の最後の一文字がパス区切りではないこと」で判定するしかないのかな?

326 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 15:22:28 ]
>特定の文字列が、作成可能な『ファイル』を示しているかどうか
イミフ。ファイル名の事?
OS依存。
それとも任意のファイル名でファイルが作成できるかって事?
OS依存。


327 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 16:49:11 ]
>>325
javadoc で createNewFile を確認しましたか?(特に戻り値を)
File は単純ではないクラスですし、扱い方自体を確認した方が良いと思います。

328 名前:  mailto:sage [2008/05/21(水) 18:43:41 ]
パソコン買おうかと思ってるんだけど、QuadのCPU買ってマルチスレッドのプログラミングをJavaで組んだら
WindowsXPでもマルチコアに対応したプログラムになってくれるんですか?

329 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 18:50:29 ]
javaのマルチCPU(コア)対応って具体的にはどこら辺まで対応してるんだろうね。

330 名前:325 mailto:sage [2008/05/21(水) 20:25:07 ]
>>326
失礼しました。つまり「a:\backup\」と指定されたら「backup\なんて名前のファイルは作れない。\はファイル名には使えないし、ディレクトリ名じゃなくファイル名を指定しろ」というチェックをしたかったのですよ。
>>325のコードにすれば、ファイル名に使える文字だけが含まれているかと「実際に書き込めるか」が一緒にチェックできると思ったのですが。
最後の「\」を無視して「a:\backup」と「a:\backup\」を等価に扱ってしまうのは、Javaの(WindowsのOS依存の部分の)仕様なのでしょうか?

>>327
はい、trueなら作成成功、falseが帰ってきたら既に存在する、ということですよね?
既に存在する場合の処理はもう少し詰める必要があると思いますが(canWriteを使えばいいかな?)、まずはファイル名の問題をお聞きしようと思い、あのようなコードにした次第です。
ステップ実行をさせると(>>325で書いたとおり)createNewFileの後にa:\backupが作られてしまっているのです。
これは(デバッガの表示どおり) new Fileした時点で最後の「\」を無視して「a:\backup」としてFileのインスタンスが作られてしまっている、ということではないのでしょうか?
ちなみに、他の不正な文字(backup*など)を指定すると、意図したとおりにIOExceptionで落ちるようです。

331 名前:325 mailto:sage [2008/05/21(水) 20:31:51 ]
……失礼。
書き込んだ直後に気が付いたのですが、Fileの仕組みだと、「a:\backup」と「a:\backup\」を等価に扱ってもかまわないのですね。
Fileが扱うのはあくまでパスであり、(まだ存在しない場合)そのパスがディレクトリを示すのかファイルを示すのかは、mkDirするかcreateFileするかによって(後で)分かれる。
よって両者は区別する必要は無いので、「a:\backup」と「a:\backup\」は等価に扱ってよい、という理解でかまわないでしょうか?



332 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 22:20:02 ]
>>328
ちゃんとスレッドを使えばそうなる

333 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 22:24:12 ]
Point型に文字を四つ格納したいんだけどどうすればいいの?

334 名前:デフォルトの名無しさん [2008/05/21(水) 22:49:35 ]
質問です。
JScrollPane を使って、エクセルのように動的にサイズを変えるようにしたいんですけど
どうしたらいいでしょう?

JScrollPane のスクロールバーが端の状態で左右のボタンを押したら
自動でサイズが拡張する感じです。

JScrollPane つかうと無理なんでしょうか?

335 名前:334 [2008/05/21(水) 23:10:21 ]
JScrollPane から JScrollBar とってこれるんですね。
でも、JScrollBar のノブが端にあるときにボタンを押しても
AdjustmentEvent は投げないみたいなんで、だめそうですね・・・

336 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 23:26:21 ]
>>328
なる。

337 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 01:16:05 ]
すみませんアノテーションについての質問です

クラスとかフィールドとかメソッドにつけたアノテーションは
リフレクション使って取り出すのはわかったのですが
ローカル変数につけたアノテーションの取得方法がわかりません
ご存知の方お教えください、お願いします


338 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 01:34:19 ]
無理っす

339 名前:デフォルトの名無しさん [2008/05/22(木) 01:51:31 ]
javaからMySQLに接続し、任意のテーブルの列数を取得したいのですが
PHPみたいにmysql_num_rows()みたいなメソッドはありますか?
javadocのjava.sql.*の項を参照したのですが見つからなかったので。

340 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 01:54:40 ]
select countすれば?


341 名前:339 [2008/05/22(木) 02:01:19 ]
>>340
javaでってことに考え過ぎてそっちの方をすっかり考えてませんでした
試してみます。ありがとうございました。



342 名前:  mailto:sage [2008/05/22(木) 04:41:06 ]
>>332 >>336
どうもありがとう。


343 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 08:41:01 ]

ttp://mainichi.jp/enta/geinou/graph/200805/21/?inb=yt
ネット証券会社が主催するFX(外国為替証拠金)取引コンテストの発表会が21日、都内で行われた。
コンテストに特別参加するグラビアアイドルの滝沢乃南さん、山本彩乃さん、折原みかさん、山口愛実さん、佐々木梨絵さん
の5人が顔をそろえ、シストレに挑戦する意気込みなどを語った。
同コンテストは、自分で作成したトレードソフトの機能を評価する「シストレソフト部門」と、
FX初心者でも安心の仮想マネーを使った取引を体験できる「トレード部門」で賞金総額2000万円を争う。
シストレ優秀ソフトは、最高2000万円までの範囲内で買い取りの可能性もあるという。登録受付は22日から。
仮想取引は6月2日〜09年4月30日までとなっている。



▼トレード部門
初期資産500万円で、デモ取引のトレード収益を競っていただきます。
https://www.click-sec.com/corp/guide/demo/
ttp://www.yomiuri.co.jp/komachi/news/mixnews/20080521ok02.htm


▼賞金総額
■社長特別賞(シストレソフト買取価格) 10,000,000円
●シストレソフト部門賞 1位300万円 2位100万円 3位50万円
●トレード部門賞 1位300万円 2位100万円 3位50万円
●前期MVP賞 50万円
●後期MVP賞 50万円

344 名前:デフォルトの名無しさん [2008/05/22(木) 14:52:37 ]
おい、おまえら。俺様が、Java入門者向けに環境変数自動設定ツール作ってやったんだけど、
Vectorにうpしようか迷ってる。まんどくさいんだけど、うぷしたらダウソする人いるかな?

345 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 15:01:25 ]
入門者に自動で設定させんな

346 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 16:34:46 ]
ていうか作らなくても既にそういうバッチがあった気がする。

347 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 16:53:15 ]
っていうかNetBeansとか入れれば環境変数なんて
設定しなくていいし

348 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 20:48:59 ]
JSPでDecimalFormatを使うために下のような指定を行い、
<%@ page import="java.lang.Object.*" %>

下記を書いたのですが、下のようなエラーになってしまいます。

DecimalFormat form = new DecimalFormat();
form.applyPattern("#,###");
int i1 = 20000;
out.println(form.format(i1));


DecimalFormat cannot be resolved to a type

どなたか解決策を教えていただけないでしょうか。
もしかしてインポートするクラスが間違ってたりするのでしょうか?

349 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 20:51:33 ]
お騒がせしました、、import java.text.*;で行けましたorz

350 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 22:34:10 ]
java のプロファイラで、「今はこれを使うのがベスト」ってなんだろう。
お勧めがあれば教えてください。

自分がググって見つけたこと
・Eclipse プロファイラプラグインは、開発が止まっていて Eclipse 3.3 に対応していないと聞いた。
・Eclipse TPTP のプロファイラは、重すぎてうんこ というのを ぐぐると見かける。
・NetBeans 6.1 のプロファイラがいいらしい。

IDE 統合型でない場合は、HPjmeter があるが(これはつかったことがある)、
これくらいでしょうか。


351 名前:デフォルトの名無しさん [2008/05/23(金) 00:16:20 ]
インターフェースを実装したクラスのメソッドに継承もとのコメントを転写したいのですが
何か簡単な方法はないでしょうか?



352 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 00:52:36 ]
Ctrl+C V

353 名前:デフォルトの名無しさん [2008/05/23(金) 00:54:32 ]
>>352
何個もあるのでツールとか使って1回でさくっとできる方法でお願いします。

354 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 02:52:05 ]
コピペは最も代表的なアンチパターン

355 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 03:24:50 ]
>351
何も書かないこと。Eclipse3.3.2 は確認。
どうしてもコメントを書きたいなら、javadocに察知されないように気をつけて。

そういうことではない?

356 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 11:02:47 ]
前スレで20桁以上の計算をしたいと相談したとき、BigDecimalやBigIntegerを使うようにアドバイスをいただいた者です。
今度はiアプリで20桁以上の整数の計算をしたいのですがどういう風にすればいいでしょうか?
ググってみるとDoJaではBigIntegerが使えないという記述を見つけたので相談しました。
よろしくお願いします。

357 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 11:52:02 ]
自分で実装するしか

358 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 13:02:17 ]
>>356
BigIntegerのソースそのまま使うとかw

359 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 13:05:33 ]
そしてGPLに感染、と。

360 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 14:58:29 ]
OpenJDKはクラスパス例外付きだろPhoneMEがクラスパス例外なしだ。

361 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 15:22:37 ]
java.mathパッケージのままだとライセンス上問題でるだろうし
パッケージ改変したり部分的にパクった場合はクラスパス例外適用されんだろ。



362 名前:デフォルトの名無しさん [2008/05/23(金) 16:24:29 ]
とっても基本的なことなんだが、
なんで

int i=2;
String k;
String l;
k="a8";
l="a" + i;

とすると、なんで、k!=lになるんでしょう。

363 名前:デフォルトの名無しさん [2008/05/23(金) 16:25:32 ]
間違えた。

int i=2;
String k;
String l;
k="a2";
l="a" + i;

こちらです。
よろしくお願いいたします。

364 名前:デフォルトの名無しさん [2008/05/23(金) 16:25:59 ]
間違えた。

int i=2;
String k;
String l;
k="a2";
l="a" + i;

こちらです。
よろしくお願いいたします。

365 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 16:28:14 ]
この違いを勉強しろ
k.equals( l ) → true
k == l →false

366 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 16:29:31 ]
>>363
>>1

367 名前:デフォルトの名無しさん [2008/05/23(金) 16:29:39 ]
ちなみに、こちらだと、str1==str2になり、ほかは等しくなりません。
2=3なら気持ちが分からんでもないけど・・・

String str1 = "aaa1";
String str2 = "aaa" + 1;
String str3 = "aaa" + String.valueOf(1);

if (str1==str2){System.out.println("str1=str2");}
if (str1==str3){System.out.println("str1=str3");}
if (str3==str2){System.out.println("str3=str2");}

368 名前:デフォルトの名無しさん [2008/05/23(金) 16:34:18 ]
初心者の質問なんですけど
2次配列に値を入れたいのですが、

例えば・・・

int a[][] = new int[10][10];
a[][] ={ {1,1,0,1,1,1,1,2,1,1},
{1,3,1,1,1,4,1,1,1,1},
{7,1,1,5,1,1,1,6,1,1},



{ } };

こんな感じで
要素の殆ど同じ数が占めている
データを2次配列に入れたいんです。

どうやったら綺麗に力技じゃなく入力できますか?

369 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 16:36:00 ]
数字に規則性があるならできるけど、それ以外はしらね

370 名前:デフォルトの名無しさん [2008/05/23(金) 16:36:42 ]
>>365-366
ありがとうございます。
勉強したが、やはり、>>367が理解できん。
リテラル値をそのまんま突っ込んでいるから実体に反映されてるんかなぁ。

371 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 16:37:07 ]
>>367
javac様はコンパイル中に「"aaa" + 1」を見て「両方とも定数だからい
ま1つの文字列にしちゃおう」と考える。「"aaa" + String.valueOf(1)」
は「なんか関数呼び出しがあるからコンパイル時にはどうしようもない
よね」と考える。




372 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 16:38:34 ]
>>370
定数式とかString#intern()でぐぐれ。

373 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 16:43:06 ]
>367
定数としてコンパイル可能な String のうち、同値になるものが同じインスタンスとされてるだけ。
>363 の例なら、int i=2 を final int i=2 とすれば、k==l は true となる。

374 名前:デフォルトの名無しさん [2008/05/23(金) 16:48:42 ]
>>369
隣接行列を2次配列にしたいんですけど
ノード数が100個以上あって、
エッジが繋がっている部分に重みがあって
エッジが繋がっていない部分を無限大の重みを付けたいんです。

規則性はあんまりないです。

ちなみに駅間の最短距離を求めるプログラムで利用したいんです。
データは隣駅までの距離です。

375 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 16:50:02 ]
>>368
何をもって綺麗とか力技とかと評価するのか知らないが、
ほとんどを占めている数を配列全体に(Arrays.fillとかで)入れておいて、
配列内の位置とその値のペアで(配列やコレクションで)持っておいたものを代入するとか。

376 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 16:51:44 ]
>368
java.util.Arrays.fill
>374
規則性が無いものを "計算機" で処理しよう、とな。
そこに妙な説明が書けるんだから、その通り実装すれば良いでしょう。

377 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 16:55:35 ]
>>374
隣接行列はそういうスパースなグラフでは表現時にメモリの無駄が多いので、
他の表現方法で接続データを持っておいて(隣接リストとか)、
それをプログラム内で隣接行列に展開するようにするとか。

378 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 17:08:26 ]
メモリの無駄が多い→同じ情報が繰り返し出てきてもたつき感がある

379 名前:デフォルトの名無しさん [2008/05/23(金) 17:22:18 ]
>>371-373
ok danke.
少しだけavacの気持ちが分かりました。

380 名前:デフォルトの名無しさん [2008/05/24(土) 00:00:25 ]
enum ってなんて読むのですか?

381 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:53:27 ]
>>380
コミュニケーションする相手とのコンセンサスが取れているのならどんな読み方でもどうぞ。
enumはenumeration(またはその派生形)の略なので元の言葉の発音を基にするか、
enumそのものの綴りを連想できるような読み方にするかすればいいと思うよ。



382 名前:デフォルトの名無しさん [2008/05/24(土) 01:11:12 ]
ファイルに入力されてるなら
そこから読み取るっていうこともありえるけど・・・

383 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 01:44:02 ]
AWTのTextFieldで右詰めにするのってできないんでしょうか??
どうやったらいいのか調べてもさっぱわかりません。。。
SwingならsetHorizontalAlignment使えばいいんですが、AWTでのやりかたをどなたかご教授願えませんかm(_ _)m

384 名前:デフォルトの名無しさん [2008/05/24(土) 02:05:43 ]
>>381
ありがとね

385 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 02:23:38 ]
LayoutManagerを無効にしたらTextField(5)とかいう風に列の幅を指定しても
結局そのサイズが0になっちゃうんですが、、、
座標指定できるLayoutManagerとかないですよね??
列の数を指定して(Dimensionではなくcolum数で)、
座標を指定してコンポーネントを配置することってできないんですかね??

386 名前:デフォルトの名無しさん [2008/05/24(土) 03:05:52 ]
class C2 extends C1 {...
C1 c1 = new C1();
C2 c2 = (C2)c1;
これは可能ですか?

387 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 03:12:53 ]
>>i386
C1を型に変換できません

388 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 05:40:02 ]
>>385
TextFieldを子孫コンポーネントとしたFrameを一旦表示してやると、
そのコンポーネントの推奨サイズが有効な値として取得できるようになるから、
推奨サイズをコンポーネントのサイズとして設定してやり、
その後、Frameを再描画すればいい。
一旦表示して設定後、再描画とかの流れが面倒なら、行儀の悪いものになるが、
コンポーネントを加えた後でFrameをネイティブスクリーンリソースに接続すれば、
Frameを表示することなくコンポーネントの推奨サイズを得ることができるようになる。

389 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 08:48:29 ]
>>385
なるほど。。。
ありがとうございます!!

390 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 12:19:54 ]
arraylistで値を追加する際genericsで型を指定していると処理の時間が多少短いような気がするのですが
これは偶然の誤差なのでしょうか?それとも速くなるものなのでしょうか?

391 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 13:05:33 ]
ならねぇ



392 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 13:11:20 ]
>>391
ありがとうございます

393 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 13:32:08 ]
オートボクシング/アンボクシングが働いて若干のパフォーマンス低下ってのならある。
けどもしそこがネックになってるならJITで最適化されるから気にしない。






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

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

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