5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :デフォルトの名無しさん:04/11/22 07:58:04
過去ログ、関連スレッド、よくある質問とその回答、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/

これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。

以下のエラーが表示されて、途方にくれているあなたは、下のページへ。
「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
http://www.wikiroom.com/java/?path%2Cclasspath

前スレッド
【初心者】Java質問・相談スレッド56【大歓迎】
http://pc5.2ch.net/test/read.cgi/tech/1099744085/

/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */

また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。

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

2 :デフォルトの名無しさん:04/11/22 08:11:30
胃が痛い

3 :デフォルトの名無しさん:04/11/22 09:01:46
外国人参政権の要点

1、対馬(韓国領土という捏造論文多数)と竹島(島根県所属。島根県知事の
得票数は在日の数をはるかに下回る)が危険であること。また、○○自治区の
誕生をまねくものであり、内戦が勃発すること。
2、すでに国、地方にかかわらず議員に朝鮮シンパがおり、日本がのっとられようと
していること。地方ですでに擬似参政権をあたえてしまっている自治体があること。
3、隠されているが、被選挙権が含まれており、公安委員と教育委員という
重要なポジションが地方にもあること。
4、地方は懲役二年までの刑罰を定めることができ、「差別禁止条例」などを作成し
のっとった自治体で、日本人をどうにでもできるようになること
5、報道ステーションのディレクターに韓国人がいることに代表されている
ように、マスコミに大量に朝鮮関係者が入り込んでいて、外国人参政権問題に関連して
自由な報道ができないこと。
6、在日は集団となって、大量の抗議をするので、その勢いで重要な国の朝鮮
人の利権の絡む会議やマスコミの朝鮮のイメージを落とす報道が在日におしき
られてしまうこと(集団で個人を攻撃するのでターゲットはたまらない)。
7、これは情報戦であり、宣戦布告はされていないが、完全に戦争であること。

日本は今存亡の危機にあります。これは決して誇張ではありません。
歴史上の諸外国による軍事圧力と異なり、現在行われている「侵略」は
目に見えない分一層性質が悪いと言えるでしょう。
無関心、無批判は、必ず私達の将来に災いとして降りかかってきます。


4 :古代帝國富士皇朝総帥・伯壬旭:04/11/22 09:16:25

よくぞ次スレを立てた。ほめてつかわす。
さあ、皆の者
質問するがよい!!!!

5 :デフォルトの名無しさん:04/11/22 09:45:05
>JavaでSQLの埋め込みで
>StringBufferでSQL文を一つずつ入れる奴いますが
>あれって多用するとパフォーマンス的にはどうなのでしょうか?

PreparedStagementを使っていないのならこれ異常ないぐらい危険。すぐに破棄すべし

6 :デフォルトの名無しさん:04/11/22 10:14:34
>4,5
StringBufferで文字列連結してるってだけの話じゃないの、これ?

String s = "";
s += a;
s += b;
s += c;



StringBuffer bf = new StringBuffer(100);
bf.append(a);
bf.append(b);
bf.append(c);

で後者のパフォーマンスは前者とくらべてどうなのかという意味なら、後者の方が
パフォーマンスは良い。前者は += のたびに s が作り直される。

7 :前スレ946:04/11/22 10:18:02
>>前スレ950
おっしゃるとおりでした。こんな当然なメソッドに気づかなかったなんて…。ありがとう。

JComponentを継承して、コンストラクタで、setFocusable(true);を行なうことで、
フォーカスを取得できるコンポーネントが作れました。

8 :デフォルトの名無しさん:04/11/22 10:31:44
>>前スレ964
昨日までに解決したかったのに遅レスでごめん。

server.xml内のサーブレットを動かしているContextのworkdirとか?
かなり昔だけどWASの設定で、「PDF作成ディレクトリは、WASの作業ディレクトリに設定」としたことがあったから。

あと、怪しいのは、vfreport.propertiesのSearchPath.Pathとか。

9 :デフォルトの名無しさん:04/11/22 12:06:57
JSP&Servletにてプログラムを書いているのですが。
JSPで管理画面のようなものを作成し、そこで設定されたパラメータを
内部のプログラムで共通的に使用したいと思っています。

サーバーダウン時や、サーバー再起動時でも設定されたパラメータを
保持しておくには、ファイル入出力を行うべきなのでしょうか?

現在は、web.xmのcontext-paramに初期値を持たせ、その初期値を
applicationオブジェクトに格納することで値を管理しています
(管理画面でその値を随時変更可)

プログラム内部からweb.xmlのcontext-paramを書き換えるなんてことは
しないほうがいいですよね?(管理画面で書き換えるイメージ)
そうすればサーバーダウン時をしても再起動時に書き込まれた値が取得
できると思うのですが、web.xmlの使いからして間違ってるかも。。

よろしくお願いします。

10 :デフォルトの名無しさん:04/11/22 13:15:32
>>9
DB使うのが普通じゃない?

11 :せき:04/11/22 13:33:16
自分
HP100 攻撃60 守備40


HP120 攻撃40 守備50

のステータスで交互に攻撃をして勝負するプログラムを作りたいんですが、どうやるんですか?ちなみに、相手へのダメージは、(攻撃-相手守備)+ランダム(10〜3)です。

12 :デフォルトの名無しさん:04/11/22 13:35:08
なんでこういうバカな質問ができるんだろう?

13 :せき:04/11/22 13:36:22
ど初心者だから

14 :デフォルトの名無しさん:04/11/22 13:40:58
プログラミングに関係なくバカだって言ってるんだよ

15 :せき:04/11/22 13:43:27
そうかな?馬鹿だから教えてくださいって、言って悪いですか??

16 :デフォルトの名無しさん:04/11/22 13:44:35
じゃあさ、たとえば

「東大に入りたいんですが、どうやるんですか?」
「彼女が欲しいんですが、どうやるんですか?」
「ロケットを作りたいんですが、どうやるんですか?」

・・・っていう質問を見たらアンタはどう思う?

17 :デフォルトの名無しさん:04/11/22 13:45:12
悪い。頭が悪い。

18 :せき:04/11/22 13:48:17
バカバカいってるのはどうかと思うよ?わからないことを知ってる人が教えてあげる。それくらいの心の広さがなかったら悲しい人間だよ(;_;)

19 :デフォルトの名無しさん:04/11/22 13:50:59
>>18
16への納得できる答えを書いたら
1から10まで教えてあげるよ

20 :せき:04/11/22 13:55:56
それは僕は経験したことがないから、こうだよとは言えないよ。実際にやったことがあったら実体験を元に話ができるだろ?説得力もでてくる。
全くやったことがない事に対してああだこうだといってもなっとくはできない。

21 :デフォルトの名無しさん:04/11/22 13:56:09
>>18
あなたの書き込みからでは「何がわかってないのか」がわかりません。
Javaに関する質問と捉えられるレベルまで問題をブレイクダウンしてみては?


22 :デフォルトの名無しさん:04/11/22 13:56:49
まともなヒトの思考:
1.RPGの戦闘みたいなプログラムを作りたいなあ
2.そのためにはどういうデータと処理の流れが必要かなあ
3.こういうデータとこういうデータと・・・
4.処理はこのデータをこうして、次にこれをこうして・・・
5.うーん、この部分はどうやってプログラムするんだろう? 聞いてみよう

バカなヒトの思考:
1.RPGの戦闘みたいなプログラムを作りたいなあ
2.こういうプログラムってどうやって作るんだろう? 聞いてみよう

23 :デフォルトの名無しさん:04/11/22 13:57:16
>>19
>>16への答え。上から順に
勉強しろ
ナンパしろ
ロケット製造関連で修士か博士取ってNASDAへ就職しろ

それと同様に
>>11
Javaの勉強しろ。
書籍は独習JavaかJava言語プログラミングレッスン上・下あたりがお勧め。

24 :9:04/11/22 13:57:48
>>10さん
ありがとうございます。
検討した結果、DBも良いのですがプロパティファイルを
書き換えることにしました。ありがとうございます。

25 :デフォルトの名無しさん:04/11/22 13:58:23
>>20
べつに「東大に入る方法」を答えろと言ってるんじゃなくて
そういう質問をどう思うか、と聞いているんだが

26 :せき:04/11/22 14:01:33
なんだ、いいとこあんじゃん!本の名前を教えてくれてありがとう!出版はどこ?

27 :デフォルトの名無しさん:04/11/22 14:02:54
もともと頭が悪いのか
解答だけ書けよと思ってる横着者なのか

28 :デフォルトの名無しさん:04/11/22 14:03:25
>>26
検索しろ
ttp://bookweb.kinokuniya.co.jp/indexw.html


29 :せき:04/11/22 14:03:55
まぁ、頭はそんなによくはないね!

30 :デフォルトの名無しさん:04/11/22 14:04:36
>>28
「僕のかわりに検索して書き込んでくれるくらい優しくないと悲しい人間だよ」

31 :デフォルトの名無しさん:04/11/22 14:04:55
ググれよ。
あるいはアマゾンで検索するとか。ここに書き込むより手間は少ないじゃないか。

32 :デフォルトの名無しさん:04/11/22 14:06:24
発言の意図の受け止めかたがことごとくズレてるな

33 :せき:04/11/22 14:06:57
なるほど、

34 :せき:04/11/22 14:08:59
そうかな?そんなにずれすぎてる??

35 :デフォルトの名無しさん:04/11/22 14:09:13
>>31
手間とかそういう問題じゃない。
ヤツは人とのふれあいが欲しかったんだよ。

36 :デフォルトの名無しさん:04/11/22 14:10:29
>>26
ここで出版社を聞いているようじゃ先が思いやられる。
まず自分で調べるという姿勢がない。

自分のわからないことをわかるようになるためには、
何が必要なのかぐらいは考えてくれ。

元の質問がJavaの質問ではないことぐらい、わかってるよな?

37 :デフォルトの名無しさん:04/11/22 14:10:30
そうか・・・さびしかっただけなのか

38 :せき:04/11/22 14:10:35
まぁ、いいたきゃなんとでもいえ。

39 :デフォルトの名無しさん:04/11/22 14:11:22
こんどは被害妄想か

40 :せき:04/11/22 14:12:47
おまえさんはどうやってJAVAを学習した?

41 :デフォルトの名無しさん:04/11/22 14:13:30
おまえさんって誰やねん。

42 :デフォルトの名無しさん:04/11/22 14:13:39
>>39
それは違う。
今彼はここで人とふれあえたことで、自分の欠点も指摘してもらいそれを改善しようと思うようになったんだ。
それが>>38の真意だ。

43 :せき:04/11/22 14:14:04
デフォルトの名無しさんだよ

44 :デフォルトの名無しさん:04/11/22 14:15:16
>>40
1.本屋に行く
2.プログラミングの本が置いてあるコーナーを探す
3.Javaの本を探す
4.入門用によさそうな本を何冊か探す
5.レジで支払いを済ませてから家に帰る
6.買った本を読み、例題などを実際に自分でやってみる

45 :せき:04/11/22 14:16:30
ほ〜
独学??

46 :デフォルトの名無しさん:04/11/22 14:21:16
javaで実行形式のプログラムつくりたいんですが、どうすればいいんですか?
OSはwindowsXPです。
ユーザ環境にはランタイム等があると仮定して、Java web start等を使用せずに
hoge.exe をダブルクリックする形で実行させたいのですが・・・。

47 :デフォルトの名無しさん:04/11/22 14:22:04
いや、Javaを習得するには、やはり理系の大学へ通わねばならない。
正規の講師の授業を受けて、はじめてJavaを修める事ができる。
我流ほど忌避すべきものはない。
アカデミックな教育を受けてない我流プログラマには、いろいろ
落とし穴がある。
何だかんだ言っても、専門教官のスキルは高い。
そうでなきゃ大学の講師になれないのだから。


48 :デフォルトの名無しさん:04/11/22 14:22:33
>>47
ネタかマジレスか微妙な線をついてくるな

49 :デフォルトの名無しさん:04/11/22 14:24:38
>>46
ボーランド社のJBuilderで、ネイティブ単独実行exeファイルが
ワンタッチで作成できます。
これで普通のアプリケーションと同じように配布できますね。
JREインストールの有無は関係なくなります。
エクリプスやネットビーンズには、とても無い機能です。
これを機にJビルダーに変えてもいいかもしれません。
タダより高いものはなしです。


50 :デフォルトの名無しさん:04/11/22 14:25:29
>>46
Borland Jbuilderにexeファイルを出力する機能があったと思うよ。
Excelsior JETを使ってexeファイルを出力することもできるよ。

exeファイルにこだわらず、ダブルクリックで実行できれば良いだけなら、
batファイルを作成して、それをダブルクリックしてもらう方法もあるよ。

以上。

51 :デフォルトの名無しさん:04/11/22 14:25:59
>>45
ぶっちゃけ「独学」とかそういうことを言ってる時点でもうね。

学校の勉強だって、ほんとに身につけたいと思っている人は
自分で本買って、読んで、考えて、わからなければ調べて、
それでもわからなければ人に聞いて、・・・とやってるはず。

独学だろうと授業だろうと、勉強の本質は「自分でやる」ことだよ。

52 :せき:04/11/22 14:27:47
そうか…やっぱ大学とかいってたのか…くそ〜!
独学じゃむりかな?プログラム

53 :デフォルトの名無しさん:04/11/22 14:29:13
>>51
勿論、「自分でやる」気がなければ、どんな講義も馬の耳に念仏になるのだが、
問題はやる気があっても、正規の教育機関による正規の講師の教えを受けねば、
本当の実力はつかない。


54 :デフォルトの名無しさん:04/11/22 14:29:47
>>52
おまいは51を声に出して10回読め。
ちなみに大学行ってもプログラミングは
  ま  っ  た  く  
上達しない。

55 :デフォルトの名無しさん:04/11/22 14:30:06
Excelsior JETのページはここ。
ttp://www.excelsior-usa.com/jet.html

でもWindowsでアプリっぽくするだけなら、.batファイルとjavawで十分かもしれない。

56 :デフォルトの名無しさん:04/11/22 14:31:07
>>53
おまえ質問の解答をわざと難しく書く香具師と同一人物だろ?w

57 :デフォルトの名無しさん:04/11/22 14:31:55
専門学校も千差万別あるからね。
やはり、理系大学の正規の講師の授業を受けるのが、
一番上達の道に沿う事になる。



58 :デフォルトの名無しさん:04/11/22 14:31:59
大学でプログラム上達なんてせんだろ。
自分で本読んで、プログラム組んでなんぼ。

59 :せき:04/11/22 14:32:44
う〜ん( ̄Λ ̄)

60 :50:04/11/22 14:35:23
>>46, 55
Excelsior JET 日本語版もあるよ。
http://www.xlsoft.com/jp/products/jet/

55さんの言うとおり、.batで充分だと思うよ。

以上。

61 :デフォルトの名無しさん:04/11/22 14:36:43
だから本人のやる気がなければ、どんな一流大学の講義を受けても無駄
になるけど、例え熱意があっても、当人の学習の指針がずれていたら
本当の上達は得れなくなる。
理系大学の正規の授業を受けるのが、一番の上達の近道でもある。



62 :デフォルトの名無しさん:04/11/22 14:37:40
>>53=57=61
だんだん本気で言ってるように思えてきた・・・

63 :デフォルトの名無しさん:04/11/22 14:39:35
>>61
どこぞの大学の講師だろと言ってみる

64 :せき:04/11/22 14:39:47
まぁやる気はかなり充分にあるんだ!!が……

65 :デフォルトの名無しさん:04/11/22 14:40:29
>>64
やる気があるならこんな所見てないでさっさと本買いに行け

66 :デフォルトの名無しさん:04/11/22 14:40:40
>>64
おまいさんは、Javaができないんじゃない。

自分が問題にぶち当たったときに、
それを解決する方法を見つける能力に欠けていると思われ。

67 :デフォルトの名無しさん:04/11/22 14:41:44
>>66
そこに本人が気づかないと、いくら本を読んでも大学の講義を受けてもムダだねw

68 :デフォルトの名無しさん:04/11/22 14:42:13
>>64
やる気はあっても自分じゃ考えられないってか?
まあ、ここまでのレスを読めばJava学習の方向性は
かなり見えるはずだろ(また意図をズラしてなければ)。


69 :せき:04/11/22 14:42:42
いや、少しは勉強してる。フレームとか少しわかるぐらいさ。。

70 :デフォルトの名無しさん:04/11/22 14:43:16
プログラム教える講師とかは、たいがいどこかの企業からの出向が多い
大学のネットワークだって、パソヲタク(どこかの同好会)が
長年管理してる場合が多い。

教授も暇じゃないよ。

71 :せき:04/11/22 14:46:05
そういう環境につきたいのだが、ちと難しいんだ。だから、独学になってしまってるじょうたい

72 :デフォルトの名無しさん:04/11/22 14:47:14
>>71
こんな所にいるくらいだからお前の熱意も大したこと無いんだな。
見損なったよ。

73 :せき:04/11/22 14:47:59
……

74 :デフォルトの名無しさん:04/11/22 14:48:28
>>71
プログラミングのために大学に行く必要はない。
Javaがわからないんじゃなくて物事の考え方がわからないってことだな。

じゃあ戦闘ゲームの「作りかたの考えかた」を少しだけ教えてやるから、おまえも自分で考えるんだ。
まずどんなデータが必要か、列挙してみろ。(自分のHP、敵のHP、自分の攻撃力・・・)

75 :デフォルトの名無しさん:04/11/22 14:50:31
変な流れになってきたなw べつにいいけど

76 :デフォルトの名無しさん:04/11/22 14:50:44
>>74
ここでやるなよ!

77 :せき:04/11/22 14:51:56
自分、相手のHP 攻撃力 守備 素早さ MP ダメージの計算 とか??

78 :デフォルトの名無しさん:04/11/22 14:54:57
>>77
まあそんな感じだな。
次に「戦闘」という一連の流れを、もうすこし細かく分解してみれ。
たとえば「カップ麺を作る」=「フタを開ける」+「かやくをいれる」+「お湯を入れる」+・・・のように。

「戦闘」=?

79 :デフォルトの名無しさん:04/11/22 14:58:32
>>77
あ、一応言っとくけど、「ダメージの計算」はデータじゃなくて処理だからな。

80 :せき:04/11/22 14:58:57
攻撃コマンドを表示する→選ぶ→攻撃→相手へのダメージ→ダメージ分だけ相手のHPを減らす……

81 :せき:04/11/22 15:03:23
ダメージ分だけ相手のHPを減らすはしょりか…

82 :デフォルトの名無しさん:04/11/22 15:08:16
>>46
javaを実行するネイティブプログラムを使う、という方法もあります。
BootJava
ttp://amateras.sourceforge.jp/cgi-bin/fswiki/wiki.cgi?page=BootJava
JSmooth
ttp://jsmooth.sourceforge.net
JSmoothは、JREの自動インストール機能やバージョンチェック機能もあって楽しい。

83 :せき:04/11/22 15:09:02
自分への攻撃→どちらかが負ける→戦闘終了

84 :デフォルトの名無しさん:04/11/22 15:12:40
できあがるまでここで続けるの?

85 :デフォルトの名無しさん:04/11/22 15:13:48
>>83
わりといいね。
自分の攻撃と相手の攻撃を、どっちかが負けるまで繰り返すわけだ。
それをプログラムみたいな書き方で書くと、どうなる?

例:

while (どちらかが負けるまで) {
  コマンド表示・選ばせる
  自分が選ばれた攻撃を実行する
  自分の攻撃の結果を計算する
  ・・・省略・・・
}

86 :デフォルトの名無しさん:04/11/22 15:15:17
>>84
他に質問者もいないし、べつにいんじゃね
どうせもうすぐどっちかが飽きるだろうし

87 :デフォルトの名無しさん:04/11/22 15:17:46
一応「相談」スレだからスレ違いではないが・・・板違いではあるなw

88 :デフォルトの名無しさん:04/11/22 15:23:18
つーか、ここまで説明したら、もはや機械的に実装するだけじゃん

89 :せき:04/11/22 15:27:06
while(どっちかのHPが1より下になったら終了)
{攻撃選択.選ぶ
選んだ攻撃
相手へのダメージ計算
相手のHPをダメージより引く
相手の攻撃…
}

こういうことだよね?


90 :せき:04/11/22 15:28:32
whileじゃなくてforかな…

91 :せき:04/11/22 15:34:22
int ihp =100;
int iap =50;
int idp =40;

int thp =100;
int tap =40;
int tdp =30;

う〜ん中身がわからない

92 :デフォルトの名無しさん:04/11/22 15:34:52
>>89
で、理論的には、そこに書き並べた処理を
具体的にデータをいじるプログラムに翻訳すれば、完成だろ?
たとえば「相手へのダメージ計算」だったら
  int damage = 自分の攻撃力 - 相手の守備力 + ランダム
だし、「相手のHPをダメージより引く」だったら
  相手のHP = 相手のHP - damage
となる。
HPとかは int playerHP, enemyHP みたいに変数として持てばいい。

もう教えることは何もない。
あとは自分で実際にプログラムを書いてみて、
わからないところがあったら<具体的に>質問しにこい。

93 :dotkansai:04/11/22 15:39:34
初心者の質問で申し訳ないのですが、
「もぐらたたき」のプログラムを作成して、コンパイルしてクラスファイルを作り、
HTMLファイルから指定して実行しようとしたのですが、
Exception: java.lang.ClassNotFoundException: "mole.class"
とエラーがでるのですが、何が問題なのでしょうか?
同じディレクトリ内なのに、load: クラス"mole.class"が見つかりませんと、メッセージがでます。
何か分かる方や、アドバイス的なことでもいいので、助言のほうよろしくお願いします。

94 :せき:04/11/22 15:39:57
いいやつだな。
わかった。一ヶ月くらいやってみるよ!

…あんた名前は?

95 :デフォルトの名無しさん:04/11/22 15:42:33
>>93
>>1 を読んで、リンクを辿り、情報を探せば、解決できそう。

96 :デフォルトの名無しさん:04/11/22 15:43:20
>>94
スミスとでも呼んでくれ。あばよ

>>93
大文字と小文字の違いとか?

97 :デフォルトの名無しさん:04/11/22 15:43:21
>>93
cぁっsぱth

98 :せき:04/11/22 15:46:44
あばよ
スミス

99 :デフォルトの名無しさん:04/11/22 15:50:48
せきの成長っぷりが見れてよかった。
俺は今日のスレ進行好き。

100 :デフォルトの名無しさん:04/11/22 15:58:15
100!!!!!!!!!!

101 :デフォルトの名無しさん:04/11/22 17:04:27
JAppletをOwnerにするJWindowを生成するにはどうしたらいいんですか?

102 :46:04/11/22 17:08:34
たくさんのレスありがとうございました。
とても参考になりました。
javawの.batで問題がなければそれでいいような気がします。
(やりたいことは単純なデモを実行する程度なので)
ダメならJbuilderの.exe出力という順で試してみます。
どうもありがとうございました。

103 :101:04/11/22 17:22:02
すみません.現在,JComponentを継承したクラスにコードを書いてい
てそれをOwnerとしてJWindowを表示したいのです.

104 :デフォルトの名無しさん:04/11/22 17:29:46
>>103
ためしてないけど、
SwingUtilities#windowForComponent(Component aComponent)
か?

105 :デフォルトの名無しさん:04/11/22 17:31:16
Threadについて質問です。
sleepで明示的に他のスレッドに処理を渡す事が出来ますが
以下のソースのように極端に重い処理testA()があった場合。
testA()が先に実行された時class BのtestB()が実行される
タイミングはどのようになるのでしょうか?
testA()の処理が終わってsleepが実行されなければ
testB()は実行されないのでしょうか?

class A extends java.lang.Thread {
public void run( ) {
while(true) {
        testA(); //2時間かかる処理
try {
sleep(1000);
} catch(java.lang.InterruptedException e) {
}
}
}
}

class B extends java.lang.Thread {
public void run( ) {
while(true) {
testB();
try {
sleep(2000);
} catch(java.lang.InterruptedException e) {
}
}
}
}


106 :デフォルトの名無しさん:04/11/22 18:01:33
>>529
続きは?

107 :デフォルトの名無しさん:04/11/22 18:04:12
誤爆スマソ

108 :デフォルトの名無しさん:04/11/22 18:54:33
いや、二時間かかる処理の途中で実行される。
妙なシンクロナイズドがないかぎり

109 :デフォルトの名無しさん:04/11/22 18:55:02
>>105
Bのsleepが終了した後でシステムのタイムスライスが来たときにBのrunは再び実行されます。
AがCPUを占有していても一応回ってきます。
同様にtestBメソッドの実行中でもスレッド切り替え時刻がやってくればAのスレッドに切り替わります。

sleepは明示的にCPU資源を使わない時間をシステムに伝えているだけです。

110 :103:04/11/22 19:07:12
>>104
返信ありがとうございます。
やってみましたが駄目でした。。。

111 :105:04/11/22 20:31:36
>>109
ありがとうございます。
スレッドはタイムスライスで動作しているんですね。
タイムスライスの間隔を指定する方法はあるのでしょうか?


112 :デフォルトの名無しさん:04/11/22 20:35:12
>>111
プラットホーム依存な部分なのでいかんともしがたいです。
JNI経由でOSにリクエストを出すにしてもNativeThreadの元のハンドルなどが得られないのでJVMのソースにパッチ入れる必要があります。


113 :デフォルトの名無しさん:04/11/22 21:12:55
「割り込み使え!」で解決する問題の予感。

114 :デフォルトの名無しさん:04/11/22 21:18:42
>111
間隔というか、優先順位を上げることはできる。Threadにそういうメソッドがある。

115 :デフォルトの名無しさん:04/11/22 22:28:47
ArrayListについて質問です。ArrayListにある同一型の
オブジェクトを格納した後に、再びある型に戻したいです。
Vector型だとやり方はわかるんですが、ArrayListだと
うまくいきません。どなたかよろしくお願いします。

/** Vector型に格納したString配列を取り出す場合 */
Vector v = new Vector();
v.add("AAA");
v.add("BBB");
v.add("CCC");

String [] vStr = new String[v.size()];
v.copyInto(vStr);

/** 上記と同様のことをArrayListで行いたい */
ArrayList al = new ArrayList();
al.add("AAA");
al.add("BBB");
al.add("CCC");

//以下のコードでエラー
String [] aStr = (String []) al.toArray(new String[al.size()]);


116 :デフォルトの名無しさん:04/11/22 22:52:08
>>115
そのコードで合ってるはずだが、どういうエラーだ?


117 :デフォルトの名無しさん:04/11/23 00:55:12
>>111
おまいの直面しているのがレース問題なら Object#wait()/notify() で解決する。

118 :デフォルトの名無しさん:04/11/23 01:06:10
アプレットからCGIにPOSTするにはどうすればいいのでしょうか

119 :デフォルトの名無しさん:04/11/23 01:12:30
「アプレット cgi post」でぐぐる。

120 :デフォルトの名無しさん:04/11/23 01:12:49
getで我慢しな

121 :デフォルトの名無しさん:04/11/23 01:12:54
宿題スレから誘導されてきました。

docletについて調べることになったのですが、なんせプログラミング経験があんまりないため苦労しています。
ttp://muimi.com/j/doclet/
ここを見て、とりあえずここにある二つのサンプルを実行しようとしたのですがうまくいきません・・・
このサンプルどおりに動かす手順を教えていただければ助かります。

ttp://nemuneko.com/jboss/xdoclet.html

ここのサイトを見てなんとかコンパイルは成功しました。
その後ここに書いてるとおり実行したのですが(もちろんjdkのパスは自分のPC用に変えました)
エラーが出てとまってしまいます。

エラーは
java.lang.NoClassDefFoundError: MyDoclet (wrong name: hoge/MyDoclet)
というエラーで、その後に

at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:502)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:250)
at java.net.URLClassLoader.access$100(URLClassLoader.java:54)

のような文字列が出て最後に

javadoc: 致命的エラー
エラー 1 個

とでてとまります。
解決方法アドバイスいただけるとありがたいです。

122 :デフォルトの名無しさん:04/11/23 01:14:56
hoge.MyDoclet のクラスファイルのおかれてる場所がおかしい

123 :JSP泣:04/11/23 01:17:05
JSP_1であるパラメターをSessionの中に入れて、そのページから別のJSPに
<a href="upload.jsp">Upload</a>
をクリックして移動した場合、移動後のページからJSP_1で保存したパラメター
にアクセスできません。
普通のリンクの場合、同一Sessionにアクセスすることは出来ないのでしょうか?
<jsp:forward>で試した場合はキチンと同一Sessionにアクセスできるのですが、
之を使った場合だと、”もしもこのリンクをクリックしたらーーー”という処理が
できません。

なにか良い方法ありますでしょうか?

124 :121:04/11/23 01:17:34
>>122
落としたサンプルファイルは全部同じフォルダに置いたのですがそれではだめなんでしょうか?

125 :デフォルトの名無しさん:04/11/23 01:18:52
docletpath

126 :デフォルトの名無しさん:04/11/23 01:21:51
クラスパスは一番最初の壁だな

127 :121:04/11/23 01:22:56
>>125、126
すいません、具体的にはどうすればいいんでしょうか?


128 : ◆VQKJgiezS6 :04/11/23 01:58:53
age

129 :デフォルトの名無しさん:04/11/23 02:43:48
assert ってどういうタイミングで使うのでしょうか?
みなさん、使われています?

130 :デフォルトの名無しさん:04/11/23 02:57:17
(ちゃんと動いてれば)○○になるはずだ(から本番ではチェックしないよ)ってときに使う。

本番ではチェックしない ← ここ重要

131 :デフォルトの名無しさん:04/11/23 03:11:42
mp3ファイルのタグを編集できるAPIってありますか?

132 :デフォルトの名無しさん:04/11/23 03:31:36
http://sourceforge.net/projects/javamusictag/
Java MP3 ID3 Tag Library

133 :JSP泣:04/11/23 03:36:32
>>123への自己レスです。
どーやらJBuilderXのバクみたいでした。
普通にLocalのTomcatにぶち込んで実行したらさくっと動きました。
お邪魔しました。

134 :デフォルトの名無しさん:04/11/23 03:40:58
>129
それは試験に出るぞ(マジで)。
まあありえないことが「ほんとに起きてないこと」を確認するために使うかな。
あと、絶対そうなっているはずなことが「ほんとにそうなってること」を確認する
ために使うかな。

試験的には、ユーザの入力値検証には使ってはいけない。

135 :ど・ど・ど:04/11/23 11:03:00
こんにちは、JAVA及びXMLについて解らない所があり書き込みしました。
JAVAの言語で,デレクトリィ内にあるXMLファイル群から特定のタグ内にあるデータだけを抽出
するプログラムを創るためには、どうすればよいのでしょうか?

入力:hoghog

デレクトリ内からすべてのXMLの<a>???</a>の間のhoghog文字列を検索

出力:<a>hoghog</a>がある。xmlファイルを抽出する.

andの場合
入力:hoghog
  :ギコ

デレクトリ内からすべてのXMLの<a>???</a>の間のhoghogとギコの
文字列を検索

出力:<a>hoghog</a>と<a>ギコ</a>がある。xmlファイルを抽出する.

非常に簡単に書いてありますが、プログラムの初心者のためどうすればよいのか解りません。
もしこのような、サンプルプログラムがあれば見せていただきたいのですが、
これを実現するための資源としてどんな本があるでしょうか?

どうぞ宜しくお願いします


136 :デフォルトの名無しさん:04/11/23 11:13:20
>>135
DOMとかSAXというキーワードで情報を検索してみると良いかもしれないよ。
DOMについては ttp://www.hellohiro.com/xmldom.htm にサンプルがあるよ。
SAXについては ttp://www.hellohiro.com/xmlsax.htm にサンプルがあるよ。
時間無いから直接的な回答じゃなくて申し訳ないけどヒントにはなると思うよ。

以上。

137 :ど・ど・ど:04/11/23 12:01:10
>>136
親切にありがと〜。。。
ちょっと調べてみます^^


138 :121:04/11/23 13:08:25
すいません、どなたかた >>121 の解決方法具体的にわかるかた
いらっしゃらないでしょうか?


139 :デフォルトの名無しさん:04/11/23 13:17:50
文字列を一つずつ読み込んで
それの数のカウントさせて書き出したいのですが、
カウントさせるだけなら何とか出来そうなんですが
存在する文字列をリストに追加させてそのリストにたいして
にカウントをかけるというのがよくわかりません

例えば
adasfaagggという内容だったら
a=4
d=1
f=a
g=3
s=1
みたいにしたいのですが教えて下さい


140 :デフォルトの名無しさん:04/11/23 13:29:18
mapでも使えば。

141 :デフォルトの名無しさん:04/11/23 13:29:54
f=aって

142 :デフォルトの名無しさん:04/11/23 13:47:22
>>140
ん、HashMapって順番って変更できたんだっけ?
a→d→s→f→g

a→d→f→g→s


143 :デフォルトの名無しさん:04/11/23 13:48:33
>>139
それはリストが何かわからないってこと?
何か学校の宿題っぽい問題だな

144 :デフォルトの名無しさん:04/11/23 13:49:37
>>142
そんくらいソートしろよ

145 :デフォルトの名無しさん:04/11/23 14:10:08
>>138
>>122 >>125 >>126

146 :121:04/11/23 14:28:19
>>145
レスを読んだのですが具体的にどうすればいいのかわからなくて・・・
-docletpathというコマンドを加えてMyDocletの位置を指定してみたのですがうまくいきません・・・

147 :デフォルトの名無しさん:04/11/23 14:28:57
今、フレーム上で動くRPGのお店を作っています。
KeyListenerを使ってカーソルを上下に動かすことが出来るのですが、
Buttonを使ってボタンを貼り付けるとKeyが効かなくなるんです。
どなたか解決法 解りませんか?

148 :デフォルトの名無しさん:04/11/23 14:29:31
Javaの実行クラスがあるディレクトリはどうやって調べればいい?
あと、そのシステムで使われているディレクトリの区切りが\なのか/なのかも調べたいです。


149 :デフォルトの名無しさん:04/11/23 14:39:38
org.apache.commons.lang.SystemUtils.FILE_SEPARATOR


150 :デフォルトの名無しさん:04/11/23 14:42:01
>>149
すいません、言い忘れました。
サーブレットじゃなくてアプリケーションです。


151 :デフォルトの名無しさん:04/11/23 15:11:16
>>150
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/lang/System.html#getProperties()

152 :デフォルトの名無しさん:04/11/23 15:41:48
JAVAを始めようと思いました。
ttp://www.hellohiro.com/
を参考に始めようと思いました。
ここのアプリケーション偏の「環境の構築」のPATH以外がなぜ必要なのか解りません。
PATHだけ設定すればコンパイラは使えるようになります。
PATH以外は何に使われるのでしょうか?
皆さん設定されてるのでしょうか?

153 :152:04/11/23 15:48:54
CLASSPATHってなんですか?
初心者にも解るように教えてください。

154 :デフォルトの名無しさん:04/11/23 15:53:23
>146
この例では、classesの下にhoge/MyDoclet.classというクラスが無ければいけない。
さらに自分がいまいるディレクトリに「classes」というディレクトリがなければいけない。

Javaのクラスは、パッケージ名を含めた階層構造に配置される。MyDoclet.javaは
package hoge と指定されているので、コンパイルすると「hoge/MyDoclet.class」となる。
例えばパッケージ名が「hoge.hage.hoge.hage」だったら、「hoge/hage/hoge/hage/MyDoclet.class」
となる。

で、クラスパスなりdocletpathに指定するのは、このパッケージ名(hoge)のディレクトリの
親ディレクトリだ。この場合は「classes」。classesはフルパス指定でもいい。
実行クラス名に「hoge.MyDoclet」を指定すると、-docletpathに指定したディレクトリに
「hoge/MyDoclet.class」というファイルがあるかどうかを探し、なければ「NoClassDefException」
になる。

ともあれ、classesというディレクトリがあるディレクトリまで移動してから実行してみそ。
もしないなら、そういうディレクトリを作って、hogeディレクトリをclassesの下に移動しろ。

俺の予想では、君はclassesの下にMyDoclet.classを直接コピーしている(パッケージ名がない)。

155 :デフォルトの名無しさん:04/11/23 15:55:33
>153
Javaのコンパイル結果である「classファイル」を探す場所の指定。
PATHはOSのコマンド検索場所の指定(javaとかjavacとか)。

156 :デフォルトの名無しさん:04/11/23 16:01:01
未だに環境変数のCLASSPATH設定しるって言ってるサイトがあるのか……orz

157 :デフォルトの名無しさん:04/11/23 16:26:25
antでも使うのか。

158 :デフォルトの名無しさん:04/11/23 16:33:17
JNIでHello World!したいんですが、
C++わからないので、どなたかCでネイティブ側のコードを書いてくれませんか?
できればUNIX用(.so)とWindows用(.dll)の両方を教えて欲しいです。

ネイティブコードの方で標準出力にhello World!を表示できるのが欲しいです。
おとなしくC++を学んだほうがいいですか?
難しくて難しくて…
Cならマクロ以外ならけっこうできるほうだと思ってます。

159 :デフォルトの名無しさん:04/11/23 16:35:16
つうかCのJNIとC++のJNIで何がかわるというのか。
cout <<なところをprintf()で置き換えるくらいじゃないの?

160 :デフォルトの名無しさん:04/11/23 16:39:45
>>158
http://www.hellohiro.com/native.htm

161 :152=153:04/11/23 16:42:01
>155、>156,>157?
レス、ありがとう御座います。
>155
>Javaのコンパイル結果である「classファイル」を探す場所の指定。
クラスファイルを探す必要が何故あるのでしょうかというか、なぜ探すのでしょうか?
初心者的に理解できません。(やさしいJAVAである程度勉強しました。
>156,>157?
どういうことでしょう?

162 :158:04/11/23 16:47:35
>JNIEXPORT jstring JNICALL Java_HelloWorldJNI_sayHelloWorld(JNIEnv *env, jobject obj )
Cだと関数名の前には型が一つ来るだけだけども上記のような例では3つもあって、さっぱりわからないです。

163 :デフォルトの名無しさん:04/11/23 16:53:30
Cでもint PASCAL WinMain()とかあるだろ

164 :デフォルトの名無しさん:04/11/23 16:54:50
こんにちは。javaのFrameについて質問があります。

右上の「閉じる」ボタン(×のやつ)すら持たないウィンドウを生成することって可能なんでしょうか?


165 :デフォルトの名無しさん:04/11/23 18:04:17
>>156
CLASSPATH に設定するのも方法の一つだから解説しててもおかしくはないだろ。他の方法と良し悪し
を比較できるだけ理解が進んだら適材適所で検討すりゃいい。開発中にコマンドラインで JVM 起動す
るたびに -cp 指定するのは正直かったるい。

>>162
JNIEXPORT も JNICALL もおまじないみたいなものだ。気にせず jstring 型を返す関数を書けば良い。
気になるならプリプロセッサ処理済みの関数宣言でも見てみれば? 多分 declspec(dllexpot) とか stdcall
とかだと思うけど。

>>164
Frame っつうか、Window のサブクラス作ってみ。ウィンドバーが無い矩形が作れる。そうではなくって
[×] だけ消したいのかな? AWT でそれは無理。

166 :164:04/11/23 18:12:54
>165さん、ありがとうございます。

setUndecorated(true)で出来たのですが、
側の部分(ドラッグするときにマウスでつかむ部分・・・って言うのでしょうか・・・)も、
そっくり持って行かれてしまいました。
側の部分だけ残すことは不可能ですか?

165さんがおっしゃられた通り×だけ消したいのですがそれはどうやっても無理でしょうか?
(ダイアログなので、最小化&最大化ボタンは消えるのですが・・・)


167 :デフォルトの名無しさん:04/11/23 18:27:57
>>166
Swing 使えば出来るんじゃね?

168 :デフォルトの名無しさん:04/11/23 20:22:14
>>151
アリガト!!!
かなり遅レススマソ


169 :デフォルトの名無しさん:04/11/23 21:15:24
値を文字列型などに変換するときに
toString
(String)
("" + 〜)
などいろいろな方法がありますが
それぞれどういう意味なんでしょうか?
使い分けする際、どういうときに使うとかありますでしょうか?

ただメソッドの引数がString型でしか入れられない場合に強制的にStgringにするときとか
どれでも同じ気がしますが

170 :仕様も無しさん:04/11/23 21:28:39
 変数名とかクラス名を考えるのが面倒くさいので、機械的に
命名するプログラムを作成したいと考えています。

 日本文を入力すると英文に翻訳してくれるサイトがあります
が、そのサイトに接続して日本文を送り込み、続いて動的に作
成された翻訳後の新しいページから英文の文字列だけを取得す
ることは可能でしょうか。

 もし可能であれば、トークンに分割して頭をすべて大文字に
してスペースを抜いて連結したりして変数名やクラス名を楽に
設定できるのですが…。

 もちろんその翻訳サイトをブラウザーで開いてマウスとかで
英文のテキストを選択して、クリップボード経由で自分のアプ
リにペーストすれば良いのでしょうが、それでは手間がかかる
ので、できれば避けたいのです。

 なお、このプログラムはサーブレットとJSPで作りたいと
考えていますが、当然著作権があるので公開する事はしないで
す。 

171 :デフォルトの名無しさん:04/11/23 21:33:33
普通にJavadocを使うと、ページがクラス毎に分かれますが、これを、全て1ページにする
にはどうすれば良いでしょう?

印刷の手間を簡略化したいのですが…

172 :デフォルトの名無しさん:04/11/23 21:39:40
textareaを読み取り専用にするにはどうしたらよいでしょうか

173 :デフォルトの名無しさん:04/11/23 21:42:29
>161
クラスファイルがどこにあるのか分からなかったら
VMがクラスをどこからロードして良いやら分からんでしょーが。
「探さなくてもカレントディレクトリにあるじゃん!!」と言うかも知れないが
そのプログラムを実行するときは、逐一そのクラスファイルがあるディレクトリに
移動してから実行するのか?
あとパッケージがどうたらいうのも絡むがその辺まで語るとボロが出るので勘弁。

174 :デフォルトの名無しさん:04/11/23 21:44:08
>170
できるできない、ということなら、できる。
要するにそのサイトに対して適宜リクエストを投げて、帰ってきたhtmlドキュメントを
パースして必要なとこだけ取ってくればよろしい。

175 :174:04/11/23 21:44:49
×帰ってきた
○返ってきた

ウルトラマンじゃないんだからさ……orz

176 :デフォルトの名無しさん:04/11/23 21:48:15
>>172
setEditable メソッドを使えばよいと思うよ。

以上。

177 :仕様も無しさん:04/11/23 21:49:40
>>174
 ありがとうございます。
 少しずつ勉強してみたいと思います。
>>175
 帰ってきた==ジャック
 なので、文字列を乗っ取る(ジャックする)プログラムには
これでいいのです。

178 :デフォルトの名無しさん:04/11/23 21:54:44
Javaアプリケーションにファイルをドラッグ&ドロップすることは可能ですか?


179 :デフォルトの名無しさん:04/11/23 21:55:28
>>171
全部を一つのpdfにまとめて出力するdocletがネットのどこかに転がってたよ。
どこにあったかは覚えてないから自分で探してくれ。

180 :デフォルトの名無しさん:04/11/23 21:56:31
>>178
可能。
ここで聞くより自分で検索してみた?そっちの方が速いと思うんだけど。

181 :178:04/11/23 21:57:10
スマソ
http://www2s.biglobe.ne.jp/~dat/java/strikes/java.awt.dnd.html
このへんで出来そう。


182 :172:04/11/23 21:59:02
できました。ありがとうございました。

183 :デフォルトの名無しさん:04/11/23 22:10:22
>>170
著作権があることと公開しないことは全く関連しません。
そういうエラそうなことは著作権やコードの公開についてお勉強してから言ってください。
オープンソースプロダクトには著作権がないと誤解されるので迷惑です。

184 :デフォルトの名無しさん:04/11/23 22:17:16
翻訳サイトに著作権があるから公開しないって話じゃないのかね

185 :デフォルトの名無しさん:04/11/23 22:36:44
おまいらあたまいいな

186 :デフォルトの名無しさん:04/11/23 22:49:37
すいません、前スレの最後の方で、あるゲームのサイトを探していた者です。
今過去ログを見れなくなってしまったのでもう一度質問してもよろしいでしょうか?

 ・パズル形式のシンプルなゲームが多く揃っていて量、質ともに良い。
 ・java プログラム ゲーム等のキーワードで検索しても出てこない。
  (一度行ったことがあったのですが行き方を忘れてしまいました。)
 ・パズルの一例としては以下のようなものがある。
  
   →→→ ←←←
  
  と矢印が設置してあり、1つ、もしくは1つとばし(例: ←← 、←← )
  が可能で矢印の向きのみ進行が可能。
  最終的に
   ←←← →→→
  となると勝利とする。
 
  以上のようなパズルが他にも多種在るサイト。

 もし前スレで教えてくださった方がいましたら申し訳ありません。
 再度教えていただけると幸いです。



187 :デフォルトの名無しさん:04/11/23 23:17:16
>>186
http://ttoyo.milkcafe.to/java/shift/Shift.html

188 :デフォルトの名無しさん:04/11/24 00:01:00
配列をソートして、ソート前の添字を使いたいのですが、適したクラスはありますか?
例えば、{ 14, 26, 13, 8, 25 } をソートして { 26, 25, 14, 13, 8 } にして
26のソート前の添字(1)が知りたいのです。

189 :デフォルトの名無しさん:04/11/24 00:01:38
age

190 :デフォルトの名無しさん:04/11/24 00:08:10
他のクラスのメソッドなどを呼び出しするときに
引数などをを使わずに、どのクラス(クラス名)から呼び出したか
そのメソッドが判断する方法とかあるのでしょうか?

つまり
Public Class Aho{
Hoge hoge = new Hoge();
hoge.hoge1();
}
とあった場合、上記記述だけでHogeクラスのhoge1はAhoクラスから呼ばれたことを認識できて
その情報を保持できるのでしょうか?

191 :デフォルトの名無しさん:04/11/24 00:23:37
>188
勝手にソート前の添え字をMapにでも保存しておけ。
ソート前の配列を保存しておいてindexOfでもいいがな。

>190
Exception#getStackTraceElement()でとれなくもないが
ログでも吐くんじゃないかぎり設計を見直した方がよさげ。

192 :デフォルトの名無しさん:04/11/24 00:38:25
>>191
ちょっとしたログを吐きたいので
ログクラスでログを吐くとき、それを呼び出したクラス名も欲しかったのです

193 :デフォルトの名無しさん:04/11/24 00:44:52
DBをSQLで取得してその内容をExcelに吐き出したいのですが
流れとしてDB→CSV→Excel2000なんですが

おそらくDB→CVSはJavaだけでも可能だと思いますが
CVS→Excelへの変換、格納もJavaだけで可能でしょうか?
Excelのフォーマットも考慮する場合、しない場合あるとおもいますが
やはりVBAなど使わざるを得ないのでしょうか?

194 :デフォルトの名無しさん:04/11/24 00:47:09
>>193
POIを使うと良いと思うよ。POIの情報は次のURLから調べられるよ。
ttp://jakarta.terra-intl.com/poi/

以上。

195 :デフォルトの名無しさん:04/11/24 00:51:07
POIのフォーマットはexcel97形式だったと思う。
だから2000で読むとき「古いバージョン・・うんたら」って出るかもね。

最新のexcelだとxmlも読めるから、xmlでやった方がいいかもね。


196 :194:04/11/24 00:51:15
>>193
より正確にはPOIの成果物の一つであるHSSFを使うことになると思うよ。
HSSFについては次のURLから情報を得ることができるよ。
ttp://jakarta.terra-intl.com/poi/hssf/index.html

以上。

197 :デフォルトの名無しさん:04/11/24 00:56:23
POIは確かに便利だね。俺も使ってるけど。
ただ、ちょっと制約が多い。
開発も終了してるし。アパッチさんもあんまり力入れてないっぽいな。Excelだけに。
POIの名前の由来からしてあんまり肯定的じゃないし。。
業務で本格的に使うにのにはちょっと微妙かも。


198 :デフォルトの名無しさん:04/11/24 01:11:44
>>197
開発終わってるの?

やはりそんなに使われなかったの?
それともMS製品など使う方がユーザにとって何かと都合よかったのか?

199 :デフォルトの名無しさん:04/11/24 01:17:16
>161
まあすでに>173が書いてるけど、プログラムの中で「String s = new String("hoge");」とか
すると、JVMはどっかから「String.class」を見つけ出してロードしないといけないだろ。

「java」とコマンドをうったら、OSがどっかからjavaコマンドを探してくるのと似たような
ものだ。ちなみにOSはこのときに「PATH」変数に書かれた場所を探す。

もしカレントディレクトリにクラスファイルがあったとしても、クラスパスにカレントディレクトリ
が書かれてないと、探してくれなくて、NofFoundになる。

「全部のディスクを探す訳にはいかない」「もし探しても、同じclassファイルが複数
あった場合、どちらをロードしたらいいかわからない」というのが理由かな。
ロードの優先順位はシステムクラスまで含めていうとややこしい構造になってるけど、
クラスパスについては「書いた順に左から探していって、最初に見つかったものをロードする」
システムクラスはクラスパスより優先順位が高いところに置かれている。

あとはセキュリティの問題もある。大げさにいえば、String.classを勝手に差し替えられて、
ディスクを消去するような処理をされる可能性もある。ユーザがクラスパスに指定したところ
からしかロードしないことで、ある程度の抑止にはなる。

200 :デフォルトの名無しさん:04/11/24 01:49:11
宿題スレに書いてしまったので、こっちに移動。

Javaアプレットのキー入力で KeyAdapter使ってるのですが。
TABキーや矢印キーがkeyPressed() , keyReleased()で取得できません。
AppletviewerやMicrosoftVM では正常に動作するのに、
SUNのVMだと動きませんが、解決方法はありますか?

201 :デフォルトの名無しさん:04/11/24 03:06:34
昔と比べて書き込みペースがトンでもなく速くなってるな、このスレ。

202 :デフォルトの名無しさん:04/11/24 08:10:14
perlのgetpwnam()と同じ動きをするメソッドがJavaに有るのでしょうか?

uidとかの取得ならUnixSystemなどが有ったのですが・・・
ttp://java.sun.com/j2se/1.4/ja/docs/ja/guide/security/jaas/spec/index.html
自力で/etc/passwdを読みに行くっていうのも有りなんですがNISを利用していた場合などできないと思います。
教えてください。お願いします

203 :デフォルトの名無しさん:04/11/24 12:29:26
>>201
良くない?

204 :デフォルトの名無しさん:04/11/24 14:08:33
ダイアログ操作について質問があります。
以下のような、あるOSコマンドを実行する際に、
コマンドの終了結果を受け取るまでダイアログを表示し、
コマンドの終了結果を受け取ったらダイアログを破棄するメソッドを作ったのですが
ダイアログの中のボタンやラベルが、コマンド終了後に表示されてしまいます。
何が悪いのでしょうか?申し訳ありませんがご教授おねがいします。
次のレスにコードを書きます。


205 :204:04/11/24 14:10:22
public void sysCommandExec(String cmd) throws Exception {
JDialog dlg = new JDialog();
dlg.setResizable(false);
JPanel centerPane = new JPanel();
JPanel southPane = new JPanel();
JLabel msgLabel = new JLabel("メッセージ");
JButton cancelButton = new JButton("ボタン");
dlg.getContentPane().setLayout(new BorderLayout());
dlg.getContentPane().add(centerPane, new BorderLayout().CENTER);
dlg.getContentPane().add(southPane, new BorderLayout().SOUTH);
centerPane.add(msgLabel);
southPane.add(cancelButton);
dlg.pack();
dlg.setVisible(true);

try {
Process process = Runtime.getRuntime().exec(cmd);
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
process.waitFor();

if (process.exitValue() == 0){ //正常終了したらダイアログを閉じる
dlg.dispose();
}else{
}
} catch (Exception ex) {
}
}

206 :デフォルトの名無しさん:04/11/24 14:31:00
class Eqv{
public int index;
public int repf;
public int neg;
public int perm;
public int num;
static Eqv[] NPtable={
new Eqv(0,0,0,15,1),
new Eqv(1,1,15,0,2)
                 
};
public Eqv(int i,int r,int n,int p,int u ) {
index=i;
repf=r;
neg=n;
perm=p;
num=u;


}

}
CのプログラムをJAVAに直そうとしているのですが
構造体の部分を上のソースのように定義したのですが
配列の初期化の部分が上のソースのような少ない行数だとうまくいくのですが
65535行分書き込むと『コードが大きすぎます』というエラーがでてしまいます
これはどのように対処すればいいのでしょうか?
よろしくお願いします

207 :デフォルトの名無しさん:04/11/24 14:50:44
>>206
一つのメソッド(初期化もこれに数える)が64Kbyteを超えてはいけないのです。
パッケージと同じ場所に初期化リソースでも置いてそこからReader経由で読み出して行くように変更することをおすすめします。



208 :デフォルトの名無しさん:04/11/24 14:54:54
.netとjavaしかわからない厨房なんですが、
javaのJNI技術でC#で作った.dllファイルのメソッドにアクセスするにはどうしたらいいですか?


209 :デフォルトの名無しさん:04/11/24 15:05:39
>>204
JDialog出現後に、その中にあるボタンやラベルが表示(描画)されるのは
JDialogのpaint()内であり、そのpaint()がシステムから呼び出される
ペイントイベントの発生は、現行のメソッド(sysCommandExec)が
終了した後だからです。 解決策としては

JDialog dlg = new JDialog();

final JDialog dlg = new JDialog();
として
dlg.setVisible(true);より下の部分を
new Thread() {
public void run() {
try {
Process process = Runtime.getRuntime().exec("");
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
process.waitFor();
if (process.exitValue() == 0){ //正常終了したらダイアログを閉じる
dlg.dispose();
}else{
}
} catch (Exception ex) {
}
}
}.start();
としてみてください。


210 :204:04/11/24 15:33:54
>209さん

できました!
とっても勉強になりました!
ホントにありがとうございます!


211 :デフォルトの名無しさん:04/11/24 16:38:18
>>207
ありがとうございました
早速対処します

212 :デフォルトの名無しさん:04/11/24 19:17:17
>>191
> >188
> 勝手にソート前の添え字をMapにでも保存しておけ。
> ソート前の配列を保存しておいてindexOfでもいいがな。

TreeSet, TreeMapを使うのがいいと思うのだが


213 :デフォルトの名無しさん:04/11/24 19:19:40
>>197
漏れ的にはOpenOffice版POIに期待しているのだが。

OpenOfficeフォーマットがISO標準になるかもしれないからな。
そうすればM$Officeフォーマットが衰退してゆくと思われ
そう簡単な話じゃないけど期待はでかい

214 :デフォルトの名無しさん:04/11/24 20:14:44
与えられた文字列が有効なファイル名かどうかを調べたいです。
環境によってCOMとかCONとかPRNが駄目だったりするので
そのへんも調べるにはどうしたらいいですか?


215 :デフォルトの名無しさん:04/11/24 20:17:59
だから上にも書いてあるが、excelもopenofficeもxmlになるんだよ。

216 :質問:04/11/24 21:29:52
JavaアプリからLog4jでログ出力したいのですがうまくいきません。

JavaアプリはJARファイルになっていてMANIFEST.MFは以下のような内容です。
 Manifest-Version: 1.0
 Main-Class: jp,co.hoge.App
 Class-Path: lib/commons-logging.jar lib/log4j-1.2.9.jar conf/log4j.properties

ディレクトリ構成は以下のような感じです。
app.jar
lib/commons-logging.jar
lib/log4j-1.2.9.jar
conf/log4j.properties

ここで
java -jar app.jar
と実行すると、
log4j:WARN No appenders could be found for logger (jp.co.hoge.App).
log4j:WARN Please initialize the log4j system properly.
というようなエラーが出たのでクラスパスの問題と思い
java -jar app.jar -cp conf
としてみましたが、結果は同様でした。

他にもMANIFEST.MFのClass-Pathの書き方や、-cpの指定の仕方を変えてみたり
しましたが、結果は変わりませんでした。

JARファイルのJavaアプリからLog4jを使う方法について教えてください。<(_ _)>

217 :デフォルトの名無しさん:04/11/24 21:39:08
プロパティファイルに書き込んだ(Propertiesクラスのstore関数にて)
日本語文字列を、JSPで表示される場合に
String( str.getBytes("unicode") , "SJIS"); とunicodeからSJISに
変換をかけているのですが、『〜』などが正常に表示できません。

どうすればよいでしょうか?
プロパティファイルには『\u301C』で書かれています

218 :デフォルトの名無しさん:04/11/24 22:06:15
>>217
Windows-31Jを使うとか。

219 :デフォルトの名無しさん:04/11/24 22:30:46
>>216
単純な方法だが、俺はjarのルートに置いたら出来た。

>>217
Windows-31Jを使え。
unix系のS-JISとms系のS-JISは違う。

220 :質問:04/11/24 22:41:28
>>219
>単純な方法だが、俺はjarのルートに置いたら出来た。

その方法で出来るのは知っているのですが、知りたいのはJARの
外にプロパティファイルがある場合の方法なのです。
言葉足らずですみません。

221 :デフォルトの名無しさん:04/11/24 23:13:12
>220
泥臭いが、lib/commons-logging.jarとlib/log4j-1.2.9.jarの両方
-cpで指定してみたらどうだろう?
そっから攻めていけないかなぁ。やってないから分からんけど、スマソ。

222 :質問:04/11/24 23:32:52
>>220
>泥臭いが、lib/commons-logging.jarとlib/log4j-1.2.9.jarの両方
>-cpで指定してみたらどうだろう?
>そっから攻めていけないかなぁ。やってないから分からんけど、スマソ。

そのあたりも一通りやってみましたが、いずれもうまくいきませんでした。
なので、クラスパスって何?みたいな感じなのです。
-cpとかMANIFEST.MFのClass-Pathとか環境変数CLASSPATHとか
すべてを完全に無視してくれるのです。

あと言い忘れてましたがcommons-logging.jarやlog4j-1.2.9.jarなどは
ちゃんと認識しているようでした。
log4j.propertiesだけがどのような指定をしても無視されてます。

223 :199:04/11/24 23:58:37
>>199
いまさらだが、補足。
> もしカレントディレクトリにクラスファイルがあったとしても、クラスパスにカレントディレクトリ
> が書かれてないと、探してくれなくて、NofFoundになる。

クラスパスが)_全く_セットされてなかったら、カレントディレクトリがデフォルトになります。

224 :デフォルトの名無しさん:04/11/25 00:11:37
>>222
それ、log4j自体は動いてて、log4jの設定ファイルで logger設定(この場合log4j.logger.jp.co.hoge.App)の
appendar設定がされてないってことはないですか。あとrootLoggerの設定がおかしいとか。

一応プロパティファイルの中身も貼ってくれませんか。

225 :デフォルトの名無しさん:04/11/25 00:21:15
>>222
普通 *.properties ファイルはクラスパスから読み込まれるんだから
カレントディレクトリ (.) をちゃんと加えてるか?
-cp で jar ファイルをしていしただけだと jar の中身に *.properties ファイルが
一緒に固められていないと当然読み込まれないぞ。

226 :デフォルトの名無しさん:04/11/25 00:25:22
訂正。

216を見るとカレントディレクトリじゃなく conf だな。
ちなみに -jar で jar を指定すると -cp は無視される。
なので MANIFEST.MF の Class-Path のところを
lib/commons-logging.jar;lib/log4j-1.2.9.jar;conf とすべきだな。

227 :デフォルトの名無しさん:04/11/25 01:10:35
216と226を比べてふと思ったんだけど

jarのMANIFEST.MFのクラスパス指定、
パスデリミタが' 'だったり、ディレクトリ区切りが'/'でパスデリミタが';'
なんてことになってたらその指定って有効なんだろうか?
試してみりゃ分かるんだけどもう眠気が限界なので後は任せた_=o

228 :デフォルトの名無しさん:04/11/25 02:22:31
>>214
試しにそのファイル名で一時ファイルを作ろうとしてみる。
失敗したら無効と考えるのがいいんじゃないか。
正規表現という手もあるがシステム依存なのでお勧めできない

229 :デフォルトの名無しさん:04/11/25 08:55:57
>>224

log4j.propertiesの内容です
log4j.rootCategory=DEBUG, APP, APP_DEBUG
log4j.category.jp.co.hoge=DEBUG, APP_ACCESS

log4j.appender.APP=org.apache.log4j.FileAppender
log4j.appender.APP.File=log/app.log
log4j.appender.APP.Threshold=INFO
log4j.appender.APP.layout=org.apache.log4j.PatternLayout
log4j.appender.APP.layout.ConversionPattern=[%d{yyyy/MM/dd HH:mm:ss}] [%p] %m%n

log4j.appender.APP_DEBUG=org.apache.log4j.FileAppender
log4j.appender.APP_DEBUG.File=log/appdebug.log
log4j.appender.APP_DEBUG.Threshold=DEBUG
log4j.appender.APP_DEBUG.layout=org.apache.log4j.PatternLayout
log4j.appender.APP_DEBUG.layout.ConversionPattern=[%d{yyyy/MM/dd HH:mm:ss}] %m%n

log4j.appender.APP_ACCESS=org.apache.log4j.FileAppender
log4j.appender.APP_ACCESS.File=log/appaccess.log
log4j.appender.APP_ACCESS.Threshold=FATAL
log4j.appender.APP_ACCESS.layout=org.apache.log4j.PatternLayout
log4j.appender.APP_ACCESS.layout.ConversionPattern=[%d{yyyy/MM/dd HH:mm:ss}] %m%n

尚、このlog4j.propertiesは
・JARの中にlog4j.propertiesを含めた状態
・JARにせず、すべて展開した状態
という状況で正常に動作しています。

JARから分離してプロパティファイルを配置した場合、プロパティファイルが
クラスパスにあってもそれを見に行ってくれないという動作に見えます。
(MANIFEST.MFに書いたとしても)

230 :デフォルトの名無しさん:04/11/25 09:01:23
>>225
>>226

そのように指定しましたが、うまくいきません。
confの順番も変えてみましたが同じです。(先頭にしたり、最後にしたり)

他にもconf/log4j.propertiesというのも試してみましたがダメでした。

231 :デフォルトの名無しさん:04/11/25 09:10:34
>>227
世の中のHPなどを見ていると、デリミタがスペースだったので216のような
書き方をしていました。
尚、デリミタをセミコロンで試してみたところjava.lang.NoClassDefFoundErrorに
なったので、セミコロンは向こうのようです。
デリミタがスペースだと、java.lang.NoClassDefFoundErrorは消えて
log4jのエラー
log4j:WARN No appenders cound be found for logger (jp.co.hoge.App).
log4j:WARN Please initialize the log4j system properly.
が出力されるようになりましたので、デリミタはスペースの方が正しいのでしょう。

この時のMANIFEST.MFには
Class-Path: lib/commons-logging.jar lib/log4j-1.2.9.jar conf
と指定しています。

232 :デフォルトの名無しさん:04/11/25 09:38:12
質問です〜
JAVAの言語で,デレクトリィ内にあるXMLファイル群を調べる
為にはどうすればよいのでしょうか? (以前SAXなどについてここの掲示板で教えていただきましたが、この部分がまだわからないちょ)
ファイル一覧や、一部のファイルを調べるというのは、解るのですが、
デレクトリ内には、複数のXMLデータがあり、それを一つ一つ調べていきたいのです。

皆さんからは簡単かも知れませんが、プログラムの初心者のためどうすればよいのか解りません。
もしこのような、サンプルプログラムがあれば見せていただきたいのですが、
これを実現するための資源としてどんな本があるでしょうか?

どうぞ宜しくお願いします

233 :デフォルトの名無しさん:04/11/25 10:16:35
>>232
指定したディレクトリ内のXMLファイルをすべて取得するならこれ。
java.io.File#listFiles(java.io.FilenameFilter)
ttp://java.sun.com/j2se/1.4/ja/docs/ja/api/java/io/File.html#listFiles(java.io.FilenameFilter)
java.io.FilenameFilter
ttp://java.sun.com/j2se/1.4/ja/docs/ja/api/java/io/FilenameFilter.html
listFiles()はFile配列を返すので、File配列の要素に対して
toURL().toString()した戻り値をXMLパーサに渡せば
アクセスできるようになるでしょう。

「XMLファイルを調べる」が、XMLファイルの何を調べるか不明ですが、
DOMやSAX使ったサンプルコードならここにあります。
ttp://www.hellohiro.com/xmldom.htm
ttp://www.hellohiro.com/xmlsax.htm

234 :デフォルトの名無しさん:04/11/25 10:47:57
>>233
早速有難うございます。^^

>「XMLファイルを調べる」が、XMLファイルの何を調べるか不明ですが
XMLファイルを調べるというのは、指定したキーワード(自分で入力した文字列)に対し
特定のタグの間にあるキーワードと一致した時
そのXMLファイルだけ抽出するということです。
これについては、どのようにすればよろしいでしょうか?
先ほど指定された、サイトへ行きましたが、解らないです〜



入力:あ

出力:<a>あ</a>のあるxmlファイルだけを抽出するということです。




235 :デフォルトの名無しさん:04/11/25 10:54:15
>>324
>>xmlファイルだけを抽出する

この言葉の意味が分かりません。
指定ディレクトリの全XMLファイルの中から、<a>あ</a>の部分がある
XMLファイルのファイル名を列挙するとの事ですか?


236 :デフォルトの名無しさん:04/11/25 10:56:08
>>234
あと、「特定のタグ」と言いますが、
そのタグの指定はどうするのですか?

237 :デフォルトの名無しさん:04/11/25 11:38:07
MergeSortのそーすキボンヌ

238 :デフォルトの名無しさん:04/11/25 11:40:35
>>234
Javaでコード書くよりも、XSLTにかけた方が早いような気がしてきた。
やり方は思いつかないが。
xgrepとかxmlgrepとかあるらしいから、その辺がつかえるかも?

239 :デフォルトの名無しさん:04/11/25 11:53:29
>>231
うちで試してみたら再現しました。結論から言うと、-jarを使うとクラスパスが無視されます。
Sunのこのページには、クラスロードの方法についてこう書いてます。

http://java.sun.com/j2se/1.4/ja/docs/ja/tooldocs/findingclasses.html
「-jar オプションで指定された JAR アーカイブ。この値は、ほかのすべての値をオーバーライドする。
このオプションを使用すると、すべてのユーザクラスが、指定されたアーカイブから検索される」

なので、-jarで実行した場合は、MANIFEST.MF内でクラスパスを指定するか、
すべてをjarファイルにマージしないといけないですね。よく見たらjavaコマンドの解説にも書いてました。

「When you use this option, the JAR file is the source of all user classes, and
other user class path settings are ignored.」

ちなみに、MANIFEST.MFのClass-Path:指定は、jarファイルしか指定できません。これは本来、
アプレットが関連jarファイルをロードするための指定ですから。

で、対策はlog4jのエラーメッセージに答えが書いてあります。システムプロパティで指定しろと。

java -Dlog4j.configuration="file:./conf/log4j.properties" -jar App.jar

log4j.configurationプロパティに、ファイルの位置をURLで指定します。

ちなみにおまけですが、次の起動方法でも起動します。App.jarをクラスパスにぶち込みます。
java -cp App.jar:lib/commons-logging.jar:lib/log4j-1.2.9.jar:conf jp.co.hoge.App

240 :デフォルトの名無しさん:04/11/25 13:10:30
<<235
<<236

>>xmlファイルだけを抽出する
>この言葉の意味が分かりません。
>指定ディレクトリの全XMLファイルの中から、<a>あ</a>の部分がある
>XMLファイルのファイル名を列挙するとの事ですか?

解りづらく申し訳ありません。
その通りです。

>あと、「特定のタグ」と言いますが、
>そのタグの指定はどうするのですか?

そこがわからないです〜。。
特定のタグというのは、<Keyword>というタグなんですか。
入力が「ギコ」だと,XMLファイル群から<Keyword>のタグ内にある
<Keyword>ギコ<Keyword>
が記述されている。ファイル名を取得する事になります。
これ自体、本当に出きるか、解らないのですが、どうすればよろしいでしょうか。
解決方法があると嬉しいです。


241 :デフォルトの名無しさん:04/11/25 13:48:56
>>240
自分で組もうとせずにgrepでも使ったら?

242 :デフォルトの名無しさん:04/11/25 14:06:55
>>240
サンプル
static void extract(String dirname, String text) throws Exception {
File dir = new File(dirname);
if (!dir.exists()) {
return;
}
File[] file = dir.listFiles(new FileFilter() {
public boolean accept(File pathname) {
return pathname.getName().toLowerCase().endsWith(".xml");
}
});
DocumentBuilderFactory fac = DocumentBuilderFactory.newInstance();
DocumentBuilder db = fac.newDocumentBuilder();
loop: for (int i = 0; i < file.length; ++i) {
Document doc = db.parse(new FileInputStream(file[i]));
Element root = doc.getDocumentElement();
NodeList list = root.getElementsByTagName("Keyword");
for (int k = 0; k < list.getLength(); k++) {
Node node = list.item(k);
NodeList cld = node.getChildNodes();
for (int m = 0; m < cld.getLength(); m++) {
if (cld.item(m).getNodeType() == Node.TEXT_NODE
&& cld.item(m).getNodeValue().trim().equals(text)) {
System.out.println(file[i].getName());
continue loop;
}
}
}
}
}


243 :デフォルトの名無しさん:04/11/25 14:33:42
中身がテキストファイルと同様なオブジェクトみたいなのってありますか?

...処理 > BufferedWriter > 出力 > テキストファイル > 入力 > BufferedReader >処理...

という流れを一時ファイルを作らずに行う方法があればよいのですが。
一行読み込み処理をするのに改行ごとに行いたい。

244 :デフォルトの名無しさん:04/11/25 14:38:45
>>243
Writerの処理をするスレッドと、Readerの処理をするスレッドを作って、
PipedOutputStreamとPipedInputStreamをつかって繋げる。
Writer側がPipedOutputStreamに書き込んで、Reader側がPipedInputStream
から読めばいい。

245 :デフォルトの名無しさん:04/11/25 14:42:28
ありがとうございます!やってみます

246 :デフォルトの名無しさん:04/11/25 14:42:47
>>244
別スレッドではないのでは?

>>244
StringReader/WriterかByteArrayInputStream/OutputStream

247 :デフォルトの名無しさん:04/11/25 14:48:36
アプレットってどうやって実行するのでしょうか?
コンパイルして、クラスファイルが出来たあとどうしたらいいのでしょうか?


248 :デフォルトの名無しさん:04/11/25 14:51:40
>>247
検索サイトで調べるといいんじゃないかな

249 :デフォルトの名無しさん:04/11/25 15:06:45
>>246
スレッドであってるでしょ?
少なくともプロセス間通信に使うもんではないよ?

250 :デフォルトの名無しさん:04/11/25 15:07:41
>>247
appletviewerで実行する。

251 :デフォルトの名無しさん:04/11/25 15:17:07
>>249
いや、そういう意味ではなく>>243がやりたいことが

252 :デフォルトの名無しさん:04/11/25 15:55:21
>>251
あーなるほど。そういうことかね。

「一行読み込み処理をするのに改行ごとに行いたい。」ってんで、UNIXにおけるパイプのような
ことがしたいんだろうと単純に考えたんだけど。

253 :デフォルトの名無しさん:04/11/25 19:06:26
ども。
それでやってみます。


254 :253:04/11/25 19:07:28
すまん。>>253>>228宛てです。


255 :デフォルトの名無しさん:04/11/25 19:39:13
JAppletから,JWindowを思った位置に開く事ができません.
アプレットヴューアですと開けるのですが,htmlに埋め込むとずれま
す.みなさんどうしてるんですか?

256 :デフォルトの名無しさん:04/11/25 21:48:17
>>255
俺は、ダイアログをアプレットの中央に出したかったけど、
あきらめて、画面の中央とかにしてる。

257 :デフォルトの名無しさん:04/11/25 23:56:01
double MIN = 0.0;
double MAX = 10.0;
double dt = 0.01;
euler(MIN, MAX, dt) //積分結果の最後の値を返す
0から10.0まで積分計算をし、積分結果の最後の値を返す関数eulerがあるのですが、
途中の計算過程も出力するようにするにはどうすればいいのですか?


258 :デフォルトの名無しさん:04/11/26 00:26:31
JavaでFovariteにあるサイトのショートカットを見るURLチェッカー
を使用してNotFoundや使われていないサイトを削除したいのですが
そういうAPIやメソッドってあるのでしょうか?

259 :デフォルトの名無しさん:04/11/26 00:57:04
Fovarite って何だ?

260 :デフォルトの名無しさん:04/11/26 01:05:10
>>259
favorite→ツールバーにあるURLのお気に入り
favoriteフォルダに格納されている

261 :デフォルトの名無しさん:04/11/26 01:17:26
よく、JAVAで数字とか文字列を戻り値として返す事ができると聞くが、
ファイルを戻り値として返す事ってできるのかな・・・??
(ファイルの名前の取得とかは、できるんだけどね〜。。どうするのかな?)

262 :デフォルトの名無しさん:04/11/26 02:08:07
>>261
??
return new java.io.File("C:/WINDOWS/notepad.exe");
こういうことなら普通にできるが??

263 :デフォルトの名無しさん:04/11/26 02:08:39
>>261
Java を使ったことがありますか?

264 :デフォルトの名無しさん:04/11/26 09:44:18
スレッドをいくつも起動させる中で、別の場所にセットした配列データ、
例えば{test1,test2,test3}などから、1番目に起動したスレッドはtest1、
2番目はtest2などをスレッドの中で取り出して、微妙に処理を変えることは可能でしょうか?



265 :デフォルトの名無しさん:04/11/26 10:17:56
スレッドのコンストラクタに配列渡せばいいんじゃ。

266 :デフォルトの名無しさん:04/11/26 11:02:21
if文またはswitch文で処理の分岐は可能でしょ.
配列は別の場所にあるんだから,
それをどうにかして参照すればいいじゃん.

267 :デフォルトの名無しさん:04/11/26 11:44:39
こうかな。

class SomeOperation implements Runnable{
 private TestData data;
 public SomeOperation(TestData data){this.data = data;}
 public void run(){
  // dataを使う何らかの処理
 }
}

TestData[] data = initializeData(); // 使用するデータの初期化、生成
for(int i = 0; i < data.length; i++){
 Thread thread = new Thread( new SomeOperation(data[i]) );
 thread.start();
}

268 :デフォルトの名無しさん:04/11/26 13:05:09
win2k、jdk5.0で、awtやswingを使うとSystem.exit(n)しても
終了せずに固まってしまいます。
javaコントロールパネルや他のjavaアプリケーションも終了しません。
コンソールのみだと大丈夫みたいです。
原因のわかる方いらっしゃいますか?

269 :デフォルトの名無しさん:04/11/26 16:30:19
win2k
java version 1.4.1-b21
oracle9i

の環境で、検索結果0件のResultSetのFirst()がTrueを返して来て困っています。

なんで一件もHITしてないのに、1レコード目に移動できるのかわかりません。
また、1レコード目に移動してから、そのレコードを操作しようとすると、
「カーソルが無効な状態です」という例外が発生してしまいます。
凄い中途半端な状態で困っています。

解決策がありましたら教えてください。



270 :デフォルトの名無しさん:04/11/26 16:40:51
すいません。ひとつ質問させてください。
Cのプログラムの中で、JAVAのプログラムを組み込んで、コンパイルして一緒に動かすことはできますでしょうか
かなり初心者でよくわからなかったため質問させていただきました。
よろしくお願いします。

271 :デフォルトの名無しさん:04/11/26 16:55:07
>>270
無理

272 :デフォルトの名無しさん:04/11/26 16:57:09
>>269
next使えば?

273 :デフォルトの名無しさん:04/11/26 17:01:16
>272

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

beforeFirstの状態からnext()を使用しても、
なぜか1レコード目には移動できてしまうのです。

1レコードもHITしていないのですが。

ちなみに、このソースをLINUX環境に上げて動かすと、First()もNext()も
beforeFirstの状態から、Falseを返してきてくれます。



274 :デフォルトの名無しさん:04/11/26 17:13:56
>>273
JDBCDriverのバージョンは?

275 :デフォルトの名無しさん:04/11/26 17:19:00
>274

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

JDBCDriverのバージョン確認はどのように行えば良いのですか?

Win2k環境(上手くいかないほう)で読み込んでいるライブラリは以下のとおりです。
c:\oracle\ora92\jdbc\lib\ojdbc14.jar
c:\oracle\ora92\jdbc\lib\classes12.zip


276 :デフォルトの名無しさん:04/11/26 17:21:24
275です。

これかなと思ったので書きます。
コンパネ→ODBC→ドライバから持ってきました。

Oracle in OraHome92 9.02.00.00

です。

277 :デフォルトの名無しさん:04/11/26 17:40:00
>>276
それはODBCのバージョンだ。
JDBCのバージョンはojdbc14.jarの中のMANIFEST.MFに書いてある。
でも、推測するに9.0.2だろうね。

だいたい同じ環境だが、Win上でそんなこと起こったこと無いなぁ。
Javaのバージョンが違うくらいだ。

278 :デフォルトの名無しさん:04/11/26 17:49:19
>>268
まず,
System.exit(n)
ってnに何が入ってるの?
とりあえず,普通に
System.exit(0);
に直してみ.
それでも終了しないんだったら,
どっかのコードがおかしいとしか言えない.

決して1.5にバグがあるなんて思わないでくださいね.

279 :デフォルトの名無しさん:04/11/26 17:59:49
>277

バージョンの確認方法、ありがとうございました。
おっしゃる通り、9.0.2でした。
Specification-Version: "Oracle JDBC Driver version - 9.0.2.0.0"

後、気になっているのは、

sel_stmt = con.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);

現状はこのコードなんですが、ResultSetのTYPEを、TYPE_FORWARD_ONLYにしてnext()を使用すると正常に判断してくれるのです。
ただ、それだとスクロールが順方向にしか移動できないため、プログラム的に使えないのです。

ドライバーも一緒だとすると、やっぱコーディングが怪しいですかね・・。


280 :デフォルトの名無しさん:04/11/26 18:04:50
>>279
Oracle付属のjava(1.3相当)が動いていて、それが悪さしているとか?全くのあてずっぽうだけど。
とりあえずjava -versionの結果が見たい。

281 :デフォルトの名無しさん:04/11/26 18:12:35
>>270
ttp://www.ki.rim.or.jp/~kuro/Java/JNI/JNI-07.html

282 :デフォルトの名無しさん:04/11/26 18:43:53
>>279
http://otndnld.oracle.co.jp/document/oracle9i/920/unix_all/J06496-01.pdf
関係ないかもしれんが、これの101ページを見るといいかも。

283 :デフォルトの名無しさん:04/11/26 18:53:16
>280

お返事ありがとうございます。
java -versionの結果は以下の通りでした。

java version "1.3.1_01"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1_01)
Java HotSpot(TM) Client VM (build 1.3.1_01, mixed mode)

私はJBUILDER8を使用して開発しているのですが、そこには
java version 1.4.1-b21
と設定してあります。

>282

ありがとうございます。
見てみます。


284 :デフォルトの名無しさん:04/11/26 18:58:42
http://www.itmedia.co.jp/enterprise/articles/0411/24/news037.html

お前らちゃんと対策したか?
放置しておくとめちゃくちゃ危険だぞ、これ。

285 :デフォルトの名無しさん:04/11/26 20:08:17
JDKにあるjavaのAPIのメソッドの中身を見たいのですがどうやってみるのですか?

286 :デフォルトの名無しさん:04/11/26 20:14:25
>>285
%JAVA_HOME%\src.zipのなか




287 :デフォルトの名無しさん:04/11/26 20:16:01
グラフィックなしでコンソールだけでキーの状態を取得したい場合どうすればいいんですか?
KeyListener関係はComponent関係にaddKeyListener()しなければならないので…

288 :デフォルトの名無しさん:04/11/26 20:58:56
283です。

自己レスです。
ResultSetのカーソルの動作がおかしいということで質問させて貰ってました。
解決しましたっ!!

282さんに頂いたリファレンスを見ていたら、どうもドライバーの読み込みの部分が、
自分のソースとは違うなと思いまして・・・。

// ドライバクラスをロード
Class.forName(DB_DRIVER);
con = DriverManager.getConnection("jdbc:odbc:mydb","id","password");



DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
con = DriverManager.getConnection("jdbc:oracle:thin:@server:9999:mydb","id", "password");

に書き換えたら動きました。
ありがとうございました。

前述のコードだと、オラクルのJDBCドライバーを見に行かないという事なのでしょうか。
ご教授お願いします。



289 :デフォルトの名無しさん:04/11/26 22:14:53
JavaでSSLソケットを使いたいんだけど、keytoolを使わずに済ます方法、だれか
分かりませんか?、いろいろ調べてみましたが、暗号関係はいろいろ難しくてよく
わかりませんでした。
java.security.KeyPairGenerator
とかでキーペアは作れるらしいんだけど
keystoreをkeytool使わずに作る方法がわかりません。
生成したキーペアからKeyStoreを作る事はできないんですかね?
もしくは、そんなのなしで、一発でKeyStoreを作るメソッドとか。
どなたか知っていたら教えてください。

keytool無しで、RSA暗号化、復号化をする方法は分かったから、SSLじゃなくて
鍵交換を自分で実装するという方法もありだとは思うんですが、ちと怖い。
ということでよろしくですorz

290 :デフォルトの名無しさん:04/11/26 22:39:53
國府田マリコのおっかけをやって10余年が経過した。当時大学3年生だったオレはGS美神のおキヌちゃんをやってたマリ姉に出会い、即効でファンになった。元々合コンや女の子とは縁のない生活だったが、それからはマリ姉の為だけに生きてきたようなモンだ。
毎日マリ姉の歌を聴き、毎週ラジオも聴き、もちろんハガキも出しまくって月3回必ず応援の手紙と詩を送った。イベントも全部行った。
全国ツアーで一緒に全国制覇したのも二度や三度じゃない。ファンやって二年目、握手会で俺の名前を覚えてくれてた時には嬉しくて本気で涙が出た。人生で最高の喜びだと有頂天になって、帰り道一人で吼えてた。
地元の役場の事務に就職した後も、それだけが楽しみで生きてきた。他の事は考えようとしなかった。結婚も、彼女も、友達も、そんなのは関係ない、いらないと思ってた。
そして去年の9月。信じられないものを目にした。「國府田マリ子結婚!!」目を疑った。絶対ありえない、絶対ありえない。死んでもありえない。
・・・なんであんな男が。ふざけんな。どこがいいんだ。マリ姉と釣り合わない、失礼だ。ふざけんな。ふざけんな。一週間仕事を休んだ。
失意の内に半年が経った。もうラジオも聴いてない。会員番号2ケタ前半のファンクラブも辞めた。最近になってようやく、俺も自分の幸せを掴もう…そう思えるようになってきた。
だけど俺には何も残ってなかった。20代という多感な時期に何もしなかったんだ。当たり前だ。マトモに他人と喋ったのはいつだっただろう。女の子とおしゃべりをしたのはいつだっただろう。
恋について、結婚について、そして人生について最後に考えたのはいつだったんだろう。趣味も、特技も、人間性も、協調性も。何もありゃしない。残ったのはブサイクで汚い30代の中身スッカラカンな男。それだけ。
こんなのが今更どうやって幸せ掴めってんだ。声優のおっかけは何も生み出さなかった。それに今まで気づかなかった俺は最高にバカだ。そして朝っぱらからこんなグチをネットでしかこぼせない俺は最高に惨めだ。
是非俺を笑ってくれ。蔑んでくれ。そして自分の人生をもう一度考えるキッカケにしてくれ…


291 :デフォルトの名無しさん:04/11/26 22:40:52
コピペ乙

292 :デフォルトの名無しさん:04/11/26 22:53:58
>>269
>Win2k環境(上手くいかないほう)で読み込んでいるライブラリは以下のとおりです。
>c:\oracle\ora92\jdbc\lib\ojdbc14.jar
>c:\oracle\ora92\jdbc\lib\classes12.zip

ojdbc14.jarだけにしろよ馬鹿


293 :デフォルトの名無しさん:04/11/26 22:58:42
http://dolby.dyndns.org/i-bbs/src/1095654072742.jpg



294 :デフォルトの名無しさん:04/11/26 23:06:02
>>293

目をそむけたからわからんが、グロ画像だった気がする。No Click!!


295 :デフォルトの名無しさん:04/11/26 23:11:48
どんな感じのグロ画?

296 :デフォルトの名無しさん:04/11/26 23:13:52
>>295
股を開いている女と蓮の実とのコラージュ

297 :デフォルトの名無しさん:04/11/26 23:14:00
>>289
http://java.sun.com/j2se/1.4/ja/docs/ja/guide/security/jsse/JSSERefGuide.html#WithSSLSocket

298 :デフォルトの名無しさん:04/11/26 23:36:44
javaアプレットでサウンドノベルを作りたいのですが
お勧めのHPとかありませんか?

299 :デフォルトの名無しさん:04/11/26 23:41:09
>>297
どもです。これよく読んでみます。


300 :デフォルトの名無しさん:04/11/26 23:57:46
http://hp.vector.co.jp/authors/VA006860/novel/

301 :_:04/11/27 00:20:21
このスレを愛している。

302 :デフォルトの名無しさん:04/11/27 00:38:36
>>293
昔その類の蓮乳というやつを見て
すごく気持ち悪くなって体が蕁麻疹になるんじゃないかと
思うほど痒くなったことがあるが
今ではもう慣れてしまってなんとも思わない。

303 :デフォルトの名無しさん:04/11/27 00:43:20
URL#openConnection() から得た URLConnection を
HttpURLConnection にキャストして使用しています。
サーバーへの接続のタイムアウト、
特に最初の openConnection() のタイムアウトを設定するにはどうすればよいでしょうか?
ご教授ください……
setSoTimeout を実装している Socket 関係のクラスをどこかで使うのかもしれませんが見当が付きません。

304 :デフォルトの名無しさん:04/11/27 00:54:41
クリックするごとに画像を順番に表示するにはどうすればいいんですか?

305 :デフォルトの名無しさん:04/11/27 01:08:06
>>301
僕もだよ。ハニー。

306 :デフォルトの名無しさん:04/11/27 01:11:14
http://images.google.co.jp/images?q=%E8%93%AE%E4%B9%B3&hl=ja&btnG=Google+%E6%A4%9C%E7%B4%A2

307 :デフォルトの名無しさん:04/11/27 01:14:13
>>304
>>12

308 :デフォルトの名無しさん:04/11/27 01:53:24
>>285
インストールのときにソースコードも入れるようにチェックをつけていれば
JDKのディレクトリにsrc.zipってファイルがあるはず。(でいいよな?うろ覚え)

309 :304:04/11/27 02:35:03
public class MSN012052 extends Applet implements MouseListener{

Image img01;
Image img02;
public void init(){
this.setSize(640,480);

this.addMouseListener(this);

img01=this.getImage(this.getCodeBase(),"../img/0130.jpg");
img02=this.getImage(this.getCodeBase(),"../img/0131.jpg");
}


310 :304:04/11/27 02:35:51
public void paint(Graphics g){

g.drawImage(img01,1,1,this);

g.drawString("test",10,10);

}
public void mouseClicked(MouseEvent e){

}

public void mouseEntered(MouseEvent e) {

}

public void mouseExited(MouseEvent e) {

}

public void mousePressed(MouseEvent e) {

}

public void mouseReleased(MouseEvent e) {

}
}

クリックするごとにimg01から順番に02 03って表示させたいんです

311 :デフォルトの名無しさん:04/11/27 02:44:17
>>310=304
>>12

312 :デフォルトの名無しさん:04/11/27 02:45:16
>>310
img を配列にして
img[i++ % img.length] として mouseClicked イベントの処理にでも置いておけばいい

313 :デフォルトの名無しさん:04/11/27 03:29:16
JavaでSQLを埋め込んで出力させたいのですが
下記のようにSQLで内部結合があれば
java.sql.SQLException: Column not found
のエラーがでます

String sql="SELECT 1.Name FROM テーブル1 AS 1,テーブル2 AS 2 WHERE 1.NO = 2.ID";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()){
rs.getInt("1.Name")

SQL文の「1.Name」というのがSQLだけの範囲なので見つからないのだと思いますが
こういう場合どうすればいいのでしょうか?
サイトとか参考にしてもこういう例はあまり無かったので教えて下さい

314 :デフォルトの名無しさん:04/11/27 03:38:38
>>313
DBは何?
テーブルの別名に 1 とか 2 とかつけるのはどうかと思う。

315 :デフォルトの名無しさん:04/11/27 03:38:39
>>313
○ rs.getInt("Name");
× rs.getInt("1.Name");

SQL の発行結果で出てくる列名は Name 。
1 というのは SQL の発行時に DBMS がどのテーブルの列なのか判断するためのモノであって
発行結果に 1 は関係ない

316 :デフォルトの名無しさん:04/11/27 03:45:02
発光結果に1は関係ないってホントかよ?
fooってカラムを持つA, Bのテーブルがあったとき
select A.foo, B.foo from A, B とかやったとすると
rs.getInt("foo") でちゃんとどっちの foo か区別できんのか?

317 :デフォルトの名無しさん:04/11/27 04:07:21
出来るわけねーだろ馬鹿。少しは自分で考えろ

318 :デフォルトの名無しさん:04/11/27 04:23:12
>>316
そこで getXxx(int columnIndex) ですよ

319 :デフォルトの名無しさん:04/11/27 10:43:54
>>316 の頭は発光している

320 :デフォルトの名無しさん:04/11/27 11:28:23
>>313
O-Rマッピングツール使えば楽をできるんだけどねえ


321 :デフォルトの名無しさん:04/11/27 11:29:35
>>316
めぎらわしいなら、
A.foo as Afoo
B.foo as Baka
と名前を置き換えてしまえばいい。

322 :デフォルトの名無しさん:04/11/27 12:25:05
>>314-321
結局何かツールなどを使うのなら別だけど
普通にJavaのAPIだけで使うのは不可能なんでしょうか?

一つ目のデータを別の値に名前でに置き換えたりして…

323 :デフォルトの名無しさん:04/11/27 12:45:20
>>322
>>318>>321も普通にJavaのAPIだけで使えるんだが

324 :デフォルトの名無しさん:04/11/27 14:47:35
まず getInt(1) をやってからものを言え。
getInt(String)を使うのはどっちかというとキチガイだ。
今では。

325 :デフォルトの名無しさん:04/11/27 14:56:03
>>322
SQLのASを知らないのか?
カラム名を別名に置き換えるだけなのだが。

326 :デフォルトの名無しさん:04/11/27 14:57:07
>>322
O-Rマッピングツールを使えば
クエリをJavaコードにハードコーディング
しなくて済むのでオブジェクト指向らしさを
維持できて楽だというだけだよ。

初心のうちはまずJDBCでクエリべた書きでやってみなよ。


327 :U ◆CZtFsGiu0c :04/11/27 15:34:48
>>288
>con = DriverManager.getConnection("jdbc:odbc:mydb","id","password");
これだと、JDBC/ODBCブリッジ(タイプ1)ドライバを使ってアクセスしに行くので、
せっかく指定したOracleのJDBCドライバが使われていない。

328 :デフォルトの名無しさん:04/11/27 16:38:36
>>324
なんでカラム名がだめなんだ?

329 :デフォルトの名無しさん:04/11/27 16:47:53
なんだかしらないけど
絡む名にどっとつけるとうまくいかないんだとね。
どっとはずすとうまくいってしまう。

そんでASで絡む名を変更する必要がありなんじゃないかな?

330 :デフォルトの名無しさん:04/11/27 16:53:49
>>329
ドライバによりますね、schemeの指定と混ざっちゃう奴もあるからかもしれないですけど。(DB2へPostgresから移行するときに悩んだ覚えが)


331 :デフォルトの名無しさん:04/11/27 17:10:36
そういやカラム名がユニークになるシステム開発にたずさわったことある
最初違和感感じたが、通常のSQLでasがまったく必要ないので
それはそれで後からみたときコード追いやすかった

332 :デフォルトの名無しさん:04/11/27 17:33:24
>>331
わけの解らんカラム名(N001とかついてたりした)やつをasで意味付けするようにコード書いたら
上司からいぢめられた(;_;)

333 :デフォルトの名無しさん:04/11/27 17:42:58
>332
それはかわいそうだな……。
つかその上司こぼらか。

334 :デフォルトの名無しさん:04/11/27 18:36:10
ソケットでConnectException検出までの時間って
どこで決定しているのですか?

存在しないホストのチェックをしたいのですが
タイムアウト値が長すぎます。

Socket#setSoTimeoutってホストはあるが
サーバサービス等が稼動していない場合のタイムアウト値
設定ですよね?


335 :デフォルトの名無しさん:04/11/27 20:28:08
>>332
俺のいたプロジェクトはテーブル名+カラム名って感じだった


336 :デフォルトの名無しさん:04/11/27 21:06:27
>334
java.net.Socket#connect(java.net.SocketAddress, int)
じゃねえ?

337 :デフォルトの名無しさん:04/11/27 22:23:40
class Super{...}
class Sub extends Super[...}

で、Super hoge = new Sub();
はどんな意味があるんでしょうか?Subを生成したけど
Superの機能しか使えないという認識で大丈夫ですか?
これは何のためにあるんでしょう?

338 :デフォルトの名無しさん:04/11/27 22:31:40
>337
手近なオブジェクト指向の解説書、もしくはWebページで
「多態性(ポリモルフィズム)」について調べてみてください。
これが分かるといろいろ得します。多分。

339 :デフォルトの名無しさん:04/11/27 23:11:44
macで実行できるJavaの携帯エミュレータ知りませんか?

340 :せき:04/11/27 23:48:09
スミスよ!起きとるか!
応答を求む。
無ければ明日の8時にくる。

341 :デフォルトの名無しさん:04/11/28 00:02:38
>>339
i503相当ならJNI使ってないから普通に動くと思う。
他のは知らない。

504相当も音鳴らさなければ大丈夫だと思うが。

342 :デフォルトの名無しさん:04/11/28 00:03:23
Map map = new HashMap();
で生成したmapというオブジェクトに対して、
map.get(obj)は戻り値にObjectを取ると思うんですが、
これをint型に型変換したいときはどうしたらいいでしょう?
逆はIntegerを使ってできました。
よろしくお願いします。

343 :デフォルトの名無しさん:04/11/28 00:07:04
>342
String#valueOf(Object)
してから
Integer#parseInt(String)

344 :342:04/11/28 00:10:17
>343
なるほど。Object→String→intという流れになるんですね。
ありがとうございました。

345 :デフォルトの名無しさん:04/11/28 00:16:31
>>343
なんで間にStringをはさむ必要があるんだよ。

>>342=344
取得したObjectをIntegerでキャストして
Integer#intValue()を使う。
J2SE5.0ならintのままMapに入る(コンパイラが適当にIntegerと変換してくれる)。

346 :デフォルトの名無しさん:04/11/28 00:18:19
>345
あ、すまん。任意のオブジェクトだと思ってた。
>342
Mapの値がIntegerって決まってるなら>345が正解。

347 :342:04/11/28 00:24:53
>345
大変参考になりました。ありがとうございました。
>346
説明不足でした。すみませんでした。

348 :デフォルトの名無しさん:04/11/28 03:20:52
あのー、かなり初歩的な質問にも思えるのですが、ずいぶん検索しても、
見つからないので、お尋ねいたします。

Eclipseについているエディタで、切り貼りしたいとき、普通にカーソルで
範囲選択して、ドラッグ&ドロップしようとしても、できません。
プラグインか何かでできるようになるのでしょうか?
よろしくお願いいたします。

349 :デフォルトの名無しさん:04/11/28 09:45:22
細かいこと突っ込むようで申しわけないのですが、
抽象メソッドと純粋仮想関数って同じものですよね?

350 :デフォルトの名無しさん:04/11/28 11:30:02
>>348
Ctrl+x でカット、 Ctrl+v でペーストじゃダメ?

351 :デフォルトの名無しさん:04/11/28 12:33:42
>>348
やり方は人の好き好きだと思うが、
そんな切り貼りの仕方を、プログラミング中にするとは驚いた。

そんな人俺の周りにもいるけど、
大量の行を範囲選択するときに、キーボード使わずに、
マウスドラッグで選択開始して、目的の行までスクロールするまで、
マウス揺らしながら、じっと待ってるタイプだろ?
んで、目的の行を通り過ぎて、「おっと行き過ぎた」とか?

352 :デフォルトの名無しさん:04/11/28 13:08:52
>>348
おいらの同僚がそのやりかたしてた、でもマウスのボタンの調子が微妙に悪くなった時にすっぱりやめたよ


353 :デフォルトの名無しさん:04/11/28 13:13:47
最短経路探索のプログラムを作ろうと思い、
ttp://www.geocities.com/hzuegel/
このページにあるPathFinder.zip のプログラムを
Javaで作っています。
最小のコストを探しながらゴールまで行くことはできたのですが、
肝心の最後の最短経路だけを返す部分のアルゴリズムがよくわかりません。
どなたかご教授していただけないでしょうか?
よろしくお願いします。

354 :デフォルトの名無しさん:04/11/28 13:19:14
プログラムに慣れた人は、出来るだけキーボードのみで操作できることを望む人が多いからね。
だからショートカットーキーやキーバインドのカスタマイズがどれだけ柔軟にできるかが
IDEの重要な評価ポイントの一つだったりもする。
ダブルクリックで単語選択はしてもマウスで範囲選択は普通はしないね。


355 :デフォルトの名無しさん:04/11/28 14:47:21
<c:out value="${abc}" />

とJSPでコーディングすると、出力されるHTMLは

${abc}

なじぇだあああああ天は我を見放したか

356 :デフォルトの名無しさん:04/11/28 15:16:43
>>355
JSPは専用スレがあるが。
tagfileの設定が間違っているんじゃないのかね?


357 :デフォルトの名無しさん:04/11/28 16:48:35
interstageの質問すれどこです?ここ?

358 :デフォルトの名無しさん:04/11/28 18:15:28
>349
とりあえず、「純粋仮想関数」ってのがJavaの用語でないことは分かってると期待しつつ……
ひとつ違いがあるとすれば、C++の「純粋仮想デストラクタ」はJavaにはない。
finalize()はObjectで既に定義されてるから。

359 :デフォルトの名無しさん:04/11/28 18:25:02
>>349
インスタンス化するためにはメソッドを実装しなければならない事を契約させると言う意味では同じ。


360 :デフォルトの名無しさん:04/11/28 18:33:25

デバッグのためのメッセージの出力を、出荷時に取り去れるようにする手段として、
--------
public class Debug {
  public static final boolean isDebug = true; // デバッグが済んだら false にする
}

・・・
  if ( Debug.isDebug ) {
    System.err.println( "デバッグ出力" );
  }
・・・
--------
のような方法がありますが、これを、assert を使って、

--------
public class Debug {
  public static boolean print( String mes ) {
    System.err.println( mes );
    return true;
  }
}

・・・
  assert Debug.print( "デバッグ出力" );
・・・
--------
のように書くのは、何か問題があるでしょうか?

361 :デフォルトの名無しさん:04/11/28 18:42:10
>>360
つーかlog4j使えば?

362 :デフォルトの名無しさん:04/11/28 18:46:51
>>361
実行速度が問題になる部分でも使いたいので、
OFF にしたら、完全に実行されないようにならないとまずいんです。

363 :デフォルトの名無しさん:04/11/28 18:50:05
>>362
じゃあ、Jakarta Commons Logging 使えば?
本番ではNoOpLogにすればいい。


364 :デフォルトの名無しさん:04/11/28 19:07:41
>>363
わかりました、まだちゃんと理解できてないので、試してみます。
ちなみに、Jakarta Commons Logging における、NoOpLog 時の、
コードが消えるメカニズムはどうなっているのでしょう?

365 :デフォルトの名無しさん:04/11/28 19:15:28
>>364
「コードが消える」は意味不明だが、
NoOpLogにした時の動作は、「ログ出力しない」

デバッグ出力をON・OFFするのにソースをいじってリビルドするのはおすすめできないよ

366 :デフォルトの名無しさん:04/11/28 19:24:31
>>365
>「コードが消える」は意味不明だが、
「コードが消える」というのは、プリントアウトのためのコードが、
最終的なバイトコード上に存在しなくなるということです。
(つまり、実行時にはデバック出力のためには実行時間は消費されない)

>デバッグ出力をON・OFFするのにソースをいじってリビルドするのはおすすめできないよ
>>360
の前者は、そのためにソースをいじる箇所を一箇所に集約するもの、
後者は、その一箇所の書き換えさえ無しにしようとするものです。
リビルドの実行は目的上、止むを得ないと考えています。


367 :360:04/11/28 19:28:34
どうも説明が不十分だったようです。ごめんなさい。

>デバッグのためのメッセージの出力を、出荷時に取り去れるようにする手段として、
というのは、「メッセージ」を取り去りたいのが主な目的ではなくて、
「出力」の動作を取り去るという意味せす。

368 :デフォルトの名無しさん:04/11/28 19:36:24
>>366
一般的に見れば無駄なこだわりだと思うよ。
普通はLog4Jなりなんなりつかって、開発時にはDEBUGレベル、
納品時にはWARN、ERROR、FATALなど(このへんは好みだが)にしておく。
もともとそういう使い方をするためのライブラリだからね。
デバッグプリント用のメソッド呼び出しすらさせたくないという意味だと思うが、
気にするレベルの速度ではないとおもう。俺はね。
こだわって自作Logger使うよりLog4Jを使うメリットのほうがはるかに大きいと思う。
まぁこだわりたいのなら仕方ないけど。

369 :デフォルトの名無しさん:04/11/28 19:42:55
>>367
まぁこの辺でも読んでみれや。
ttp://www.ingrid.org/jajakarta/log4j/

370 :デフォルトの名無しさん:04/11/28 19:54:51
>>368
>一般的に見れば無駄なこだわりだと思うよ。

>気にするレベルの速度ではないとおもう。俺はね。
Log4j はすでに使っていまして、特定の部分で速度的な問題が出てきたので、
局所的な問題解決の手段を考えるために、>>360 の質問をしたのですが。

>こだわって自作Logger使うよりLog4Jを使うメリットのほうがはるかに大きいと思う。
というか、私の知識の範囲では、Java の機構上、外部のクラスやインタフェースを使う方法では、
>>360 の前者のような方法以上の解決策はないと思うのですが、
自作Logger でどうにかする方法を何かご存知でしょうか?


371 :デフォルトの名無しさん:04/11/28 20:00:08
>>367
まあstatic final booleanなフラグ定数でも用意して、

if( flag) {
assert();
}

とかしてた場合、flagがfalseの時にはifブロック全体がバイトコードから削除される
ように最適化される。ただ、「ほぼそうなると言える」としかいえないのが難点。
言語仕様でそう最適化しろと書いているわけではないからね。

どちらにしても再コンパイルは必要なので、おれの会社だったら「再コンパイルした
んならテストやり直しだな」と言われるけど。

ちなみにif文なしで、assertだけ書いておいて、実行環境でassertを無効化するので
は駄目なんだよね? バイトコード上にassert命令は残るけど、実行されないように
なるけど。

372 :360:04/11/28 20:07:57
>>371
>まあstatic final booleanなフラグ定数でも用意して、
それが >>360 の前者、

>ちなみにif文なしで、assertだけ書いておいて、実行環境でassertを無効化するので
それが >>360 の後者ではないかと思うのですが・・・。

別のことをおっしゃってますか?


373 :371:04/11/28 20:07:57
ああ、まさに、if文をassertで置き換えたら何が違うのか、という質問なわけね。

if文はif条件が定数であれば、コンパイラが最適化してifブロック自体を削除する
(可能性が高い)。

assertは実行時にassert文を実行しないようにすることはできるが、assert文自体を
消さない限り、バイトコード内にassert文は残る。

あと>>360のassertの例だと、「常にassertの式部分がtrueになるので最適化される」
と言いたいように思うのだけど、assertが有効なら式は必ず実行される。そしてログが
出力された上でtrueが返ってきて、assertを抜けるだけ。よってログを出力しないように
するにはassertをオフにするしかないけど、どちらにしてもassert命令はバイトコード内
に残る。

374 :デフォルトの名無しさん:04/11/28 20:08:04
>>370
> Log4j はすでに使っていまして、特定の部分で速度的な問題が出てきたので、
> 局所的な問題解決の手段を考えるために、>>360 の質問をしたのですが。

情報小出しうざい。先に言えよ。

で、特定の部分だったら納品時に消せば?そんなに気になるなら。

で、開発時にはDEBUGレベルで、納品時にはDEBUGレベルより上に設定するんでしょ?
入れてるDEBUGレベルのコードが速度に影響するのはほんのわずかな時間だけど。
http://www.jajakarta.org/log4j/
によれば46ナノ秒と書いてある。
そんなに気になるものかね。

375 :371:04/11/28 20:09:03
すまんかぶった....

376 :デフォルトの名無しさん:04/11/28 20:10:03
>>373
assertってバイトコードには残るけど
disableにして起動するとクラスローダがその部分を削除して読み込むから
メモリ上ではまったくなくなるよ。

377 :デフォルトの名無しさん:04/11/28 20:13:09
局所的にってことは、Log4jのプロパティをいじって、その局所にあたるクラスだけ
ログレベルを上げればいいんじゃないかな。

378 :360:04/11/28 20:13:32
>>373
>if文はif条件が定数であれば、コンパイラが最適化してifブロック自体を削除する
>(可能性が高い)。

>assertは実行時にassert文を実行しないようにすることはできるが、assert文自体を
>消さない限り、バイトコード内にassert文は残る。

なるほど、非常によくわかりました。

>あと>>360のassertの例だと、「常にassertの式部分がtrueになるので最適化される」
いえ、その部分は「常にassertの式部分がtrueになるのでAssertionError がスルーされない」
という意味しかないです。

379 :デフォルトの名無しさん:04/11/28 20:14:04
そこまで気にするのならJavaを使うな、マシン語やアセンブラで書けと個人的には思う。
Javaのような技術は実行速度よりも使い勝手の良さ、開発やメンテナンス効率優先な技術だと思う。

380 :デフォルトの名無しさん:04/11/28 20:15:54
>>376
ああ、おれはそれは知らなかった。そうか読み込み時に消去するわけね。

じゃあ、>>360が期待しているのが
「つまり、実行時にはデバック出力のためには実行時間は消費されない」って
ことなら、assert使って、実行時に無効化する、でOKなわけかな?

381 :デフォルトの名無しさん:04/11/28 20:19:20
>>360が言ってるのが、バイトコードのサイズは気にしないってことなら
assertでいいんじゃね?

382 :デフォルトの名無しさん:04/11/28 20:20:06
>>360のレスを見てると、Log4Jのメソッドは呼ばれるがログ出力はしない場合の
オーバーヘッドでパフォーマンスが左右されるほどの精度のプログラムを
書いているように思えない・・・・

383 :360:04/11/28 20:26:48
>>374
>情報小出しうざい。先に言えよ。
ごめんなさい。

>そんなに気になるものかね。
>>360 では分かりやすくするために単純化してありますが、
実際には、相当量のオブジェクトの関連を追ってメッセージを生成するので、
出力だけが実行されなくなっても、速度的にはあまり改善されません。

384 :デフォルトの名無しさん:04/11/28 20:29:25
あーメッセージ構築に時間がかかるわけね。それは確かにログレベル調整では
駄目だな。でもそれも最初に書いた方が良かったね。今後の教訓として。

385 :デフォルトの名無しさん:04/11/28 20:29:32
Stringクラスでlength()で文字列の数を返しますが
それだと全角も半角も一文字としてカウントされてしまいますが
全角の場合、半角二つ分としてカウントさせるにはどうすればいいのでしょうか?

ttp://java.sun.com/j2se/1.4/ja/docs/ja/api/index.html
とか見ても特に書いてなかったので教えてください


386 :デフォルトの名無しさん:04/11/28 20:32:45
>>385
getBytes(String encode)で望みのコードでのバイト列を取得してからバイト数を取得する。

387 :デフォルトの名無しさん:04/11/28 20:34:27
>>384
なんで?最初にレベル見て出力するか判断するよ?
メッセージ作ったりするのはその後だから関係ないのでは?

388 :デフォルトの名無しさん:04/11/28 20:34:53
文字コードによるがgetBytes

389 :デフォルトの名無しさん:04/11/28 20:35:19
>>385
君のいう全角半角が本来の意味なら
適当な等幅フォントでデカイ字を書いて
半角の幅で割るとかしれ

390 :デフォルトの名無しさん:04/11/28 20:36:51
>>383
warnやlogの引数Objectをその場で生成してるからでしょう?
Objectが評価されるがObjectRenderer#doRender(Object o) の時点まで遅延させればいいんじゃないの?

391 :デフォルトの名無しさん:04/11/28 20:41:07
> 実際には、相当量のオブジェクトの関連を追ってメッセージを生成するので、
また情報の小出しかよ。
Jakarta Commons Loggingには現在有効なレベルを調べるメソッドがあるから
それで判定してからメッセージを作成するのが常套手段。
下の例なら、DEBUGレベルが有効でない場合はifブロックに入らない。

(例)
if (isDebugEnabled) {
// メッセージ生成処理・・
// ログ出力処理・・
}


392 :デフォルトの名無しさん:04/11/28 20:42:01
>>387
たぶん、logger.warn()とかする前に、ずらーっと長いメッセージ生成ロジックがある
んだろう。warn()が実行されるされないに関係なく、メッセージ生成が行われてしまう。
だからそのコード全体をif文で囲ってる、とかいうことじゃないかな。

まあでも、エラーメッセージを返す関数を作って、warn()の引数に渡すというふうに
コード変更できるなら、logger.warn( getWarnMassage())ってな感じで対応することも
できるかな。

393 :391:04/11/28 20:42:33
>>390はJakarta Commons Logging 使えばって話ね。
今までの書き方だとメソッドは呼ばれるがログ出力はしない場合のオーバーヘッドを気にしているように見えるぞ?

394 :デフォルトの名無しさん:04/11/28 20:50:04
>>393
Log4jがそういう機能持っている事に気がついていないみたいだから書いたんだけどね。
まさかと思うが360の人はLog4jのメッセージ引数が何のためにObjectなのか知らないのかなぁ。
重たいログ情報生成を遅延評価してくれるからこそのLog4jだと思っていたんだけど、ボクガマチガッテいるんでしょうか?



395 :デフォルトの名無しさん:04/11/28 20:55:52
結論としては、>>360 はLog4Jを使いこなせてないってことでFAかね?

396 :392:04/11/28 20:57:25
ああ、いま調べたら>>392の後半に書いてる方法じゃ全然駄目だな。
メッセージ構築がされてしまう。

やっぱり地味にlogger.isDebugEnabled()をチェックしてメッセージ構築ですかね。

397 :デフォルトの名無しさん:04/11/28 20:58:09
そりゃあんた、初心者大歓迎スレなんだから使いこなせてなくても全然不思議じゃないだろ。

398 :デフォルトの名無しさん:04/11/28 21:08:28
getClass()について以前も質問させてもらって、
getClassは実行時に参照を持つって、そういうもんなんだって納得してみたんですが、
どうもふにおちません、Object#toString()の
getClass().getName() + '@' + Integer.toHexString(hashCode())
では継承したクラスの名前出すのに、
同じ事を更に下層の自作クラスではなぜできないんです?


399 :デフォルトの名無しさん:04/11/28 21:18:57
>>394
いやどっちかというと、warn( Object o)の o を作る事自体をやめたいということだろ。
だったら if 文分岐の方が適当だと思う。String生成しなくてオブジェクトを作るのだって、
作るという処理が必要なのは変わりがないから。

400 :デフォルトの名無しさん:04/11/28 21:24:49
>>398
ごめん日本語がよくわからない。

> getClass().getName() + '@' + Integer.toHexString(hashCode())
> では継承したクラスの名前出すのに、
>同じ事を更に下層の自作クラスではなぜできないんです?

ここんところをもうちょっと詳しく書いてくれ。何が出来ないと言ってるのか
わからん。

401 :394:04/11/28 21:30:31
>>399
warn(Object o)は特に設定していない場合はDefaultRenderer#doRender(Object o)でtoString()として処理されるので
toString()を実装した生成クラスでもつくってラップしておけば遅延評価できるって意味だったんです、誤解したら済みません。


402 :398:04/11/28 21:35:00
>400

abstract class AbstractClass {
public String getClassName() {
return getClass().getName();
}
}


class ClassImpl extends AbstractClass {
String toString() {
return
getClass().getName()
+ getClassName()
+ super.toString();
}
}

こゆークラスを作るじゃないですか、
ClassImpl#getClass().getName()でえられるものと
ClassImpl#getClassName()異なるじゃないですか
でもObject#toString()はちゃんとインスタンスのクラス名出すんですよ


403 :デフォルトの名無しさん:04/11/28 21:43:04
ScrollPane で質問です。

内側を 384*384 の大きさにしたいのですが、
setSize でサイズ指定するとスクロールバーの分だけ
内側が小さくなってしまいます。
basePane.setSize( 16*24 + basePane.getHScrollbarHeight(),
      16*24 + basePane.getVScrollbarWidth() );
としても無理でした。

完全に表示されてからでないと getHScrollbarHeight は値を返さないのですか?

404 :デフォルトの名無しさん:04/11/28 21:47:49
>>402
試しに君のコードをコンパイルしてみたけど、getClass().getName()と
getClassName()は同じ結果「ClassImpl」を返すよ?

405 :デフォルトの名無しさん:04/11/28 21:57:53
>>402
同じ結果か返されるが。
あなたの環境ではどうなるの?
それから、toStringをオーバーライドする時はpublicじゃないとコンパイル出来ないよ。

406 :348:04/11/28 23:58:45
>>350
その手がありましたか。ありがとうございます。
まったく思いつきませんでした。ただ、貼り付け後、行が乱れるのが。。。
でも、それは、[ソース]―[フォーマット]で、直りますね。
>>351
>>352
そうですか。あまり、お勧めの方法ではないのですか。参考になりました。
とにかくありがとうございました。

407 :デフォルトの名無しさん:04/11/29 00:02:26
>>406
なんだ乱れるって?

408 :348:04/11/29 00:13:47
>>354
おっと、見落とすところでした。なるほど。キーボード重視ですね。
勉強になりました。
>>407
いま、乱れない方法に気づきました。左にタブが入っている状態で、
不覚にも、行の先頭ではなく、モジの初めから、いびつになる
範囲選択の仕方をしていました。タブの前からきれいに四角に
範囲選択すれば、乱れませんでした。すみません。

409 :デフォルトの名無しさん:04/11/29 00:21:27
だから乱れるって何だったんだ

410 :デフォルトの名無しさん:04/11/29 00:33:35
脈絡もなく卑猥な事を口走ったりするってことだろ?

411 :334:04/11/29 00:33:39
遅くなりましたが、
>>336
レスサンクスです。

どうやら存在しないホストの無応答タイムアウトは
OSに依存するみたいです。

例えば
192.168.1.1,192.168.1.2,192.168.1.3の3台しか存在しないところへ
192.168.1.100へ対してnew Socket()とやると
ConnectExceptionが発生するまでの時間はjavaでは
コントロールできないみたいです。

ConnectExceptionはSocketインスタンス生成時にスローされるので
connectメソッドではコントロールできない模様。

ちなみにOSがwindowsであれば、
ttp://support.microsoft.com/default.aspx?scid=kb;ja;314053
の辺りの設定でしょうか。

LANの環境でしか動かさないツールを作っているので
応答がないホストのタイムアウトを短くしてさくさく動かしたいのですが、
アプリの中でpingを打つのが解決策なのかなぁ。



412 :デフォルトの名無しさん:04/11/29 00:36:16
>>409
たぶん、行の移動をしたかったのに、範囲選択の時点で行を選択せずに
いたから、予想していた貼り付けがされなかったんだろう。
>>408から察するに、インデントされている行の途中からカットして、
貼り付けたら、インデントが取れたとかではなかろうか。

413 :408:04/11/29 01:43:16
>>410
ははは(笑い)
>>409
>>412
たとえば、こんな感じです。下の2行を移動させたいとき、
[TAB]bt[0].setForeground(Color.black);
[TAB]bt[1].setForeground(Color.black);
1行目の[TAB]の右から、2行目の;までを範囲選択すると、
   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(行の端)
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
上のような形になり、これをカットし、[TAB]の右にペーストすると、
[TAB]xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;
[TAB][TAB]xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;
のようになります。



414 :デフォルトの名無しさん:04/11/29 01:46:21
>>394
間違っています。

415 :デフォルトの名無しさん:04/11/29 01:49:11
>>413
ん?Eclipseってペースト後に勝手に整形してくれなかったっけ?

416 :398:04/11/29 02:04:51
>404-405
レスポンス遅れましてすいません。電車に揺られてました。
上に書いたのは、期待する結果にならない問題のソースからかなりはしょって書いたもんです。
確認もせずにお聞きして大変申し訳ないっす。
今試したらインスタンスのクラスが取れて自分もびっくりです。

今手元に再現できる環境がないので確認できませんが、
Solaris 8のSPARCのjdk1.3とsunづくしだと思います。この環境は怪しいでしょうか?

同じ事だと思ってはしょってしまいましたが、はしょった部分を戻すと
import org.apache.commons.logging.*;

public class AbstractClass {
Log log;

public String getClassName() {
return getClass().getName();
}

public Log getLog() {
if (log == null) {
log = LogFactory.getFactory().getInstance(getClass());
}
return log;
}
}
です、このロガーから吐くと[AbstractClass]としてのログに
明日もっかいソース洗い出します。小出し申し訳ありませんです。

417 :デフォルトの名無しさん:04/11/29 19:26:06
javacって末尾再帰関数を最適化でループにしてくれますか?

418 :413:04/11/29 20:38:19
>>415
[ソース]-[フォーマット](Ctrl+Shift+F)を使わずに自動的に?

419 :デフォルトの名無しさん:04/11/29 20:54:11
質問です。自分のアプリにプラグイン機能を作りたいのですが、
実装のしかたがよくわかりません。どうしたら実現できるでしょうか?
漠然とした質問なので、せめて、志向性やヒントでもいただければ・・・・
と思います。よろしくお願いします。


<仕様 というか ある程度自分でも実現方法を考えました>
 ・プラグインフォルダをつくって、そこにプラグインのクラスを入れるようにする。
 ・プラグイン用の基底クラス造り、各プラグインはそれをを継承して作成する。
 ・アプリ起動時にプラグインフォルダを走査し、そこにあるクラスを動的に読み込む

というような感じだとは思うのですが、いかがでしょう。だとしても三番目の部分を
どう実現するのかわからないのですが・・・・・・。



420 :デフォルトの名無しさん:04/11/29 20:57:30
Class#defineClass して Class#newInstance すればいいべ

421 :デフォルトの名無しさん:04/11/29 20:58:37
ClassLoader#defineClassだった

422 :デフォルトの名無しさん:04/11/29 21:12:03
>>420-421
クラスローダですか。今まで手を出したことなかったので気づかなかったです。
RMIかな?とか余計に難しい事を考えていました。笑
ありがとうございます。

最後にひとつ・・・
プラグインフォルダにあるクラスを知るには、そのフォルダのclassファイルの
ファイル名からクラス名を取得する、という手続きが最適でしょうか?

423 :デフォルトの名無しさん:04/11/29 21:24:56
>>418
お前のはec|ipseっていうパチモンだからできないけど
みんなできてるんだよ

424 :デフォルトの名無しさん:04/11/29 21:59:15
>>417
IBMのだったらしてくれる場合もあるが
SUNのはしなかったような気がする。

425 :デフォルトの名無しさん:04/11/29 22:01:14
>>334
J2SE5.0 からは ping が打てるよ。タイムアウトも設定できる。
InetAddress#isReachable

426 :デフォルトの名無しさん:04/11/29 22:33:46
>>422 自己レス

ファイル読んで、defineClassしてgetNameすればいいのか・・・・な?

427 :デフォルトの名無しさん:04/11/29 22:36:17
Java アプレットでエロゲー作ったら
プラットフォームに依存しないから、Windows ユーザーも
クリエイティブな Mac ユーザーも、Sun の Solaris 使ってるメガネ君も
みんなで(;´Д`) ハァハァ できちゃって
超人気サイトになっちゃうかもしれない…。

そんなこと考えた漏れは逝ってよしですか?

428 :418:04/11/29 22:50:02
>>423
へぇ〜。lか|?

429 :デフォルトの名無しさん:04/11/29 22:57:58
>>417
そういうのは実行時最適化で終わる問題だったりする

430 :デフォルトの名無しさん:04/11/29 23:55:16
>>427
一時期そういう雰囲気もあったんだけどね。なんか知らんうちに廃れたみたいよ。
いっそWEBアプリにしてみたら?Flash使えば普通に過不足ないエロゲーが作れ
そうだけど・・・・・・
何より、普段JavaAppletをオフにしてるユーザーにも遊んでもらえるw

431 :デフォルトの名無しさん:04/11/30 00:10:44
ゲームもAppletよりFlashのほうが流行ってるしなあ・・・

432 :デフォルトの名無しさん:04/11/30 00:40:34
>>426
さらに自己レス

プラグインフォルダをclassファイルと同じかそれより下に配置すれば、
ClassLoader#defineClassじゃなくてClass#forNameでいけるね。
先にファイル名からクラス名を推測する必要があるけど。簡単だ。

// プラグイン基底ファイルPlugInBase→継承→MyPlugInとすると・・・
try{
   Class cls = Class.forName("myapp.plugins.MyPlugIn");
   myapp.PlugInBase test = (myapp.PlugInBase)cls.newInstance();
   test.method(); /* ここでMyPlugInクラスのmethod()が呼び出される。 */
} catch(java.lang.ClassNotFoundException e){; }
 catch(java.lang.InstantiationException e){; }
 catch(java.lang.IllegalAccessException e){; }

433 :デフォルトの名無しさん:04/11/30 00:42:40
なるほど、そこでhttp://www.macromedia.com/jp/software/coldfusion/j2ee/の出番ですね?

434 :デフォルトの名無しさん:04/11/30 00:54:36
Webで、YAHOO Geocities の広告が表示されるフレームを指定するやり方教えてください。
当方、Javaになんの知識もないのでよろしくお願いします。HTMLはOKです。

435 :デフォルトの名無しさん:04/11/30 00:58:47
document.write("unko");

436 :デフォルトの名無しさん:04/11/30 01:02:05
>>435
document.write("<DIV style=\"font-size: 100px;\">unko</DIV>");
の間違えじゃないか?

437 :デフォルトの名無しさん:04/11/30 01:03:16
マジレスおねがいします。

438 :デフォルトの名無しさん:04/11/30 01:11:44
すみません、質問させてください。

j2sdk1.4.2 Eclipse2.2.1 windowsXP の環境でjavaを勉強しています。

byte型がほんとに1byteなのだろうかと、ふと疑問に思い、
以下のコードを組みました。

public class test {

byte b = 0x80;
System.out.println(b);

}

この時点でeclipseの方から、「型の不一致、int から byteに変換できません」
と怒られます。

byte b = 0x7fを試すとおこられません。
byte型の最大値127が表示され、これは納得できます。

上記0x80が許されないとなると、byte型に負数を入れたい場合は
どのように指定するのでしょうか。

439 :デフォルトの名無しさん:04/11/30 01:12:36
>>437
ヌホヌホ

440 :デフォルトの名無しさん:04/11/30 01:13:10
>>437 = >434
マジレスする前に聞いとくが、まさかjava scriptじゃないだろうな・・・。

441 :デフォルトの名無しさん:04/11/30 01:13:19
すみません、ソースに少し不備がありました。
以下に修正します。

public class test {

public static void main(String[] args) {

byte b = 0x80;
System.out.println(b);

}

}


442 :デフォルトの名無しさん:04/11/30 01:21:30
>>438 = >>441

byte b = -0x7f;
int i = (int)b;
System.out.println(i);

443 :442:04/11/30 01:22:46
ごめん、intへキャストしたのは意味無し。

444 :438:04/11/30 01:33:24
>>442

レスありがとうございます。
符号直接をつけるのは目からうろこでした。

そこで、以下を試してみました。
→は出力結果

int i = 0x80; → 128
byte b2 = (byte)i; → -128

0x80でビットを、 1000 0000と持っていることは
上記から推察できますが、
byte型の変数に0x80と指定できないのは、
そういう決まりなのでしょうか。


445 :デフォルトの名無しさん:04/11/30 01:44:42
byte型の変数に0x80と指定できてる。
何の問題もない。

446 :434:04/11/30 01:50:25
>>440 レス有難うございます。 教えていただけそうなので詳しく書きます。

Yahoo!GeocitiesでHPを作成したのだが、広告を表示させるフレームを指定したい。
そこで、HTML内に組み込むJava scriptを教えていただければと思います。
geoでは広告の形態には2種類あるのですが、
ttp://www.geocities.jp/power_seller_info/index.htm
自分の場合はこのページのような、縦型広告の形態です。

447 :デフォルトの名無しさん:04/11/30 01:57:13
>>424
しないのか。つーか、どうやって確かめるの?
-sしてもアセンブリ(バイトコード)出力しないし

>>429
JITがやってくれるのか

448 :デフォルトの名無しさん:04/11/30 01:57:48
>>446

>>435>>436>>439

449 :デフォルトの名無しさん:04/11/30 01:59:31
>>446
>>1

450 :434:04/11/30 02:11:49
初心者大歓迎って書いてあったから来たのに・・・。
マジでお願いしますm(__)mけっこう本気なんで。

451 :デフォルトの名無しさん:04/11/30 02:20:21
日本語の初心者は歓迎していません。

452 :434:04/11/30 02:21:04
釣れたwwwwwwwwww

453 :デフォルトの名無しさん:04/11/30 02:22:13
クッ、クマー!?

454 :434:04/11/30 02:24:03
452は自分ではありません。
教えてください。

455 :デフォルトの名無しさん:04/11/30 02:33:24
>>454
>>1

456 :446 ◆QKHFh76U0c :04/11/30 02:36:42
>>452,>>454は自分ではありません。

457 :デフォルトの名無しさん:04/11/30 02:37:40
>>456
>>451

458 :デフォルトの名無しさん:04/11/30 02:41:41
>>457 いい加減に誰か教えてやれよ・・・。

459 :デフォルトの名無しさん:04/11/30 02:49:32
>>458
>>1

460 :デフォルトの名無しさん:04/11/30 02:51:30
>>459
>>2

461 :デフォルトの名無しさん:04/11/30 03:32:48
>>446
マジレスするけど、ほんとに>>1の一番最後をよく読んでくれ。
JavaとJava Scriptは違う。

462 :デフォルトの名無しさん:04/11/30 04:26:40
確かGeoのHPで、どこに広告を入れられるか決めれたみたいな。
1ページに確実に1つ必要だけど、
フレームを作って、GeoのHPからID,PASSを入れてログイン
その中に、広告を入れる場所を決められるはず。。。

ジオは昔使ってたから、今違うかもしれん。
違ってたらスマソ

後、JavaとJavascriptは(ry

463 :デフォルトの名無しさん:04/11/30 10:46:51
>>419
亀レスですが
アプリケーションの起動スクリプトを工夫して、プラグインフォルダのjarファイルを
クラスパスに追加してしまえば>>432のような簡単な方法でいけます。
Unixのシェルスクリプトなら
java -cp main.jar:`ls plugins/*.jar|xargs|sed 'y/ /:/'` foo.bar.Main
のように1行スクリプト書けばできますし、
WindowsでもバッチファイルかWSHスクリプト書けば可能でしょう。

あと、Eclipse RCPにはプラグインアーキテクチャがついているので、
それを使うという手もあります。この場合SWTの使用が前提となりますが。

464 :デフォルトの名無しさん:04/11/30 11:10:26
>463
>432もだけど、自分だけがプラグイン作るならともかく、
ある人が違うpackageでプラグイン作りたいとか思ったときに困るんじゃ。


465 :463:04/11/30 11:31:09
>>464
そう?別にjarファイルの名前を起動スクリプトにいちいち書くわけではないですよ?

例えば、1プラグイン1jarファイルとすると、
プラグインjarファイルをpluginsフォルダにコピーすれば、>>463のような起動スクリプトにより
plugins以下の任意の全てのjarファイルはクラスパスに追加されます。
後でプラグインを追加したい人は、作ったプラグインjarファイルを
pluginsフォルダにコピーするだけで済みます。
これは、システムの開発者もプラグイン開発者も一緒。

または、1プラグイン1フォルダとするなら(Eclipseのような構成)、
以下のような起動スクリプトを用意しておけば、
plugins以下に置いたフォルダ内のjarファイルは全てクラスパスに追加されます。
java -cp main.jar:`ls plugins/*/*.jar|xargs|sed 'y/ /:/'` foo.bar.Main
この場合も同様で、pluginsの下にディレクトリを作りそこにjarを置けば、
それらのjarファイルは、起動時にクラスパスに追加されます。

プラグインフォルダ内に置いた画像やヘルプファイルを読み込めるにしても
面白いですが、そこまでいくとちょっと面倒かな。それならRCP使った方が早いかも。

466 :デフォルトの名無しさん:04/11/30 13:40:42
java.awt.CardLayoutについて質問があります。

NetBeansの4.0 RC1を使っているのですが、他のIDEもそうだと思いますが、
visual環境でGUIを作る時、カードレイアウトを指定すると、以下のようなコードが
編集不可の領域に生成されます。

getContentPane().setLayout(new java.awt.CardLayout());

で、このカードをめくりたいのですが、どうやってCardLayoutを取り出すのでしょうか。
getContentPane().getLayout()はインタフェースのLayoutManagerを返すだけで、
これはCardLayoutにキャストする事ができません。ココでちょっと躓いてしまいました。
よろしくお願いします。

467 :デフォルトの名無しさん:04/11/30 13:53:27
>>466
キャストできます。
CardLayout layout = (CardLayout)getContentPane().getLayout();

java.awt.CardLayoutはjava.awt.LayoutManagerを実装していますから、
型があっているのなら明示的なダウンキャストは可能です。
失敗するのなら、それはCardLayoutではないのでは?
System.out.println(getContentPane().getLayout().toString())
などを実行して確認してみるといいでしょう。

468 :デフォルトの名無しさん:04/11/30 13:55:50
ユーザAでint型の1234をDESKeyで暗号化し、暗号化したでーたを
ユーザBにおくり、暗号化されてることを確認後、ユーザAから鍵を
送ってもらい複合化する。というプログラムを教えてください。
データの送信はソケットを使います。
できれば鍵はラッピングしないでそのまま送りたいです。
元は宿題スレで聞いていたのですが、こちらの方で聞いたほうが
適切かと思い来ました。よろしくお願いします。

469 :466:04/11/30 14:00:41
>>467
ありがとうございました!。できました。
御馬鹿な事に
 (CardLayout)this.getLayout();
とやっていました・・・・・。

470 :デフォルトの名無しさん:04/11/30 16:18:27
今ごろになって思うんだが、やっぱり JavaScript って
登場時の Live Script って名前にしておけば良かったんじゃない?
そうすれば混乱も起きなかっただろうに。

471 :デフォルトの名無しさん:04/11/30 16:20:33
最近、ようやくJavaとJavaScriptの本を分けて置いてある書店が増えてきた。

472 :デフォルトの名無しさん:04/11/30 16:33:45
>>470
うん、おれもずっとそう思ってた。実際のところ、Live Scriptのほうが機能をよく表してた
と思うし。

473 :デフォルトの名無しさん:04/11/30 16:58:39
ループの中のswitch文の処理でbreakしても、switch文から出るだけじゃないですか。
ループから出たい場合、なんかいい方法無い?

474 :デフォルトの名無しさん:04/11/30 17:02:59
break ラベル名;
で任意のラベル名の箇所へジャンプできる。
二重ループを抜けたい場合も同様。


475 :デフォルトの名無しさん:04/11/30 17:03:39
>>473
ループの中身をprivateなメソッドにする。
メソッドの戻り値にループ脱出の有無をboolで与える
ループを破棄したいswitchの脱出をreturn true;// ループ終了,等にする。
賢いコンパイラならプライベートメソッドをinline展開するからそれほど処理が重いわけじゃない。


476 :474:04/11/30 17:05:08
間違えた。
break ラベル名;
で指定したラベル名の文を終了できる。
二重ループを抜けたい場合も同様。

477 :デフォルトの名無しさん:04/11/30 17:08:29
>>475
三重ループ、四重ループなんて場合はソースの可読性が激しく低下しそう。

初心者には>>476が正解だろうな。


478 :デフォルトの名無しさん:04/11/30 17:13:40
ラベルの書き方にちょっととまどったが、できたできた。
ありがとう、Javaプロのみなさん。

479 :デフォルトの名無しさん:04/11/30 17:20:32
>>468
import java.net.*; import java.io.*; import javax.crypto.*; import java.nio.*;
public class UserA {
public static void main(String args[]) {
try {
Socket sc = new ServerSocket(8080).accept();
int sourceNum = 1234;
ByteBuffer bb = ByteBuffer.allocate(4);
bb.putInt(sourceNum);
KeyGenerator kg = KeyGenerator.getInstance("DES");
SecretKey key = kg.generateKey();
Cipher cip = Cipher.getInstance("DES");
cip.init(Cipher.ENCRYPT_MODE, key);
byte[] encode = cip.doFinal(bb.array());
DataOutputStream out = new DataOutputStream(sc.getOutputStream());
out.writeInt(encode.length);
out.write(encode);
byte[] keyData = key.getEncoded();
out.writeInt(keyData.length);
out.write(keyData);
out.close();
} catch(Exception e) {
System.out.println("error");
}
}
}

480 :デフォルトの名無しさん:04/11/30 17:21:52
>>468
import java.io.*; import java.net.*; import java.nio.*;
import java.security.*; import javax.crypto.*; import javax.crypto.spec.*;
public class UserB {
public static void main(String[] args) {
byte[] sourceDate = null, encodeDate = null, decodeDate = null;
try {
Socket sc = new Socket("localhost", 8080);
DataInputStream in = new DataInputStream(sc.getInputStream());
int size = in.readInt();
byte[] encode = new byte[size];
in.read(encode);
size = in.readInt();
byte[] keyData = new byte[size];
in.read(keyData);
in.close();
Key key = new SecretKeySpec(keyData, "DES");
Cipher cip = Cipher.getInstance("DES");
cip.init(Cipher.DECRYPT_MODE, key);
byte[] decode = cip.doFinal(encode);
int sourceNum = ByteBuffer.wrap(decode).getInt();
System.out.println("復号化した数値 " + sourceNum);
} catch (Exception e) {
System.out.println("エラー" + e.getClass().getName());
}
}
}


481 :468:04/11/30 18:00:08
ありがとうございます。
動作しました。

482 :デフォルトの名無しさん:04/11/30 18:29:11
>>477
高次元配列操作とか以外はメソッド分けてメソッド名に意味づけしたほうが見やすいと思うんだけど。

483 :デフォルトの名無しさん:04/11/30 20:37:36
3次元以上の配列つかったことある香具師いる?

484 :デフォルトの名無しさん:04/11/30 20:37:36
class Binboh {
public static void main(String[] args) {
byte b = 1+2;
}
}

これでコンパイルエラー起きないのなんでですか?
整数の演算結果はint型になるから、bに代入するとき
キャスト必要だと思ったんですが。

485 :デフォルトの名無しさん:04/11/30 20:39:49
javaで作ったプログラムはJREが無いと絶対に実行できないんでしょうか?
何か方法があるなら教えて下さい。お願いします。

486 :デフォルトの名無しさん:04/11/30 20:54:35
>>447
再帰の最後の処理をなくしたものでテストするとわかる。
ループに展開してくれている場合は無限ループに陥るだけだが、
展開してくれない場合は関数呼び出しを伴うのでスタックオーバフローで落ちる。

487 :デフォルトの名無しさん:04/11/30 21:28:38
>>483
3次元ならあるよ。
100*100*100*sizeof(hoge)で128Mバイトとか使っちゃうんで泣けるけど。


488 :デフォルトの名無しさん:04/11/30 21:31:40
ファイアウォールを越えて行われるSocket通信のサンプルみたいなものが
乗っているサイトをどなたかご存じないでしょうか?
もちろんサイトじゃなくても簡単なコードを晒していただければ幸いです。
エロイ人たち、どうぞよろしくおながいします。


489 :デフォルトの名無しさん:04/11/30 21:57:29
>>488 越えたいfirewallの種類くらい書いたらどうかね。

490 :484:04/11/30 22:13:54
すみません。 >>484 です。

これは例えばbyte型を引数とするメソッドに 1+1 を渡そうとすると、
ちゃんとコンパイルエラーが発生するんですが。。。

教えてください。

491 :デフォルトの名無しさん:04/11/30 22:22:42
>>490
http://www.y-adagio.com/public/standards/tr_javalang/5.doc.htm

492 :デフォルトの名無しさん:04/11/30 22:29:06
>>490
>>491 の代入変換とメソッド呼び出し変換、
http://www.y-adagio.com/public/standards/tr_javalang/15.doc.htm#5313
の定数式あたりを参照しろ。

493 :せき:04/11/30 22:29:07
Import java.util.*;

class Ppp
{
public static void main(String[] args)
{
Random rnd = new Random();
int r = rnd.nextInt(16);

int[] ww = new int[3];
ww[0] = 10;
ww[1] = 12;
ww[2] = r;

Random d = new Random();
int b = d.nextInt(4);

if(b=1)
System.out.println(ww[0]);

if(b=2)
System.out.println(ww[1]);

if(b=3)
System.out.println(ww[2]);

else
System.out.println("残念");
}
}

というプログラムを組みましたがエラーがでます。

494 :デフォルトの名無しさん:04/11/30 22:37:43
>>490
大雑把に言うと、

・代入式で、
・右辺がintの定数式(1+2とかね)であり、
・左辺がbyte, short, char(つまりintより範囲の小さい整数値)であり、
・さらに定数式が左辺の範囲内

であれば、キャストなしで代入できる。そういう仕様。

495 :484:04/11/30 22:42:19
みなさん、ありがとうございました。

496 :デフォルトの名無しさん:04/11/30 22:42:31
ほんと初歩的なことですみませんが
Object[]をString[]に代入したいんですけどどうやればいいんでしょうか?



497 :デフォルトの名無しさん:04/11/30 22:48:12
String[] strArray = (String[])objArray;

498 :デフォルトの名無しさん:04/11/30 22:49:27
>497
それだとClassCastExceptionエラーになっちゃうんです。

499 :デフォルトの名無しさん:04/11/30 22:53:50
Object[]の中にString以外のもんが入ってるんじゃないの?

500 :デフォルトの名無しさん:04/11/30 23:02:07
>497
ありがと。そういうことなんですね。。。。
でもListArrayとかJListのgetSelectedValues()で得た配列は
どうすんでしょうか

501 :デフォルトの名無しさん:04/11/30 23:09:32
微妙な話なんだが、関係あるかもしれない。

Object[] objs = {"hoge", "hage"};
String[] strs = (String[])objs;

はClassCastExceptionになる。{"hoge", "hage"}は、「new Object[]」として作られるため、
Object[]をそのサブクラスであるString[]へ変換できない。配列の中身の問題でなくて、

Object obj = new Object();
String str = (String)obj;

がClassCastExceptionになるのと同じ。もともとObject[]として作られたものをString[]に
変える事はできない。しかし、

Object[] objs = new String[]{"hoge", "hage"};
String[] strs = (String[])objs;

は問題ない。もともとString[]として作られたものをObject[]型変数に代入して、それを
キャストして元に戻しているだけだから。

Object obj = new String("hoge");
String str = (String)obj;

が通るのと同じ原理。

502 :デフォルトの名無しさん:04/11/30 23:15:07
>>461-462 ありがとうございます。レス感謝します。

503 :デフォルトの名無しさん:04/11/30 23:21:28
>>500
ListArrayってArrayListのことだよね?
ArrayListに何を入れたかはプログラマ自身が分かっているはず。だから
何の配列にするかはプログラマが把握しているはず。もし「TestInterface」を
実装しているオブジェクトをaddしまくっているとしたら、

list.add( test1);
list.add( test2);

toArray()ではTestInterface[]型にキャストすることになるだろうね。

TestInterface[] tests = (TestInterface[])list.toArray();

JListの場合は、コンストラクタに与えたデータを表示してるんだから、
getSelectedValues()が返す配列が何型の配列なのかはやっぱりプログラマが
把握してるはず。上記のlistを使ったとしたら、

JList jlist = new JList( list);
TestInterface[] tests = (TestInterface[])jlist.getSelectedValues();

ってこと。自分で作ったもんなら中に何が入ってるかは知っているでしょ。

504 :デフォルトの名無しさん:04/11/30 23:21:44
>>493
かなり基本的な所を間違えています
Javaを基礎から勉強してください

505 :デフォルトの名無しさん:04/11/30 23:31:28
>499, 501, 503
ありがとうございます。よくわかりました。
基本的な考えが足らなかったようです。


506 :488:04/11/30 23:32:59
>>489
ルータでNAT変換しています。

507 :デフォルトの名無しさん:04/11/30 23:44:42
>>503
それじゃ、ダメだ。

// Test.java

import java.util.*;

public class Test {
public static void main(String[] args) {
List list = new ArrayList();
list.add("1");
list.add("2");
list.add("3");

// String[] array = (String[])list.toArray(); // -> .ClassCastException
String[] array = (String[])list.toArray(new String[0]); // -> ○
for(int i = 0; i < array.length; i++) {
System.out.println(array[i].getClass() + ":" + array[i]);
}
}
}


508 :デフォルトの名無しさん:04/11/30 23:54:55
>>506 FWの中から外はなにもせずそのまま。外から中につながせるときは
まず中からUPnPでルータに穴あけて、次に外からつながせる。
UPnPのライブラリが別途必要だから探すように。

509 :デフォルトの名無しさん:04/12/01 00:35:43
JavaWebStart用のアプレットビューワみたいなツールってありますか?

JavaWebStartで開発する場合に、JNLP APIを使わなければ、
通常のアプリとして起動して動作確認後すればOKです。
でも、JNLP APIを使うと、通常のアプリケーションとして動作確認できません。
だからといって、JNLPから起動するには、JAR作って、
(app-permissionsだと署名して)からでないと起動できないので面倒です。

アプレットビューワ的な、JNLP APIを使えるツール、eclipseのプラグイン、
もしくはJavaWebStartに対応したIDEなんかがあれば、紹介してもらいたいです。

510 :503:04/12/01 03:09:59
>>500
ごめん、>>503は全然間違ってました。混乱させて申し訳ない。

ArrayListについては、>>507の言う通り。toArrayの引数付きのものを使わないと駄目でした。
>>503のやり方だと、まさに>>501の言う通りClassCastExceptionになる。

JListに至っては、toArrayのように別メソッドがないので、Object[]型でしか取れない。
>>501の原理でObject[]型として作られた配列を別の型にキャストできない。
Object[]型で取り出したあと、一つずつキャストしてあげないといけないです。

JList jlist = new JList( list);
TestInterface[] tests = (TestInterface[])jlist.getSelectedValues(); ←× ClassCastException

Object[] values = jlist.getSelectedValues(); ←Object[]型としてしか取り出せない
for(int i = 0; i < values.length; i++) {
TestInterface test = (TestInterface)values[i]; ←一つずつキャストして使用する。
//testを使った処理...
}

すまんかった...orz

511 :デフォルトの名無しさん:04/12/01 06:02:28
質問があります。
あるパッケージに属するクラス名一覧を得たいのですが、どうやったらいいのでしょうか?
よろしくお願いします。

512 :デフォルトの名無しさん:04/12/01 08:40:49
そのパッケージ名のフォルダの、classファイルの一覧をFile#list()する


513 :デフォルトの名無しさん:04/12/01 09:59:44
C言語のようにint型をオペランドとした&演算をJAVAでやりたいのですが、

例えば下のコードのような感じです。

final int MASK=3,A=1,B=2,C=4;
int mode;
if(MASK&mode){
//modeがAかBの場合の処理
}

&演算子を使うのは無理でしたので、何か違う方法があるのかなぁと思った
のですが・・


514 :デフォルトの名無しさん:04/12/01 10:06:22
>>513
if((MASK&mode) > 0 ){
//modeがAかBの場合の処理
}


515 :513:04/12/01 10:26:21
あ、ほんとだ!ってかエラーを勘違いしてたわけか・・。
ダメダメやなぁー
ありがとうございます。そしてごめんなさい。


516 :デフォルトの名無しさん:04/12/01 10:36:31
>>513
Cは0が偽、0以外が正で判定されるけど
Javaはbooleanになるように比較演算子をいれてあげないとダメ

// ベタ移植はこれ↓
if((MASK&mode) != 0 ){
}
// これでもいい
if((MASK&mode) == MASK ){
}

517 :デフォルトの名無しさん:04/12/01 11:45:03
javaのはじめの一歩(HelloWorld)から躓いてしまいました。
コマンドプロントで実行しているのですが、HelloWorldが表示されません。
Java関係のHP見ながら勉強しているのですが、解決方法が解らないので
申し訳ありませんが教えてください。

C:\program_java>javac Test.java

C:\program_java>

↑の様な結果になります。


518 :デフォルトの名無しさん:04/12/01 11:49:58
>>517
正常です。あなたはTest.javaをコンパイルし、その作業はエラー無く完了しました。
その結果Test.classというファイルができているはずです。
では、次に以下のように実行してください。
C:\program_java>java Test

次はこれかな・・・
ttp://www.gimlay.org/~javafaq/S002.html#S002-08

519 :デフォルトの名無しさん:04/12/01 11:57:43
>>518
ありがとうございます!
正常に実行できました。
また何かありましたら、お願いします。

520 :デフォルトの名無しさん:04/12/01 12:07:23
ヌルポも注意

521 :デフォルトの名無しさん:04/12/01 13:15:08
>>516
真:偽
正:負

522 :デフォルトの名無しさん:04/12/01 13:23:47
♪ミスチルのシーソーゲームの替え歌

恋なんていわば竿とビラのシーソーゲーム 
膣だって指じゃあいまいなリアクションさ
友人の評価はいまいちでもシックスナイン
黄金が付いてたらつら〜い
肛門は菊の穴




523 :デフォルトの名無しさん:04/12/01 13:29:24
元の歌詞

恋なんて言わばエゴとエゴのシーソーゲーム
いつだって君は曖昧なリアクションさ
友人の評価はイマイチでも She So Cute
順番を待ってたんじゃつらい
勇敢な恋の歌


524 :デフォルトの名無しさん:04/12/01 15:46:18
ファイルについて解らない事があります

ファイルの読み込みをしたいのですが
一般的には、下のような記述でファイルオブジェクトを生成する事ができますが
File fail = new File("a.txt");

私がやりたいのは、様々なファイルから読み込みをしていきたいのです。
ですがどのようにしたら良いのか解りません。。
File fail = new File("a.txt");この場合は一つだけ指定
している状態です。
a.txtがいろいろ変更できれば、様々なファイルを生成できると思うのですが、
最初私が試したのは、String文字列を代入すればよいのかな何て思っていたのですが
出来なかったんです。
どうすればできるでしょうか?

525 :デフォルトの名無しさん:04/12/01 16:18:44
>>524
こんな感じでどうよ
String[] file_names = { ファイル名が何個か };

HashMap files = new HashMap();
for ( int i = 0; i < file_names.length; i++ ) {
File file = new File( file_names[i] );
files.put( file_names[i], file );
}


あと変数名が失敗してるからダメなんだよ。

526 :デフォルトの名無しさん:04/12/01 16:27:18
>>525
ありがとー^^
うれうれしい〜

527 :デフォルトの名無しさん:04/12/01 17:18:02
文字列を比較したいのですが、どうすればよいでしょうか?
String a="愛";
String b="愛";
if(a==b){turu処理}
else{not処理}
上のような感じしたのですができませんでした。。
宜しくです。。


528 :デフォルトの名無しさん:04/12/01 17:20:21
>>527
a.equals(b)

529 :デフォルトの名無しさん:04/12/01 17:29:25
>>527
「ような感じ」がよくわからんが、それならelseではなく、ifブロックに入るはず。

530 :デフォルトの名無しさん:04/12/01 17:31:08
turu処理ってのは釣る処理って意味で、実は釣りか?

531 :デフォルトの名無しさん:04/12/01 17:44:39
>>528
ありがとございます。できました^^
>>529
>>530
わかり図ラクすみません


532 :デフォルトの名無しさん:04/12/01 17:48:39
ベクトル配列の2、5、7、8、9、、、、番目といったような、
ループさせるのに数列の法則がない場合に、配列のそれぞれの要素に同じ処理をさせたい場合はどうすれば良いでしょうか。

533 :デフォルトの名無しさん:04/12/01 17:53:00
>>532
int[] pos = { 処理させたい要素の場所 };

for ( int i = 0; i < pos.length; i++ ) {
pos[i]を配列のインデックスに使って、同じ処理をさせる。
}

534 :デフォルトの名無しさん:04/12/01 17:57:06
うほっいい方法ありがとうございます。
やってみます!

535 :デフォルトの名無しさん:04/12/01 18:07:07
7,8,9,,,(+1ごとだが終わりが未知)
の場合はどうすればorz
配列し直したらよいのでしょうか。。

536 :デフォルトの名無しさん:04/12/01 18:20:18
>>535
ArrayListを使え

537 :デフォルトの名無しさん:04/12/01 18:22:31
いまだに RedHat とか使ってる香具師
Fedora Core で Java がめちゃくちゃ速くなってるから試してみ
Tomcat などのサーブレットコンテナの java プロセスが
top コマンドの上位に来ることなんてめったに無くなった。
スレッドの効率がめちゃくちゃ良くなってる。

すれ違い失礼

538 :デフォルトの名無しさん:04/12/01 18:28:36
Fedora Coreなんて怖くて使えない
超有り得ない

539 :デフォルトの名無しさん:04/12/01 19:00:27
趣味プロの話でしょ?
まぁFC2は割と枯れてていいと思うけど

540 :デフォルトの名無しさん:04/12/01 20:22:30
仕事でfedoraはありえんな
redhat9があほみたいに遅いのはしってるけど


541 :デフォルトの名無しさん:04/12/01 20:26:23
>>511
Javaの場合ネットから動的にクラスを読み込んだりもできるから
厳密にやることは不可能。

542 :デフォルトの名無しさん:04/12/01 21:12:00
スレッド初心者の俺に教えてください。
このコード、wait()が効いていないんですが、どうしてですか?

class MainThread extends Thread {
}

class MyThread extends Thread {
MainThread th = new MainThread();
public void run() {
th.start();
synchronized(th){
try {
th.wait();
} catch(InterruptedException ie){}
}
}

public static void main(String[] args) {
MyThread th1 = new MyThread();
th1.start();
}
}

543 :デフォルトの名無しさん:04/12/01 21:22:31
waitってのはそういうふうに使うもんじゃないよ。
notifyと組み合わせて使うもの。
スレッドを止めたいだけならsleepにしろ。

544 :デフォルトの名無しさん:04/12/01 21:23:18
ファイルから文字列を読み込もうとしているのですが、
txtなら1行づつ読み取れるのですがexcelの場合は、そうもいかないみたいでして
excelの場合の読み取りの仕方を教えてください。
以下に僕が作ったサンプルプログラムを書きます。
br = new BufferedReader (
new InputStreamReader (
new FileInputStream( "SJISin1.txt" ), "SJIS" ) );

while( ( str = br.readLine() ) != null ) {
System.out.println( str );
}
というような感じです。宜しくお願いします。
なお部分的に抽出する場合も教えていただけるとうれしいです。
例えば3行2列目の文字列を読み取るなどです。

545 :デフォルトの名無しさん:04/12/01 21:29:59
>>544 POIってライブラリ、ぐぐって探してつかってごらん。

546 :542:04/12/01 21:34:20
>>543

そのnotifyが目覚めさせるということを確かめたくて、
わざとそういうコードを書いたんです。
つまり、notify()が無いからスレッドがストップしたまま
になるという動作を期待したんだけど、実際はストップしない。
どうしてでしょう?

547 :デフォルトの名無しさん:04/12/01 21:38:23
>>538-540
ああ、いきなり業務用鯖をリプレースせいなんてあほな提案じゃないから安心してちょ (w
Fedora + Java の性能評価まだしてない奴いたらって意味だから。

同じ JRE、同じアプリで速度が格段に速くなって CPU も食わなくなってるから
これからの Linux + Java はちょっと期待が持てそう (やっと窓用 JVM 並の
速度が出るようになったかとも思ったのは秘密)。

548 :542:04/12/01 21:40:29
何度もごめんなさい。
補足ですが、th.start()を消すと、ちゃんと動きます。
(wait()でストップしたままになる)


549 :デフォルトの名無しさん:04/12/01 21:55:39
th.wait();
の部分では
th1のスレッドが止まる・・・

550 :デフォルトの名無しさん:04/12/01 22:01:37
ituneやテレ朝CIでやられとるの音声のヴィジュアライズって何をつかって作っておるのでしょうか?
ご存知の方をいらっしゃればお知恵を...;;

551 :デフォルトの名無しさん:04/12/01 22:28:38
>>547
そういやなんでredhatはあんなに遅かったんだろうか


552 :542:04/12/01 22:29:09
>>549

そうですよね。th1のスレッドが止まりますよね。
その時点でプログラムが止まって、プロンプトが
帰ってこなくなるのではないのですか?

553 :デフォルトの名無しさん:04/12/01 22:37:44
スレッドを勘違いしてるな
コードをちゃんと見てみろ


554 :デフォルトの名無しさん:04/12/01 22:50:49
>>552
ちゃんと期待通りにMyThread#run内でMainThreadと合流しますよ。
プロンプトが帰って来るはずの無い時間内で終了してしまうのならMainThreadが異常終了してるんじゃないですか?

あるいはjava MyThreadとして起動するときにバックグラウンドで実行するようにコマンドプロンプトかスクリプト(bat)で指定してないですか?


555 :デフォルトの名無しさん:04/12/01 22:59:04
>>551
RedHat / Fedora というかカーネルのバージョンだな。
とりあえずカーネルのスレッド処理がかなり改善された。あの Linux 特有のスレッド
起動時のタイムラグが無くなった。JavaVM は起動するとすぐにいくつかのスレッドが
走り始めるため、スレッド起動の遅延はアプリ起動の遅延に直結する。最初にスレッドを
立てまくるサーブレットエンジンならなおさらのこと。ひとつのスレッドに対する CPU 割り
当ても効率がよくなった。Fedora のカーネルなら CPU 数に対するサーブレットエンジンの
スケーラビリティも上がってるはず。

556 :542:04/12/01 23:03:22
>>554

ありがとうございます。
実行時は、java MyThreadで実行しています。
すぐにプロンプトが帰ってきます。

すみません、MyThread#run内でMainThreadと合流するとは、どういう意味ですか?
私の理解は、メインスレッド、th1、th とスレッドができていき、
thがすぐに終了して、th1が停止状態になって、プログラムが終了しない
、、となると思っているんですが、そもそも間違ってます?

557 :554:04/12/01 23:23:02
>>556
th1#runのth.wait()はthのスレッド終了までth1のスレッドを停止します。<<たぶんwaitの意味を取り違えているのはこの辺りでしょう?
したがってthが終了するとth.waitが解除さth1の処理はrunをぬける事になります。
MyThread#run内でMainThreadと合流するってのはth1のなかでthのスレッドと合流すると言う意味です(Thread処理ではjoinと呼ばれる事もあります)



558 :デフォルトの名無しさん:04/12/01 23:43:47
waitってのはあるオブジェクトobjが複数のスレッドから操作されるときに
obj.wait()の形で使うもの。
間違ってもスレッドthに対してth.wait()とするもんではない。
(複数スレッドからあるスレッドthを操作するんなら別だがな。)

559 :556:04/12/01 23:49:54
>>557

>>th1#runのth.wait()はthのスレッド終了までth1のスレッドを停止します。
おっしゃるとおり、これをわかっていませんでした。
出直します。ありがとうございました。

560 :デフォルトの名無しさん:04/12/02 00:17:58
基本的な質問かもしれませんが
try文で記述する時returnで返すにはどうすればよいのでしょうか?
下にプログラムを記述します。
class T {
public boolean tyu(int h) {
try {
int syutokusu,key;
syutokusu=2;
key=h;
System.out.println(syutokusu);
}
catch (Exception e) {e.printStackTrace();}
return (syutokusu==key);
}
}
この場合return文のsyutokusuとkeyが認識せず、
どのようにすればsyutokusuとkeyを認識し返せるのでしょうか?


561 :デフォルトの名無しさん:04/12/02 00:35:27
>>560
class T {
public boolean tyu(int h) {
int syutokusu = 0, key = 0;
try {
syutokusu=2;
key=h;
System.out.println(syutokusu);
}
catch (Exception e) {e.printStackTrace();}
return (syutokusu==key);
}
}
とする。


562 :デフォルトの名無しさん:04/12/02 00:37:44
>>555
redhat9ってカーネルいくつだったっけ?
古いKNOPPIXとか結構早かったなぁ


563 :503:04/12/02 01:14:25
>>557
それはObject#wait()の説明ではなくてThread#join()の説明ではないか?

564 :デフォルトの名無しさん:04/12/02 01:17:59
RedHat Linux 9: kernel 2.4.20 (パッケージ版初期状態)
RedHat Enterprise Linux 3.0: Kernel 2.4.21 (パッケージ版初期状態)
家の Fedora Core 2 : kernel 2.6.8-1.521 (一ヶ月くらい前に更新してるはず)

自宅鯖でアプロダ (Tomcat 4) 作って毎秒 20 アクセスくらいあるけど、RedHat 9 使ってた頃に
比べて今んところ遜色はない。が、CD-ROM 付属とかの古いカーネルのままだと、たまーに
java プロセスが CPU 100% で固まってたり、せっかく買った IEEE1394 ハードディスクが認識
できなかったりと不安定なこともあったので GUI から自動アップデートを推奨 (前者はもうなく
なったが、後者は今でもたまにある)。今気になるのは ieee1394 のことだけか。あとはぜんぜん
無問題運用してる。

565 :デフォルトの名無しさん:04/12/02 01:34:38
つーか、Sun謹製のSolaris 10が待ち遠しい。
Tomcat動かして死ぬほど重かったりしたら笑い転げるしかないなw

566 :デフォルトの名無しさん:04/12/02 01:43:16
>>563
うわ、ホントだ、スマン。
ちなみにjoinは生きてる間waitし続けるようになってる(w


567 :デフォルトの名無しさん:04/12/02 01:56:19
>>566
waitっていうな。ブロックするといえ。

568 :デフォルトの名無しさん:04/12/02 02:15:39
>>567
joinの中でwait(0)してることいってんじゃね?


569 :デフォルトの名無しさん:04/12/02 02:55:11
文字列の1番目の文字だけを読み取るとか可能なのでしょうか?
例えば、
String a="神様お願いします";
だとしたら、先頭から2文字まで読み取るなどです。
この場合だと、「神様」になります。


570 :デフォルトの名無しさん:04/12/02 03:14:48
>>569
String b = a.substring(0, 2);

571 :デフォルトの名無しさん:04/12/02 07:57:33
すみません,Swingにおけるグラフィックの処理がよく分かりません。
以下のプログラムで,描画ボタンを押すと赤い円が表示されるようにするには,どのメソッドに何を書き加えればよいでしょうか?

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

class MyPanel extends JPanel{
public void paintComponent(Graphics g){
super.paintComponent(g);
}
}

public class MyFrame extends JFrame implements ActionListener{
Container gcp;
JButton drawButton;
MyPanel panel;


572 :571続き:04/12/02 07:58:09
public MyFrame(){
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setBounds(10,10,300,300);
panel = new MyPanel();
panel.setLayout(new FlowLayout());
gcp = getContentPane();
gcp.setLayout(new BorderLayout());
gcp.add(panel, BorderLayout.CENTER);
drawButton = new JButton("描画");
drawButton.addActionListener(this);
panel.add(drawButton);
}

public void actionPerformed(ActionEvent event){
panel.repaint();
}

public static void main(String[] args){
MyFrame frame = new MyFrame();
frame.setVisible(true);
}
}


573 :デフォルトの名無しさん:04/12/02 10:22:11
readLine()
似ついて質問なんですが、
while( ( S = br.readLine() ) != null ){内部処理}
例えばこのようにすれば、ファイルに記述されている文字列を1行ずつ
読み込む事はできるのですが、
3行目だけを読みたいとか、8行目まで読みたいとか、の場合
どのようにすればよろしいでしょうか?



574 :デフォルトの名無しさん:04/12/02 10:26:04
>>573
2回とか7回無駄にループを回せ

575 :デフォルトの名無しさん:04/12/02 10:35:51
>>573です
もう少し具体的におっしゃっていただけるとうれしいのですが、
「2回とか7回無駄にループを回せ」だけだと理解するのが難しいです。
簡単なサンプルプログラムとか記述していたできるとうれしいです。

576 :デフォルトの名無しさん:04/12/02 10:50:58
LineStreamReader r = new LineStreamReader(任意のReader);
r.setLineNumber(1);
String s;
while((s = br.readLine()) != null && r.getLineNumber != 3) ;
OR
while((s = br.readLine()) != null && r.getLineNumber <= 8) {
内部処理
};

577 :デフォルトの名無しさん:04/12/02 12:41:15
>>576
有難うございます。。
度々すみませんが,ファイルに記述された行数を読み込むことって
出来るのでしょうか?
例えば
*******a.txt********
ねこ
おにぎり
ぎこ
********************
とテキストに記述されている時,行数を呼んで
この場合は3こですが、4つや5つに成る場合もあります
この場合はどうすればよろしいのでしょうか?
配列の長さとこの行数を一致させたいのです。
宜しくお願いします






578 :デフォルトの名無しさん:04/12/02 12:57:22
配列じゃなくて List でも使えばどうか?

String hoge;
List list = new ArrayList();

while( ( hoge = br.readLine() ) != null ){ list.add(s); }

あとは List を操作


List がわからんとか言うならとりあえず javadoc 嫁。

579 :デフォルトの名無しさん:04/12/02 14:28:07
Listくらい知ってますよ!!!
ぷんぷん

580 :デフォルトの名無しさん:04/12/02 14:33:29
methodの作り方と使い方がよくわかりません。
//method1
public String hoge1(String s) {
method1 の処理
}
//method2
public String hoge2(String s) {
method2 の処理
}
//public static void main(String[] args) {
main の処理
}


こんな感じですか?
(String s)の部分とか何を書いたら良いのかやら
呼び出し方とかがわかりません。
method間で同じ変数を呼び出せなかったり。

581 :デフォルトの名無しさん:04/12/02 14:48:27
>>565
ある意味ディストリビューションが固定されたLinuxのようなものという
位置づけになるんじゃないかと期待

Javaが安定して動くフリー環境ってだけで使う人は増えそうな気もする
でもsunの売り上げにはまったく貢献せんね

サーバーLinuxとか企業が使うところはいいのかもなぁ
開発環境が無償というだけでもありがたいかもしれん


582 :デフォルトの名無しさん:04/12/02 16:02:16
>>581
>>Javaが安定して動くフリー環境ってだけで使う人は増えそうな気もする
>>でもsunの売り上げにはまったく貢献せんね

いやいや、ユーザーが増えればそれに伴ってサーバーサイドで採用する
企業がさらに増える。技術者や企業からいろいろ儲けれる。当然ですな。


583 :デフォルトの名無しさん:04/12/02 16:45:30
めっちゃ初心者です
javaアプリとアプレットがありますが
アプリとアプレットで同じ動きをするプログラムを作ったときの違いは
最初にアプレットをインポートするところ以外にも
いろいろやることがあるんですか?
それともインポートの部分だけつければアプレットとして動きますか?
初歩的な質問ですみません

584 :デフォルトの名無しさん:04/12/02 17:00:40
public class Z {
public String hoge(String[] args) {
   try {String moji="愛"}
   catch (Exception e) {e.printStackTrace();}
   return moji ;}
}
この場合try文で処理したmojiの値を返したいのですが
どうすればよいのでしょうか?
今回は、簡単に書いてありますが、

今私がやっているプログラムは、
try文の内部処理でファイルを読み込んで
その文字列をmoji配列に格納していくという処理です
ですので、ファイルを読み込んだ後ではないと、moji配列のサイズを定義で気ないので
このmojiを返すためにはどうすればよいのでしょうか。
ちなみに、基本的にtry文の前に配列などの定義をしないと
認識されない事は知っています。


585 :デフォルトの名無しさん:04/12/02 17:29:33
>>583
少なくともインポートの部分だけじゃダメだなあ
詳しくはググって

>>584
いまいち質問の意味を理解してないが、やっぱりlistつかえば?

586 :デフォルトの名無しさん:04/12/02 17:44:12
>>584
なんか質問と例文が合ってない気がするが、こういう事か?

String[] moji = null;
try {
moji = new String[10];
moji[0] = "ai";
} catch (Exception e) {
e.printStackTrace();
}

return moji;


587 :デフォルトの名無しさん:04/12/02 17:48:17
>>584
例外食らったら return するのはあきらめろ。

588 :583:04/12/02 17:51:20
ググってみたつもりですが
なんとググればいいかよくわかりません
よければ教えてください
サイトなど教えてくれるととても助かります

589 :デフォルトの名無しさん:04/12/02 17:53:02
>>588
ttp://www.hellohiro.com/

590 :デフォルトの名無しさん:04/12/02 17:58:56
>>583
アプリ:main()メソッドからプログラムがスタートする
アプレット:runメソッドからスタートする

一番いいのはあれだ、アプレットで作って、それをアプリケーションに組み込め
ただしGUIまわりはAWTで作るしかないけど

591 :デフォルトの名無しさん:04/12/02 19:23:30
String[] str = new String[100];
とかしたときにStringのコンストラクタで初期値を代入したりできないでしょうか?
String str = new String("hoge");
みたいなことをまとめてやりたいのですが、、、
forとかでまわすしかないのでしょうか?

592 :デフォルトの名無しさん:04/12/02 19:29:55
>>591
String[] str = { "a", "b", "c", "d" };

593 :デフォルトの名無しさん:04/12/02 19:35:41
>>591
>String str = new String("hoge");
ちなみにこんな事、しないぞ。


594 :デフォルトの名無しさん:04/12/02 19:54:26
>593
え?俺使うぞ。やばいの?


595 :591:04/12/02 20:05:20
えっと、代入したい文字列が同じ文字列ですと付け加えておきます


596 :デフォルトの名無しさん:04/12/02 20:10:40
>>595
String a = "aaa";
String[] b = new String[10];
Arrays.fill( b, a );

597 :デフォルトの名無しさん:04/12/02 20:10:58
>595
String [] str = { "aaaa", "bbbb" };

598 :デフォルトの名無しさん:04/12/02 20:14:14
>>206 で質問をして
>>207でアドバイスをいただいたのですが
どうにも
>>パッケージと同じ場所に初期化リソースでも置いて
>>そこからReader経由で読み出して行くようにする
という部分ができません
どのようにすればいいのか教えていただけませんでしょうか?
よろしくお願いします

599 :591:04/12/02 20:14:41
ありがとうございました。596さん的なものを探していました

600 :デフォルトの名無しさん:04/12/02 20:16:21
>>594
やばいというほどではないがまったくの無駄。

601 :デフォルトの名無しさん:04/12/02 20:38:11
>>594
サーバサイドでこんな書き方連発してる派遣がいたらお帰りいただく。

602 :デフォルトの名無しさん:04/12/02 20:59:48
>>601
なんでサーバサイド限定なんですか
お前みたいな派遣がいてもお帰りいただく。

603 :デフォルトの名無しさん:04/12/02 21:04:06
String str = new String("hoge");

String str = "hoge";

では下のほうがパフォーマンスが良い。なんでかは忘れた。
余談だがFindBugs使うと無駄なことすんな、と怒られたはず

604 :デフォルトの名無しさん:04/12/02 21:08:40
>>603
>なんでかは忘れた。

ばァか

605 :デフォルトの名無しさん:04/12/02 22:18:17
>>603
String str = new String("hoge");

String str = "hoge";

"hoge"の時点で、「hoge」という文字列インスタンスを生成しているのに、
その文字列をコピーして、新たにインスタンスを作っているから無駄。
これで合ってる?


606 :583=588:04/12/02 22:37:58
まだ完全に理解したわけじゃありませんが
いろいろなサイト(教えてもらったところなど)を見て
勉強したいと思います
いろいろ教えてくださってありがとうございました
またわからないとこがあったら聞きに来るかもしれませんが
そのときもよろしくお願いします

607 :デフォルトの名無しさん:04/12/02 22:39:49
>605
だな

608 :デフォルトの名無しさん:04/12/02 22:46:53
いつもROMってる入社一年目の新人だけど。

>>603>>605
勉強になりました(・∀・)

609 :デフォルトの名無しさん:04/12/02 22:51:43
だからjavaは汚いんだ。

610 :デフォルトの名無しさん:04/12/02 22:54:48
>>602
まず、こういった細かいオブジェクトの乱発生成は GC 時のパフォーマンスに直結する。それでも
1 VM に対して一人が前提のクライアントサイドなら豊富なメモリにより救われるが、多数ユーザ
の同時処理により一時的なヒープ消費の激しいサーバサイドでは効果が目に見えて現れる。
次はお前の番だぞ。サーバサイドで new String("hoge") に問題が無いことを説明してくれ (w

もう散々がいしゅつのネタだと思うんだが、質問者はともかく解答者も定期的に入れ替わってんのかなぁ?

>>605
ちょっと違う。もともと String のインスタンスは immutable なため、オンコードで記述された
リテラル "hoge" はクラスに対して一つだけインスタンス化されている。String str = "hoge";
はそのインスタンスに参照を向けるだけの行為。このステップの実行で新しいインスタンスは
一切発生しない。それに対し new String("hoge") は「内容は同じだが別の文字列インスタン
スを作る」という意味を持つ。immutable でありながら同じ内容の別のインスタンスを作るという
行為は大抵の場合無駄な事。

611 :610:04/12/02 22:57:35
後半の話、厳密に言えば現在のほとんどの Java VM の実装がそうなっている、と付け加えておく。

612 :デフォルトの名無しさん:04/12/02 23:02:09
>>611
VM とクラスライブラリの区別ぐらい付けろよorz

613 :M.B.:04/12/02 23:05:09
> String str = new String("hoge");

> String str = "hoge";
では、
 String str1 = new String("hoge");
 String str2 = new String("hoge");
だと
 str1 == str2
が成立しないけれど、
 String str1 = "hoge";
 String str2 = "hoge";
なら、
 str1 == str2
が成立せず、
 str1.equals(str2)
が成立する……ような気がする。

614 :デフォルトの名無しさん:04/12/02 23:07:24
>  String str1 = "hoge";
> String str2 = "hoge";
>なら、
> str1 == str2
は true ね。言語仕様よめ。

615 :M.B.:04/12/02 23:09:48
酒呑みながらム板に顔出すのは無謀だった。

意味不明 _| ̄|○

616 :デフォルトの名無しさん:04/12/02 23:12:42
>>615
コテハンやめるか自分で立てたスレ盛り上げろよ〜。

617 :デフォルトの名無しさん:04/12/02 23:21:37
int 型で 0-7 を特定の値のために使うことにして、8からはまた別の値のために使うとして

例えば、

11101010

という値、 7 から 5 に変えたいなと

10101010

なんか、これをうまく変えるための最も単純な方法ってなにかね
漏れは

value |= 7; // とりあえず全部1にする
value -= 7 // 0にする
value |= flag; // flagの部分だけ1にする

としてるんだが




618 :デフォルトの名無しさん:04/12/02 23:21:53
ファイルの記述及び読み込みについて
質問があります。
例えば以下のようなファイルがあったとします
*******a.txt********
1:ねこ
1-1:うさぎ
1-2:いぬ
1-3:おにぎり
1-2-1:のり
1-2-2:ごはん
1-2-1-1:味噌汁
1-2-1-1-1:麦
*****************
以下に質問の項目を記述します。
・「1-1」の「うさぎ」の文字列だけを取得したい
 などできるでしょうか?
・「1-2-1-1-1」の文字列を取得した後,「-」の4番目から左の文字列
(「1-2-1-1」そのものの文字列)や3番目から左の「1-2-1」,2番目の「1-2」,1番目の「1」
を取得する事はできるでしょうか?この場合応用が利くように
最初に取得した文字列の番号「n-n-n・・・」でも順番に取得できるようにしたいです。

よろしければ、サンプルプログラムがあればうれしいのですが、
どのようにしたらできるか教えてくださいです。




619 :M.B.:04/12/02 23:31:00
>>616
いや、Java宿題スレは意図に反した方面で盛り上がってしまって、
気乗りのするような問題が少ないもんだから、
他のスレにちょっかい出してたほうがなんぼか面白い。
つーかこのスレだと相手にされそうにないので、
宿題スレに泣きついてきた香具師もいそうに思われ。

620 :610:04/12/02 23:34:43
>>612
俺どこかでライブラリレベルの話をしてたっけ?

>>614
str1 と str2 が別クラスで宣言されてるならそうはならない、と書いといたほうが誤解されなくて
良いが、そもそもクラス単位の同一リテラルのマージは言語仕様ではなく JVM の実装依存。
言語仕様では String str = "hoge"; のステップに対して常に同じ "hoge" のインスタンスへの
参照が代入されることのみを保障している。これは同一クラスに散在する "hoge" という記述が
必ず同じインスタンスを指すということを保障しているわけではない。

んー説明難しいな、分からなきゃもっと噛み砕くけど。

621 :mm:04/12/02 23:39:32
すいません
Attributeってなんですか?
DefaultStyledDocumentでは、書式を設定するときに使うらしいが・・・
なんのことやらさっぱりわけわかめ。

APIよんでもさっぱり理解ができません。
だれか、さるでもわかるように説明してください。

622 :デフォルトの名無しさん:04/12/02 23:49:18
618です。どなたか、>>618の質問に答えてくださるとうれしいのですが
皆さんのお力を宜しくお願いします。。

623 :デフォルトの名無しさん:04/12/02 23:53:40
>>622
まずは、String#split(〜)。

624 :デフォルトの名無しさん:04/12/02 23:55:09
そもそも30分程度で回答が返ってくるのを期待するなんてアホだろ、おい。

625 :デフォルトの名無しさん:04/12/03 00:00:18
今週中に出さなきゃいけない宿題ならすれ違いキチガイ

BufferedReader in = null;
try{
  in = new BufferedReader(new FileInputStream("a.txt"));
  while(true){
    String line = in.readLine();
    if(line == null) break;
    if(line.startsWith("1-1:")){
      name = line.substring(line.indexOf(':') + 1);
      // あとは勝手にヤレ
    }
  }
} finally {
  try{if(in != null) in.close();}catch(IOException ex){}
}

626 :デフォルトの名無しさん:04/12/03 00:02:57
いってる意味がよくわからんが
value |= 7; と value -= 7; は併せて value &= ~7; でいい。

627 :デフォルトの名無しさん:04/12/03 00:24:42
>>625さん
ありがとうございます。すみません急ぎではなかったんですが、
無視をされていると思ってつい書いてしまいました。
それでも直ぐに記述できる>>625さんはすごい人だ。。
習って、やってみます。

628 :デフォルトの名無しさん:04/12/03 00:27:26
乱心、スクラッチで書いたのでコンパイルの保障はせん。

FileInputStream → FileReader

629 :デフォルトの名無しさん:04/12/03 00:53:52
>618
文字列操作とか正規表現つかうのかな?
よくわかんないけどしらべればできるとおもうな

630 :デフォルトの名無しさん:04/12/03 00:57:13
>>483
以上ということは3次元配列も入るのか?

そんなのいくらでもいるだろう。

631 :デフォルトの名無しさん:04/12/03 01:00:58
3次元くらいが最高かな。それ以上なら次元ごとに意味づけしてクラスとして分離しちゃう。

632 :デフォルトの名無しさん:04/12/03 01:11:28
>>527
それで出来ないことはなかろう。


633 :デフォルトの名無しさん:04/12/03 01:18:31
>>605
> "hoge"の時点で、「hoge」という文字列インスタンスを生成しているのに、
生成してない。

634 :デフォルトの名無しさん:04/12/03 01:22:56
"hoge" == "hoge"
だし、

String a = new String("hoge");
String b = new String("hoge");
a != b
だ。

635 :デフォルトの名無しさん:04/12/03 01:24:26
>>633
http://www.y-adagio.com/public/standards/tr_javalang/3.doc.htm#101083

636 :デフォルトの名無しさん:04/12/03 01:32:19
>>600
> やばいというほどではないがまったくの無駄。
http://www.gimlay.org/~javafaq/S008.html#S008-07


>>620
> str1 と str2 が別クラスで宣言されてるならそうはならない、と書いといたほうが誤解されなくて
> 良いが、
http://www.gimlay.org/~javafaq/S008.html#S008-01
この、文字列リテラルの共用は、複数のクラスにまたがって行なわれるため、
別々のクラスで定義した場合でも、同一内容の文字列リテラルは一つの実体に
なります。

637 :デフォルトの名無しさん:04/12/03 01:35:28
>>635
してないじゃん。↓
文字列リテラルは常にクラス String の同じインスタンス(4.3.1)を参照する。

638 :600:04/12/03 01:42:25
>>636
明示的に別のインスタンスになることくらいわかってて書いている。
immutable である String オブジェクトのコピーを作ることに
意味がある場合を教えてほしい。

>>637
"hoge" の時点で 1 個、さらに new String("hoge") でもう 1 個だぞ。わかってるか?

639 :デフォルトの名無しさん:04/12/03 01:51:16
>>620
> str1 と str2 が別クラスで宣言されてるならそうはならない、と書いといたほうが誤解されなくて
> 良いが、そもそもクラス単位の同一リテラルのマージは言語仕様ではなく JVM の実装依存。
> 言語仕様では String str = "hoge"; のステップに対して常に同じ "hoge" のインスタンスへの
> 参照が代入されることのみを保障している。これは同一クラスに散在する "hoge" という記述が
> 必ず同じインスタンスを指すということを保障しているわけではない。
> んー説明難しいな、分からなきゃもっと噛み砕くけど。
言語仕様読み直せ。お前全然理解できてないぞ。
http://www.y-adagio.com/public/standards/tr_javalang/

640 :デフォルトの名無しさん:04/12/03 02:01:24
>>620
> そもそもクラス単位の同一リテラルのマージは言語仕様ではなく JVM の実装依存。
言語仕様です。

3.10.5 文字列リテラル
http://www.y-adagio.com/public/standards/tr_javalang/3.doc.htm#101083

> 文字列リテラルは,クラス String(4.3.3,20.12)のインスタンス(4.3.1,12.5)への参照(4.3)とする。
> オブジェクト String は,一定の値をもつ。文字列リテラル,又はもっと一般的には,定数式の値とする
> 文字列(15.27)は,メソッド String.intern(20.12.47)を使って,一意なインスタンスを共有するために収容される。

641 :デフォルトの名無しさん:04/12/03 02:16:01
>>639-640
俺の知識が古かったようだ、回線切って首って新でくるわ <(´д`)ゝ

642 :デフォルトの名無しさん:04/12/03 02:20:49
ふと仮説を思いついた。
new String("hoge") とかやっちゃうバカは
・1 とか 3.14 みたいな数値リテラルはオブジェクトではない
・オブジェクトとして扱うには new Integer(1) とか new Double(3.14) とかしないといけない
という事実から "hoge" はオブジェクトではないという間違った連想をしてるのではないか?

たまに foo != null && foo.equals("hoge") みたいなのは "hoge".equals(foo) と同等とか
教えてやると「そんな書き方できたんだ」とかいうやつもいるし。

643 :デフォルトの名無しさん:04/12/03 03:16:15
まあでも、たしかにStringだけ特別扱いされてると思うし、誤解するひとがいても
不思議ではない。なんかプリミティブみたいに見えるからね。

644 :デフォルトの名無しさん:04/12/03 03:41:45
あの、素でわからないんですが
なんでこうなるんですか?↓
教えてエロい人。
> たまに foo != null && foo.equals("hoge") みたいなのは "hoge".equals(foo) と同等

645 :デフォルトの名無しさん:04/12/03 03:42:10
ああ、ageちゃったorz

646 :デフォルトの名無しさん:04/12/03 04:54:50
String#equals(null) はfalseを返すから。

fooが(1)fooがnullのとき
(2)fooの指すStringオブジェクトの内容が"hoge"のとき
(3)fooの指すStringオブジェクトの内容が"hoge"でないとき
に分けてその式がtrueになるかfalseになるか考えてみ

647 :デフォルトの名無しさん:04/12/03 06:15:53
>>646
なるほど、勉強になりましたm(_ _)m
ありがd

648 :デフォルトの名無しさん:04/12/03 09:09:16
どのOS・環境でも同じように表示されるフォントってなんでしょうか?
NetBeansつかってGUIを作っているのですが、フォントのプロパティにで自分が
インストールしているフォント全てが表示されているもので・・・・・。
#もちろんそのフォントを他の環境にインストールすればいいのでしょうが、それ無しで
#表示できるフォントについて教えてください。

お願いします。

649 :デフォルトの名無しさん:04/12/03 09:43:25
>>648
Times, Courier, Helvetica, Dialog, serif, sans-serif, monospaced ってリストにない?

650 :デフォルトの名無しさん:04/12/03 09:48:32
いつの間にか J2SE 1.5 の日本語 API リファレンスが出ておった。。。

651 :デフォルトの名無しさん:04/12/03 11:03:08
>>649
ありがとうございます。
ネット探したのですが、古い情報が多くて、ちょっと頭がこんがらがっていたので、
皆様にお聞きしました。ありがとうございます。

652 :デフォルトの名無しさん:04/12/03 11:19:09
アルゴリズムの質問です。
JAVA.io.Fileクラスについて。

1.File()コンストラクタの重要なものを2種類、意味も教えてください。

2.Fileのメソッドで,ディレクトリかどうか調べる方法を教えてください。

3.Fileのメソッドで、フォルダ内の一覧を得る方法。

4.Fileのメソッドを利用して指定のファイルが存在するか調べる方法。

5.親フォルダの名前を知る方法。

6. .getAbsolutepath()と.getCanonipaht()の違い。

よろしくお願いします


653 :デフォルトの名無しさん:04/12/03 11:23:13
なるほど、学校の課題ですね。スレ違いです。

654 :デフォルトの名無しさん:04/12/03 11:35:18
>>652
全部java.io.Fileの使い方の質問でアルゴリズムの質問じゃない。

1.質問が意味不明。File(java.net.URI)はあまり使わんが、それも含めてコンストラクタは全部重要。
2.isDirectory()
3.list() listFiles()
4.new File(path_of_specified_file).exist()
5.getParent() getParentFile().getName()
6.getAbsolutePath() は相対パスを絶対パスにする。
 getCanonicalPath() は絶対パスから例えば ".." とかを解決して除去するなどして正規化する。

655 :デフォルトの名無しさん:04/12/03 11:38:19
×>4.new File(path_of_specified_file).exist()
○ 4.new File(path_of_specified_file).exists()
sが抜けてる

>5.getParent() getParentFile().getName()
前者と後者で意味が違うね
まぁ質問が曖昧なので どっちでもいいのかもしれんが

656 :デフォルトの名無しさん:04/12/03 11:39:38
1からして設問に問題ありだな。
馬鹿な先生が出したのか、馬鹿な学生に合わせたのか。もしくはその両方か。

657 :デフォルトの名無しさん:04/12/03 11:45:10
どう質問していいのかもよくわからないのですが・・・コンパイルのやり方がわからないんです。MS-DOSプロンプトで、どうやったらフロッピーに入ってるプログラムをコンパイルできるのですか?どう入力したらいいのですか?
質問するのに足りない事があれば、それも教えてください。すみません、お願いします。

658 :デフォルトの名無しさん:04/12/03 11:49:29
それはDOSの知識のほうなんっじゃないかね

659 :657:04/12/03 11:53:43
そうなんですか、すみませんでした。では、DOSの方に行きます。

660 :デフォルトの名無しさん:04/12/03 12:00:37
まず、フロッピーディスクを水平に持ってディスクドライブに
挿入してください。奥まで入れるとカチャっとの音とともに
セットされます。そしてエクスプローラーからAドライブを選択
すると、フロッピーディスクにアクセスできます。
あとは、jav

661 :652:04/12/03 12:19:55
>>653
すみませんでした。

>>654 >>655
何も知らずに質問して御迷惑お掛けしました。ありがとうございます。

>>656
両方です。


662 :教えてクン:04/12/03 12:54:24
今まで分からなかった事が分かってきたので、もっと教えてください。
Stringは変更不可なのに、そんなコンストラクタを作ったことは、
今となっては過ちだったということでしょうか?

ArrayListのように変更可能なクラスを、引数とするメソッドを作り、
内部で保持し続けるなんてときには、大概コピー作って保持しないと、
呼び出した側から変更されてしまう可能性がある?

class Test {
 ArrayList list;
 public Test(ArrayList l){
  this.list = l;
  //生成時点でのArrayListを保持するつもりなら
  //this.list = new ArrayList(l); とすべき?
 }
}

663 :デフォルトの名無しさん:04/12/03 13:15:19
>>662
やってみればいいじゃない
#勘違いしてることに気づくから

664 :デフォルトの名無しさん:04/12/03 13:19:37
>今まで分からなかった事が分かってきたので、もっと教えてください。

いや、多分なんにもわかってないと思う。
あと百回くらい言語仕様とjavadoc
それからみんなが挙げてくれた参考リンク先読め。
声に出して読め。

665 :デフォルトの名無しさん:04/12/03 13:46:13
>>657
フロッピーとわざわざ断ってるんだから、質問の答えはこうだな。
HDDと同様に。

666 :デフォルトの名無しさん:04/12/03 20:15:49
アプレットとGUIについて勉強しようと思い、プログラムを作成しているのですが
どうにも行き詰ってしまったので質問をお願いいたします
アプレットでボタンを押すことで四角なり円なりを描画するというプログラムを作成しようと思っているのですが
下のソース(描画に必要な部分はもちろんあります)で実行を行うとボタンが表示されません
そして→の部分をコメントアウトして実行しますとボタンは表示されないままで描画処理だけは行われます
これは何か根本的に考え方が間違っているのでしょうか・・・?orz
どうかご教授お願いいたします

public class Diapplet extends Applet{
private Color c;
static JButton jb = new JButton("draw");
boolean flg = false;

667 :デフォルトの名無しさん:04/12/03 20:16:33
public void init(){
setLayout(null);
add(jb);
jb.setBounds( 440, 30, 75,30);
jb.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
flg = true;
repaint();
}
});
}

public void paint(Graphics g){
→if( flg == false ) return;
        描画処理
}
}
public void update( Graphics g ){
paint(g);

}
}


668 :デフォルトの名無しさん:04/12/03 20:39:13
>>666
AppletはAWT
JButtonとかはSwing

まずJAppletつかえ

669 :デフォルトの名無しさん:04/12/03 22:19:50
手持ちのテキストに「チェックボックスグループを作り、チェックをつけるとそれを集計して表示するプログラム」
( ttp://v.isp.2ch.net/up/39df3324c0ab.txt )
があったので、これを少し変えて「チェックを入れた後、ボタンを押すと集計して表示するプログラム」を作ろうと
思ってやってみたんですが
( ttp://v.isp.2ch.net/up/c0a1e4eb5399.txt )


example.java:21 シンボルを解決できません。
シンボル:メソッド addItemListener(example)
場所  : java.awt.Button のクラス
         b.addItemListener(this);
エラー1個



というメッセージが出て上手くいきません。
正常に動くようにするにはどうすればいいんでしょうか?

670 :デフォルトの名無しさん:04/12/03 22:25:51
>>669
Button には ItemListener() じゃなくて
addActionListener() じゃないの

AWTのイベント処理について調べて見れば?

671 :デフォルトの名無しさん:04/12/03 22:27:31
>>669
変数bは、CheckBoxクラスでなく、Buttonクラスのインスタンスだからです。
CheckBoxのインスタンス変数に対して、addItemListener()してください。


672 :デフォルトの名無しさん:04/12/03 22:53:19
すみません,教えて下さい。
DecimalFormat で,パターンを
#.# とするのと
##.# とするのでは何か違いがあるのでしょうか。
つまり,整数部の # の数に意味はあるかということです。
実際にやってみると違いがないように見えるのですが,本当にそうなんでしょうか。

673 :669:04/12/03 22:56:52
>>670
ItemListener()をaddActionListener()に変えてみたんですが以下のメッセージが出ました。

example.java:21: java.awtButton の addActionListener(java.awt.ActionListener)は
(example)に適用できません。
       b.addActionListener(this);


多分、addActionListener()にするなら
public class example extends Applet implements ActionListener
にしなければならないと思うんですが、そうするとチェックボックスグループが上手く動かないようです。


>>671
言ってることがおぼろげには理解できるんですが、
要するに、ここで言えばc1やc2とかが「CheckBoxクラスのインスタンス」という奴で
bはButtonクラスのインスタンスだから使えない。
それでためしにCheckbox b=new Checkbox("送信");とやってやると
エラーは出なかったのですが当然のことながら「送信」がチェックボックスになっていました。
ボタンを適用するのはできませんか?


674 :デフォルトの名無しさん:04/12/03 22:57:12
>>672
DecimalFormat#toPattern() では正規化されたパターンが返ってくると思ったので
同じかどうか確認してみればいいかも?

675 :デフォルトの名無しさん:04/12/03 23:16:38
>>673
ごめん、ちゃんと見てなかった
でもボタンをクリックして集計したいなら
ActionListener も実装するのかな

ItemListener と ActionListener を両方実装して
itemStateChanged() ではどちらが選択されたかだけを記憶しておいて
ActionPerformed() でカウントするようにしたら良いのでは?


676 :デフォルトの名無しさん:04/12/03 23:21:09
基本型を使うメリットはよくわかるのですが
変数で参照型を使う事によってどういうメリットがあるのでしょうか?
説明は書いているのですが、結局どういう時に効果が発揮するのでしょうか?

ポリモーフィズムなどの説明を見てもいまいちつかめません


677 :デフォルトの名無しさん:04/12/03 23:26:29
その基本型を使うメリットもよくわかってないんじゃないか

678 :デフォルトの名無しさん:04/12/04 00:13:02
>>423
プラグインをさがせばEclipseでもできるかもしれんぞ。

それに勝手に整形されるのは非常に迷惑だ。
とくにコメントアウトされたソースコードをそのままペースとしたいときには。
ペースとしてからコメントアウト
という技ができない。

ほかにもXDocletとかクエリを書きたいときがあるだろ。
そんなとき勝手に整形されるのは不便だ。

679 :デフォルトの名無しさん:04/12/04 00:24:21
>>539
枯れている?
なんで?
今はFedora Core3がでたから2はもう古いということか?

680 :デフォルトの名無しさん:04/12/04 00:26:36
>>537
どうせgcjつかってるだけだろ。
ネイティブはやってられんし不安定でつかいものにならぬ。
自力でTomcatをダウソしたほうがまし


681 :デフォルトの名無しさん:04/12/04 00:28:25
>>680
redhat9がなぜかスレッド起動がすごい遅いのは割と有名な話だと思うけど


682 :デフォルトの名無しさん:04/12/04 01:04:53
>>679
枯れてるってのは使われて成熟してるって意味だと思う

683 :デフォルトの名無しさん:04/12/04 01:56:50
暇だからなんか答えるか
>>667
Swing使う場合は
paintComponent(Graphics g)としなさい。
あとやり方がちと古いね。
VolatileImageを使うなりするとなおよろしい。

あとアプリケーション

684 :デフォルトの名無しさん:04/12/04 02:21:49
>>638

> "hoge" の時点で 1 個、さらに new String("hoge") でもう 1 個だぞ。わかってるか?

String a = "hoge";
String b = "hoge";
でインスタンスが2個できると思ってないか?

String a = "hoge";
String b = a;
と同義。

685 :600:04/12/04 02:37:43
>>684
思ってるわけないだろ、ボケが。お前こそ何を勘違いしてるんだ?
そもそもお前の 684 の発言と俺の 638 の発言のどこに関係があるんだ?

686 :デフォルトの名無しさん:04/12/04 02:46:52
質問が有ります。ものすごく悩んでまして・・・
以下のような文字列があったとします。

1-11-265-145-895-9-9654-74-1

最初からn番目の「-」-1までの文字列を読み取るなどできるでしょうか?
例えば5番目の「-」-1までならば、結果は、
1-11-265-145-895
結果がこのようになるようにしたい。
どなたかサンプルプログラムを書いていただけるとうれしいです。
よろしくです。。

687 :デフォルトの名無しさん:04/12/04 02:51:28
>>686
いろいろ効率的な方法はあるけれど
一文字ずつ見ていって「-」が出てくる数を数えるという方法さえ
思いつかなかったんだとしたら非常に知能が劣っていると言わざるを得ない。

688 :デフォルトの名無しさん:04/12/04 03:04:14
>>687
早い書き込みありがとうございます。
686です。すみません。全然思いつきませんでした。。
うおー劣っている・・(TOT)←プログラム初心者です・・
僕の知っているの関数で 
int indexOf('-')
というのがあってこれは、最初の「-」までの数値を取得する
ことができるじゃないですか。
これの、2番目,3番目とかできるものってありますか?


689 :687:04/12/04 03:10:14
引数を二つとる方のindexOfを調べてみろ。直接は取れないので多少応用が必要。

690 :デフォルトの名無しさん:04/12/04 03:16:51
>>688
J2SEのドキュメントをダウンロードした方が良いよ。
俺も最初、どのクラスにどういうメソッドがあるのか
わからなかったけど、ドキュメントを見れば捜せる。

http://java.sun.com/j2se/1.4.2/ja/download.html
http://java.sun.com/j2se/1.5.0/ja/download.html

691 :686:04/12/04 03:30:24
そっか取れないんですか・・
引数を二つとる方のindexOfを拝見しましたが
indexOf(String a,int b)
b番目から指定された文字列aが最初に出現する位置までを取得
となっていました。
しかしこれだと確かに難しそうです。
1-11-265-145-895-9-9654-74-1
この状態でb番目を指定しても、何処からはじめればいいのやら・・

結局,簡単にはいかないようですね・・
やはり、1文字ずつ読んで,i=i++してって
「-」がきたらif文でj=j++
6番目の-でとめたいならば,6=jの時にbreikして
終了
このときのi-1番目が6番目の手前までの文字列数になるという感じですかね



692 :デフォルトの名無しさん:04/12/04 03:38:24
6=j
このような書き方流行ってるの?(´・ω・`)

693 :デフォルトの名無しさん:04/12/04 03:38:54
>691
んー、定石と言えば定石なんだけど
1. 最初は引数1つのindexOf()で、「最初に'-'がある位置」を取る
2. 1.で得た位置の次をb番目として、引数2つのindexOf()を順次呼んで結果を得る

自力で思いつかなかった?
あと、数字だけの並びで間に挟まってるのが'-'で固定ならjava.util.regex.Pattern辺りを
使う手もあるかと思うが、ややこしいから今はやめておいた方がいいかも。

694 :デフォルトの名無しさん:04/12/04 03:39:22
>>684
その例えで言うなら

String a = "hoge"; // ひとつめ
String b = new String(a); //ふたつめ

だぞ。わかってるか?

695 :デフォルトの名無しさん:04/12/04 03:55:00
>>686

>>618とは違う人?

696 :デフォルトの名無しさん:04/12/04 05:03:13
>>694

String a = "hoge";
String b = "hoge";

String a = "hoge";
String b = a;
だと a == b だが、

String a = "hoge";
String b = new String(a);
なら a != b。


697 :デフォルトの名無しさん:04/12/04 05:58:42
696(=684?)は何がいいたいんだ?つっこみどころが的外れなのにもほどがある。

698 :672:04/12/04 09:10:42
>>674
ありがとうございます。やってみました。
結果は同じだったのですが,意外だったったのは,
##.## が #0.## となって,つまり,
"0.1" が ".1" となると思ってたら,"0.1" と出力されたことです。
仕様として公開されている情報と違うように思うのですが。

自分は数値計算を主にやっていて,基本的に FORTRAN の世界に
います。最近 Java をかじっているのですが,Java の世界の人は
こういうところにはあまり興味はないようですね。

699 :デフォルトの名無しさん:04/12/04 09:22:28
ここ2年ぐらいJavaやってないのですがSDK1.4系ってまだまだ現役ですか?


700 :デフォルトの名無しさん:04/12/04 09:28:55
>>698
> 仕様として公開されている情報と違うように思うのですが。
いや、仕様に書いてあるよ。
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/text/DecimalFormat.html
の構文のところね。
> Integer:
>    MinimumInteger
>    #
>    # Integer
>    # , Integer
> MinimumInteger:
>    0
>    0 MinimumInteger
>    0 , MinimumInteger
個人的には、指定されたパターンが構文規則に従ってないので
"##.##" は IllegalArgumentException 投げるべきだと思うけど。

ちなみに聞いておきたいんだけど、仮に "##.##" が受理された場合
0 はなんて表示されるべき? "." だけ?

701 :デフォルトの名無しさん:04/12/04 09:35:31
>ちなみに聞いておきたいんだけど、仮に "##.##" が受理された場合
DecimalFormat#setDecimalSeparatorAlwaysShown(boolean) で
false が指定されてれば "." も表示されなくて 0 は "" にされるな。

デフォルトってどーだったっけ?

702 :デフォルトの名無しさん:04/12/04 11:09:30
>>699
業務系ではでたばかりの5.0はつかってねーな
枯れているかどうかも重要だろう
というか言語仕様かわりすぎてというのもあるだろう

覚える部分が少ないというのがCとJavaの利点だったからな

703 :デフォルトの名無しさん:04/12/04 11:12:57
>>681
そうなんだ。
今までTurboLinuxを使っていたんでRedhatはよくわからんかった

704 :デフォルトの名無しさん:04/12/04 11:20:47
>>702
> 枯れているかどうかも重要だろう

Fedora Core2が枯れているかどうかという話題といい
紛らわしい香具師だな

http://dictionary.goo.ne.jp/search.php?MT=%B8%CF%A4%EC%A4%EB&kind=jn&mode=0&jn.x=36&jn.y=12

か・れる 0 【枯れる】

(2)(比喩的に用いて)本来の勢いがなくなる。朽ちる。
「やせても―・れても武士だ」
(3)人柄や技芸が深みのある渋さをもつようになる。円熟する。
「―・れた芸」


枯れるといえば(2)しか想像できないのだが
(3)が一般的なのか?

705 :デフォルトの名無しさん:04/12/04 11:33:20
>>704
ITの世界で枯れるってのは、”技術的にも浸透し、バグも無く安定して使える程度に年月が経て”、ってな意味だろ。
紛らわしいと思うのは、”君”の方の問題だよ。

706 :デフォルトの名無しさん:04/12/04 11:52:52
>>704
ええ。新技術の話に関しては、(3)の方が一般的ですよ。

707 :デフォルトの名無しさん:04/12/04 12:25:43
>>704

パシャ パシャ  パシャ パシャ パシャ  パシャ パシャ パシャ パシャ パシャ
   パシャ パシャ パシャ パシャ パシャ  パシャ パシャ パシャ  パシャ  パシャ
 ∧_∧      ∧_∧     ∧_∧  ∧_∧    ∧_∧     ∧_∧
 (   )】      (   )】    (   )】 【(   )    【(   )    【(   )
 /  /┘ .   /  /┘.    /  /┘ └\ \   └\ \   └\ \
ノ ̄ゝ     ノ ̄ゝ      ノ ̄ゝ     ノ ̄ゝ    ノ ̄ゝ     ノ ̄ゝ

708 :デフォルトの名無しさん:04/12/04 12:29:21
>>704
ITの世界じゃ「葉が無いので虫がわかない」って意味かもよ。

709 :デフォルトの名無しさん:04/12/04 12:39:02
どこかで見たと思ったらこのスレの少し前に既出な話題だった
>>539>>679>>682


710 :デフォルトの名無しさん:04/12/04 13:28:29
短絡演算子&&と||はどちらが優先順位が上ですか?

711 :デフォルトの名無しさん:04/12/04 13:34:19
>>710
条件AND演算子 && の方が優先される。
http://java.sun.com/docs/books/jls/second_edition/html/expressions.doc.html#5247
> ConditionalAndExpression:
>    InclusiveOrExpression
>    ConditionalAndExpression && InclusiveOrExpression

> ConditionalOrExpression:
>    ConditionalAndExpression
>    ConditionalOrExpression || ConditionalAndExpression

712 :デフォルトの名無しさん:04/12/04 13:49:52
684,696が馬鹿すぎて笑った

713 :デフォルトの名無しさん:04/12/04 14:36:51
>>711 サンクス

714 :デフォルトの名無しさん:04/12/04 15:27:02
サブクラスだけに関係するプロパティを設定するコンストラクタを作ろうとすると
コンパイルエラーが起きてしまいます。下記が例です。勿論それぞれ別ファイルです。
Super の title と Sub の nanika は全く別のプロパティなので
super(String.valueOf(b)) とするわけにもいかず困っています。
どうすればよいでしょうか。アドバイスお願いします。

public class Super{
protected String title;

public Super(String title){
this.title = title;
}
}
public class Sub extends Super{
protected boolean nanika;

public Sub(boolean b){
this.nanika = b;
}
}


715 :デフォルトの名無しさん:04/12/04 15:39:28
>>714
Superの方に
protected Super(){
}
を加えるか

Subのコンストラクタに
super("");
を入れればコンパイルできるよ

716 :デフォルトの名無しさん:04/12/04 15:58:51
>>715
なるほど、protected のコンストラクタなら Super でおかしなインスタンスを作られる事もありませんね。
Super 側に protected Super(){} を加える事で不都合を解消できました。ありがとうございました。


717 :デフォルトの名無しさん:04/12/04 16:04:49
JTextAreaの中で右クリックしたときに
カット、コピー、ペーストといったポップアップメニュー表示
したいんですが、どうしたらいいでしょうか?

718 :デフォルトの名無しさん:04/12/04 17:11:02
ポップアップするコードを書けばいいんじゃないですか?
1.4だとリスナを登録したり結構メンドクサイが5.0ならかなり楽。

719 :デフォルトの名無しさん:04/12/04 17:16:37
>>718
5.0だと何が楽になるの?

720 :デフォルトの名無しさん:04/12/04 17:18:04
普通のメニューみたいにコンポーネントに登録するだけでよい。

721 :デフォルトの名無しさん:04/12/04 17:25:32
>>697
>>633

722 :719:04/12/04 17:30:50
本当だ、setComponentPopupMenuと、setInheritsPopupMenuか
ありがとう>>720

723 :デフォルトの名無しさん:04/12/04 17:42:38
>>705
そもそもバグが無いなんてありえない

724 :デフォルトの名無しさん:04/12/04 17:58:39
>>668
>>683
遅くなりましたが答えていただきありがとうございます
いまから試してみようと思います

725 :デフォルトの名無しさん:04/12/04 18:02:16
>>723
どちらも前提条件による。

726 :デフォルトの名無しさん:04/12/04 18:58:50
JTextFieldではなくTextFieldで
setHorizontalAlignment(JtextField.CENTER)
のように文字を中央寄せする処理はできないのでしょうか?

727 :ジョンソン:04/12/04 20:26:26
import java.io.*;

public class Sample22 {
public static void main(String[] args) {
System.out.println("あなたの名前を入力してください。");
BufferedReader reader = new BufferedReader(new InputStreamReader (System.in),1);
try{
String line = reader.readLine();
System.out.println("line = " + line);
}catch (IOException e){
System.out.println(e);
}
}
}

というプログラムを書いたのですが、コンパイルは出来ても実行が上手くいきません。
「あなたの名前を入力してください」と出たあと、入力待ちのカーソルにならないんです。
何がいけないのでしょうか??

728 :デフォルトの名無しさん:04/12/04 21:21:52
>>727
少なくともこちらでは意図どおりに動いている。

729 :672:04/12/04 21:33:11
>>700
> http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/text/DecimalFormat.html
> の構文のところね。
> > Integer:
> >    MinimumInteger
> >    #
> >    # Integer
> >    # , Integer
> > MinimumInteger:
> >    0
> >    0 MinimumInteger
> >    0 , MinimumInteger

実はこの部分の読み方がよくわからないんですが,その下のほうで,
# の意味として,"数字。ゼロだと表示されない" と書いてあるので,

> ちなみに聞いておきたいんだけど、仮に "##.##" が受理された場合
> 0 はなんて表示されるべき? "." だけ?

その通りで,また,"#" に対して "0" だったら ""だと思ってました。
どこかの初心者向け解説サイトでそんなことを書いてあったのを見たような気もするし。

730 :デフォルトの名無しさん:04/12/04 22:42:47
>>729
> 実はこの部分の読み方がよくわからないんですが
単なるBNF記法の亜流。Java言語仕様でも使われてる。
以下の文書を見れば読めるようになると思われ。
http://www.y-adagio.com/public/standards/tr_javalang2/grammars.doc.html

で、簡単に言うと整数部には少なくとも"0"が1個以上含まれなければいけないルールになってる。
"##.##" は整数部に"0"が1個も含まれてないので構文違反。
構文違反なのにIllegalArgumentExceptionを投げないなら実装がダメであるとは言える。

731 :デフォルトの名無しさん:04/12/04 23:32:59
>>705-707
待て、マーケティングのために"枯れる" という
意味をわざと皮肉を込めて
言う経営者や顧客もいるのではないか?

ITのことwqおなんだか良く分かっていない顧客や
若者が聞いたら勘違いして「その技術は枯れているから
古くさいものは使わない方がいい」
なんて言いだしかねないのでは?

下手なことをいうとかなりのダメージを受ける恐れあるのではないかと思われる。


732 :672:04/12/04 23:36:55
>>730
> 以下の文書を見れば読めるようになると思われ。
どうも,読んでみます。

> "##.##" は整数部に"0"が1個も含まれてないので構文違反。

でも,
http://java.sun.com/docs/books/tutorial/i18n/format/decimalFormat.html
に,"###.##" というサンプルが出てるんですよね。 ???

733 :デフォルトの名無しさん:04/12/04 23:48:52
>>731
そういう時は、あえて
『いい意味で』枯れた技術ですから
っていうなあ。
「枯れた技術」と聞いて、
>枯れるといえば(2)しか想像できないのだが
っておもってんのは...

734 :デフォルトの名無しさん:04/12/05 00:05:58
>>731
>>>705-707
>待て、マーケティングのために"枯れる" という
>意味をわざと皮肉を込めて
>言う経営者や顧客もいるのではないか?

詭弁の何番に相当するかね。

735 :デフォルトの名無しさん:04/12/05 00:12:56
>>732
> に,"###.##" というサンプルが出てるんですよね。 ???
サンプルを書いた人間がDecimalFormatの細かい仕様にまで気を配らなかっただけだろ。
もしくは仕様なんざ知った事ではなくて現行の実行環境で動けばよいというポリシーで書いてるとか。
そこって他でも用語が言語仕様(JLS)と一致してなかったりするし。

736 :667:04/12/05 00:40:35
指摘を頂いたところのあたりをいじってみたのですが今度はボタンは表示されるようになったのですが
ボタンを押しても画像がまったく描画されなくなってしまいましたorz
これはどのように修正すればよろしいでしょうか? 画像描画部分のソースも下に貼り付けておきます
描画の色変えとかにも挑戦してみようと思っているので余計な部分も混ざってますがよろしくお願いいたします
public class Diapplet extends JApplet{
private Color c;
private Color[] color={Color.orange,Color.magenta,Color.blue,Color.green,Color.red,Color.yellow,Color.black};
static JButton jb = new JButton("set");

boolean flg = false;

public void init(){
Container con = getContentPane();
con.setLayout(null);
con.add(jb);
jb.setBounds( 440, 30, 75,30);


jb.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
flg = true;
repaint();
}
});
}

737 :デフォルトの名無しさん:04/12/05 00:41:09
public void paint(Graphics g){
//if( flg == false ) return;

ColoredRound round= new ColoredRound(20,20,70,70,20,20);

for(int i=0;i<1;i++){
round.draw(g);
g.setColor(color[i]);
}
}
public void update( Graphics g ){
paint(g);

}
}
class ColoredRound extends Round{
private Color c;
public ColoredRound(int x2,int y2,int v2,int h2,int mh2,int ms2){
super(x2,y2,v2,h2,mh2,ms2);
}
public void setColor(Color c2){
c=c2;
}
public void draw(Graphics g){
Color currentColor=g.getColor();
g.setColor(c);
super.draw(g);
g.setColor(currentColor);
}
}

738 :デフォルトの名無しさん:04/12/05 00:41:33
class Round{
int x;
int y;
int v;
int h;
int mh;
int ms;

public Round(int xPosition,int yPosition,int vPosition,int hPosition,int mhsize,int mssize){
x=xPosition;
y=yPosition;
v=vPosition;
h=hPosition;
mh=mhsize;
ms=mssize;
}

public void draw(Graphics g){
g.drawRoundRect(x,y,v,h,mh,ms);
}
}

739 :デフォルトの名無しさん:04/12/05 01:04:34
>>731
悔やむのであれば自分の無知を悔やめ

740 :デフォルトの名無しさん:04/12/05 01:20:24
java初心者です。
質問ですが、できるだけ定数はインターフェースで
定義するものですか?
また、クラス継承している場合は、
スーパークラスでのみインターフェース実体化して、
定数もサブクラスへ引き継がせるのが普通でしょうか?

741 :デフォルトの名無しさん:04/12/05 01:21:57
マウスカーソル変更についての質問です。
JTableとPanelで別々のマウスカーソルの形状にしたいと考えています。
普通にMouseMoved内で
setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
とすれば変更できるのですが、
今回は
Component com = SwingUtilities.getRoot(this);
setCursor(new Cursor(Cursor.HAND_CURSOR));
を使います。
com.getCursor()ではHAND_CURSORになるのですが、
実行するとHAND_CURSORに変更してくれません。
どうすればよいでしょうか?ご教授願います。

ソースは次に

742 :デフォルトの名無しさん:04/12/05 01:22:35
>>740
言っている意味がよくわからんが、
そういうのは
「モデルによる。」

743 :741:04/12/05 01:24:36
public void mouseMovedTest(MouseEvent event){

if(event.getComponent()==table){
Component com = SwingUtilities.getRoot(this);
com.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));

System.out.println("com.getCursor()"+com.getCursor()+i);
//setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
System.out.println("getCursor()"+getCursor()+i);
i++;
}else{

setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR));
System.out.println("MOVE_CURSOR"+i);
i++;
}

744 :XXX:04/12/05 01:25:09
話変わって申し訳ないですが、
OracleのDBとのinterfaceはJavaが
一番なのでしょうか?

745 :デフォルトの名無しさん:04/12/05 01:29:37
>>744
言語、アクセスドライバの選定はシステムによるのでは?
C/Sのか、Webなのか、バッチがメインとか・・。

746 :デフォルトの名無しさん:04/12/05 01:31:09
>>740
普通じゃない。
少なくとも1.5以降は素直にstatic import使え。

747 :デフォルトの名無しさん:04/12/05 01:37:02
>740
JTableとPanelそれぞれnewしたあとにsetCursorしておけばいいんじゃないのか?


748 :XXX:04/12/05 01:48:21
>>745
回答ありがとうございます。
システムはWebです。Oracleから
データ結果をWeb表示させるシステムを
考えてます。

749 :740:04/12/05 01:48:52
レスありがとうございます。

>>742
上手く質問できなくてすみません。もうちょっと勉強します。

>>746
確かにstatic importの方がシンプルで良さそうですね。

750 :デフォルトの名無しさん:04/12/05 01:50:22
ファイル操作に関する質問です。
対象ファイル拡張子の変更を行い、ファイルの内容を読み込み、
処理を行い、バックアップフォルダにファイルを移動する、
というプログラムを書きたいのですが、
どうしても動作が上手く行きません。
拡張子の変更、バックアップフォルダへの移動に
renameToを使用したのですが、
拡張子の変更は上手く行くのに、
バックアップフォルダへの移動が出来ないのです。

同一フォルダでの再拡張子変更なども試してみたのですが、
(それもコードコピぺ、拡張子部分のみ変更)
どうしても2回目のrenameToが動作しないのです。
エラーは出ませんし、
デバックでもきちんとコードを読んではいるようなので、
一体何が悪いのかわかりません。
次にコードを載せますので、アドバイスお願いします。


751 :750:04/12/05 01:50:56
strFilePath = C:\\tmp\\test.txt; /** 処理対象ファイルパス */

// ファイルの拡張子を[lock]に変更
file = new File(strFilePath);
strFilePath = strFilePath.replaceFirst("txt", "lock");
File newFile = new File(strFilePath);
file.renameTo(newFile);

// ファイルを読み更新作業
try{
syori(); /** 処理 */
}catch(Exception e){
// 拡張子をerrに変更
}

// 処理が終了したファイルをバックアップフォルダに移動
strBkupPath = C://backup/test.lock;
strBkupPath = strBkupPath.replaceFirst("lock", "bkup");
newFile = new File(strBkupPath);
file.renameTo(newFile);


752 :750:04/12/05 01:53:02
*処理メソッドは長いので省略しました。
*処理メソッド内の動作は問題ないです。

本当は、処理メソッド内でエラーが出たら、
そこでも拡張子の変更を行いたいのですが、
そもそもの流れが出来ていないので上記ではコメントのみにしてあります。

なお、メモ帳からコピーしましたら、タブがきいていませんでした。
読みづらくてすみません。
どうぞよろしくお願いします。

753 :222:04/12/05 02:00:39
質問します。
HashTableを2次元配列で生成することは出来るのでしょうか?
たくさんのパラメータを渡すときに実際の仕事ではどのように
渡しているのでしょうか?
教えて下さい。


754 :デフォルトの名無しさん:04/12/05 02:42:35
>>750
まず renameTo の返り値がどうなってるか確認した方がいいよ。

>>753
javadoc みてコンストラクタを確認した方がいいよ。

755 :デフォルトの名無しさん:04/12/05 02:48:17
質問ですぅ
以下のような文字列があるとします。

String xxx="ネコ,こねこ,JAVA,JAVAC,C++:1,234,56789"

この時、xxx文字列の「:」の左側にある文字列つまり
「ネコ,こねこ,JAVA,JAVAC,C++」の「,」の数を数えられる
プログラムを教えておねがいします。この場合では、4つとかぞえられるようにしたい




756 :デフォルトの名無しさん:04/12/05 03:01:19
Jtableの中でJbuttonを貼り付けて、eventを取得する
方法ありますか?
何故か、eventを取得できない。

757 :デフォルトの名無しさん:04/12/05 03:02:29
>>755
int commaCount = xxx.replaceAll(":.*$", "").split(",").length - 1;


758 :デフォルトの名無しさん:04/12/05 03:14:42
>>755
ばかか?

759 :デフォルトの名無しさん:04/12/05 03:22:38
>>758
そんなレスするあなたの方が愚かに見えます。

760 :デフォルトの名無しさん:04/12/05 03:37:03
本人降臨

761 :デフォルトの名無しさん:04/12/05 03:41:59
>>760
いつでも本人はあなたの傍にいます。

762 :667:04/12/05 03:45:28
>>737
public void paint(Graphics g){

public void paintComponent(Graphics g){
の間違いです

763 :750:04/12/05 06:56:36
>>754

そうですよね、戻り値!
でも、今環境がないので確認が出来ず、
確認出来るときにはもう仕上がっていないと行けない、
という切羽詰まった状況におります。
よかったら、renameToが正しく動作していた時としていない時、
それぞれどの辺を確認したら良いか教えてください。

764 :デフォルトの名無しさん:04/12/05 07:25:19
>>763
そのファイルから生成したFileInputStream、またはBufferedInputStream
インスタンスをclose()してください。

765 :デフォルトの名無しさん:04/12/05 07:41:40
JARファイル内容の抽出で、クラス名が以上に長い60文字位のクラスは
抽出できないのかな。
エラーが出てしまうんじゃ。
% jar -xf hogehoge.jar でダメ。
% jar -tf hogehoge.jar でみるとエラーのクラスは以上に長い。



766 :デフォルトの名無しさん:04/12/05 08:35:28
質問です。
Thread クラスの処理の仕方ですが、
join と wait は同じ処理のこと、
と書いてあるのをこのスレの中でみつけましたが、
joinはロックのないときの処理wait はsynchronizedを使ったときの処理
と考えていいのでしょうか。

767 :デフォルトの名無しさん:04/12/05 09:54:55
>766
全然違うものだからまずjavadocを確認しては?

768 :デフォルトの名無しさん:04/12/05 10:53:46
あるクラスAの集合をフィールドとして持つクラスBがあって、
クラスBを別のクラスZのmain()の中でインスタンス化してるとします。
Bの中では、Aの集合はVectorかArrayListで可変長の配列として表現されています。

ここでZのmain()の中で、As = B.getAs(条件)などとして、Bが持つAの部分集合を
getしたいのですが、BのgetAsの返値はどういう形式にするのが一般的でしょうか?
つまり、可変長配列を固定長に直して、A[] getAs()とするのか、ArrayListのままで
返すのか、それとも何か別の方法でしょうか?

769 :デフォルトの名無しさん:04/12/05 11:38:36
WindowsXPでJavaとDB開発の勉強をしようと思って、

J2SE 5.0
J2EE 1.4
Tomcat 5.5.4
Struts 1.2.4
Eclipse 3.0.1 + LanguagePack 3.0.x
MySQL 4.1.7

を落としてきたんですが他に何か必要でしょうか?
上のリストの中に「それよりもこっちを使った方がいい」というのがあれば教えてください。

770 :デフォルトの名無しさん:04/12/05 12:33:08
>769
それにhibernateあたりつければjava知らなくてもシステム組めるよ
決めた、君は設定大臣になれ!!!もてるぞそっちのほうが
j2eeなんざ要らないjwsdp??だか入れてとことん設定王へ突き進むべし!

771 :769:04/12/05 12:39:36
hibernateって何ですか?jwsdpって??

Ant 1.6.2も不必要だけどあった方がビルドが楽なようなので落としてきました。

772 :769:04/12/05 12:48:18
すいませんhibernateについて調べてみました。
JavaのオブジェクトとRDBのデータの間のギャップを減らすツールみたいですね。
Cayenneってのも良さそう。

773 :デフォルトの名無しさん:04/12/05 12:52:04
>>769
初心者ならMySQL4.1.xやめたほうがいい
MySQL4.0.xじゃないとへんたところではまる

HSQLDBで勉強したほうがいいかもしれない
最初からGUIツールがついていたり、
DB鯖とドライバと管理ツールがすべて1つの500KBくらいの小さなjarにはいってるし
最初はわかりやすいのからはいったほうがいいよ


774 :デフォルトの名無しさん:04/12/05 12:53:04
いろいろあつめてくるのはいいけど、まずはJDBCでSQLたたいて
結果を取得というのを確実にできるようにしたほうがいい


775 :デフォルトの名無しさん:04/12/05 12:54:10
君は動きが軽いな、いいぞそのリズム
軽快なのはいいがとりあえず落としたの全部動かしなさい。

776 :デフォルトの名無しさん:04/12/05 12:59:26
jwsdp落としてるのかな、そんだけぶち込んで
java糞重いつかえねーーなんていったらおじさんキレるよ

777 :769:04/12/05 13:11:45
>>773-774
参考になるなあ。まずHSQLDBでいっときます。

778 :デフォルトの名無しさん:04/12/05 13:12:02
>>766です
>>767さんありがとうございます。
全く違うものなのですか。
がんばって調べてみます。

779 :デフォルトの名無しさん:04/12/05 13:13:51
すいません、0から100の間で正規乱数を作るにはどうすればいいですか。
テストの点をシュミレートしたいんです。


780 :デフォルトの名無しさん:04/12/05 13:44:23
ダウンロードしてインストールしただけで、満足してそう。

781 :デフォルトの名無しさん:04/12/05 14:32:13
>>768
そういう時は getAs() は Collection を返す方が汎用的。
これなら Vector だろうが ArrayList だろうか
Collection インターフェースを実装してるものなら何でもreturnできる。
受け取った時に適切にキャストすればいい。

782 :デフォルトの名無しさん:04/12/05 14:34:52
様々なご意見ありがとうございます。
DB関連の自分のプロダクツ上、WEBコンテナだけでなく
EJBコンテナも必要と思われましたので、JBossも落としてきました。
さらに静的コンテンツは、別途のWEBサーバーにまかせた方が
良いとの事でしたので、Apacheも落としました。
当面はこのシステムで開発&学習を進めていこうと思います。

さらに質問なのですが、SUNの標準APIだけではいろいろ不完全な様ですので、
jakarta commonsも用いた方が良いとの事ですが、まず第一に必要だと思われる
コンポーネントを幾つか教えてください。


783 :デフォルトの名無しさん:04/12/05 14:40:48
>>768
getAsの戻り値はListにしてreturn Collections.unmodifiableList(internalArrayList);
受け取った側でキャストするなんて馬鹿げてる。Listのまま使え。
ListでなくてSet/Collections.unmodifiableSet(internalHashSet)でも可。


784 :デフォルトの名無しさん:04/12/05 14:54:20
>>779
ばかか?

785 :デフォルトの名無しさん:04/12/05 14:57:20
>>779
ぐぐったら1分でわかったが。
Java以前に、人としての賢さの問題。

786 :222:04/12/05 15:04:43
実務のプログラムで多数のパラメータを渡すときプロのJavaプログラマーは
どのようにして渡しているのですか?
型名と仮引数名をずらーと書いて受け取るのが普通のなのでしょうか?
教えて下さい。

787 :デフォルトの名無しさん:04/12/05 15:09:29
Bean作れ

788 :デフォルトの名無しさん:04/12/05 15:09:40
>>784-785
バカはあなた達の方です。
分からないのなら、わざわざケチつけない方がいいですよ。


789 :デフォルトの名無しさん:04/12/05 15:15:22
>>781
>>783
意見が分かれた模様ですが…

790 :779:04/12/05 15:15:41
>>788は僕ではありません!
おねがいします、教えてください、糞ども。

791 :デフォルトの名無しさん:04/12/05 15:23:50
つまんね

792 :デフォルトの名無しさん:04/12/05 15:25:44
>>786
パラメータの集合をクラスにする

793 :779:04/12/05 15:26:34

当然、ニセモノです(もうどうでもいいけど)
自己解決しました。
(int) (Math.random() * 101) ですね。
この程度の回答も即レスで来ないここのプログラマのレベルって一体・・・


794 :デフォルトの名無しさん:04/12/05 15:28:00
>>779
シュミレート
↑ここにも突っ込みたいんだが(r

795 :デフォルトの名無しさん:04/12/05 15:31:56
>>793
一応マジレスしとくと2chにレベルを期待する方が間違ってると思うよ


796 :デフォルトの名無しさん:04/12/05 15:33:25
>>789
>あるクラスAの集合
という「集合」次第だろうな。
Setを返すべきなのか、Listを返すべきなのか、どっちの可能性もあるのか、
要件によって決まるとしか言いようがない。

以上が一般論。個人的には、
インターフェース設計ならCollectionを返すような汎用性が欲しいけど、
内部実装がListで良いクラスならListを返せば充分だろう。
(T extends CollectionなGenerics型を返すというのも有りといえば有りなんだが……)

797 :デフォルトの名無しさん:04/12/05 15:34:17
>>793
それもどうかと

798 :デフォルトの名無しさん:04/12/05 15:36:02
あるシステムを特定のモデルで表現し(この場合は点数の散布図),
そのモデルを使って各種実験、テスティングを行う行為を
シミュレートといいます。
わざわざ、ツッコむようなレベルでもないでしょう。
基礎レベルですしw

799 :デフォルトの名無しさん:04/12/05 15:38:17
>>797
何がどうなんですか?
他に方法があるんですか?


800 :デフォルトの名無しさん:04/12/05 15:38:44
?

801 :デフォルトの名無しさん:04/12/05 15:41:46
それでいいのだ

802 :デフォルトの名無しさん:04/12/05 15:42:46
なんかひどい流れに・・・

803 :デフォルトの名無しさん:04/12/05 15:46:32
>>782
釣りに思えてきた

何でもかんでもダウンロードするのはいいが
それぞれ単体で自分の技術レベルとあわせて
納得するまで習得するがよろし

いきなりあれもこれもってのはだめだよ
それにEJBとかCommonsとかはJavaの基本が
わかっていて初めて使えるものかと

ところでまずJavaとSQLを理解しているのかね?


804 :デフォルトの名無しさん:04/12/05 15:49:20
>>793
自分で質問した内容ももう忘れたんですね
まぁ、それで解決したんならこちらは全然構いませんが
それともあなたもニセモノですか?

805 :デフォルトの名無しさん:04/12/05 15:50:54
>>796
うーん難しいですなー
とりあえず今のところBではAのArrayListしか扱わない予定ですので
Listを返してみます
どうもでした

806 :デフォルトの名無しさん:04/12/05 15:51:14
>>804
当然wwwwwwwwwwwwwwwww

807 :デフォルトの名無しさん:04/12/05 16:37:56
>>803
なるほど。分かりました。
おっしゃる通り、少し背伸びしてるのは確かです。
ただ自分としては、コーディングよりもソフトウェア設計の習得を
重視しておりまして、まずオードソックスなシステムを導入して、
その中で体験的な学習を進めていきたいと考えてます。

J2SE 5.0
J2EE 1.4
Eclipse 3.0.1
Apache 2.0.52
JBoss 4.0.1
Tomcat 5.5.4
Struts 1.2.4
Tapestry 3.0.1
hsqldb 1.7.2
 (MySQL 4.1.7)
Cactus 1.6.1
Maven 1.0.1

一応、これが標準的な環境という事でよろしいのでしょうか?
さらに先もお尋ねしましたが、jakarta commonsの
必須コンポーネントについて、いくつか教えて頂ければ幸いです。


808 :デフォルトの名無しさん:04/12/05 16:43:26
>>793
それのどこが正規乱数なんですか?
正規乱数の意味わかってますか?
自分ではJava以前の問題(むしろ問題外)だと思わないんですか?
一度死んだ方がいいんじゃないですか?
あなたのような人間が生きていると日本にとって迷惑ですよ?

809 :デフォルトの名無しさん:04/12/05 16:44:59
ところで、jakartaの読みはジャカルタでよろしいですか?

810 :すみません:04/12/05 16:55:18
すみませんが教えてください。
リンクの画像をクッリクしても画面の下方にjavascript...とか何とか出てきて
その画像が見れないんですよ。
どうすればいいのか教えてください!

811 :デフォルトの名無しさん:04/12/05 16:57:46
インターネットオプションのセキュリティ欄で
javascriptを有効にしてください。



812 :すみません:04/12/05 17:13:57
ありがとうございます!
インターネットオプションのセキュリティ欄まではわかるのですが、
初心者なものでそれから先がよくわかりません。
教えていただけないでしょうか??お願いします。


813 :デフォルトの名無しさん:04/12/05 17:16:08
インターネットオプション→セキュリティ→レベルのカスタマイズ
→リセット(E)→OK

814 :デフォルトの名無しさん:04/12/05 17:16:45
初心者なのにいきなり2chとは・・・

815 :デフォルトの名無しさん:04/12/05 17:17:44
>>812
2ちゃん使うときはハッキングされないように気をつけろよ

816 :デフォルトの名無しさん:04/12/05 17:18:23
> ただ自分としては、コーディングよりもソフトウェア設計の習得を
> 重視しておりまして、まずオードソックスなシステムを導入して、
> その中で体験的な学習を進めていきたいと考えてます。

J2EEはそういうアプローチで習得するのは少々困難な技術。
回り道に思えても地道に基礎から積み重ねないと。
EclipseのようなIDEも、Struts・Tapestryのようなフレームワークも、
Cactus のようなテストツールも、Maven のようなプロジェクト管理・ビルドツールも
Commonsのようなライブラリははじめはいらないし、わかってないのにはじめからいじると
なぜそれらを使うのか、それらを使うとどのようなメリットがあるのか、が理解できない。

ちなみに、あなたが挙げたソフトウェア類・バージョンは標準的な環境とは言い難い。
どちらかというと、とっても最先端な環境に類する。
自主的に最新技術を常にキャッチアップし、情報収集を怠らない
熱心で高スキルなプログラマが扱う類のもの。

817 :デフォルトの名無しさん:04/12/05 17:18:25
何故、このスレに来たのかも謎だが・・・

818 :デフォルトの名無しさん:04/12/05 17:18:43
>>810-813
>>1
> JavaScriptの質問は、ここでは受け付けていません。
> Web製作板をご利用ください。http://pc5.2ch.net/hp/
迷惑。

819 :デフォルトの名無しさん:04/12/05 17:19:09
>>812
書き込む時は名前欄に fusianasan って入れないと
ハッキングされるよ?

820 :YahooBB406190875341.bbtec.net:04/12/05 17:25:23
なるほど。
これで大丈夫なのでしょうか?

821 :デフォルトの名無しさん:04/12/05 17:27:20
>>820
むしろ大丈夫じゃないな。

822 :デフォルトの名無しさん:04/12/05 17:28:01
>>820
まぁ別に使ってるプロバイダが分かるぐらいだから別に
心配はないが

823 :デフォルトの名無しさん:04/12/05 17:31:50
JavascriptとJava間違えてきたんだろうな

824 :809:04/12/05 17:32:29
自己解決しました。ジャカータでした。

825 :779(本物かつ馬鹿):04/12/05 17:39:19
すいません徹夜明けで寝る前に適当に書いてしまったのですが釣りではないです。
java.util.RandomのnextGaussian()で得られる値は、J2SEのマニュアルだと
> 乱数ジェネレータのシーケンスを使って、平均 0.0、標準偏差 1.0 のガウス (「正規」) 分布の double 型の擬似乱数を返します。
ってあるんですけど、平均と標準偏差を自分で指定して、値の分布が0以上100以下になるような正規乱数ってやっぱり自分でコード書かないと無理ですよね。
上の方でMath.random()ってありましたが、テストの点は一様乱数でなくて大体正規分布になりますよ。


826 :デフォルトの名無しさん:04/12/05 17:44:28
>>807
自分は Java 初心者なので僭越だが、自分は J2SE SDK と秀丸エディタで
コツコツ勉強してます。オブジェクト指向言語は初めてだし。
オブジェクト指向を理解しないとソフトウェア設計ができない。

827 :デフォルトの名無しさん:04/12/05 17:55:50
俺の最近のお気に入りはバンプとデリコだね、もう断トツで。
ミスチルやB’zもロックファンとしては外せないでしょ。
しぶいところではサザンなんかもきっちり押さえてますよ。
ロック以外でもいろいろ聴いてるなあ。浜崎とか林檎とか好きだし。
宇多田も倉木も両方好きだし。意外に思われるかもしれないけど、
ドラゴンアッシュとかケツメイシなんかもたま〜に聴いてる。
洋楽はねえ、セリーヌとマライアがメインかな。
でも近頃はオアシスとかも好きになってきた。
あと落ち込んだ時なんかにはレディヘとか聴いたりして・・・
うわ、マニアックだな俺(笑
まあモーニング娘を聴いてるような人とは音楽の話はしたくないね(笑



828 :デフォルトの名無しさん:04/12/05 18:03:01
>>826
それがよろし。
Javaの開発ツールやライブラリやフレームワークは、わかって無くてもとりあえず
何かが作れてしまうほどブラックボックス化されてないからね。
わかっている人が楽をするためにあると言っても過言ではない。


829 :デフォルトの名無しさん:04/12/05 18:16:42
すいません質問です
インスタンス化させるときって普通
Oya oya = new Oya();
だけども
継承関係がある場合は
Oya oya = new Ko();
もできると思います。

しかしながらた、これについて
これをする事で
何故するのか
何が出来るのか
どういうメリットがあるのかがよくわかりません。

ポリモーフィズムなどでググっても
出来るとはあるのですが「何故するのか」ってのが
あまり無いので教えてください

830 :デフォルトの名無しさん:04/12/05 18:30:21
Oya oya = new Ko();
確かにこれ一行だけ取ってみても何がしたいのかよくわからない。
この場合 oya をどう使うのかってことが大事

831 :デフォルトの名無しさん:04/12/05 18:42:55
スミマセン本当に超初心者なのですが・・・

a.javaとb.javaの二つのソースがあり、b.javaではa.java内のクラスを利用している場合なのですが
以下のコンパイル方法ではうまくいきます。

javac a.java b.java

ここで疑問におもったのが、さきにa.javaをコンパイルしCLASSPATHに追加し、

javac -classpath "c:\sample\a.class" b.java

とおこなってもコンパイルできるのではないかと考えていたのですが
試してみたところエラーとなりました。

これはどうしてエラーとなるのでしょうか?
同じクラスの参照しているのであれば同じ動作だと考えていたのですが。

よろしくお願いします。

832 :デフォルトの名無しさん:04/12/05 18:43:02
>>826
確かにあなたの言うとおりですね。
ただ、あなたはコーダーを目指されておるようですが、自分はSE、
アプリケーションエンジニアを目指しておりまして、やや方向性が
違うように思います。
オブジェクト指向についても、ソフトウェア開発はOOPを実現する為に
あるのではなく、ソフトウェア開発の為の一つの道具としてOOPが
あるのです。手段と目的を混同するのは、やや好ましくないと考えます。
現在の複雑なソフトウェア環境に置いては、ボトムアップよりも
トップダウン式の学習法の方がふさわしいケースもあると考えます。
コーディング学習では、自分だけの世界に入り込んでしまう弊害も
あると聞きます。

833 :デフォルトの名無しさん:04/12/05 18:45:10
わざと偽物だとわかるようにしてるあたりが二流

834 :デフォルトの名無しさん:04/12/05 18:46:59
ヌードじゃないがかなりソソる
http://www.jpg-gif.net/bbsx/7/img/144175.jpg

何度も抜きました


835 :デフォルトの名無しさん:04/12/05 18:49:25
>>829

MyClassッってクラスに
saveTo(OutputSteram os);
って関数があるとする。
出力ストリームにオブジェクトの内容を書き出すメソッドだと思ってくれ。
(シリアライズを何故使わないとかいう突っ込みはナシで)

これには下みたいに使えばファイルやネットワークその他イロイロな
出力ストリームに書ける。

OutputStream os;
MyClass myObj = new MyClass();

(myObjにデータをセット)

if( (ネットワークとファイルどっちに出力する?) ){
  //ファイルに出力
  os = FileOutputStream("ファイル名");
}else[
  //ネットワークに接続して出力
  Socket socket = new Socket("foo.bar.com", 8080);
  os = socket.getInputStream();
}

myObj.writeTo( os ); //os はファイルでもソケット接続でもどっちでもイイ

os.close();


836 :デフォルトの名無しさん:04/12/05 18:50:59
>>835
間違えた。
os = socket.getInputStream();
のところは
os = socket.getOutputStream();


837 :デフォルトの名無しさん:04/12/05 19:28:41
>>832 == >>828

838 :826:04/12/05 19:36:44
>>832
自分はIT業界の者ではなく、ただ道具としてプログラムを使っているだけです。
ソフトウェア開発者としてはそれなりの経験をお持ちで、言語に Java を使うことに
関して学習されるところとお見受けしました。それならば私なんぞが口出しする幕では
ありません。失礼しました。

839 :デフォルトの名無しさん:04/12/05 19:48:59
>>835
なんでポリモフィズム使わずにif文なんて使ってるんだ?

840 :デフォルトの名無しさん:04/12/05 19:52:31
>>835-836
もう少しまとめてから書いたほうがいいんでないかい?

841 :デフォルトの名無しさん:04/12/05 20:08:48
あの、今ちょっと困ったんでお聞きしたいんですが、

Hoge hoge[3] = new Hoge[10];
//この後適切にインスタンスを入れる

んで、それらのうちのどれかがイベントを起こして
GUIのイベントソースがどれか確かめる時に
if(XXX.XXX(e.getSource) == true{){
ってな感じで、各要素の一つを得た場合に、それがある配列の要素であるかを
返すメソッドってないんですか?調べてみましたがなかなか出てきません。
簡単そうで以外に知らなかったorz
だれか教えてください

842 :デフォルトの名無しさん:04/12/05 20:09:34
>>807
標準的か、と聞かれると
J2SE5.0はまだ標準的ではない。
Eclipse3.0はどうだろ…もうそろそろ良いのかな。

843 :デフォルトの名無しさん:04/12/05 20:17:05
>>841
> Hoge hoge[3] = new Hoge[10];
コンパイルエラー

844 :デフォルトの名無しさん:04/12/05 20:17:46
最終更新日時を表示するプログラムで
 System.out.println("最終更新日時:"+ f.Modified());
これだとエポックで表示されるんですが()の中だけ変えて
DATEで表示するにはどうすればいいでしょうか?
他に文をたくさん追加すればできるんですが
System.out.println()の中を変えるだけで
dateで表示したいんです。

一応下記に全文書いておきます
よろしくお願いします


import java.io.*;
import java.util.*;
public class hizuke{
public static void main(String ar[]){
File f=new File("hizuke.java");
System.out.println("最終更新日時:"+ f.Modified());
}
}


845 :デフォルトの名無しさん:04/12/05 20:22:18
>>831
「ディレクトリ or jarファイル」の中を探しに行くようになっているので
クラスパスの個々の要素にはクラスファイルは指定できないのです。

846 :デフォルトの名無しさん:04/12/05 20:26:33
>>807
標準的なのはどれでしょうか・・・?ってのは変な質問だ

何を作るかが決まって初めてシステムを決めるものだから
あらかじめ勉強するというのならまずは言語のほかにはJDBCとSwingを理解するのがいいと思う

Commonsの質問は誰も答えられないと思うよ
小さいライブラリ集だから自分が使いたいと思うものをえらんで使うだけ
誰が造っても同じようになるだろうという再開発の手間をなくすのが目的で
スタートしたプロジェクトだからね

まずはCommons使う場合は動レベルのライブラリを自分で作ってみて
なっとくして使うようなものだよ

847 :デフォルトの名無しさん:04/12/05 22:12:21
ttp://milkyway.merseine.nu/Java/Java035.html
参照渡しなど上のサイトとかでこういう事ができるってのは理解できるのですが
どういった場面、あるいは何故これを使うのかってのがわかりません
これをつかうことによってメリットなど何が出来るとかあるのでしょうか?

当然メリットがあるからみなさん使うのだとは思うのですが
教えてください

848 :デフォルトの名無しさん:04/12/05 22:24:37
>>847
ttp://www.memozilla.com/memo/java/the_way_to_access_variable.html
「参照渡しのメリット」でググッたらアッサリと出てきます。

849 :デフォルトの名無しさん:04/12/05 22:25:17
>>847

>参照渡し「など」上のサイト「とか」で「こういう」事ができるってのは理解できるのですが
>どういった場面、あるいは何故「これ」を使うのかってのがわかりません

君の聞きたい「こういう事」とか「これ」がどの事を指しているのか分からん。
ちゃんと文章書きなよ

850 :デフォルトの名無しさん:04/12/05 22:28:37
>>849
「など」は無意味に付いてるだけで、「こういう事」も「これ」も「参照渡し」だと想像できそうな気が。
もちろん >>847 の文章がわかりにくいという点については異論なし。

851 :デフォルトの名無しさん:04/12/05 22:31:11
>>829
ttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=16348&forum=12
ここでの上から3つ目の書き込みが分かりやすい気がする
これが使いこなせればかなり楽になる

852 :デフォルトの名無しさん:04/12/05 22:48:25
>>807
そこにSpringFrameworkを入れればもっと開発効率が(ry

853 :デフォルトの名無しさん:04/12/05 22:54:33
static SSLSocket makeSSLClientSocket(InetAddress server, int portno )
throws java.io.IOException
{
SSLSocket ss;
SSLSocketFactory ssf = (SSLSocketFactory)SSLSocketFactory.getDefault();
Socket s = new Socket( server, portno );
ss = (SSLSocket) ssf.createSocket(s,server.getHostAddress(),portno,true);
String cipherSuites[] = {"SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA"};
ss.setEnabledCipherSuites(cipherSuites);

return( ss );
}
}

      static SSLServerSocket makeSSLServerSocket(int portno)
throws java.io.IOException {
SSLServerSocket ss;
SSLServerSocketFactory ssf = (SSLServerSocketFactory) SSLServerSocketFactory
.getDefault();
ss = (SSLServerSocket) ssf.createServerSocket(portno);
String cipherSuites[] = {"SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA"};
ss.setEnabledCipherSuites(cipherSuites);

return (ss);
}





854 :デフォルトの名無しさん:04/12/05 22:56:03
でサーバソケット、クライアントソケットを生成し

サーバは
-Djavax.net.ssl.keyStore=./KeyStore -Djavax.net.ssl.keyStorePassword="XXXX" Sample
として、秘密鍵、公開鍵を含むKeyStoreを渡して実行。
クライアント側は特にKeyStoreを与える事なく実行。
で、ちゃんとSSLで通信できてるんですが、これって双方向の通信路がちゃんと暗号化されてますか?
SSLって片方の経路だけ暗号化される場合ってのはあるんでしょうか?
ちなみにSSL_DH_anon_EXPORT_WITH_DES40_CBC_SHAは認証は行いません。
一応確認のため、どなたか教えてくださいorz

855 :デフォルトの名無しさん:04/12/05 22:57:50
>>807
> 重視しておりまして、まずオードソックスなシステムを導入して、

オードソックス!


856 :デフォルトの名無しさん:04/12/05 23:00:49
>>855
ttp://www.t-monzen.jp/~peanuts/enikki/enikki03/03035.html

857 :デフォルトの名無しさん:04/12/05 23:01:06
>>726
どなたかこれについて教えていただけないでしょうか?

858 :デフォルトの名無しさん:04/12/05 23:32:28
>>807
SpringよりSeasar2のほうが簡単で日本語資料も多くてよし。

859 :デフォルトの名無しさん:04/12/05 23:44:13
>>807
すきに選びたまえ。

・EJBコンテナ
JBoss

・DIコンテナ
SpringFramework PicoContainer Seasar2 Avaron HiveMind

・Servletコンテナ
Tomcat Jetty

・Webフレームワーク
Struts Tapestry JSF

・Database
hsqldb MySQL PostgreSQL

・テストツール
JUnit Cactus

・ビルトツール
Ant Maven

・オブジェクト・リレーショナル・マッピング
Hibernate Cayenne iBatis S2Dao OJB

860 :デフォルトの名無しさん:04/12/05 23:49:30
>>851
それでなんとなくわかりました。
しかし、それだと
Oya oya = new Ko();
これで子供が自分を継承していることが
前程ならば、もし何らかの理由で親子継承関係が無くなったら
全部書き換える必要があるのでしょうか?

861 :デフォルトの名無しさん:04/12/05 23:56:46
>860
理屈の上では全部書き換えになるけど
普通は既にコードをたんまり書いた後で継承構造をごそっと作り替えるようなことはしない。
継承構造がまずかったら、大概実際にコーディング始める前におかしいと分かるし、
最悪既にコードがわんさとあって変更するとえらいことになるなら、クラスツリーは
そのままにしておいて何らかの迂回策を取る。

862 :デフォルトの名無しさん:04/12/06 00:13:21
                     _____
    / ̄ ̄ ̄ ̄\,,      /_,,    ,,_  \
   /_____  ヽ    / (@)ヅ=ヾ(@));;;;;  \
   | ─ 、 ─ 、 ヽ |  |   / /〆"●⌒ヾ;;;;;\    ヽ
   | @ | @ |─ |___/   |三(__|___)三、   |
   |` - c ヾー' ;;;;; 6 l    |.  |  |  | ノ::ヾ  |   |
.   ヽ ィエエエエ》ヾ,,,-′   |  Y ̄Y ̄Y ̄Yノノ   |   l
     ヽ ___ /ヽ    ヽ と ̄^ ̄^ ̄^"シ   / /
     / |/\/ l ^ヽ    \ """"""     / /
     | |      |  |     l━━(t)━━━━┥


863 :デフォルトの名無しさん:04/12/06 00:22:34
>>860,861
継承だと親子関係の結びつきが強すぎて構造の変化に弱いので
最近はインタフェースを使う方が推奨されてる。

その例では Oya をインタフェースにして Ko がそれを実装するようにするか
Oya も Ko も IOya みたいな何らかのインタフェースを実装するようにする。

864 :デフォルトの名無しさん:04/12/06 00:28:38
>>863
>継承だと親子関係の結びつきが強すぎて構造の変化に弱いので
>最近はインタフェースを使う方が推奨されてる。

そう言う問題じゃない
使い分け方を知らないのか…

865 :デフォルトの名無しさん:04/12/06 00:28:53
>>863
「推奨されてる」まで言うのは言い過ぎでないかい?
まるで継承が非推奨かのようだが。

866 :デフォルトの名無しさん:04/12/06 00:48:55
質問です。。

---a.txt---



----------
があったとき、4行目から新しく書き込みする
ためにはどうしたらよいでしょうか?
どなたかサンプルプログラムを書いていただけるとうれしいです。





867 :デフォルトの名無しさん:04/12/06 00:54:28
Current
├ MyPackage
|  └ MyClass.class
├MyClass.class
└MyMain.class

こういうパッケージ/クラスがあったとします。ここで
MyMain の中で
import MyPackage.*;

って宣言してしまうと “MyClass” が何を指すのかに関して
名前の衝突が起きますよね? 僕の環境だとなぜか
import MyPackage.*      …> MyClass
import MyPackage.MyClass …> MyPackage.MyClass
って見なされるんですが、これって何故でしょうか?

868 :デフォルトの名無しさん:04/12/06 01:01:18
今時、j2sdkとメモ帳だけでガリガリ
コーディングできる奴はおらんのかのぅ。


869 :デフォルトの名無しさん:04/12/06 01:03:06
よく知らないがデフォルトパッケージのクラスは優先度が高いんじゃないか?

パッケージ無しStringクラスとかObjectとか作ってハマる話はたまに聞く。
興味があるならJava言語仕様を隅々まで調べてみたら?


870 :デフォルトの名無しさん:04/12/06 01:06:16
>>868
「メモ帳でガリガリコーディングできる奴」ならいくらでも居る
「メモ帳でガリガリコーディングする奴」はただの馬鹿

メモ帳を秀丸に置き換えても同じだ>そこの秀丸バカ


871 :デフォルトの名無しさん:04/12/06 01:07:21
>>866
FileWriter(filename, true);

872 :デフォルトの名無しさん:04/12/06 01:20:19
>>864,865
継承はデザインパターン関係で使う程度で
普通はインタフェースを使うようにするのが最近の流れなのを知らんのか?

まあこれはフレームワークなどを「作る側」の話であって
コーダに過ぎないフレームワークを「使う側」から見れば継承はよく使うんだろうがな。

873 :デフォルトの名無しさん:04/12/06 01:22:03
>>867
はっきり最後まで書いたものはそっちが優先される。

874 :デフォルトの名無しさん:04/12/06 01:23:45
>>867
> って見なされるんですが、これって何故でしょうか?
言語仕様に従ってるだけ。

6.5.5.1 単純型名
http://www.y-adagio.com/public/standards/tr_javalang2/names.doc.html#21810
> ・そうでなければ,その名前をもつ型が,現在のコンパイル単位(7.3)内で,
>  単一の型インポート宣言(7.5.1) によって又はクラス若しくは
>  インタフェース型宣言(7.6)によって宣言されていれば,その単純型名は その型を表す。
> ・そうでなければ,その名前をもつ型が,その識別子を含むパッケージ(7.1) の
>  他のコンパイル単位(7.3) 内で宣言されていれば,その識別 子はその型を表す。
> ・そうでなければ,その名前の型が,その識別子を含むコンパイル単位の
>  ただ一つの要求時の型インポート宣言(7.5.2) によって宣言されていれば,
>  その単純型名はその型を表す。

875 :デフォルトの名無しさん:04/12/06 01:24:06
>>871
実際に記述してみたのですが、シンボルが
解決できませんというエラーが出てきてしまいました・・
どうすればよいのだろう??
以下にサンプルを記述します。
---a.txt---



----------
BufferedWriter bw = null;
String[] str = {"倒産","かあさん","にいさん","妹"};
try {
bw = new BufferedWriter (
new OutputStreamWriter (
new FileOutputStream( "a.txt" ), "SJIS" ) );
//ここで記述しかしエラー発生
FileWriter("a.txt", true);
for(int j=0;i<n;i++){bw.newLine();}
for(;i<4;i++){
bw.write( str[i], 0, str[i].length() );
bw.newLine();
bw.flush();}
}

よろしくお願いします。。


876 :デフォルトの名無しさん:04/12/06 01:25:37
>>872
へたれモデラーの論理ですね。

877 :デフォルトの名無しさん:04/12/06 01:27:22
>>872
「使い分け」って意味を知らないと見えるね。

878 :デフォルトの名無しさん:04/12/06 01:28:55
>>875
お前みたいな奴久しぶりに見たよ。

次のどっちか選ぶこと。
・入門本を最初から最後までちゃんと読んで基本を勉強しなさい
・宿題スレに行きなさい

879 :デフォルトの名無しさん:04/12/06 01:35:33
>>872
それは昔、インターフェースを使うべきところで継承を使っていたケースがあっただけで
継承の重要性が低くなっているわけでは全く無い。
フレームワークを作る側だろうが使う側だろうが同じこと。

>まあこれはフレームワークなどを「作る側」の話であって

「作る側」に限定した話を一般化するのか?
お前、プロジェクト毎にフレームワーク作ってそうだな


880 :872:04/12/06 01:38:06
>>876
継承より集約が推奨されるという流れなのは事実。
集約オブジェクトが公開する仕様はインタフェースとして公開すべし、
プログラムを書く側はインタフェースに対して書くべし、っていう流れなのも事実。
具体的に反論できないなら何も言わない方がいいよ。

>>877
>「使い分け」って意味を知らないと見えるね。
フレームワークを作る側と使う側で違うわなって書いてるのに??

881 :デフォルトの名無しさん:04/12/06 01:40:37
>>878
すみません。宿題スレのほうに行きます。

882 :デフォルトの名無しさん:04/12/06 01:41:25
>>881
勉強しろよ・・・


883 :デフォルトの名無しさん:04/12/06 01:43:20
>>880
>>「使い分け」って意味を知らないと見えるね。
>フレームワークを作る側と使う側で違うわなって書いてるのに??

もうちょっと日本語がわかるようになると877の書いてることが理解できると思うよ。


884 :デフォルトの名無しさん:04/12/06 02:07:08
ファイルへの出力
FileOutputStream fos = new FileOutputStream("hello.txt");
OutputStreamWriter osw = new OutputStreamWriter(fos , "MS932");
BufferedWriter bw = new BufferedWriter(osw);
bw.write("Hello, world.");
を、通常はどのように書くのでしょう?(例外処理やcloseも含めて)
自分でも考えてみたのですが、明らかに普通ではなさそうでしたので…


public void hello() {
FileOutputStream fos;
try {
fos = new FileOutputStream("hello.txt");
} catch (FileNotFoundException e) {
e.printStackTrace();
return;
}

OutputStreamWriter osw;
try {
osw = new OutputStreamWriter(fos, "MS932");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
try {
fos.close();
} catch (IOException e2) {
e2.printStackTrace();
}
return;
}


885 :884(続き):04/12/06 02:07:56
BufferedWriter bw = new BufferedWriter(osw);
try {
bw.write("Hello, world.");
} catch (IOException e2) {
e2.printStackTrace();
} finally {
try {
bw.close();
osw.close();
fos.close();
} catch (IOException e3) {
e3.printStackTrace();
}
}

}



886 :デフォルトの名無しさん:04/12/06 02:16:05
>>884
public class aho {
void aho(){
String kakikomi = "aho.txt";
try {
PrintWriter pw = new PrintWriter(new FileWriter(kakikomi, true));
pw.write();
pw.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
コンパイルしてないからこれでいいのかは知らん


887 :デフォルトの名無しさん:04/12/06 02:19:28
>>884
String filename = "hello.txt";
try {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filename), "Windows-31J"));
try {
bw.write("Hello, World!");
} finally {
bw.close();
}
} catch (IOException e) {
throw new IllegalStateException(e);
}
例外が発生してもその後の処理が意味を持つのなら
throw new IllegalStateException(e);

e.printStackTrace();
にしても許してやる。


888 :デフォルトの名無しさん:04/12/06 02:23:54
>>880
継承せずにコンポジションと委譲でしろって?
http://pc5.2ch.net/test/read.cgi/tech/1084525684/

そういう意見にも納得もできるし、おまいの周りでは一般的なのかもしれんが、
今オブジェクト指向を勉強しているヤツに、
継承は非推奨とか言うほど、一般的ではないんだよ。
自分の脳内だけでなく、もっと広く社会を見ような?OK?

889 :デフォルトの名無しさん:04/12/06 02:27:29
>>880
> 継承より集約が推奨されるという流れなのは事実。
> 集約オブジェクトが公開する仕様はインタフェースとして公開すべし、
> プログラムを書く側はインタフェースに対して書くべし、っていう流れなのも事実。
へたれモデラーの論理ですね。
何でもかんでも継承の次は何でもかんでもインタフェースですか。

890 :デフォルトの名無しさん:04/12/06 02:34:31
>>887
その場合ですと、
BufferedWriter や FileOutputStream が明示的にcloseされないように思うのですが
特に問題ないのでしょうか?
(FileOutputStreamをcloseしないとファイルが閉じられないわけではない?)

891 :デフォルトの名無しさん:04/12/06 02:44:02
>>890
ストリームのclose()はそれがラップしている下位ストリームをclose()するから
一番外側(一番上)のストリームをclose()するだけでいい。
887は更にPrintWriterで囲む方が良いかもしれない。
PrintWriter pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filename), "Windows-31J")));


892 :デフォルトの名無しさん:04/12/06 02:45:17
>>889
http://www.bq--3ayiomcfao4tbgzqq4.to/www/nazo/prog/oo/

893 :884:04/12/06 02:52:49
>>891
> ストリームのclose()はそれがラップしている下位ストリームをclose()する
そうだったんですか。web上のサンプルコード見てると
全部closeしてるものが結構あったりしたので…
ありがとうございました。

894 :デフォルトの名無しさん:04/12/06 03:11:26
>>881-882
ワラタ

895 :デフォルトの名無しさん:04/12/06 03:12:59
変なことだろうとは思うんですが・・・
テキストファイルにMath.random() * 101が書き込まれてて
それをString型として読み込んで、
実行クラスでMath.random() * 101を動作させるってことは可能ですか?
やるとしたらどうやったらいいですか?

896 :デフォルトの名無しさん:04/12/06 03:15:16
>>889
スレタイ通りだから

897 :デフォルトの名無しさん:04/12/06 03:15:39
>>895
また来たかインチキ乱数王子

898 :デフォルトの名無しさん:04/12/06 03:17:42
>>895
むりぽ

899 :デフォルトの名無しさん:04/12/06 03:21:13
>>895
可能

//それをString型として読み込んで、
BufferedReader br = new BufferedReader(new FileReader(ファイル));
String line = br.readLine();
br.close();
//実行クラスでMath.random() * 101を動作させる
Math.random() * 101;


900 :デフォルトの名無しさん:04/12/06 03:27:46
>>895
間違ってもそのプログラム使って、
「テストの結果がしゅみレーション結果と違う!お前らカンニングしただろ!」とか叫ぶなよw


901 :デフォルトの名無しさん:04/12/06 03:32:40
ふと疑問に思ったので質問させてください。
>>887
で、new FileOutputStream()やnew OutputStreamWriter()で例外が発生した場合、
bwはどうなるのでしょう?

bw.close()が呼ばれても大丈夫?
どういう順番に処理が行われるのでしょう?

902 :デフォルトの名無しさん:04/12/06 04:04:08
>>900
ん? 「正規乱数」の人だったの?

903 :デフォルトの名無しさん:04/12/06 04:10:14
>>898-899
(´・ω・`)ショボーン
でも違う手が浮かんだので、それで代用します。

>>902
別のへたれです

904 :デフォルトの名無しさん:04/12/06 04:52:01
EclipseなどIDEを使わずに
エディタとJDKだけでソースをデバッグする方法って
System.out.println()
アサート
以外に何があるのでしょうか?

905 :デフォルトの名無しさん:04/12/06 04:54:56
>>904
jdb

906 :デフォルトの名無しさん:04/12/06 09:06:15
>>901
> で、new FileOutputStream()やnew OutputStreamWriter()で例外が発生した場合、
> bwはどうなるのでしょう?
インスタンスが生成されないから、なんの参照値も代入されずにnullのまま。

907 :デフォルトの名無しさん:04/12/06 11:16:22
>>884http://java.sun.com/docs/books/tutorial/essential/exceptions/putItTogether.html普通はこんな感じ。

908 :デフォルトの名無しさん:04/12/06 11:17:11
改行みすった... orz

909 :デフォルトの名無しさん:04/12/06 11:19:02
>>903
ノシ javassist

910 :デフォルトの名無しさん:04/12/06 12:14:22
わかんないよ〜
if(topfname.equals(fname))
これのnotバージョンてある?
!入れるやつとか・・記述の仕方がよくわかんないな〜

911 :デフォルトの名無しさん:04/12/06 12:25:55
if(!topfname.equals(fname))

912 :デフォルトの名無しさん:04/12/06 12:31:03
booleanなら可読性をあげるために 
== false
という手もある


913 :デフォルトの名無しさん:04/12/06 12:34:31
>>859
MockObjectを忘れているぞ

914 :デフォルトの名無しさん:04/12/06 12:36:29
>>910
自分で独自にメソッドを実装しろよ。

if(topfname.notEquals(fname))

915 :デフォルトの名無しさん:04/12/06 13:59:47
JNIについて質問させていただきます。
JNIを用いて、Lispのネイティブコードを利用することは可能でしょうか?

916 :デフォルトの名無しさん:04/12/06 14:01:40
勿論、可能です。

917 :デフォルトの名無しさん:04/12/06 14:16:01
>>895
いや、なかなか面白いですね。
トリッキーなアプリで、たまに似た様な事をするケースがありますね。
可能です。やり方はあります。
その後の回答者は、あなたの質問を理解できなかったようですね。
ま、2ちゃんですしw

918 :デフォルトの名無しさん:04/12/06 15:38:54
おつかれさん

919 :デフォルトの名無しさん:04/12/06 15:56:22
インターフェースでそれを実装すれば絶対にその中にある
メソッドを記述(オーバーライド)しなければいけないから
一種の約束手形の役割になるって聞いたのですが、
それについては分かるのですが、

それ以外の用途でインターフェースについて便利な使い道ってあるのでしょうか?

920 :デフォルトの名無しさん:04/12/06 16:19:12
その質問はJava三大FAQのうちの一つです

921 :デフォルトの名無しさん:04/12/06 16:22:50
A. これもうんざり。あきた。標準 API で実践してからもっかいこい。
interfaceの秘密を知りたければ、
そなたには結城浩のJava言語で学ぶデザインパターン入門( http://www.hyuki.com/dp/ )
を読むことをお勧めする。
オブジェクト指向を極めたいものにとっては超初心者向けでわかりやすいぞ。
A-2. まあ、実際設計できるようになってからもう一回来てください。コーダーにはinterfaceの存在意義なんて一生わからんから。

922 :デフォルトの名無しさん:04/12/06 16:29:12
>>921
全然回答になってないじゃん
FAQでこれを読めって…

インターフェースの意義に対する質問なんてくだらないかもしれないが
ちゃんと回答が書いていたらくだらない質問する人間も減るんじゃないのか?

ちょっと前のレスの継承とインターフェースについても
専門の本を読めば載ってる訳だし

923 :デフォルトの名無しさん:04/12/06 16:53:39
つーか、
>絶対にその中にあるメソッドを記述(オーバーライド)しなければいけない
これ以上の役割って919は何を求めているの?

924 :デフォルトの名無しさん:04/12/06 16:56:05
つーか、
>絶対にその中にあるメソッドを記述(オーバーライド)しなければいけない
これ以上の役割って919は何を求めているの?

925 :デフォルトの名無しさん:04/12/06 17:11:10
あるListのindex iを含んだ周辺のk個の要素(0とkの中点はi)を取り出して
Vectorあたりに入れたいんですが、どう書けばスマートでしょうか。
言うまでも無いですが k < list.size() です。

iが0付近でi - k/2 < 0になったり、逆にlist.size()付近で、list.size()より
大きいindexの要素を取ろうとしたりするのをどうにかしたいんですが、
いまいちどう書けばきれいにまとまるのかがわからなくて…。
負値やlist.size()より大きい値をindexに持つ要素を取得しようとしたときは
0やlist.size()に置換しようかと思ったのですが、それだと取得した配列の中身が
0,0,1,2,3とかになってしまいますし…。
こういう時は0,1,2,3となって欲しいのです。

926 :デフォルトの名無しさん:04/12/06 17:11:52
あるListのindex iを含んだ周辺のk個の要素(0とkの中点はi)を取り出して
Vectorあたりに入れたいんですが、どう書けばスマートでしょうか。
言うまでも無いですが k < list.size() です。

iが0付近でi - k/2 < 0になったり、逆にlist.size()付近で、list.size()より
大きいindexの要素を取ろうとしたりするのをどうにかしたいんですが、
いまいちどう書けばきれいにまとまるのかがわからなくて…。
負値やlist.size()より大きい値をindexに持つ要素を取得しようとしたときは
0やlist.size()に置換しようかと思ったのですが、それだと取得した配列の中身が
0,0,1,2,3とかになってしまいますし…。
こういう時は0,1,2,3となって欲しいのです。

927 :デフォルトの名無しさん:04/12/06 17:16:20
ヒー
連書きすみません

928 :デフォルトの名無しさん:04/12/06 17:16:40
>>923
過去レスを読んでると
インターフェースでこういう使い方以外の用途に使ってそうな感じだったから
なんでみんなインターフェース、インターフェースというのかが分からなかったから
もしかして実際の開発ではもっと重要な使い方があると思ったから

929 :デフォルトの名無しさん:04/12/06 17:19:03
>>928
FAQを書き直しておいたからそっちを見てくれ。

930 :デフォルトの名無しさん:04/12/06 17:26:01
>>929
どうもありがとうございます

931 :デフォルトの名無しさん:04/12/06 17:34:36
継承について
自分がどのクラスに継承されてるのかってスーパークラスが
知る方法(画面出力とか)とかありますでしょうか?

932 :デフォルトの名無しさん:04/12/06 18:03:07
>>931
ない。

自前のClassLoader使ってて、読み込んだ全てのクラスが取れるなら
全てのクラスの中に対して Class#isAssignableFrom(Class) とか使えばわかるかも。
でもブートストラップクラスローダに読み込まれたクラスに関しては無理だから完全じゃないけど。

933 :デフォルトの名無しさん:04/12/06 18:33:51
String a="あ";
String[] b={"い","う",};

上のような,二つの値を返すということはできるでしょうか?
返せるとしたら、戻り値の型及びreturnの記述方法を教えてくださいまし。



934 :デフォルトの名無しさん:04/12/06 18:41:32
>>933
return new Object[]{ a, b };

935 :デフォルトの名無しさん:04/12/06 18:58:18
>>933

Class Test1 {
public Test2 get() {
String a="あ";
String[] b={"い","う",};
return new Test2( a, b );
}

public class Test2 {
private String str;
private String[] str_array;

public Test2( String s, String[] s_a ) {
str = s;
str_array = s_a;
}

public String getStr() {
return str;
}

public String[] getStrArray() {
return str_array;
}

}
}

936 :デフォルトの名無しさん:04/12/06 18:58:27
動作ログを出力するときに、「this.getClass()」を使って、どのクラスのログかを分かるようにしています。
単体のプログラムの場合、これで良いのですが、
共用クラスを作った場合は、ログには当然、共用クラスのクラス名で出力されてしまいます。

これでは複数のプログラムから共用クラスを利用した場合、
どのプログラムでエラーになっているのか分かりません。

自分の呼び出し元を知ることってできますか?
共用プログラム側に毎回、呼び出し元の「this.getClass()」を渡すしかないのでしょうか?

937 :デフォルトの名無しさん:04/12/06 19:01:38
>>934
おー、そんなことできるのか。
>>933じゃないけど、今度から使ってみよう。

938 :デフォルトの名無しさん:04/12/06 19:04:35
>>934
ということは、戻り値の型がObject[]
にすれば、返す事ができるのですね?
しかし
class c {
public static Object[] hoge( String p ) {
String str =p;
str =p+"6";
String[] neko ={"a","b","as","sdf"};
return new Object[str,neko];
}
}
このように記述したら、互換性の無い型というエラーメッセージ
が出てきました。確かに、strとnekoは、配列と文字列なので
違うとは思うのですが、何かまずいのでしょうか?

939 :デフォルトの名無しさん:04/12/06 19:14:06
>>938
回答と全然違う返し方をしてるぞ……

940 :デフォルトの名無しさん:04/12/06 19:16:39
>>938
return new Object[str,neko];
        ↓
return new Object[]{str, neko};

941 :デフォルトの名無しさん:04/12/06 19:21:18
>>936
そこで Exception#printStackTrace() ですよ

942 :デフォルトの名無しさん:04/12/06 19:38:36
>>940
失礼しました。単純な記述ミスでした・・・
今度は、受け取る時ですが
String[] a={"kai"};
String xxx;
String [] aaa;
//さっき書いたクラスc
c myc=new c();
Object[]{xxx,aaa} = myc.hoge(a[0]);
これで取得できるのでしょうか?
やって見たんですが・・やはりエラー・・

943 :デフォルトの名無しさん:04/12/06 19:45:51
>>942
面白いギャグだな。

Object[] objs = myc.hoge(a[0]);
xxx = (String)objs[0];
aaa = (String[])objs[1];

としろ。

944 :デフォルトの名無しさん:04/12/06 20:19:50
少々相談に乗ってください。
Windowsのあるサービスを起動したり、止めたりするプログラムを作ってるんですが、
サービスが起動(停止)する、あるいはタイムアウトしたら、次の処理へとしたいんです。
この場合、サービス起動(停止)用のスレッドと、タイムアウトをカウントするスレッドの
二つを用意して、お互いに監視させてって考えたんですが、
もっとスマートな方法はないでしょうか?
タイムアウトは10秒としています。


java Threadとかで検索してみたんですが、なかなか参考になるサイトがなかったので、お願いします。

945 :デフォルトの名無しさん:04/12/06 20:26:02
すいません、少々相談に乗ってください。
Windowsのとあるサービスを起動したり、停止したりさせるプログラムを作っています。
起動停止にはexecに"net start"コマンドを入れているんですが、
このサービスの起動(停止)後、もしくはタイムアウトしたら、次の処理へとしたいんです。
この場合、サービス起動(停止)用のスレッドと、タイムアウトを検知するスレッドの二つが必要ですか?
他にスマートな方法があったら教えてください。
ちなみにタイムアウトは、起動(停止)に10秒かかったら、としています。

java thread とか タイムアウトとかで検索してみたんですが、参考になるものが見つからなかったので、
お願いします。


946 :944:04/12/06 20:27:43
2重投稿してしまいました。
スイマセンm(_ _)m

947 :デフォルトの名無しさん:04/12/06 20:29:34
>>944
ノシ java.util.Timer & java.util.TimerTask

java.util.Timerの↓二つ使えば何とかなる。
void schedule(TimerTask task, Date time)
指定した時間に指定したタスクが実行されるようスケジュールします。
void schedule(TimerTask task, long delay)
指定した遅延のあとに、指定したタスクが実行されるようスケジュールします。

948 :デフォルトの名無しさん:04/12/06 20:41:31
すいません、少々相談に乗ってください。
Windowsのとあるサービスを起動したり、停止したりさせるプログラムを作っています。
起動停止にはexecに"net start"コマンドを入れているんですが、
このサービスの起動(停止)後、もしくはタイムアウトしたら、次の処理へとしたいんです。
この場合、サービス起動(停止)用のスレッドと、タイムアウトを検知するスレッドの二つが必要ですか?
他にスマートな方法があったら教えてください。
ちなみにタイムアウトは、起動(停止)に10秒かかったら、としています。

java thread とか タイムアウトとかで検索してみたんですが、参考になるものが見つからなかったので、
お願いします。

949 :デフォルトの名無しさん:04/12/06 20:58:00
>>947
ありがとうございます。

950 :デフォルトの名無しさん:04/12/06 21:56:03
PreparedStatement stmt = null;
ResultSet rs = null;
stmt = prepareStatement("SELECT ID FROM TABLE WHERE SERCH_KEY = ?");

stmt.setString(1, "10");
rs = stmt.executeQuery();
rs.next();
String id = rs.getString(1);
if(id == null || id.equals("")){

このようなSQLを発行すると、検索条件に合わない場合(値が取れなかった場合)
に、SQL EXCEPTION(java.sql.SQLException: Illegal operation on empty result set)
が発生してしまうのですが。 その下の判定文の中に入れる為にはどうしたら良いのでしょうか?
ちなみに、DBはMYSQLです。


951 :デフォルトの名無しさん:04/12/06 22:07:21
Javaのソースなどを見ますと
たまにadd(new ThreadableButton())
で引数にnewしたりしている場合がありますが

これって具体的には何をしているのでしょうか?
引数にnewする事で何が実現出来るのでしょうか?

952 :デフォルトの名無しさん:04/12/06 22:10:07
>>951
新しいインスタンスを生成して実引数として渡しているだけ。

953 :デフォルトの名無しさん:04/12/06 22:16:46
>>952
つまり
add(new ThreadableButton())

ThreadableButton a = new ThreadableButton()
add(a);

これと全く同じと考えていいのでしょうか?

954 :デフォルトの名無しさん:04/12/06 22:18:26
if(!rs.next){
とれてる場合;
}else{
とれない場合;
}

これじゃだめかな
初心者のおいらが携帯からカキコ

955 :デフォルトの名無しさん:04/12/06 22:19:36
>>953
Exactly, Sir.

956 :デフォルトの名無しさん:04/12/06 22:25:32
まちがった
逆だった…orz

957 :950:04/12/06 22:59:55
>>954さん
条件判断文に行く前に、String id = rs.getString(1);
のところでexceptionに飛んでしまいます・・・

958 :950:04/12/06 23:03:25
>>954さん
あ。 NEXTメソッドの戻り値で判断すればいいのですね・・
試して見ます 

959 :デフォルトの名無しさん:04/12/06 23:17:13
>>953
新しい変数を宣言してるのに「全く同じ」なわけがない。

960 :デフォルトの名無しさん:04/12/06 23:22:00
重箱

961 :デフォルトの名無しさん:04/12/06 23:24:41
だったら「全く同じ」ものなんてこの世に存在しません。

962 :デフォルトの名無しさん:04/12/07 00:11:51
>>895 >>903
なんだ正規乱数の人じゃなかったのか。ならgroovy使え。


963 :デフォルトの名無しさん:04/12/07 00:20:30
>>906
>ふと疑問に思ったので質問させてください。
>>>887
>で、new FileOutputStream()やnew OutputStreamWriter()で例外が発生した場合、
>bwはどうなるのでしょう?

>>906みたいなバカに騙されるなよ。
コンストラクタで例外が発生した場合は、「bwに何かが代入される前」に
例外処理ブロックに飛ぶ。bwには「未初期化」の状態のまま。nullなど入っていない。

>>887のコードで「bw.close()にたどり着く」ということは「コンストラクタが例外を発せずに実行された」ということ。bwは絶対にnullにならない。


964 :デフォルトの名無しさん:04/12/07 01:01:42
質問です〜
下のように文字列がある場合
「あいうえおかきくけあああいうえこあ」
あの個数を数えるサンプルプログラムを教えてください。。
この場合結果は、5個になる。


965 :デフォルトの名無しさん:04/12/07 01:05:45
public class あを数えらー {
public static void main(String[] args) {
String 下のような文字列 = "あいうえおかきくけあああいうえこあ";
int あの数 = 下のような文字列.replaceAll("[^あ]", "").length();
System.out.println(あの数);
}
}


966 :デフォルトの名無しさん:04/12/07 01:06:46
>>901じゃないんだけど。

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filename), "Windows-31J");
で、例えばnew BufferedWriter()で例外が出た場合、
その前のnew FileOutputStream()などは正常に終了していますよね?

この場合FileOutputStreamとかのcloseって呼ぶ必要はないのでしょうか。

967 :デフォルトの名無しさん:04/12/07 01:12:57
>>966
呼ばないといけないけど、呼べない。呼ぶ手段が無い。それはデメリット。

ただし、そこまで気にしないといけない場面(※)がどれだけあるかというと、ほとんどない。
※new FileOutputStream()が成功して、上位のnew OutputStreamWriter(), new BufferedWriter(), new PrintWriter()のどこかで例外が起こる場面。

99.9%以上、「new FileOutputStream()の時点で失敗する」か、「すべて成功するか」のどちらかだろう。


968 :デフォルトの名無しさん:04/12/07 01:17:32
教えてください。
Java等はおもいっきり初心者なのですが、今1つの問題をかかえています。
ホームページビルダーを使って、パスワード付きリンクを作りました。
このホームページはフレームページで、フレームの左側にリンクを作りました。
しかし、フレームの右側に、BBSなどの自分が作ったページ以外のものが表示されている状態だと、スクリプトエラーが発生してしまいます。
なにが悪いのかすらわかりません。
どうすれば外部のリンク先を表示したままパスワード入力ができるようになるのでしょうか?教えてください。

969 :デフォルトの名無しさん:04/12/07 01:20:12
>>968
>>1
>JavaScriptの質問は、ここでは受け付けていません。
>Web製作板をご利用ください。http://pc5.2ch.net/hp/
回線切って首(ry

970 :デフォルトの名無しさん:04/12/07 01:36:58
>>966
完璧にやるなら下のようになる。ただし日常的にここまでやる奴はキチガイ。
原発のシステムならいいかもね。
>>967の方針でも、最悪GC時にfinalize()が走ってリソースのclose()は実行される。

FileOutputStream fos = null;
OutputStreamWriter osw = null;
BufferedWriter bw = null;
PrintWriter pw = null;
try {
  try {
    pw = new PrintWriter(bw = new BufferedWriter(osw = new OutputStreamWriter(fos = new FileOutputStream(filename), "Windows-31J")));
    pw.println("Hello, World!");
  } finally {
    if (pw != null) {
      pw.close();
    } else if (bw != null) {
      bw.close();
    } else if (osw != null) {
      osw.close();
    } else if (fos != null) {
      fos.close();
    }
  }
} catch (IOException e) {
  throw new RuntimeException(e);
}


971 :デフォルトの名無しさん:04/12/07 01:39:16
>>969
回線切って首も切れ、ってか?

972 :デフォルトの名無しさん:04/12/07 01:47:39
>>971
不謹慎だったな。反省

973 :デフォルトの名無しさん:04/12/07 01:48:35
またJavascriptの質問が・・・(´・ω・`)

974 :デフォルトの名無しさん:04/12/07 02:04:34
首(ry

首から下を省略

首から下がない

首切っ

975 :デフォルトの名無しさん:04/12/07 02:23:50
>>967
そういう例外的な状況を「確実に」処理するための仕組みが
try-catch-finallyの例外機構だと思ってる俺は間違ってますか?

問題発生率がいくら無視できるほど小さいからといっても
いろいろな場所で積み重なれば無視できないほど大きくなるわけですが。

976 :デフォルトの名無しさん:04/12/07 02:35:14
>>975
間違ってる。
「そういう例外的な状況」を確実に処理できて、且つ、>>970以上にまともな方法を考えてみれ。


977 :976:04/12/07 02:56:25
>>976
間違ってないかも。↓みたいにすれば970は冗長だな。
try {
   FileOutputStream fos = new FileOutputStream(filename);
   try {
      PrintWriter pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(fos, "Windows-31J")));
      pw.println("Hello, World!");
      pw.flush();
   } finally {
      fos.close();
   }
} catch (IOException e) {
   throw new RuntimeException(e);
}


978 :デフォルトの名無しさん:04/12/07 10:18:31
サーバからクライアントに一方的に気まぐれにデータを送りたいので、
ずっとSocketをつなぎっぱなしにして、
送りたいときに、データを送るようにしているんですが
(クライアントからは送信なし)
クライアント側が接続を切った場合(もちろんちゃんとclose()で)
それをサーバ側が送る前に検知する方法ってないんでしょうか?

送る前に、Socket.isClosing(), isConnecting()
とかやってるんですが、まったくもって反応なしな上に、
Socket.write()が何事もなかったかのように終わってしまいます。。。

979 :デフォルトの名無しさん:04/12/07 11:04:15
無いです。


980 :950:04/12/07 11:59:53
>>954さん
うまくいきました。ありがとうございます。
API見れば一発でした・・・

981 :デフォルトの名無しさん:04/12/07 12:44:20
プログラムと全く関係ない話で恐縮ですが、他に適切なスレが見つかりませんでした。
2ch用のMSPゴシックをインストールした辺りからJAVAアプレットの表示が
おかしくなりました。
ttp://www.imgup.org/file/iup2440.png
上図のように日本語表記が出来なくなりました。
設定をいじろうにも日本語が読めないのでどうすることも出来ません。
システムの復元をしても駄目でした。
日本語を表示する方法があれば教えて頂けると幸いです。

OS:WindowsXP HomeEdition SP2 Build 2600
JAVA Plug-in 1.4.2_06

982 :デフォルトの名無しさん:04/12/07 14:18:57
try {
 while (true) {
  byte b = in.readByte();
  sha.update(b);
  md5.update(b);
 }
} catch (EOFException ignore) {
}

こういう書き方どう思います?
結城浩氏のサンプルコードみたいなんだけど。

983 :デフォルトの名無しさん:04/12/07 14:24:20
2ch用のMSPゴシックってなんだろう?

984 :デフォルトの名無しさん:04/12/07 14:39:49
>>981
じゃあMSPゴシックをアンインストールすれば?

985 :デフォルトの名無しさん:04/12/07 14:40:19
>>982
printStackTrace()しる!

986 :デフォルトの名無しさん:04/12/07 14:52:36
例外にはあくまで例外的な事象を表現させたい


987 :デフォルトの名無しさん:04/12/07 14:53:49
JavaからRealPlayerを操作することってできないでしょうか。
曲の再生が終わったかを判定したいんですが。


988 :デフォルトの名無しさん:04/12/07 15:39:15
>>987
C/C++からRealPlayerが操作できるなら、JNI経由でJavaからも操作できるだろ。

989 :デフォルトの名無しさん:04/12/07 15:41:14
>>982
ダメコードの見本。
理由は>>986も書いてるが例外を通常処理で使っているため。

990 :デフォルトの名無しさん:04/12/07 16:08:50
メソッドの命名規則の質問なんですがpublic void setHoge()という
メソッドを定義するとして、実際にHogeをsetする内部処理を
行う部分をprivateな別のメソッドとして定義して、setHogeの中で
呼び出したいんですが、こういうメソッドはどういう風に命名すべきでしょうか?


991 :デフォルトの名無しさん:04/12/07 16:34:08
jsecom16d.sun.com へのネットワーク接続を試みている時に接続がタイムアウトしました。
という警告ダイアログが表示された。


IEでダウンロードできるかと思いきや
ネットワーク ロケーション
http://java.sun.com/webapps/download/GetFile/1.4/2_06-b03/windows-i586/sz142060.cab へアクセスできません
という情報ダイアログが表示されインストールが完了しない。


992 :デフォルトの名無しさん:04/12/07 17:07:57
>>982
前後が読めないがDataInputインターフェース使ってるのかな
それならEOFかどうかの判断には例外しかないのでそれであってる



993 :デフォルトの名無しさん:04/12/07 17:38:15
>>990
setHogeInternal() とか setHogeImpl() とか使うね。

994 :デフォルトの名無しさん:04/12/07 17:42:36
>>993
どうもです
implてimplantですよね

995 :デフォルトの名無しさん:04/12/07 17:47:38
いえ、implementation。
内部処理というよりは、公開されたインタフェースの実装、という意味合いの方が強い時は
こちらを使っています。

996 :初心者:04/12/07 19:39:48
あるアプリケーションドメインを対象に現実世界をモデル化するクラスの集合を作成しなさい

の意味がいまいち分かりません・・・
具体例など挙げてもらえると非常に嬉しい・・・

997 :デフォルトの名無しさん:04/12/07 19:44:36
>>996
どこからの引用ですか?

998 :デフォルトの名無しさん:04/12/07 20:46:31
java.io.Serializableとは、どのように使用するものですか?

APIにある、直列化とはどういう意味でしょうか・・。

999 :998:04/12/07 20:47:31
次スレ立てて、そこで再度質問します。

1000 :998:04/12/07 20:50:46
1000ゲッツ

そして次スレ↓
【初心者】Java質問・相談スレッド58【大歓迎】
http://pc5.2ch.net/test/read.cgi/tech/1102420209/

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

307 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)