【初心者】Java質問・相談スレッド57【大歓迎】
胃が痛い
3 :
デフォルトの名無しさん :04/11/22 09:01:46
外国人参政権の要点 1、対馬(韓国領土という捏造論文多数)と竹島(島根県所属。島根県知事の 得票数は在日の数をはるかに下回る)が危険であること。また、○○自治区の 誕生をまねくものであり、内戦が勃発すること。 2、すでに国、地方にかかわらず議員に朝鮮シンパがおり、日本がのっとられようと していること。地方ですでに擬似参政権をあたえてしまっている自治体があること。 3、隠されているが、被選挙権が含まれており、公安委員と教育委員という 重要なポジションが地方にもあること。 4、地方は懲役二年までの刑罰を定めることができ、「差別禁止条例」などを作成し のっとった自治体で、日本人をどうにでもできるようになること 5、報道ステーションのディレクターに韓国人がいることに代表されている ように、マスコミに大量に朝鮮関係者が入り込んでいて、外国人参政権問題に関連して 自由な報道ができないこと。 6、在日は集団となって、大量の抗議をするので、その勢いで重要な国の朝鮮 人の利権の絡む会議やマスコミの朝鮮のイメージを落とす報道が在日におしき られてしまうこと(集団で個人を攻撃するのでターゲットはたまらない)。 7、これは情報戦であり、宣戦布告はされていないが、完全に戦争であること。 日本は今存亡の危機にあります。これは決して誇張ではありません。 歴史上の諸外国による軍事圧力と異なり、現在行われている「侵略」は 目に見えない分一層性質が悪いと言えるでしょう。 無関心、無批判は、必ず私達の将来に災いとして降りかかってきます。
よくぞ次スレを立てた。ほめてつかわす。 さあ、皆の者 質問するがよい!!!!
>JavaでSQLの埋め込みで >StringBufferでSQL文を一つずつ入れる奴いますが >あれって多用するとパフォーマンス的にはどうなのでしょうか? PreparedStagementを使っていないのならこれ異常ないぐらい危険。すぐに破棄すべし
>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);を行なうことで、 フォーカスを取得できるコンポーネントが作れました。
>>前スレ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の使いからして間違ってるかも。。 よろしくお願いします。
自分 HP100 攻撃60 守備40 敵 HP120 攻撃40 守備50 のステータスで交互に攻撃をして勝負するプログラムを作りたいんですが、どうやるんですか?ちなみに、相手へのダメージは、(攻撃-相手守備)+ランダム(10〜3)です。
なんでこういうバカな質問ができるんだろう?
ど初心者だから
プログラミングに関係なくバカだって言ってるんだよ
そうかな?馬鹿だから教えてくださいって、言って悪いですか??
じゃあさ、たとえば 「東大に入りたいんですが、どうやるんですか?」 「彼女が欲しいんですが、どうやるんですか?」 「ロケットを作りたいんですが、どうやるんですか?」 ・・・っていう質問を見たらアンタはどう思う?
悪い。頭が悪い。
バカバカいってるのはどうかと思うよ?わからないことを知ってる人が教えてあげる。それくらいの心の広さがなかったら悲しい人間だよ(;_;)
>>18 16への納得できる答えを書いたら
1から10まで教えてあげるよ
それは僕は経験したことがないから、こうだよとは言えないよ。実際にやったことがあったら実体験を元に話ができるだろ?説得力もでてくる。 全くやったことがない事に対してああだこうだといってもなっとくはできない。
>>18 あなたの書き込みからでは「何がわかってないのか」がわかりません。
Javaに関する質問と捉えられるレベルまで問題をブレイクダウンしてみては?
まともなヒトの思考: 1.RPGの戦闘みたいなプログラムを作りたいなあ 2.そのためにはどういうデータと処理の流れが必要かなあ 3.こういうデータとこういうデータと・・・ 4.処理はこのデータをこうして、次にこれをこうして・・・ 5.うーん、この部分はどうやってプログラムするんだろう? 聞いてみよう バカなヒトの思考: 1.RPGの戦闘みたいなプログラムを作りたいなあ 2.こういうプログラムってどうやって作るんだろう? 聞いてみよう
>>19 >>16 への答え。上から順に
勉強しろ
ナンパしろ
ロケット製造関連で修士か博士取ってNASDAへ就職しろ
それと同様に
>>11 Javaの勉強しろ。
書籍は独習JavaかJava言語プログラミングレッスン上・下あたりがお勧め。
>>10 さん
ありがとうございます。
検討した結果、DBも良いのですがプロパティファイルを
書き換えることにしました。ありがとうございます。
>>20 べつに「東大に入る方法」を答えろと言ってるんじゃなくて
そういう質問をどう思うか、と聞いているんだが
なんだ、いいとこあんじゃん!本の名前を教えてくれてありがとう!出版はどこ?
もともと頭が悪いのか 解答だけ書けよと思ってる横着者なのか
まぁ、頭はそんなによくはないね!
>>28 「僕のかわりに検索して書き込んでくれるくらい優しくないと悲しい人間だよ」
ググれよ。 あるいはアマゾンで検索するとか。ここに書き込むより手間は少ないじゃないか。
発言の意図の受け止めかたがことごとくズレてるな
なるほど、
そうかな?そんなにずれすぎてる??
>>31 手間とかそういう問題じゃない。
ヤツは人とのふれあいが欲しかったんだよ。
>>26 ここで出版社を聞いているようじゃ先が思いやられる。
まず自分で調べるという姿勢がない。
自分のわからないことをわかるようになるためには、
何が必要なのかぐらいは考えてくれ。
元の質問がJavaの質問ではないことぐらい、わかってるよな?
そうか・・・さびしかっただけなのか
まぁ、いいたきゃなんとでもいえ。
こんどは被害妄想か
おまえさんはどうやってJAVAを学習した?
おまえさんって誰やねん。
>>39 それは違う。
今彼はここで人とふれあえたことで、自分の欠点も指摘してもらいそれを改善しようと思うようになったんだ。
それが
>>38 の真意だ。
デフォルトの名無しさんだよ
>>40 1.本屋に行く
2.プログラミングの本が置いてあるコーナーを探す
3.Javaの本を探す
4.入門用によさそうな本を何冊か探す
5.レジで支払いを済ませてから家に帰る
6.買った本を読み、例題などを実際に自分でやってみる
ほ〜 独学??
46 :
デフォルトの名無しさん :04/11/22 14:21:16
javaで実行形式のプログラムつくりたいんですが、どうすればいいんですか? OSはwindowsXPです。 ユーザ環境にはランタイム等があると仮定して、Java web start等を使用せずに hoge.exe をダブルクリックする形で実行させたいのですが・・・。
いや、Javaを習得するには、やはり理系の大学へ通わねばならない。 正規の講師の授業を受けて、はじめてJavaを修める事ができる。 我流ほど忌避すべきものはない。 アカデミックな教育を受けてない我流プログラマには、いろいろ 落とし穴がある。 何だかんだ言っても、専門教官のスキルは高い。 そうでなきゃ大学の講師になれないのだから。
>>46 ボーランド社のJBuilderで、ネイティブ単独実行exeファイルが
ワンタッチで作成できます。
これで普通のアプリケーションと同じように配布できますね。
JREインストールの有無は関係なくなります。
エクリプスやネットビーンズには、とても無い機能です。
これを機にJビルダーに変えてもいいかもしれません。
タダより高いものはなしです。
>>46 Borland Jbuilderにexeファイルを出力する機能があったと思うよ。
Excelsior JETを使ってexeファイルを出力することもできるよ。
exeファイルにこだわらず、ダブルクリックで実行できれば良いだけなら、
batファイルを作成して、それをダブルクリックしてもらう方法もあるよ。
以上。
>>45 ぶっちゃけ「独学」とかそういうことを言ってる時点でもうね。
学校の勉強だって、ほんとに身につけたいと思っている人は
自分で本買って、読んで、考えて、わからなければ調べて、
それでもわからなければ人に聞いて、・・・とやってるはず。
独学だろうと授業だろうと、勉強の本質は「自分でやる」ことだよ。
そうか…やっぱ大学とかいってたのか…くそ〜! 独学じゃむりかな?プログラム
>>51 勿論、「自分でやる」気がなければ、どんな講義も馬の耳に念仏になるのだが、
問題はやる気があっても、正規の教育機関による正規の講師の教えを受けねば、
本当の実力はつかない。
>>52 おまいは51を声に出して10回読め。
ちなみに大学行ってもプログラミングは
ま っ た く
上達しない。
>>53 おまえ質問の解答をわざと難しく書く香具師と同一人物だろ?w
専門学校も千差万別あるからね。 やはり、理系大学の正規の講師の授業を受けるのが、 一番上達の道に沿う事になる。
大学でプログラム上達なんてせんだろ。 自分で本読んで、プログラム組んでなんぼ。
う〜ん( ̄Λ ̄)
だから本人のやる気がなければ、どんな一流大学の講義を受けても無駄 になるけど、例え熱意があっても、当人の学習の指針がずれていたら 本当の上達は得れなくなる。 理系大学の正規の授業を受けるのが、一番の上達の近道でもある。
>>53 =57=61
だんだん本気で言ってるように思えてきた・・・
まぁやる気はかなり充分にあるんだ!!が……
>>64 やる気があるならこんな所見てないでさっさと本買いに行け
>>64 おまいさんは、Javaができないんじゃない。
自分が問題にぶち当たったときに、
それを解決する方法を見つける能力に欠けていると思われ。
>>66 そこに本人が気づかないと、いくら本を読んでも大学の講義を受けてもムダだねw
>>64 やる気はあっても自分じゃ考えられないってか?
まあ、ここまでのレスを読めばJava学習の方向性は
かなり見えるはずだろ(また意図をズラしてなければ)。
いや、少しは勉強してる。フレームとか少しわかるぐらいさ。。
プログラム教える講師とかは、たいがいどこかの企業からの出向が多い 大学のネットワークだって、パソヲタク(どこかの同好会)が 長年管理してる場合が多い。 教授も暇じゃないよ。
そういう環境につきたいのだが、ちと難しいんだ。だから、独学になってしまってるじょうたい
>>71 こんな所にいるくらいだからお前の熱意も大したこと無いんだな。
見損なったよ。
……
>>71 プログラミングのために大学に行く必要はない。
Javaがわからないんじゃなくて物事の考え方がわからないってことだな。
じゃあ戦闘ゲームの「作りかたの考えかた」を少しだけ教えてやるから、おまえも自分で考えるんだ。
まずどんなデータが必要か、列挙してみろ。(自分のHP、敵のHP、自分の攻撃力・・・)
変な流れになってきたなw べつにいいけど
自分、相手のHP 攻撃力 守備 素早さ MP ダメージの計算 とか??
>>77 まあそんな感じだな。
次に「戦闘」という一連の流れを、もうすこし細かく分解してみれ。
たとえば「カップ麺を作る」=「フタを開ける」+「かやくをいれる」+「お湯を入れる」+・・・のように。
「戦闘」=?
>>77 あ、一応言っとくけど、「ダメージの計算」はデータじゃなくて処理だからな。
攻撃コマンドを表示する→選ぶ→攻撃→相手へのダメージ→ダメージ分だけ相手のHPを減らす……
ダメージ分だけ相手のHPを減らすはしょりか…
自分への攻撃→どちらかが負ける→戦闘終了
できあがるまでここで続けるの?
>>83 わりといいね。
自分の攻撃と相手の攻撃を、どっちかが負けるまで繰り返すわけだ。
それをプログラムみたいな書き方で書くと、どうなる?
例:
while (どちらかが負けるまで) {
コマンド表示・選ばせる
自分が選ばれた攻撃を実行する
自分の攻撃の結果を計算する
・・・省略・・・
}
>>84 他に質問者もいないし、べつにいんじゃね
どうせもうすぐどっちかが飽きるだろうし
一応「相談」スレだからスレ違いではないが・・・板違いではあるなw
つーか、ここまで説明したら、もはや機械的に実装するだけじゃん
while(どっちかのHPが1より下になったら終了) {攻撃選択.選ぶ 選んだ攻撃 相手へのダメージ計算 相手のHPをダメージより引く 相手の攻撃… } こういうことだよね?
whileじゃなくてforかな…
int ihp =100; int iap =50; int idp =40; int thp =100; int tap =40; int tdp =30; う〜ん中身がわからない
>>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"が見つかりませんと、メッセージがでます。 何か分かる方や、アドバイス的なことでもいいので、助言のほうよろしくお願いします。
いいやつだな。 わかった。一ヶ月くらいやってみるよ! …あんた名前は?
>>93 >>1 を読んで、リンクを辿り、情報を探せば、解決できそう。
あばよ スミス
99 :
デフォルトの名無しさん :04/11/22 15:50:48
せきの成長っぷりが見れてよかった。 俺は今日のスレ進行好き。
100!!!!!!!!!!
JAppletをOwnerにするJWindowを生成するにはどうしたらいいんですか?
102 :
46 :04/11/22 17:08:34
たくさんのレスありがとうございました。 とても参考になりました。 javawの.batで問題がなければそれでいいような気がします。 (やりたいことは単純なデモを実行する程度なので) ダメならJbuilderの.exe出力という順で試してみます。 どうもありがとうございました。
すみません.現在,JComponentを継承したクラスにコードを書いてい てそれをOwnerとしてJWindowを表示したいのです.
>>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) { } } } }
誤爆スマソ
108 :
デフォルトの名無しさん :04/11/22 18:54:33
いや、二時間かかる処理の途中で実行される。 妙なシンクロナイズドがないかぎり
>>105 Bのsleepが終了した後でシステムのタイムスライスが来たときにBのrunは再び実行されます。
AがCPUを占有していても一応回ってきます。
同様にtestBメソッドの実行中でもスレッド切り替え時刻がやってくればAのスレッドに切り替わります。
sleepは明示的にCPU資源を使わない時間をシステムに伝えているだけです。
>>104 返信ありがとうございます。
やってみましたが駄目でした。。。
111 :
105 :04/11/22 20:31:36
>>109 ありがとうございます。
スレッドはタイムスライスで動作しているんですね。
タイムスライスの間隔を指定する方法はあるのでしょうか?
>>111 プラットホーム依存な部分なのでいかんともしがたいです。
JNI経由でOSにリクエストを出すにしてもNativeThreadの元のハンドルなどが得られないのでJVMのソースにパッチ入れる必要があります。
113 :
デフォルトの名無しさん :04/11/22 21:12:55
「割り込み使え!」で解決する問題の予感。
>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()]);
>>115 そのコードで合ってるはずだが、どういうエラーだ?
>>111 おまいの直面しているのがレース問題なら Object#wait()/notify() で解決する。
アプレットからCGIにPOSTするにはどうすればいいのでしょうか
「アプレット cgi post」でぐぐる。
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 個
とでてとまります。
解決方法アドバイスいただけるとありがたいです。
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 落としたサンプルファイルは全部同じフォルダに置いたのですがそれではだめなんでしょうか?
docletpath
クラスパスは一番最初の壁だな
127 :
121 :04/11/23 01:22:56
>>125 、126
すいません、具体的にはどうすればいいんでしょうか?
age
assert ってどういうタイミングで使うのでしょうか? みなさん、使われています?
(ちゃんと動いてれば)○○になるはずだ(から本番ではチェックしないよ)ってときに使う。 本番ではチェックしない ← ここ重要
mp3ファイルのタグを編集できるAPIってありますか?
133 :
JSP泣 :04/11/23 03:36:32
>>123 への自己レスです。
どーやらJBuilderXのバクみたいでした。
普通にLocalのTomcatにぶち込んで実行したらさくっと動きました。
お邪魔しました。
>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ファイルを抽出する. 非常に簡単に書いてありますが、プログラムの初心者のためどうすればよいのか解りません。 もしこのような、サンプルプログラムがあれば見せていただきたいのですが、 これを実現するための資源としてどんな本があるでしょうか? どうぞ宜しくお願いします
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 みたいにしたいのですが教えて下さい
mapでも使えば。
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 それはリストが何かわからないってこと?
何か学校の宿題っぽい問題だな
146 :
121 :04/11/23 14:28:19
>>145 レスを読んだのですが具体的にどうすればいいのかわからなくて・・・
-docletpathというコマンドを加えてMyDocletの位置を指定してみたのですがうまくいきません・・・
今、フレーム上で動くRPGのお店を作っています。 KeyListenerを使ってカーソルを上下に動かすことが出来るのですが、 Buttonを使ってボタンを貼り付けるとKeyが効かなくなるんです。 どなたか解決法 解りませんか?
Javaの実行クラスがあるディレクトリはどうやって調べればいい? あと、そのシステムで使われているディレクトリの区切りが\なのか/なのかも調べたいです。
org.apache.commons.lang.SystemUtils.FILE_SEPARATOR
>>149 すいません、言い忘れました。
サーブレットじゃなくてアプリケーションです。
152 :
デフォルトの名無しさん :04/11/23 15:41:48
JAVAを始めようと思いました。
ttp://www.hellohiro.com/ を参考に始めようと思いました。
ここのアプリケーション偏の「環境の構築」のPATH以外がなぜ必要なのか解りません。
PATHだけ設定すればコンパイラは使えるようになります。
PATH以外は何に使われるのでしょうか?
皆さん設定されてるのでしょうか?
153 :
152 :04/11/23 15:48:54
CLASSPATHってなんですか? 初心者にも解るように教えてください。
>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を直接コピーしている(パッケージ名がない)。
>153 Javaのコンパイル結果である「classファイル」を探す場所の指定。 PATHはOSのコマンド検索場所の指定(javaとかjavacとか)。
未だに環境変数のCLASSPATH設定しるって言ってるサイトがあるのか……orz
antでも使うのか。
158 :
デフォルトの名無しさん :04/11/23 16:33:17
JNIでHello World!したいんですが、 C++わからないので、どなたかCでネイティブ側のコードを書いてくれませんか? できればUNIX用(.so)とWindows用(.dll)の両方を教えて欲しいです。 ネイティブコードの方で標準出力にhello World!を表示できるのが欲しいです。 おとなしくC++を学んだほうがいいですか? 難しくて難しくて… Cならマクロ以外ならけっこうできるほうだと思ってます。
つうかCのJNIとC++のJNIで何がかわるというのか。 cout <<なところをprintf()で置き換えるくらいじゃないの?
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つもあって、さっぱりわからないです。
Cでもint PASCAL WinMain()とかあるだろ
164 :
デフォルトの名無しさん :04/11/23 16:54:50
こんにちは。javaのFrameについて質問があります。 右上の「閉じる」ボタン(×のやつ)すら持たないウィンドウを生成することって可能なんでしょうか?
>>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さんがおっしゃられた通り×だけ消したいのですがそれはどうやっても無理でしょうか? (ダイアログなので、最小化&最大化ボタンは消えるのですが・・・)
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ページにする にはどうすれば良いでしょう? 印刷の手間を簡略化したいのですが…
textareaを読み取り専用にするにはどうしたらよいでしょうか
>161 クラスファイルがどこにあるのか分からなかったら VMがクラスをどこからロードして良いやら分からんでしょーが。 「探さなくてもカレントディレクトリにあるじゃん!!」と言うかも知れないが そのプログラムを実行するときは、逐一そのクラスファイルがあるディレクトリに 移動してから実行するのか? あとパッケージがどうたらいうのも絡むがその辺まで語るとボロが出るので勘弁。
>170 できるできない、ということなら、できる。 要するにそのサイトに対して適宜リクエストを投げて、帰ってきたhtmlドキュメントを パースして必要なとこだけ取ってくればよろしい。
×帰ってきた ○返ってきた ウルトラマンじゃないんだからさ……orz
>>172 setEditable メソッドを使えばよいと思うよ。
以上。
177 :
仕様も無しさん :04/11/23 21:49:40
>>174 ありがとうございます。
少しずつ勉強してみたいと思います。
>>175 帰ってきた==ジャック
なので、文字列を乗っ取る(ジャックする)プログラムには
これでいいのです。
Javaアプリケーションにファイルをドラッグ&ドロップすることは可能ですか?
>>171 全部を一つのpdfにまとめて出力するdocletがネットのどこかに転がってたよ。
どこにあったかは覚えてないから自分で探してくれ。
>>178 可能。
ここで聞くより自分で検索してみた?そっちの方が速いと思うんだけど。
できました。ありがとうございました。
>>170 著作権があることと公開しないことは全く関連しません。
そういうエラそうなことは著作権やコードの公開についてお勉強してから言ってください。
オープンソースプロダクトには著作権がないと誤解されるので迷惑です。
翻訳サイトに著作権があるから公開しないって話じゃないのかね
185 :
デフォルトの名無しさん :04/11/23 22:36:44
おまいらあたまいいな
186 :
デフォルトの名無しさん :04/11/23 22:49:37
すいません、前スレの最後の方で、あるゲームのサイトを探していた者です。 今過去ログを見れなくなってしまったのでもう一度質問してもよろしいでしょうか? ・パズル形式のシンプルなゲームが多く揃っていて量、質ともに良い。 ・java プログラム ゲーム等のキーワードで検索しても出てこない。 (一度行ったことがあったのですが行き方を忘れてしまいました。) ・パズルの一例としては以下のようなものがある。 →→→ ←←← と矢印が設置してあり、1つ、もしくは1つとばし(例: ←← 、←← ) が可能で矢印の向きのみ進行が可能。 最終的に ←←← →→→ となると勝利とする。 以上のようなパズルが他にも多種在るサイト。 もし前スレで教えてくださった方がいましたら申し訳ありません。 再度教えていただけると幸いです。
配列をソートして、ソート前の添字を使いたいのですが、適したクラスはありますか? 例えば、{ 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クラスから呼ばれたことを認識できて その情報を保持できるのでしょうか?
>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など使わざるを得ないのでしょうか?
POIのフォーマットはexcel97形式だったと思う。 だから2000で読むとき「古いバージョン・・うんたら」って出るかもね。 最新のexcelだとxmlも読めるから、xmlでやった方がいいかもね。
POIは確かに便利だね。俺も使ってるけど。 ただ、ちょっと制約が多い。 開発も終了してるし。アパッチさんもあんまり力入れてないっぽいな。Excelだけに。 POIの名前の由来からしてあんまり肯定的じゃないし。。 業務で本格的に使うにのにはちょっと微妙かも。
>>197 開発終わってるの?
やはりそんなに使われなかったの?
それともMS製品など使う方がユーザにとって何かと都合よかったのか?
>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だと動きませんが、解決方法はありますか?
昔と比べて書き込みペースがトンでもなく速くなってるな、このスレ。
202 :
デフォルトの名無しさん :04/11/24 08:10:14
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) { } }
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行分書き込むと『コードが大きすぎます』というエラーがでてしまいます これはどのように対処すればいいのでしょうか? よろしくお願いします
>>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();
としてみてください。
>209さん できました! とっても勉強になりました! ホントにありがとうございます!
>>207 ありがとうございました
早速対処します
>>191 > >188
> 勝手にソート前の添え字をMapにでも保存しておけ。
> ソート前の配列を保存しておいてindexOfでもいいがな。
TreeSet, TreeMapを使うのがいいと思うのだが
>>197 漏れ的にはOpenOffice版POIに期待しているのだが。
OpenOfficeフォーマットがISO標準になるかもしれないからな。
そうすればM$Officeフォーマットが衰退してゆくと思われ
そう簡単な話じゃないけど期待はでかい
与えられた文字列が有効なファイル名かどうかを調べたいです。 環境によって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』で書かれています
>>216 単純な方法だが、俺はjarのルートに置いたら出来た。
>>217 Windows-31Jを使え。
unix系のS-JISとms系のS-JISは違う。
220 :
質問 :04/11/24 22:41:28
>>219 >単純な方法だが、俺はjarのルートに置いたら出来た。
その方法で出来るのは知っているのですが、知りたいのはJARの
外にプロパティファイルがある場合の方法なのです。
言葉足らずですみません。
>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だけがどのような指定をしても無視されてます。
>>199 いまさらだが、補足。
> もしカレントディレクトリにクラスファイルがあったとしても、クラスパスにカレントディレクトリ
> が書かれてないと、探してくれなくて、NofFoundになる。
クラスパスが)_全く_セットされてなかったら、カレントディレクトリがデフォルトになります。
>>222 それ、log4j自体は動いてて、log4jの設定ファイルで logger設定(この場合log4j.logger.jp.co.hoge.App)の
appendar設定がされてないってことはないですか。あとrootLoggerの設定がおかしいとか。
一応プロパティファイルの中身も貼ってくれませんか。
>>222 普通 *.properties ファイルはクラスパスから読み込まれるんだから
カレントディレクトリ (.) をちゃんと加えてるか?
-cp で jar ファイルをしていしただけだと jar の中身に *.properties ファイルが
一緒に固められていないと当然読み込まれないぞ。
訂正。 216を見るとカレントディレクトリじゃなく conf だな。 ちなみに -jar で jar を指定すると -cp は無視される。 なので MANIFEST.MF の Class-Path のところを lib/commons-logging.jar;lib/log4j-1.2.9.jar;conf とすべきだな。
216と226を比べてふと思ったんだけど jarのMANIFEST.MFのクラスパス指定、 パスデリミタが' 'だったり、ディレクトリ区切りが'/'でパスデリミタが';' なんてことになってたらその指定って有効なんだろうか? 試してみりゃ分かるんだけどもう眠気が限界なので後は任せた_=o
>>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に書いたとしても)
>>225 >>226 そのように指定しましたが、うまくいきません。
confの順番も変えてみましたが同じです。(先頭にしたり、最後にしたり)
他にもconf/log4j.propertiesというのも試してみましたがダメでした。
>>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データがあり、それを一つ一つ調べていきたいのです。 皆さんからは簡単かも知れませんが、プログラムの初心者のためどうすればよいのか解りません。 もしこのような、サンプルプログラムがあれば見せていただきたいのですが、 これを実現するための資源としてどんな本があるでしょうか? どうぞ宜しくお願いします
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のそーすキボンヌ
>>234 Javaでコード書くよりも、XSLTにかけた方が早いような気がしてきた。
やり方は思いつかないが。
xgrepとかxmlgrepとかあるらしいから、その辺がつかえるかも?
>>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> が記述されている。ファイル名を取得する事になります。 これ自体、本当に出きるか、解らないのですが、どうすればよろしいでしょうか。 解決方法があると嬉しいです。
>>240 自分で組もうとせずにgrepでも使ったら?
>>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 >処理... という流れを一時ファイルを作らずに行う方法があればよいのですが。 一行読み込み処理をするのに改行ごとに行いたい。
>>243 Writerの処理をするスレッドと、Readerの処理をするスレッドを作って、
PipedOutputStreamとPipedInputStreamをつかって繋げる。
Writer側がPipedOutputStreamに書き込んで、Reader側がPipedInputStream
から読めばいい。
245 :
デフォルトの名無しさん :04/11/25 14:42:28
ありがとうございます!やってみます
>>244 別スレッドではないのでは?
>>244 StringReader/WriterかByteArrayInputStream/OutputStream
247 :
デフォルトの名無しさん :04/11/25 14:48:36
アプレットってどうやって実行するのでしょうか? コンパイルして、クラスファイルが出来たあとどうしたらいいのでしょうか?
>>247 検索サイトで調べるといいんじゃないかな
>>246 スレッドであってるでしょ?
少なくともプロセス間通信に使うもんではないよ?
>>251 あーなるほど。そういうことかね。
「一行読み込み処理をするのに改行ごとに行いたい。」ってんで、UNIXにおけるパイプのような
ことがしたいんだろうと単純に考えたんだけど。
ども。 それでやってみます。
254 :
253 :04/11/25 19:07:28
JAppletから,JWindowを思った位置に開く事ができません. アプレットヴューアですと開けるのですが,htmlに埋め込むとずれま す.みなさんどうしてるんですか?
>>255 俺は、ダイアログをアプレットの中央に出したかったけど、
あきらめて、画面の中央とかにしてる。
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やメソッドってあるのでしょうか?
Fovarite って何だ?
>>259 favorite→ツールバーにあるURLのお気に入り
favoriteフォルダに格納されている
261 :
デフォルトの名無しさん :04/11/26 01:17:26
よく、JAVAで数字とか文字列を戻り値として返す事ができると聞くが、 ファイルを戻り値として返す事ってできるのかな・・・?? (ファイルの名前の取得とかは、できるんだけどね〜。。どうするのかな?)
>>261 ??
return new java.io.File("C:/WINDOWS/notepad.exe");
こういうことなら普通にできるが??
スレッドをいくつも起動させる中で、別の場所にセットした配列データ、 例えば{test1,test2,test3}などから、1番目に起動したスレッドはtest1、 2番目はtest2などをスレッドの中で取り出して、微妙に処理を変えることは可能でしょうか?
スレッドのコンストラクタに配列渡せばいいんじゃ。
266 :
デフォルトの名無しさん :04/11/26 11:02:21
if文またはswitch文で処理の分岐は可能でしょ. 配列は別の場所にあるんだから, それをどうにかして参照すればいいじゃん.
こうかな。 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(); }
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のプログラムを組み込んで、コンパイルして一緒に動かすことはできますでしょうか かなり初心者でよくわからなかったため質問させていただきました。 よろしくお願いします。
272 :
デフォルトの名無しさん :04/11/26 16:57:09
273 :
デフォルトの名無しさん :04/11/26 17:01:16
>272 お返事ありがとうございます。 beforeFirstの状態からnext()を使用しても、 なぜか1レコード目には移動できてしまうのです。 1レコードもHITしていないのですが。 ちなみに、このソースをLINUX環境に上げて動かすと、First()もNext()も beforeFirstの状態から、Falseを返してきてくれます。
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 です。
>>276 それはODBCのバージョンだ。
JDBCのバージョンはojdbc14.jarの中のMANIFEST.MFに書いてある。
でも、推測するに9.0.2だろうね。
だいたい同じ環境だが、Win上でそんなこと起こったこと無いなぁ。
Javaのバージョンが違うくらいだ。
>>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()を使用すると正常に判断してくれるのです。 ただ、それだとスクロールが順方向にしか移動できないため、プログラム的に使えないのです。 ドライバーも一緒だとすると、やっぱコーディングが怪しいですかね・・。
>>279 Oracle付属のjava(1.3相当)が動いていて、それが悪さしているとか?全くのあてずっぽうだけど。
とりあえずjava -versionの結果が見たい。
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
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
國府田マリコのおっかけをやって10余年が経過した。当時大学3年生だったオレはGS美神のおキヌちゃんをやってたマリ姉に出会い、即効でファンになった。元々合コンや女の子とは縁のない生活だったが、それからはマリ姉の為だけに生きてきたようなモンだ。 毎日マリ姉の歌を聴き、毎週ラジオも聴き、もちろんハガキも出しまくって月3回必ず応援の手紙と詩を送った。イベントも全部行った。 全国ツアーで一緒に全国制覇したのも二度や三度じゃない。ファンやって二年目、握手会で俺の名前を覚えてくれてた時には嬉しくて本気で涙が出た。人生で最高の喜びだと有頂天になって、帰り道一人で吼えてた。 地元の役場の事務に就職した後も、それだけが楽しみで生きてきた。他の事は考えようとしなかった。結婚も、彼女も、友達も、そんなのは関係ない、いらないと思ってた。 そして去年の9月。信じられないものを目にした。「國府田マリ子結婚!!」目を疑った。絶対ありえない、絶対ありえない。死んでもありえない。 ・・・なんであんな男が。ふざけんな。どこがいいんだ。マリ姉と釣り合わない、失礼だ。ふざけんな。ふざけんな。一週間仕事を休んだ。 失意の内に半年が経った。もうラジオも聴いてない。会員番号2ケタ前半のファンクラブも辞めた。最近になってようやく、俺も自分の幸せを掴もう…そう思えるようになってきた。 だけど俺には何も残ってなかった。20代という多感な時期に何もしなかったんだ。当たり前だ。マトモに他人と喋ったのはいつだっただろう。女の子とおしゃべりをしたのはいつだっただろう。 恋について、結婚について、そして人生について最後に考えたのはいつだったんだろう。趣味も、特技も、人間性も、協調性も。何もありゃしない。残ったのはブサイクで汚い30代の中身スッカラカンな男。それだけ。 こんなのが今更どうやって幸せ掴めってんだ。声優のおっかけは何も生み出さなかった。それに今まで気づかなかった俺は最高にバカだ。そして朝っぱらからこんなグチをネットでしかこぼせない俺は最高に惨めだ。 是非俺を笑ってくれ。蔑んでくれ。そして自分の人生をもう一度考えるキッカケにしてくれ…
コピペ乙
>>269 >Win2k環境(上手くいかないほう)で読み込んでいるライブラリは以下のとおりです。
>c:\oracle\ora92\jdbc\lib\ojdbc14.jar
>c:\oracle\ora92\jdbc\lib\classes12.zip
ojdbc14.jarだけにしろよ馬鹿
294 :
デフォルトの名無しさん :04/11/26 23:06:02
>>293 目をそむけたからわからんが、グロ画像だった気がする。No Click!!
どんな感じのグロ画?
296 :
デフォルトの名無しさん :04/11/26 23:13:52
>>295 股を開いている女と蓮の実とのコラージュ
javaアプレットでサウンドノベルを作りたいのですが お勧めのHPとかありませんか?
299 :
デフォルトの名無しさん :04/11/26 23:41:09
このスレを愛している。
>>293 昔その類の蓮乳というやつを見て
すごく気持ち悪くなって体が蕁麻疹になるんじゃないかと
思うほど痒くなったことがあるが
今ではもう慣れてしまってなんとも思わない。
URL#openConnection() から得た URLConnection を HttpURLConnection にキャストして使用しています。 サーバーへの接続のタイムアウト、 特に最初の openConnection() のタイムアウトを設定するにはどうすればよいでしょうか? ご教授ください…… setSoTimeout を実装している Socket 関係のクラスをどこかで使うのかもしれませんが見当が付きません。
クリックするごとに画像を順番に表示するにはどうすればいいんですか?
>>285 インストールのときにソースコードも入れるようにチェックをつけていれば
JDKのディレクトリにsrc.zipってファイルがあるはず。(でいいよな?うろ覚え)
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"); }
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って表示させたいんです
>>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だけの範囲なので見つからないのだと思いますが こういう場合どうすればいいのでしょうか? サイトとか参考にしてもこういう例はあまり無かったので教えて下さい
>>313 DBは何?
テーブルの別名に 1 とか 2 とかつけるのはどうかと思う。
>>313 ○ rs.getInt("Name");
× rs.getInt("1.Name");
SQL の発行結果で出てくる列名は Name 。
1 というのは SQL の発行時に DBMS がどのテーブルの列なのか判断するためのモノであって
発行結果に 1 は関係ない
発光結果に1は関係ないってホントかよ? fooってカラムを持つA, Bのテーブルがあったとき select A.foo, B.foo from A, B とかやったとすると rs.getInt("foo") でちゃんとどっちの foo か区別できんのか?
出来るわけねーだろ馬鹿。少しは自分で考えろ
>>316 そこで getXxx(int columnIndex) ですよ
>>313 O-Rマッピングツール使えば楽をできるんだけどねえ
>>316 めぎらわしいなら、
A.foo as Afoo
B.foo as Baka
と名前を置き換えてしまえばいい。
322 :
デフォルトの名無しさん :04/11/27 12:25:05
>>314-321 結局何かツールなどを使うのなら別だけど
普通にJavaのAPIだけで使うのは不可能なんでしょうか?
一つ目のデータを別の値に名前でに置き換えたりして…
まず getInt(1) をやってからものを言え。 getInt(String)を使うのはどっちかというとキチガイだ。 今では。
>>322 SQLのASを知らないのか?
カラム名を別名に置き換えるだけなのだが。
>>322 O-Rマッピングツールを使えば
クエリをJavaコードにハードコーディング
しなくて済むのでオブジェクト指向らしさを
維持できて楽だというだけだよ。
初心のうちはまずJDBCでクエリべた書きでやってみなよ。
>>288 >con = DriverManager.getConnection("jdbc:odbc:mydb","id","password");
これだと、JDBC/ODBCブリッジ(タイプ1)ドライバを使ってアクセスしに行くので、
せっかく指定したOracleのJDBCドライバが使われていない。
なんだかしらないけど 絡む名にどっとつけるとうまくいかないんだとね。 どっとはずすとうまくいってしまう。 そんでASで絡む名を変更する必要がありなんじゃないかな?
>>329 ドライバによりますね、schemeの指定と混ざっちゃう奴もあるからかもしれないですけど。(DB2へPostgresから移行するときに悩んだ覚えが)
そういやカラム名がユニークになるシステム開発にたずさわったことある 最初違和感感じたが、通常のSQLでasがまったく必要ないので それはそれで後からみたときコード追いやすかった
>>331 わけの解らんカラム名(N001とかついてたりした)やつをasで意味付けするようにコード書いたら
上司からいぢめられた(;_;)
>332 それはかわいそうだな……。 つかその上司こぼらか。
334 :
デフォルトの名無しさん :04/11/27 18:36:10
ソケットでConnectException検出までの時間って どこで決定しているのですか? 存在しないホストのチェックをしたいのですが タイムアウト値が長すぎます。 Socket#setSoTimeoutってホストはあるが サーバサービス等が稼動していない場合のタイムアウト値 設定ですよね?
>>332 俺のいたプロジェクトはテーブル名+カラム名って感じだった
>334 java.net.Socket#connect(java.net.SocketAddress, int) じゃねえ?
class Super{...} class Sub extends Super[...} で、Super hoge = new Sub(); はどんな意味があるんでしょうか?Subを生成したけど Superの機能しか使えないという認識で大丈夫ですか? これは何のためにあるんでしょう?
>337 手近なオブジェクト指向の解説書、もしくはWebページで 「多態性(ポリモルフィズム)」について調べてみてください。 これが分かるといろいろ得します。多分。
339 :
デフォルトの名無しさん :04/11/27 23:11:44
macで実行できるJavaの携帯エミュレータ知りませんか?
340 :
せき :04/11/27 23:48:09
スミスよ!起きとるか! 応答を求む。 無ければ明日の8時にくる。
>>339 i503相当ならJNI使ってないから普通に動くと思う。
他のは知らない。
504相当も音鳴らさなければ大丈夫だと思うが。
Map map = new HashMap(); で生成したmapというオブジェクトに対して、 map.get(obj)は戻り値にObjectを取ると思うんですが、 これをint型に型変換したいときはどうしたらいいでしょう? 逆はIntegerを使ってできました。 よろしくお願いします。
>342 String#valueOf(Object) してから Integer#parseInt(String)
>343 なるほど。Object→String→intという流れになるんですね。 ありがとうございました。
>>343 なんで間にStringをはさむ必要があるんだよ。
>>342 =344
取得したObjectをIntegerでキャストして
Integer#intValue()を使う。
J2SE5.0ならintのままMapに入る(コンパイラが適当にIntegerと変換してくれる)。
>345 あ、すまん。任意のオブジェクトだと思ってた。 >342 Mapの値がIntegerって決まってるなら>345が正解。
>345 大変参考になりました。ありがとうございました。 >346 説明不足でした。すみませんでした。
あのー、かなり初歩的な質問にも思えるのですが、ずいぶん検索しても、 見つからないので、お尋ねいたします。 Eclipseについているエディタで、切り貼りしたいとき、普通にカーソルで 範囲選択して、ドラッグ&ドロップしようとしても、できません。 プラグインか何かでできるようになるのでしょうか? よろしくお願いいたします。
349 :
デフォルトの名無しさん :04/11/28 09:45:22
細かいこと突っ込むようで申しわけないのですが、 抽象メソッドと純粋仮想関数って同じものですよね?
>>348 Ctrl+x でカット、 Ctrl+v でペーストじゃダメ?
>>348 やり方は人の好き好きだと思うが、
そんな切り貼りの仕方を、プログラミング中にするとは驚いた。
そんな人俺の周りにもいるけど、
大量の行を範囲選択するときに、キーボード使わずに、
マウスドラッグで選択開始して、目的の行までスクロールするまで、
マウス揺らしながら、じっと待ってるタイプだろ?
んで、目的の行を通り過ぎて、「おっと行き過ぎた」とか?
>>348 おいらの同僚がそのやりかたしてた、でもマウスのボタンの調子が微妙に悪くなった時にすっぱりやめたよ
最短経路探索のプログラムを作ろうと思い、
ttp://www.geocities.com/hzuegel/ このページにあるPathFinder.zip のプログラムを
Javaで作っています。
最小のコストを探しながらゴールまで行くことはできたのですが、
肝心の最後の最短経路だけを返す部分のアルゴリズムがよくわかりません。
どなたかご教授していただけないでしょうか?
よろしくお願いします。
プログラムに慣れた人は、出来るだけキーボードのみで操作できることを望む人が多いからね。 だからショートカットーキーやキーバインドのカスタマイズがどれだけ柔軟にできるかが IDEの重要な評価ポイントの一つだったりもする。 ダブルクリックで単語選択はしてもマウスで範囲選択は普通はしないね。
355 :
デフォルトの名無しさん :04/11/28 14:47:21
<c:out value="${abc}" /> とJSPでコーディングすると、出力されるHTMLは ${abc} なじぇだあああああ天は我を見放したか
>>355 JSPは専用スレがあるが。
tagfileの設定が間違っているんじゃないのかね?
interstageの質問すれどこです?ここ?
>349 とりあえず、「純粋仮想関数」ってのがJavaの用語でないことは分かってると期待しつつ…… ひとつ違いがあるとすれば、C++の「純粋仮想デストラクタ」はJavaにはない。 finalize()はObjectで既に定義されてるから。
>>349 インスタンス化するためにはメソッドを実装しなければならない事を契約させると言う意味では同じ。
デバッグのためのメッセージの出力を、出荷時に取り去れるようにする手段として、 -------- 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 実行速度が問題になる部分でも使いたいので、
OFF にしたら、完全に実行されないようにならないとまずいんです。
>>362 じゃあ、Jakarta Commons Logging 使えば?
本番ではNoOpLogにすればいい。
>>363 わかりました、まだちゃんと理解できてないので、試してみます。
ちなみに、Jakarta Commons Logging における、NoOpLog 時の、
コードが消えるメカニズムはどうなっているのでしょう?
>>364 「コードが消える」は意味不明だが、
NoOpLogにした時の動作は、「ログ出力しない」
デバッグ出力をON・OFFするのにソースをいじってリビルドするのはおすすめできないよ
>>365 >「コードが消える」は意味不明だが、
「コードが消える」というのは、プリントアウトのためのコードが、
最終的なバイトコード上に存在しなくなるということです。
(つまり、実行時にはデバック出力のためには実行時間は消費されない)
>デバッグ出力をON・OFFするのにソースをいじってリビルドするのはおすすめできないよ
>>360 の前者は、そのためにソースをいじる箇所を一箇所に集約するもの、
後者は、その一箇所の書き換えさえ無しにしようとするものです。
リビルドの実行は目的上、止むを得ないと考えています。
どうも説明が不十分だったようです。ごめんなさい。 >デバッグのためのメッセージの出力を、出荷時に取り去れるようにする手段として、 というのは、「メッセージ」を取り去りたいのが主な目的ではなくて、 「出力」の動作を取り去るという意味せす。
>>366 一般的に見れば無駄なこだわりだと思うよ。
普通はLog4Jなりなんなりつかって、開発時にはDEBUGレベル、
納品時にはWARN、ERROR、FATALなど(このへんは好みだが)にしておく。
もともとそういう使い方をするためのライブラリだからね。
デバッグプリント用のメソッド呼び出しすらさせたくないという意味だと思うが、
気にするレベルの速度ではないとおもう。俺はね。
こだわって自作Logger使うよりLog4Jを使うメリットのほうがはるかに大きいと思う。
まぁこだわりたいのなら仕方ないけど。
>>368 >一般的に見れば無駄なこだわりだと思うよ。
〜
>気にするレベルの速度ではないとおもう。俺はね。
Log4j はすでに使っていまして、特定の部分で速度的な問題が出てきたので、
局所的な問題解決の手段を考えるために、
>>360 の質問をしたのですが。
>こだわって自作Logger使うよりLog4Jを使うメリットのほうがはるかに大きいと思う。
というか、私の知識の範囲では、Java の機構上、外部のクラスやインタフェースを使う方法では、
>>360 の前者のような方法以上の解決策はないと思うのですが、
自作Logger でどうにかする方法を何かご存知でしょうか?
>>367 まあstatic final booleanなフラグ定数でも用意して、
if( flag) {
assert();
}
とかしてた場合、flagがfalseの時にはifブロック全体がバイトコードから削除される
ように最適化される。ただ、「ほぼそうなると言える」としかいえないのが難点。
言語仕様でそう最適化しろと書いているわけではないからね。
どちらにしても再コンパイルは必要なので、おれの会社だったら「再コンパイルした
んならテストやり直しだな」と言われるけど。
ちなみにif文なしで、assertだけ書いておいて、実行環境でassertを無効化するので
は駄目なんだよね? バイトコード上にassert命令は残るけど、実行されないように
なるけど。
>>371 >まあstatic final booleanなフラグ定数でも用意して、
それが
>>360 の前者、
>ちなみにif文なしで、assertだけ書いておいて、実行環境でassertを無効化するので
それが
>>360 の後者ではないかと思うのですが・・・。
別のことをおっしゃってますか?
ああ、まさに、if文をassertで置き換えたら何が違うのか、という質問なわけね。
if文はif条件が定数であれば、コンパイラが最適化してifブロック自体を削除する
(可能性が高い)。
assertは実行時にassert文を実行しないようにすることはできるが、assert文自体を
消さない限り、バイトコード内にassert文は残る。
あと
>>360 のassertの例だと、「常にassertの式部分がtrueになるので最適化される」
と言いたいように思うのだけど、assertが有効なら式は必ず実行される。そしてログが
出力された上でtrueが返ってきて、assertを抜けるだけ。よってログを出力しないように
するにはassertをオフにするしかないけど、どちらにしてもassert命令はバイトコード内
に残る。
>>370 > Log4j はすでに使っていまして、特定の部分で速度的な問題が出てきたので、
> 局所的な問題解決の手段を考えるために、
>>360 の質問をしたのですが。
情報小出しうざい。先に言えよ。
で、特定の部分だったら納品時に消せば?そんなに気になるなら。
で、開発時にはDEBUGレベルで、納品時にはDEBUGレベルより上に設定するんでしょ?
入れてるDEBUGレベルのコードが速度に影響するのはほんのわずかな時間だけど。
http://www.jajakarta.org/log4j/ によれば46ナノ秒と書いてある。
そんなに気になるものかね。
すまんかぶった....
>>373 assertってバイトコードには残るけど
disableにして起動するとクラスローダがその部分を削除して読み込むから
メモリ上ではまったくなくなるよ。
局所的にってことは、Log4jのプロパティをいじって、その局所にあたるクラスだけ ログレベルを上げればいいんじゃないかな。
>>373 >if文はif条件が定数であれば、コンパイラが最適化してifブロック自体を削除する
>(可能性が高い)。
>assertは実行時にassert文を実行しないようにすることはできるが、assert文自体を
>消さない限り、バイトコード内にassert文は残る。
なるほど、非常によくわかりました。
>あと
>>360 のassertの例だと、「常にassertの式部分がtrueになるので最適化される」
いえ、その部分は「常にassertの式部分がtrueになるのでAssertionError がスルーされない」
という意味しかないです。
そこまで気にするのならJavaを使うな、マシン語やアセンブラで書けと個人的には思う。 Javaのような技術は実行速度よりも使い勝手の良さ、開発やメンテナンス効率優先な技術だと思う。
>>376 ああ、おれはそれは知らなかった。そうか読み込み時に消去するわけね。
じゃあ、
>>360 が期待しているのが
「つまり、実行時にはデバック出力のためには実行時間は消費されない」って
ことなら、assert使って、実行時に無効化する、でOKなわけかな?
>>360 が言ってるのが、バイトコードのサイズは気にしないってことなら
assertでいいんじゃね?
>>360 のレスを見てると、Log4Jのメソッドは呼ばれるがログ出力はしない場合の
オーバーヘッドでパフォーマンスが左右されるほどの精度のプログラムを
書いているように思えない・・・・
>>374 >情報小出しうざい。先に言えよ。
ごめんなさい。
>そんなに気になるものかね。
>>360 では分かりやすくするために単純化してありますが、
実際には、相当量のオブジェクトの関連を追ってメッセージを生成するので、
出力だけが実行されなくなっても、速度的にはあまり改善されません。
あーメッセージ構築に時間がかかるわけね。それは確かにログレベル調整では 駄目だな。でもそれも最初に書いた方が良かったね。今後の教訓として。
385 :
デフォルトの名無しさん :04/11/28 20:29:32
>>385 getBytes(String encode)で望みのコードでのバイト列を取得してからバイト数を取得する。
>>384 なんで?最初にレベル見て出力するか判断するよ?
メッセージ作ったりするのはその後だから関係ないのでは?
文字コードによるがgetBytes
389 :
デフォルトの名無しさん :04/11/28 20:35:19
>>385 君のいう全角半角が本来の意味なら
適当な等幅フォントでデカイ字を書いて
半角の幅で割るとかしれ
>>383 warnやlogの引数Objectをその場で生成してるからでしょう?
Objectが評価されるがObjectRenderer#doRender(Object o) の時点まで遅延させればいいんじゃないの?
> 実際には、相当量のオブジェクトの関連を追ってメッセージを生成するので、 また情報の小出しかよ。 Jakarta Commons Loggingには現在有効なレベルを調べるメソッドがあるから それで判定してからメッセージを作成するのが常套手段。 下の例なら、DEBUGレベルが有効でない場合はifブロックに入らない。 (例) if (isDebugEnabled) { // メッセージ生成処理・・ // ログ出力処理・・ }
>>387 たぶん、logger.warn()とかする前に、ずらーっと長いメッセージ生成ロジックがある
んだろう。warn()が実行されるされないに関係なく、メッセージ生成が行われてしまう。
だからそのコード全体をif文で囲ってる、とかいうことじゃないかな。
まあでも、エラーメッセージを返す関数を作って、warn()の引数に渡すというふうに
コード変更できるなら、logger.warn( getWarnMassage())ってな感じで対応することも
できるかな。
>>390 はJakarta Commons Logging 使えばって話ね。
今までの書き方だとメソッドは呼ばれるがログ出力はしない場合のオーバーヘッドを気にしているように見えるぞ?
>>393 Log4jがそういう機能持っている事に気がついていないみたいだから書いたんだけどね。
まさかと思うが360の人はLog4jのメッセージ引数が何のためにObjectなのか知らないのかなぁ。
重たいログ情報生成を遅延評価してくれるからこそのLog4jだと思っていたんだけど、ボクガマチガッテいるんでしょうか?
結論としては、
>>360 はLog4Jを使いこなせてないってことでFAかね?
ああ、いま調べたら
>>392 の後半に書いてる方法じゃ全然駄目だな。
メッセージ構築がされてしまう。
やっぱり地味にlogger.isDebugEnabled()をチェックしてメッセージ構築ですかね。
そりゃあんた、初心者大歓迎スレなんだから使いこなせてなくても全然不思議じゃないだろ。
getClass()について以前も質問させてもらって、 getClassは実行時に参照を持つって、そういうもんなんだって納得してみたんですが、 どうもふにおちません、Object#toString()の getClass().getName() + '@' + Integer.toHexString(hashCode()) では継承したクラスの名前出すのに、 同じ事を更に下層の自作クラスではなぜできないんです?
>>394 いやどっちかというと、warn( Object o)の o を作る事自体をやめたいということだろ。
だったら if 文分岐の方が適当だと思う。String生成しなくてオブジェクトを作るのだって、
作るという処理が必要なのは変わりがないから。
>>398 ごめん日本語がよくわからない。
> getClass().getName() + '@' + Integer.toHexString(hashCode())
> では継承したクラスの名前出すのに、
>同じ事を更に下層の自作クラスではなぜできないんです?
ここんところをもうちょっと詳しく書いてくれ。何が出来ないと言ってるのか
わからん。
>>399 warn(Object o)は特に設定していない場合はDefaultRenderer#doRender(Object o)でtoString()として処理されるので
toString()を実装した生成クラスでもつくってラップしておけば遅延評価できるって意味だったんです、誤解したら済みません。
>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 は値を返さないのですか?
>>402 試しに君のコードをコンパイルしてみたけど、getClass().getName()と
getClassName()は同じ結果「ClassImpl」を返すよ?
>>402 同じ結果か返されるが。
あなたの環境ではどうなるの?
それから、toStringをオーバーライドする時はpublicじゃないとコンパイル出来ないよ。
>>350 その手がありましたか。ありがとうございます。
まったく思いつきませんでした。ただ、貼り付け後、行が乱れるのが。。。
でも、それは、[ソース]―[フォーマット]で、直りますね。
>>351 >>352 そうですか。あまり、お勧めの方法ではないのですか。参考になりました。
とにかくありがとうございました。
>>354 おっと、見落とすところでした。なるほど。キーボード重視ですね。
勉強になりました。
>>407 いま、乱れない方法に気づきました。左にタブが入っている状態で、
不覚にも、行の先頭ではなく、モジの初めから、いびつになる
範囲選択の仕方をしていました。タブの前からきれいに四角に
範囲選択すれば、乱れませんでした。すみません。
だから乱れるって何だったんだ
脈絡もなく卑猥な事を口走ったりするってことだろ?
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を打つのが解決策なのかなぁ。
>>409 たぶん、行の移動をしたかったのに、範囲選択の時点で行を選択せずに
いたから、予想していた貼り付けがされなかったんだろう。
>>408 から察するに、インデントされている行の途中からカットして、
貼り付けたら、インデントが取れたとかではなかろうか。
>>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;
のようになります。
>>413 ん?Eclipseってペースト後に勝手に整形してくれなかったっけ?
>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]としてのログに 明日もっかいソース洗い出します。小出し申し訳ありませんです。
javacって末尾再帰関数を最適化でループにしてくれますか?
>>415 [ソース]-[フォーマット](Ctrl+Shift+F)を使わずに自動的に?
419 :
デフォルトの名無しさん :04/11/29 20:54:11
質問です。自分のアプリにプラグイン機能を作りたいのですが、 実装のしかたがよくわかりません。どうしたら実現できるでしょうか? 漠然とした質問なので、せめて、志向性やヒントでもいただければ・・・・ と思います。よろしくお願いします。 <仕様 というか ある程度自分でも実現方法を考えました> ・プラグインフォルダをつくって、そこにプラグインのクラスを入れるようにする。 ・プラグイン用の基底クラス造り、各プラグインはそれをを継承して作成する。 ・アプリ起動時にプラグインフォルダを走査し、そこにあるクラスを動的に読み込む というような感じだとは思うのですが、いかがでしょう。だとしても三番目の部分を どう実現するのかわからないのですが・・・・・・。
Class#defineClass して Class#newInstance すればいいべ
ClassLoader#defineClassだった
422 :
デフォルトの名無しさん :04/11/29 21:12:03
>>420-421 クラスローダですか。今まで手を出したことなかったので気づかなかったです。
RMIかな?とか余計に難しい事を考えていました。笑
ありがとうございます。
最後にひとつ・・・
プラグインフォルダにあるクラスを知るには、そのフォルダのclassファイルの
ファイル名からクラス名を取得する、という手続きが最適でしょうか?
>>418 お前のはec|ipseっていうパチモンだからできないけど
みんなできてるんだよ
>>417 IBMのだったらしてくれる場合もあるが
SUNのはしなかったような気がする。
>>334 J2SE5.0 からは ping が打てるよ。タイムアウトも設定できる。
InetAddress#isReachable
>>422 自己レス
ファイル読んで、defineClassしてgetNameすればいいのか・・・・な?
Java アプレットでエロゲー作ったら プラットフォームに依存しないから、Windows ユーザーも クリエイティブな Mac ユーザーも、Sun の Solaris 使ってるメガネ君も みんなで(;´Д`) ハァハァ できちゃって 超人気サイトになっちゃうかもしれない…。 そんなこと考えた漏れは逝ってよしですか?
>>417 そういうのは実行時最適化で終わる問題だったりする
>>427 一時期そういう雰囲気もあったんだけどね。なんか知らんうちに廃れたみたいよ。
いっそWEBアプリにしてみたら?Flash使えば普通に過不足ないエロゲーが作れ
そうだけど・・・・・・
何より、普段JavaAppletをオフにしてるユーザーにも遊んでもらえるw
ゲームもAppletよりFlashのほうが流行ってるしなあ・・・
>>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){; }
Webで、YAHOO Geocities の広告が表示されるフレームを指定するやり方教えてください。 当方、Javaになんの知識もないのでよろしくお願いします。HTMLはOKです。
document.write("unko");
>>435 document.write("<DIV style=\"font-size: 100px;\">unko</DIV>");
の間違えじゃないか?
マジレスおねがいします。
すみません、質問させてください。 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型に負数を入れたい場合は どのように指定するのでしょうか。
>>437 = >434
マジレスする前に聞いとくが、まさかjava scriptじゃないだろうな・・・。
すみません、ソースに少し不備がありました。 以下に修正します。 public class test { public static void main(String[] args) { byte b = 0x80; System.out.println(b); } }
>>438 =
>>441 byte b = -0x7f;
int i = (int)b;
System.out.println(i);
ごめん、intへキャストしたのは意味無し。
>>442 レスありがとうございます。
符号直接をつけるのは目からうろこでした。
そこで、以下を試してみました。
→は出力結果
int i = 0x80; → 128
byte b2 = (byte)i; → -128
0x80でビットを、 1000 0000と持っていることは
上記から推察できますが、
byte型の変数に0x80と指定できないのは、
そういう決まりなのでしょうか。
byte型の変数に0x80と指定できてる。 何の問題もない。
>>424 しないのか。つーか、どうやって確かめるの?
-sしてもアセンブリ(バイトコード)出力しないし
>>429 JITがやってくれるのか
初心者大歓迎って書いてあったから来たのに・・・。 マジでお願いしますm(__)mけっこう本気なんで。
日本語の初心者は歓迎していません。
釣れたwwwwwwwwww
クッ、クマー!?
452は自分ではありません。 教えてください。
>>446 マジレスするけど、ほんとに
>>1 の一番最後をよく読んでくれ。
JavaとJava Scriptは違う。
確かGeoのHPで、どこに広告を入れられるか決めれたみたいな。 1ページに確実に1つ必要だけど、 フレームを作って、GeoのHPからID,PASSを入れてログイン その中に、広告を入れる場所を決められるはず。。。 ジオは昔使ってたから、今違うかもしれん。 違ってたらスマソ 後、JavaとJavascriptは(ry
>>419 亀レスですが
アプリケーションの起動スクリプトを工夫して、プラグインフォルダのjarファイルを
クラスパスに追加してしまえば
>>432 のような簡単な方法でいけます。
Unixのシェルスクリプトなら
java -cp main.jar:`ls plugins/*.jar|xargs|sed 'y/ /:/'` foo.bar.Main
のように1行スクリプト書けばできますし、
WindowsでもバッチファイルかWSHスクリプト書けば可能でしょう。
あと、Eclipse RCPにはプラグインアーキテクチャがついているので、
それを使うという手もあります。この場合SWTの使用が前提となりますが。
>463 >432もだけど、自分だけがプラグイン作るならともかく、 ある人が違うpackageでプラグイン作りたいとか思ったときに困るんじゃ。
>>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にキャストする事ができません。ココでちょっと躓いてしまいました。 よろしくお願いします。
>>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();
とやっていました・・・・・。
今ごろになって思うんだが、やっぱり JavaScript って 登場時の Live Script って名前にしておけば良かったんじゃない? そうすれば混乱も起きなかっただろうに。
最近、ようやくJavaとJavaScriptの本を分けて置いてある書店が増えてきた。
>>470 うん、おれもずっとそう思ってた。実際のところ、Live Scriptのほうが機能をよく表してた
と思うし。
ループの中のswitch文の処理でbreakしても、switch文から出るだけじゃないですか。 ループから出たい場合、なんかいい方法無い?
break ラベル名; で任意のラベル名の箇所へジャンプできる。 二重ループを抜けたい場合も同様。
>>473 ループの中身をprivateなメソッドにする。
メソッドの戻り値にループ脱出の有無をboolで与える
ループを破棄したいswitchの脱出をreturn true;// ループ終了,等にする。
賢いコンパイラならプライベートメソッドをinline展開するからそれほど処理が重いわけじゃない。
間違えた。 break ラベル名; で指定したラベル名の文を終了できる。 二重ループを抜けたい場合も同様。
>>475 三重ループ、四重ループなんて場合はソースの可読性が激しく低下しそう。
初心者には
>>476 が正解だろうな。
ラベルの書き方にちょっととまどったが、できたできた。 ありがとう、Javaプロのみなさん。
>>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");
}
}
}
>>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
ありがとうございます。 動作しました。
>>477 高次元配列操作とか以外はメソッド分けてメソッド名に意味づけしたほうが見やすいと思うんだけど。
3次元以上の配列つかったことある香具師いる?
484 :
デフォルトの名無しさん :04/11/30 20:37:36
class Binboh { public static void main(String[] args) { byte b = 1+2; } } これでコンパイルエラー起きないのなんでですか? 整数の演算結果はint型になるから、bに代入するとき キャスト必要だと思ったんですが。
javaで作ったプログラムはJREが無いと絶対に実行できないんでしょうか? 何か方法があるなら教えて下さい。お願いします。
>>447 再帰の最後の処理をなくしたものでテストするとわかる。
ループに展開してくれている場合は無限ループに陥るだけだが、
展開してくれない場合は関数呼び出しを伴うのでスタックオーバフローで落ちる。
>>483 3次元ならあるよ。
100*100*100*sizeof(hoge)で128Mバイトとか使っちゃうんで泣けるけど。
ファイアウォールを越えて行われるSocket通信のサンプルみたいなものが 乗っているサイトをどなたかご存じないでしょうか? もちろんサイトじゃなくても簡単なコードを晒していただければ幸いです。 エロイ人たち、どうぞよろしくおながいします。
>>488 越えたいfirewallの種類くらい書いたらどうかね。
490 :
484 :04/11/30 22:13:54
すみません。
>>484 です。
これは例えばbyte型を引数とするメソッドに 1+1 を渡そうとすると、
ちゃんとコンパイルエラーが発生するんですが。。。
教えてください。
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("残念"); } } というプログラムを組みましたがエラーがでます。
>>490 大雑把に言うと、
・代入式で、
・右辺がintの定数式(1+2とかね)であり、
・左辺がbyte, short, char(つまりintより範囲の小さい整数値)であり、
・さらに定数式が左辺の範囲内
であれば、キャストなしで代入できる。そういう仕様。
495 :
484 :04/11/30 22:42:19
みなさん、ありがとうございました。
ほんと初歩的なことですみませんが Object[]をString[]に代入したいんですけどどうやればいいんでしょうか?
String[] strArray = (String[])objArray;
>497 それだとClassCastExceptionエラーになっちゃうんです。
Object[]の中にString以外のもんが入ってるんじゃないの?
>497 ありがと。そういうことなんですね。。。。 でもListArrayとかJListのgetSelectedValues()で得た配列は どうすんでしょうか
微妙な話なんだが、関係あるかもしれない。 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; が通るのと同じ原理。
>>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();
ってこと。自分で作ったもんなら中に何が入ってるかは知っているでしょ。
>>493 かなり基本的な所を間違えています
Javaを基礎から勉強してください
>499, 501, 503 ありがとうございます。よくわかりました。 基本的な考えが足らなかったようです。
>>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]);
}
}
}
>>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なんかがあれば、紹介してもらいたいです。
>>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の場合の処理 } &演算子を使うのは無理でしたので、何か違う方法があるのかなぁと思った のですが・・
>>513 if((MASK&mode) > 0 ){
//modeがAかBの場合の処理
}
515 :
513 :04/12/01 10:26:21
あ、ほんとだ!ってかエラーを勘違いしてたわけか・・。 ダメダメやなぁー ありがとうございます。そしてごめんなさい。
>>513 Cは0が偽、0以外が正で判定されるけど
Javaはbooleanになるように比較演算子をいれてあげないとダメ
// ベタ移植はこれ↓
if((MASK&mode) != 0 ){
}
// これでもいい
if((MASK&mode) == MASK ){
}
javaのはじめの一歩(HelloWorld)から躓いてしまいました。 コマンドプロントで実行しているのですが、HelloWorldが表示されません。 Java関係のHP見ながら勉強しているのですが、解決方法が解らないので 申し訳ありませんが教えてください。 C:\program_java>javac Test.java C:\program_java> ↑の様な結果になります。
>>518 ありがとうございます!
正常に実行できました。
また何かありましたら、お願いします。
520 :
デフォルトの名無しさん :04/12/01 12:07:23
ヌルポも注意
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文字列を代入すればよいのかな何て思っていたのですが 出来なかったんです。 どうすればできるでしょうか?
>>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
527 :
デフォルトの名無しさん :04/12/01 17:18:02
文字列を比較したいのですが、どうすればよいでしょうか? String a="愛"; String b="愛"; if(a==b){turu処理} else{not処理} 上のような感じしたのですができませんでした。。 宜しくです。。
>>527 「ような感じ」がよくわからんが、それならelseではなく、ifブロックに入るはず。
turu処理ってのは釣る処理って意味で、実は釣りか?
531 :
デフォルトの名無しさん :04/12/01 17:44:39
532 :
デフォルトの名無しさん :04/12/01 17:48:39
ベクトル配列の2、5、7、8、9、、、、番目といったような、 ループさせるのに数列の法則がない場合に、配列のそれぞれの要素に同じ処理をさせたい場合はどうすれば良いでしょうか。
>>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 配列し直したらよいのでしょうか。。
いまだに RedHat とか使ってる香具師 Fedora Core で Java がめちゃくちゃ速くなってるから試してみ Tomcat などのサーブレットコンテナの java プロセスが top コマンドの上位に来ることなんてめったに無くなった。 スレッドの効率がめちゃくちゃ良くなってる。 すれ違い失礼
Fedora Coreなんて怖くて使えない 超有り得ない
趣味プロの話でしょ? まぁFC2は割と枯れてていいと思うけど
仕事でfedoraはありえんな redhat9があほみたいに遅いのはしってるけど
>>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(); } }
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列目の文字列を読み取るなどです。
>>544 POIってライブラリ、ぐぐって探してつかってごらん。
546 :
542 :04/12/01 21:34:20
>>543 そのnotifyが目覚めさせるということを確かめたくて、
わざとそういうコードを書いたんです。
つまり、notify()が無いからスレッドがストップしたまま
になるという動作を期待したんだけど、実際はストップしない。
どうしてでしょう?
>>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でやられとるの音声のヴィジュアライズって何をつかって作っておるのでしょうか? ご存知の方をいらっしゃればお知恵を...;;
>>547 そういやなんでredhatはあんなに遅かったんだろうか
552 :
542 :04/12/01 22:29:09
>>549 そうですよね。th1のスレッドが止まりますよね。
その時点でプログラムが止まって、プロンプトが
帰ってこなくなるのではないのですか?
スレッドを勘違いしてるな コードをちゃんと見てみろ
>>552 ちゃんと期待通りにMyThread#run内でMainThreadと合流しますよ。
プロンプトが帰って来るはずの無い時間内で終了してしまうのならMainThreadが異常終了してるんじゃないですか?
あるいはjava MyThreadとして起動するときにバックグラウンドで実行するようにコマンドプロンプトかスクリプト(bat)で指定してないですか?
>>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が停止状態になって、プログラムが終了しない
、、となると思っているんですが、そもそも間違ってます?
>>556 th1#runのth.wait()はthのスレッド終了までth1のスレッドを停止します。<<たぶんwaitの意味を取り違えているのはこの辺りでしょう?
したがってthが終了するとth.waitが解除さth1の処理はrunをぬける事になります。
MyThread#run内でMainThreadと合流するってのはth1のなかでthのスレッドと合流すると言う意味です(Thread処理ではjoinと呼ばれる事もあります)
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を認識し返せるのでしょうか?
>>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);
}
}
とする。
>>555 redhat9ってカーネルいくつだったっけ?
古いKNOPPIXとか結構早かったなぁ
>>557 それはObject#wait()の説明ではなくてThread#join()の説明ではないか?
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 のことだけか。あとはぜんぜん 無問題運用してる。
つーか、Sun謹製のSolaris 10が待ち遠しい。 Tomcat動かして死ぬほど重かったりしたら笑い転げるしかないなw
>>563 うわ、ホントだ、スマン。
ちなみにjoinは生きてる間waitし続けるようになってる(w
>>566 waitっていうな。ブロックするといえ。
>>567 joinの中でwait(0)してることいってんじゃね?
569 :
デフォルトの名無しさん :04/12/02 02:55:11
文字列の1番目の文字だけを読み取るとか可能なのでしょうか? 例えば、 String a="神様お願いします"; だとしたら、先頭から2文字まで読み取るなどです。 この場合だと、「神様」になります。
>>569 String b = a.substring(0, 2);
すみません,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;
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行目まで読みたいとか、の場合 どのようにすればよろしいでしょうか?
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つに成る場合もあります
この場合はどうすればよろしいのでしょうか?
配列の長さとこの行数を一致させたいのです。
宜しくお願いします
配列じゃなくて List でも使えばどうか? String hoge; List list = new ArrayList(); while( ( hoge = br.readLine() ) != null ){ list.add(s); } あとは List を操作 List がわからんとか言うならとりあえず javadoc 嫁。
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間で同じ変数を呼び出せなかったり。
>>565 ある意味ディストリビューションが固定されたLinuxのようなものという
位置づけになるんじゃないかと期待
Javaが安定して動くフリー環境ってだけで使う人は増えそうな気もする
でもsunの売り上げにはまったく貢献せんね
サーバーLinuxとか企業が使うところはいいのかもなぁ
開発環境が無償というだけでもありがたいかもしれん
582 :
デフォルトの名無しさん :04/12/02 16:02:16
>>581 >>Javaが安定して動くフリー環境ってだけで使う人は増えそうな気もする
>>でもsunの売り上げにはまったく貢献せんね
いやいや、ユーザーが増えればそれに伴ってサーバーサイドで採用する
企業がさらに増える。技術者や企業からいろいろ儲けれる。当然ですな。
めっちゃ初心者です 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文の前に配列などの定義をしないと 認識されない事は知っています。
>>583 少なくともインポートの部分だけじゃダメだなあ
詳しくはググって
>>584 いまいち質問の意味を理解してないが、やっぱりlistつかえば?
>>584 なんか質問と例文が合ってない気がするが、こういう事か?
String[] moji = null;
try {
moji = new String[10];
moji[0] = "ai";
} catch (Exception e) {
e.printStackTrace();
}
return moji;
>>584 例外食らったら return するのはあきらめろ。
ググってみたつもりですが なんとググればいいかよくわかりません よければ教えてください サイトなど教えてくれるととても助かります
>>583 アプリ:main()メソッドからプログラムがスタートする
アプレット:runメソッドからスタートする
一番いいのはあれだ、アプレットで作って、それをアプリケーションに組み込め
ただしGUIまわりはAWTで作るしかないけど
591 :
デフォルトの名無しさん :04/12/02 19:23:30
String[] str = new String[100]; とかしたときにStringのコンストラクタで初期値を代入したりできないでしょうか? String str = new String("hoge"); みたいなことをまとめてやりたいのですが、、、 forとかでまわすしかないのでしょうか?
>>591 String[] str = { "a", "b", "c", "d" };
>>591 >String str = new String("hoge");
ちなみにこんな事、しないぞ。
>593 え?俺使うぞ。やばいの?
595 :
591 :04/12/02 20:05:20
えっと、代入したい文字列が同じ文字列ですと付け加えておきます
>>595 String a = "aaa";
String[] b = new String[10];
Arrays.fill( b, a );
>595 String [] str = { "aaaa", "bbbb" };
>>206 で質問をして
>>207 でアドバイスをいただいたのですが
どうにも
>>パッケージと同じ場所に初期化リソースでも置いて
>>そこからReader経由で読み出して行くようにする
という部分ができません
どのようにすればいいのか教えていただけませんでしょうか?
よろしくお願いします
599 :
591 :04/12/02 20:14:41
ありがとうございました。596さん的なものを探していました
>>594 やばいというほどではないがまったくの無駄。
>>594 サーバサイドでこんな書き方連発してる派遣がいたらお帰りいただく。
>>601 なんでサーバサイド限定なんですか
お前みたいな派遣がいてもお帰りいただく。
String str = new String("hoge"); と String str = "hoge"; では下のほうがパフォーマンスが良い。なんでかは忘れた。 余談だがFindBugs使うと無駄なことすんな、と怒られたはず
>>603 String str = new String("hoge");
と
String str = "hoge";
"hoge"の時点で、「hoge」という文字列インスタンスを生成しているのに、
その文字列をコピーして、新たにインスタンスを作っているから無駄。
これで合ってる?
まだ完全に理解したわけじゃありませんが いろいろなサイト(教えてもらったところなど)を見て 勉強したいと思います いろいろ教えてくださってありがとうございました またわからないとこがあったら聞きに来るかもしれませんが そのときもよろしくお願いします
>605 だな
609 :
デフォルトの名無しさん :04/12/02 22:51:43
だからjavaは汚いんだ。
>>602 まず、こういった細かいオブジェクトの乱発生成は GC 時のパフォーマンスに直結する。それでも
1 VM に対して一人が前提のクライアントサイドなら豊富なメモリにより救われるが、多数ユーザ
の同時処理により一時的なヒープ消費の激しいサーバサイドでは効果が目に見えて現れる。
次はお前の番だぞ。サーバサイドで new String("hoge") に問題が無いことを説明してくれ (w
もう散々がいしゅつのネタだと思うんだが、質問者はともかく解答者も定期的に入れ替わってんのかなぁ?
>>605 ちょっと違う。もともと String のインスタンスは immutable なため、オンコードで記述された
リテラル "hoge" はクラスに対して一つだけインスタンス化されている。String str = "hoge";
はそのインスタンスに参照を向けるだけの行為。このステップの実行で新しいインスタンスは
一切発生しない。それに対し new String("hoge") は「内容は同じだが別の文字列インスタン
スを作る」という意味を持つ。immutable でありながら同じ内容の別のインスタンスを作るという
行為は大抵の場合無駄な事。
後半の話、厳密に言えば現在のほとんどの Java VM の実装がそうなっている、と付け加えておく。
>>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) が成立する……ような気がする。
> String str1 = "hoge"; > String str2 = "hoge"; >なら、 > str1 == str2 は true ね。言語仕様よめ。
615 :
M.B. :04/12/02 23:09:48
酒呑みながらム板に顔出すのは無謀だった。 意味不明 _| ̄|○
>>615 コテハンやめるか自分で立てたスレ盛り上げろよ〜。
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宿題スレは意図に反した方面で盛り上がってしまって、
気乗りのするような問題が少ないもんだから、
他のスレにちょっかい出してたほうがなんぼか面白い。
つーかこのスレだと相手にされそうにないので、
宿題スレに泣きついてきた香具師もいそうに思われ。
>>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 の質問に答えてくださるとうれしいのですが
皆さんのお力を宜しくお願いします。。
>>622 まずは、String#split(〜)。
そもそも30分程度で回答が返ってくるのを期待するなんてアホだろ、おい。
今週中に出さなきゃいけない宿題ならすれ違いキチガイ 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){} }
いってる意味がよくわからんが value |= 7; と value -= 7; は併せて value &= ~7; でいい。
627 :
デフォルトの名無しさん :04/12/03 00:24:42
>>625 さん
ありがとうございます。すみません急ぎではなかったんですが、
無視をされていると思ってつい書いてしまいました。
それでも直ぐに記述できる
>>625 さんはすごい人だ。。
習って、やってみます。
乱心、スクラッチで書いたのでコンパイルの保障はせん。 FileInputStream → FileReader
>618 文字列操作とか正規表現つかうのかな? よくわかんないけどしらべればできるとおもうな
>>483 以上ということは3次元配列も入るのか?
そんなのいくらでもいるだろう。
3次元くらいが最高かな。それ以上なら次元ごとに意味づけしてクラスとして分離しちゃう。
632 :
デフォルトの名無しさん :04/12/03 01:11:28
>>605 > "hoge"の時点で、「hoge」という文字列インスタンスを生成しているのに、
生成してない。
"hoge" == "hoge" だし、 String a = new String("hoge"); String b = new String("hoge"); a != b だ。
>>635 してないじゃん。↓
文字列リテラルは常にクラス String の同じインスタンス(4.3.1)を参照する。
>>636 明示的に別のインスタンスになることくらいわかってて書いている。
immutable である String オブジェクトのコピーを作ることに
意味がある場合を教えてほしい。
>>637 "hoge" の時点で 1 個、さらに new String("hoge") でもう 1 個だぞ。わかってるか?
>>620 > str1 と str2 が別クラスで宣言されてるならそうはならない、と書いといたほうが誤解されなくて
> 良いが、そもそもクラス単位の同一リテラルのマージは言語仕様ではなく JVM の実装依存。
> 言語仕様では String str = "hoge"; のステップに対して常に同じ "hoge" のインスタンスへの
> 参照が代入されることのみを保障している。これは同一クラスに散在する "hoge" という記述が
> 必ず同じインスタンスを指すということを保障しているわけではない。
> んー説明難しいな、分からなきゃもっと噛み砕くけど。
言語仕様読み直せ。お前全然理解できてないぞ。
http://www.y-adagio.com/public/standards/tr_javalang/
ふと仮説を思いついた。 new String("hoge") とかやっちゃうバカは ・1 とか 3.14 みたいな数値リテラルはオブジェクトではない ・オブジェクトとして扱うには new Integer(1) とか new Double(3.14) とかしないといけない という事実から "hoge" はオブジェクトではないという間違った連想をしてるのではないか? たまに foo != null && foo.equals("hoge") みたいなのは "hoge".equals(foo) と同等とか 教えてやると「そんな書き方できたんだ」とかいうやつもいるし。
まあでも、たしかにStringだけ特別扱いされてると思うし、誤解するひとがいても 不思議ではない。なんかプリミティブみたいに見えるからね。
644 :
デフォルトの名無しさん :04/12/03 03:41:45
あの、素でわからないんですが なんでこうなるんですか?↓ 教えてエロい人。 > たまに foo != null && foo.equals("hoge") みたいなのは "hoge".equals(foo) と同等
ああ、ageちゃったorz
String#equals(null) はfalseを返すから。 fooが(1)fooがnullのとき (2)fooの指すStringオブジェクトの内容が"hoge"のとき (3)fooの指すStringオブジェクトの内容が"hoge"でないとき に分けてその式がtrueになるかfalseになるか考えてみ
>>646 なるほど、勉強になりましたm(_ _)m
ありがd
648 :
デフォルトの名無しさん :04/12/03 09:09:16
どのOS・環境でも同じように表示されるフォントってなんでしょうか? NetBeansつかってGUIを作っているのですが、フォントのプロパティにで自分が インストールしているフォント全てが表示されているもので・・・・・。 #もちろんそのフォントを他の環境にインストールすればいいのでしょうが、それ無しで #表示できるフォントについて教えてください。 お願いします。
>>648 Times, Courier, Helvetica, Dialog, serif, sans-serif, monospaced ってリストにない?
いつの間にか 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()の違い。 よろしくお願いします
なるほど、学校の課題ですね。スレ違いです。
>>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() は絶対パスから例えば ".." とかを解決して除去するなどして正規化する。
×>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からして設問に問題ありだな。 馬鹿な先生が出したのか、馬鹿な学生に合わせたのか。もしくはその両方か。
どう質問していいのかもよくわからないのですが・・・コンパイルのやり方がわからないんです。MS-DOSプロンプトで、どうやったらフロッピーに入ってるプログラムをコンパイルできるのですか?どう入力したらいいのですか? 質問するのに足りない事があれば、それも教えてください。すみません、お願いします。
それはDOSの知識のほうなんっじゃないかね
そうなんですか、すみませんでした。では、DOSの方に行きます。
660 :
デフォルトの名無しさん :04/12/03 12:00:37
まず、フロッピーディスクを水平に持ってディスクドライブに 挿入してください。奥まで入れるとカチャっとの音とともに セットされます。そしてエクスプローラーからAドライブを選択 すると、フロッピーディスクにアクセスできます。 あとは、jav
661 :
652 :04/12/03 12:19:55
今まで分からなかった事が分かってきたので、もっと教えてください。 Stringは変更不可なのに、そんなコンストラクタを作ったことは、 今となっては過ちだったということでしょうか? ArrayListのように変更可能なクラスを、引数とするメソッドを作り、 内部で保持し続けるなんてときには、大概コピー作って保持しないと、 呼び出した側から変更されてしまう可能性がある? class Test { ArrayList list; public Test(ArrayList l){ this.list = l; //生成時点でのArrayListを保持するつもりなら //this.list = new ArrayList(l); とすべき? } }
>>662 やってみればいいじゃない
#勘違いしてることに気づくから
>今まで分からなかった事が分かってきたので、もっと教えてください。 いや、多分なんにもわかってないと思う。 あと百回くらい言語仕様とjavadoc それからみんなが挙げてくれた参考リンク先読め。 声に出して読め。
>>657 フロッピーとわざわざ断ってるんだから、質問の答えはこうだな。
HDDと同様に。
アプレットとGUIについて勉強しようと思い、プログラムを作成しているのですが どうにも行き詰ってしまったので質問をお願いいたします アプレットでボタンを押すことで四角なり円なりを描画するというプログラムを作成しようと思っているのですが 下のソース(描画に必要な部分はもちろんあります)で実行を行うとボタンが表示されません そして→の部分をコメントアウトして実行しますとボタンは表示されないままで描画処理だけは行われます これは何か根本的に考え方が間違っているのでしょうか・・・?orz どうかご教授お願いいたします public class Diapplet extends Applet{ private Color c; static JButton jb = new JButton("draw"); boolean flg = false;
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); } }
>>666 AppletはAWT
JButtonとかはSwing
まずJAppletつかえ
669 :
デフォルトの名無しさん :04/12/03 22:19:50
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 で,パターンを #.# とするのと ##.# とするのでは何か違いがあるのでしょうか。 つまり,整数部の # の数に意味はあるかということです。 実際にやってみると違いがないように見えるのですが,本当にそうなんでしょうか。
>>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("送信");とやってやると
エラーは出なかったのですが当然のことながら「送信」がチェックボックスになっていました。
ボタンを適用するのはできませんか?
>>672 DecimalFormat#toPattern() では正規化されたパターンが返ってくると思ったので
同じかどうか確認してみればいいかも?
675 :
デフォルトの名無しさん :04/12/03 23:16:38
>>673 ごめん、ちゃんと見てなかった
でもボタンをクリックして集計したいなら
ActionListener も実装するのかな
ItemListener と ActionListener を両方実装して
itemStateChanged() ではどちらが選択されたかだけを記憶しておいて
ActionPerformed() でカウントするようにしたら良いのでは?
676 :
デフォルトの名無しさん :04/12/03 23:21:09
基本型を使うメリットはよくわかるのですが 変数で参照型を使う事によってどういうメリットがあるのでしょうか? 説明は書いているのですが、結局どういう時に効果が発揮するのでしょうか? ポリモーフィズムなどの説明を見てもいまいちつかめません
その基本型を使うメリットもよくわかってないんじゃないか
>>423 プラグインをさがせばEclipseでもできるかもしれんぞ。
それに勝手に整形されるのは非常に迷惑だ。
とくにコメントアウトされたソースコードをそのままペースとしたいときには。
ペースとしてからコメントアウト
という技ができない。
ほかにもXDocletとかクエリを書きたいときがあるだろ。
そんなとき勝手に整形されるのは不便だ。
>>539 枯れている?
なんで?
今はFedora Core3がでたから2はもう古いということか?
>>537 どうせgcjつかってるだけだろ。
ネイティブはやってられんし不安定でつかいものにならぬ。
自力でTomcatをダウソしたほうがまし
>>680 redhat9がなぜかスレッド起動がすごい遅いのは割と有名な話だと思うけど
>>679 枯れてるってのは使われて成熟してるって意味だと思う
暇だからなんか答えるか
>>667 Swing使う場合は
paintComponent(Graphics g)としなさい。
あとやり方がちと古いね。
VolatileImageを使うなりするとなおよろしい。
あとアプリケーション
>>638 > "hoge" の時点で 1 個、さらに new String("hoge") でもう 1 個だぞ。わかってるか?
String a = "hoge";
String b = "hoge";
でインスタンスが2個できると思ってないか?
String a = "hoge";
String b = a;
と同義。
>>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 結果がこのようになるようにしたい。 どなたかサンプルプログラムを書いていただけるとうれしいです。 よろしくです。。
>>686 いろいろ効率的な方法はあるけれど
一文字ずつ見ていって「-」が出てくる数を数えるという方法さえ
思いつかなかったんだとしたら非常に知能が劣っていると言わざるを得ない。
688 :
デフォルトの名無しさん :04/12/04 03:04:14
>>687 早い書き込みありがとうございます。
686です。すみません。全然思いつきませんでした。。
うおー劣っている・・(TOT)←プログラム初心者です・・
僕の知っているの関数で
int indexOf('-')
というのがあってこれは、最初の「-」までの数値を取得する
ことができるじゃないですか。
これの、2番目,3番目とかできるものってありますか?
引数を二つとる方のindexOfを調べてみろ。直接は取れないので多少応用が必要。
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番目の手前までの文字列数になるという感じですかね
6=j このような書き方流行ってるの?(´・ω・`)
>691 んー、定石と言えば定石なんだけど 1. 最初は引数1つのindexOf()で、「最初に'-'がある位置」を取る 2. 1.で得た位置の次をb番目として、引数2つのindexOf()を順次呼んで結果を得る 自力で思いつかなかった? あと、数字だけの並びで間に挟まってるのが'-'で固定ならjava.util.regex.Pattern辺りを 使う手もあるかと思うが、ややこしいから今はやめておいた方がいいかも。
>>684 その例えで言うなら
String a = "hoge"; // ひとつめ
String b = new String(a); //ふたつめ
だぞ。わかってるか?
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。
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系ってまだまだ現役ですか?
>>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 はなんて表示されるべき? "." だけ?
>ちなみに聞いておきたいんだけど、仮に "##.##" が受理された場合 DecimalFormat#setDecimalSeparatorAlwaysShown(boolean) で false が指定されてれば "." も表示されなくて 0 は "" にされるな。 デフォルトってどーだったっけ?
>>699 業務系ではでたばかりの5.0はつかってねーな
枯れているかどうかも重要だろう
というか言語仕様かわりすぎてというのもあるだろう
覚える部分が少ないというのがCとJavaの利点だったからな
>>681 そうなんだ。
今までTurboLinuxを使っていたんでRedhatはよくわからんかった
704 :
デフォルトの名無しさん :04/12/04 11:20:47
>>704 ITの世界で枯れるってのは、”技術的にも浸透し、バグも無く安定して使える程度に年月が経て”、ってな意味だろ。
紛らわしいと思うのは、”君”の方の問題だよ。
706 :
デフォルトの名無しさん :04/12/04 11:52:52
>>704 ええ。新技術の話に関しては、(3)の方が一般的ですよ。
>>704 パシャ パシャ パシャ パシャ パシャ パシャ パシャ パシャ パシャ パシャ
パシャ パシャ パシャ パシャ パシャ パシャ パシャ パシャ パシャ パシャ
∧_∧ ∧_∧ ∧_∧ ∧_∧ ∧_∧ ∧_∧
( )】 ( )】 ( )】 【( ) 【( ) 【( )
/ /┘ . / /┘. / /┘ └\ \ └\ \ └\ \
ノ ̄ゝ ノ ̄ゝ ノ ̄ゝ ノ ̄ゝ ノ ̄ゝ ノ ̄ゝ
>>704 ITの世界じゃ「葉が無いので虫がわかない」って意味かもよ。
710 :
デフォルトの名無しさん :04/12/04 13:28:29
短絡演算子&&と||はどちらが優先順位が上ですか?
684,696が馬鹿すぎて笑った
サブクラスだけに関係するプロパティを設定するコンストラクタを作ろうとすると コンパイルエラーが起きてしまいます。下記が例です。勿論それぞれ別ファイルです。 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; } }
>>714 Superの方に
protected Super(){
}
を加えるか
Subのコンストラクタに
super("");
を入れればコンパイルできるよ
>>715 なるほど、protected のコンストラクタなら Super でおかしなインスタンスを作られる事もありませんね。
Super 側に protected Super(){} を加える事で不都合を解消できました。ありがとうございました。
JTextAreaの中で右クリックしたときに カット、コピー、ペーストといったポップアップメニュー表示 したいんですが、どうしたらいいでしょうか?
ポップアップするコードを書けばいいんじゃないですか? 1.4だとリスナを登録したり結構メンドクサイが5.0ならかなり楽。
普通のメニューみたいにコンポーネントに登録するだけでよい。
本当だ、setComponentPopupMenuと、setInheritsPopupMenuか
ありがとう
>>720
>>668 >>683 遅くなりましたが答えていただきありがとうございます
いまから試してみようと思います
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); } } } というプログラムを書いたのですが、コンパイルは出来ても実行が上手くいきません。 「あなたの名前を入力してください」と出たあと、入力待ちのカーソルにならないんです。 何がいけないのでしょうか??
>>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" だったら ""だと思ってました。
どこかの初心者向け解説サイトでそんなことを書いてあったのを見たような気もするし。
731 :
デフォルトの名無しさん :04/12/04 23:32:59
>>705-707 待て、マーケティングのために"枯れる" という
意味をわざと皮肉を込めて
言う経営者や顧客もいるのではないか?
ITのことwqおなんだか良く分かっていない顧客や
若者が聞いたら勘違いして「その技術は枯れているから
古くさいものは使わない方がいい」
なんて言いだしかねないのでは?
下手なことをいうとかなりのダメージを受ける恐れあるのではないかと思われる。
732 :
672 :04/12/04 23:36:55
>>731 そういう時は、あえて
『いい意味で』枯れた技術ですから
っていうなあ。
「枯れた技術」と聞いて、
>枯れるといえば(2)しか想像できないのだが
っておもってんのは...
>>731 >
>>705-707 >待て、マーケティングのために"枯れる" という
>意味をわざと皮肉を込めて
>言う経営者や顧客もいるのではないか?
詭弁の何番に相当するかね。
>>732 > に,"###.##" というサンプルが出てるんですよね。 ???
サンプルを書いた人間がDecimalFormatの細かい仕様にまで気を配らなかっただけだろ。
もしくは仕様なんざ知った事ではなくて現行の実行環境で動けばよいというポリシーで書いてるとか。
そこって他でも用語が言語仕様(JLS)と一致してなかったりするし。
指摘を頂いたところのあたりをいじってみたのですが今度はボタンは表示されるようになったのですが ボタンを押しても画像がまったく描画されなくなってしまいました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(); } }); }
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); } }
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); } }
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なのか、バッチがメインとか・・。
>>740 普通じゃない。
少なくとも1.5以降は素直にstatic import使え。
>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次元配列で生成することは出来るのでしょうか? たくさんのパラメータを渡すときに実際の仕事ではどのように 渡しているのでしょうか? 教えて下さい。
>>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を取得できない。
>>755 int commaCount = xxx.replaceAll(":.*$", "").split(",").length - 1;
759 :
デフォルトの名無しさん :04/12/05 03:22:38
>>758 そんなレスするあなたの方が愚かに見えます。
本人降臨
761 :
デフォルトの名無しさん :04/12/05 03:41:59
>>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を使ったときの処理 と考えていいのでしょうか。
>766 全然違うものだからまずjavadocを確認しては?
あるクラスAの集合をフィールドとして持つクラスBがあって、 クラスBを別のクラスZのmain()の中でインスタンス化してるとします。 Bの中では、Aの集合はVectorかArrayListで可変長の配列として表現されています。 ここでZのmain()の中で、As = B.getAs(条件)などとして、Bが持つAの部分集合を getしたいのですが、BのgetAsの返値はどういう形式にするのが一般的でしょうか? つまり、可変長配列を固定長に直して、A[] getAs()とするのか、ArrayListのままで 返すのか、それとも何か別の方法でしょうか?
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 を落としてきたんですが他に何か必要でしょうか? 上のリストの中に「それよりもこっちを使った方がいい」というのがあれば教えてください。
>769 それにhibernateあたりつければjava知らなくてもシステム組めるよ 決めた、君は設定大臣になれ!!!もてるぞそっちのほうが j2eeなんざ要らないjwsdp??だか入れてとことん設定王へ突き進むべし!
hibernateって何ですか?jwsdpって?? Ant 1.6.2も不必要だけどあった方がビルドが楽なようなので落としてきました。
すいませんhibernateについて調べてみました。 JavaのオブジェクトとRDBのデータの間のギャップを減らすツールみたいですね。 Cayenneってのも良さそう。
>>769 初心者ならMySQL4.1.xやめたほうがいい
MySQL4.0.xじゃないとへんたところではまる
HSQLDBで勉強したほうがいいかもしれない
最初からGUIツールがついていたり、
DB鯖とドライバと管理ツールがすべて1つの500KBくらいの小さなjarにはいってるし
最初はわかりやすいのからはいったほうがいいよ
いろいろあつめてくるのはいいけど、まずはJDBCでSQLたたいて 結果を取得というのを確実にできるようにしたほうがいい
君は動きが軽いな、いいぞそのリズム 軽快なのはいいがとりあえず落としたの全部動かしなさい。
jwsdp落としてるのかな、そんだけぶち込んで java糞重いつかえねーーなんていったらおじさんキレるよ
778 :
デフォルトの名無しさん :04/12/05 13:12:02
>>766 です
>>767 さんありがとうございます。
全く違うものなのですか。
がんばって調べてみます。
すいません、0から100の間で正規乱数を作るにはどうすればいいですか。 テストの点をシュミレートしたいんです。
ダウンロードしてインストールしただけで、満足してそう。
>>768 そういう時は getAs() は Collection を返す方が汎用的。
これなら Vector だろうが ArrayList だろうか
Collection インターフェースを実装してるものなら何でもreturnできる。
受け取った時に適切にキャストすればいい。
782 :
デフォルトの名無しさん :04/12/05 14:34:52
様々なご意見ありがとうございます。 DB関連の自分のプロダクツ上、WEBコンテナだけでなく EJBコンテナも必要と思われましたので、JBossも落としてきました。 さらに静的コンテンツは、別途のWEBサーバーにまかせた方が 良いとの事でしたので、Apacheも落としました。 当面はこのシステムで開発&学習を進めていこうと思います。 さらに質問なのですが、SUNの標準APIだけではいろいろ不完全な様ですので、 jakarta commonsも用いた方が良いとの事ですが、まず第一に必要だと思われる コンポーネントを幾つか教えてください。
>>768 getAsの戻り値はListにしてreturn Collections.unmodifiableList(internalArrayList);
受け取った側でキャストするなんて馬鹿げてる。Listのまま使え。
ListでなくてSet/Collections.unmodifiableSet(internalHashSet)でも可。
>>779 ぐぐったら1分でわかったが。
Java以前に、人としての賢さの問題。
786 :
222 :04/12/05 15:04:43
実務のプログラムで多数のパラメータを渡すときプロのJavaプログラマーは どのようにして渡しているのですか? 型名と仮引数名をずらーと書いて受け取るのが普通のなのでしょうか? 教えて下さい。
Bean作れ
>>784-785 バカはあなた達の方です。
分からないのなら、わざわざケチつけない方がいいですよ。
>>788 は僕ではありません!
おねがいします、教えてください、糞ども。
つまんね
↑ 当然、ニセモノです(もうどうでもいいけど) 自己解決しました。 (int) (Math.random() * 101) ですね。 この程度の回答も即レスで来ないここのプログラマのレベルって一体・・・
>>779 シュミレート
↑ここにも突っ込みたいんだが(r
>>793 一応マジレスしとくと2chにレベルを期待する方が間違ってると思うよ
>>789 >あるクラスAの集合
という「集合」次第だろうな。
Setを返すべきなのか、Listを返すべきなのか、どっちの可能性もあるのか、
要件によって決まるとしか言いようがない。
以上が一般論。個人的には、
インターフェース設計ならCollectionを返すような汎用性が欲しいけど、
内部実装がListで良いクラスならListを返せば充分だろう。
(T extends CollectionなGenerics型を返すというのも有りといえば有りなんだが……)
798 :
デフォルトの名無しさん :04/12/05 15:36:02
あるシステムを特定のモデルで表現し(この場合は点数の散布図), そのモデルを使って各種実験、テスティングを行う行為を シミュレートといいます。 わざわざ、ツッコむようなレベルでもないでしょう。 基礎レベルですしw
799 :
デフォルトの名無しさん :04/12/05 15:38:17
>>797 何がどうなんですか?
他に方法があるんですか?
?
それでいいのだ
なんかひどい流れに・・・
>>782 釣りに思えてきた
何でもかんでもダウンロードするのはいいが
それぞれ単体で自分の技術レベルとあわせて
納得するまで習得するがよろし
いきなりあれもこれもってのはだめだよ
それにEJBとかCommonsとかはJavaの基本が
わかっていて初めて使えるものかと
ところでまずJavaとSQLを理解しているのかね?
>>793 自分で質問した内容ももう忘れたんですね
まぁ、それで解決したんならこちらは全然構いませんが
それともあなたもニセモノですか?
>>796 うーん難しいですなー
とりあえず今のところBではAのArrayListしか扱わない予定ですので
Listを返してみます
どうもでした
>>804 当然wwwwwwwwwwwwwwwww
>>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の
必須コンポーネントについて、いくつか教えて頂ければ幸いです。
>>793 それのどこが正規乱数なんですか?
正規乱数の意味わかってますか?
自分ではJava以前の問題(むしろ問題外)だと思わないんですか?
一度死んだ方がいいんじゃないですか?
あなたのような人間が生きていると日本にとって迷惑ですよ?
ところで、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
初心者なのにいきなり2chとは・・・
>>812 2ちゃん使うときはハッキングされないように気をつけろよ
> ただ自分としては、コーディングよりもソフトウェア設計の習得を > 重視しておりまして、まずオードソックスなシステムを導入して、 > その中で体験的な学習を進めていきたいと考えてます。 J2EEはそういうアプローチで習得するのは少々困難な技術。 回り道に思えても地道に基礎から積み重ねないと。 EclipseのようなIDEも、Struts・Tapestryのようなフレームワークも、 Cactus のようなテストツールも、Maven のようなプロジェクト管理・ビルドツールも Commonsのようなライブラリははじめはいらないし、わかってないのにはじめからいじると なぜそれらを使うのか、それらを使うとどのようなメリットがあるのか、が理解できない。 ちなみに、あなたが挙げたソフトウェア類・バージョンは標準的な環境とは言い難い。 どちらかというと、とっても最先端な環境に類する。 自主的に最新技術を常にキャッチアップし、情報収集を怠らない 熱心で高スキルなプログラマが扱う類のもの。
何故、このスレに来たのかも謎だが・・・
>>812 書き込む時は名前欄に fusianasan って入れないと
ハッキングされるよ?
なるほど。 これで大丈夫なのでしょうか?
>>820 まぁ別に使ってるプロバイダが分かるぐらいだから別に
心配はないが
JavascriptとJava間違えてきたんだろうな
自己解決しました。ジャカータでした。
すいません徹夜明けで寝る前に適当に書いてしまったのですが釣りではないです。 java.util.RandomのnextGaussian()で得られる値は、J2SEのマニュアルだと > 乱数ジェネレータのシーケンスを使って、平均 0.0、標準偏差 1.0 のガウス (「正規」) 分布の double 型の擬似乱数を返します。 ってあるんですけど、平均と標準偏差を自分で指定して、値の分布が0以上100以下になるような正規乱数ってやっぱり自分でコード書かないと無理ですよね。 上の方でMath.random()ってありましたが、テストの点は一様乱数でなくて大体正規分布になりますよ。
>>807 自分は Java 初心者なので僭越だが、自分は J2SE SDK と秀丸エディタで
コツコツ勉強してます。オブジェクト指向言語は初めてだし。
オブジェクト指向を理解しないとソフトウェア設計ができない。
俺の最近のお気に入りはバンプとデリコだね、もう断トツで。 ミスチルやB’zもロックファンとしては外せないでしょ。 しぶいところではサザンなんかもきっちり押さえてますよ。 ロック以外でもいろいろ聴いてるなあ。浜崎とか林檎とか好きだし。 宇多田も倉木も両方好きだし。意外に思われるかもしれないけど、 ドラゴンアッシュとかケツメイシなんかもたま〜に聴いてる。 洋楽はねえ、セリーヌとマライアがメインかな。 でも近頃はオアシスとかも好きになってきた。 あと落ち込んだ時なんかにはレディヘとか聴いたりして・・・ うわ、マニアックだな俺(笑 まあモーニング娘を聴いてるような人とは音楽の話はしたくないね(笑
>>826 それがよろし。
Javaの開発ツールやライブラリやフレームワークは、わかって無くてもとりあえず
何かが作れてしまうほどブラックボックス化されてないからね。
わかっている人が楽をするためにあると言っても過言ではない。
829 :
デフォルトの名無しさん :04/12/05 18:16:42
すいません質問です インスタンス化させるときって普通 Oya oya = new Oya(); だけども 継承関係がある場合は Oya oya = new Ko(); もできると思います。 しかしながらた、これについて これをする事で 何故するのか 何が出来るのか どういうメリットがあるのかがよくわかりません。 ポリモーフィズムなどでググっても 出来るとはあるのですが「何故するのか」ってのが あまり無いので教えてください
Oya oya = new Ko(); 確かにこれ一行だけ取ってみても何がしたいのかよくわからない。 この場合 oya をどう使うのかってことが大事
スミマセン本当に超初心者なのですが・・・ a.javaとb.javaの二つのソースがあり、b.javaではa.java内のクラスを利用している場合なのですが 以下のコンパイル方法ではうまくいきます。 javac a.java b.java ここで疑問におもったのが、さきにa.javaをコンパイルしCLASSPATHに追加し、 javac -classpath "c:\sample\a.class" b.java とおこなってもコンパイルできるのではないかと考えていたのですが 試してみたところエラーとなりました。 これはどうしてエラーとなるのでしょうか? 同じクラスの参照しているのであれば同じ動作だと考えていたのですが。 よろしくお願いします。
>>826 確かにあなたの言うとおりですね。
ただ、あなたはコーダーを目指されておるようですが、自分はSE、
アプリケーションエンジニアを目指しておりまして、やや方向性が
違うように思います。
オブジェクト指向についても、ソフトウェア開発はOOPを実現する為に
あるのではなく、ソフトウェア開発の為の一つの道具としてOOPが
あるのです。手段と目的を混同するのは、やや好ましくないと考えます。
現在の複雑なソフトウェア環境に置いては、ボトムアップよりも
トップダウン式の学習法の方がふさわしいケースもあると考えます。
コーディング学習では、自分だけの世界に入り込んでしまう弊害も
あると聞きます。
わざと偽物だとわかるようにしてるあたりが二流
>>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();
>>835 間違えた。
os = socket.getInputStream();
のところは
os = socket.getOutputStream();
ね
>>832 自分はIT業界の者ではなく、ただ道具としてプログラムを使っているだけです。
ソフトウェア開発者としてはそれなりの経験をお持ちで、言語に Java を使うことに
関して学習されるところとお見受けしました。それならば私なんぞが口出しする幕では
ありません。失礼しました。
>>835 なんでポリモフィズム使わずにif文なんて使ってるんだ?
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はどうだろ…もうそろそろ良いのかな。
>>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()); } }
>>831 「ディレクトリ or jarファイル」の中を探しに行くようになっているので
クラスパスの個々の要素にはクラスファイルは指定できないのです。
>>807 標準的なのはどれでしょうか・・・?ってのは変な質問だ
何を作るかが決まって初めてシステムを決めるものだから
あらかじめ勉強するというのならまずは言語のほかにはJDBCとSwingを理解するのがいいと思う
Commonsの質問は誰も答えられないと思うよ
小さいライブラリ集だから自分が使いたいと思うものをえらんで使うだけ
誰が造っても同じようになるだろうという再開発の手間をなくすのが目的で
スタートしたプロジェクトだからね
まずはCommons使う場合は動レベルのライブラリを自分で作ってみて
なっとくして使うようなものだよ
847 :
デフォルトの名無しさん :04/12/05 22:12:21
>>847 >参照渡し「など」上のサイト「とか」で「こういう」事ができるってのは理解できるのですが
>どういった場面、あるいは何故「これ」を使うのかってのがわかりません
君の聞きたい「こういう事」とか「これ」がどの事を指しているのか分からん。
ちゃんと文章書きなよ
>>849 「など」は無意味に付いてるだけで、「こういう事」も「これ」も「参照渡し」だと想像できそうな気が。
もちろん
>>847 の文章がわかりにくいという点については異論なし。
>>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
>>807 > 重視しておりまして、まずオードソックスなシステムを導入して、
オードソックス!
>>726 どなたかこれについて教えていただけないでしょうか?
>>807 SpringよりSeasar2のほうが簡単で日本語資料も多くてよし。
>>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();
これで子供が自分を継承していることが
前程ならば、もし何らかの理由で親子継承関係が無くなったら
全部書き換える必要があるのでしょうか?
>860 理屈の上では全部書き換えになるけど 普通は既にコードをたんまり書いた後で継承構造をごそっと作り替えるようなことはしない。 継承構造がまずかったら、大概実際にコーディング始める前におかしいと分かるし、 最悪既にコードがわんさとあって変更するとえらいことになるなら、クラスツリーは そのままにしておいて何らかの迂回策を取る。
_____ / ̄ ̄ ̄ ̄\,, /_,, ,,_ \ /_____ ヽ / (@)ヅ=ヾ(@));;;;; \ | ─ 、 ─ 、 ヽ | | / /〆"●⌒ヾ;;;;;\ ヽ | @ | @ |─ |___/ |三(__|___)三、 | |` - c ヾー' ;;;;; 6 l |. | | | ノ::ヾ | | . ヽ ィエエエエ》ヾ,,,-′ | Y ̄Y ̄Y ̄Yノノ | l ヽ ___ /ヽ ヽ と ̄^ ̄^ ̄^"シ / / / |/\/ l ^ヽ \ """""" / / | | | | l━━(t)━━━━┥
>>860 ,861
継承だと親子関係の結びつきが強すぎて構造の変化に弱いので
最近はインタフェースを使う方が推奨されてる。
その例では Oya をインタフェースにして Ko がそれを実装するようにするか
Oya も Ko も IOya みたいな何らかのインタフェースを実装するようにする。
>>863 >継承だと親子関係の結びつきが強すぎて構造の変化に弱いので
>最近はインタフェースを使う方が推奨されてる。
そう言う問題じゃない
使い分け方を知らないのか…
>>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とメモ帳だけでガリガリ コーディングできる奴はおらんのかのぅ。
よく知らないがデフォルトパッケージのクラスは優先度が高いんじゃないか? パッケージ無しStringクラスとかObjectとか作ってハマる話はたまに聞く。 興味があるならJava言語仕様を隅々まで調べてみたら?
>>868 「メモ帳でガリガリコーディングできる奴」ならいくらでも居る
「メモ帳でガリガリコーディングする奴」はただの馬鹿
メモ帳を秀丸に置き換えても同じだ>そこの秀丸バカ
>>866 FileWriter(filename, true);
>>864 ,865
継承はデザインパターン関係で使う程度で
普通はインタフェースを使うようにするのが最近の流れなのを知らんのか?
まあこれはフレームワークなどを「作る側」の話であって
コーダに過ぎないフレームワークを「使う側」から見れば継承はよく使うんだろうがな。
>>867 はっきり最後まで書いたものはそっちが優先される。
>>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 「使い分け」って意味を知らないと見えるね。
>>875 お前みたいな奴久しぶりに見たよ。
次のどっちか選ぶこと。
・入門本を最初から最後までちゃんと読んで基本を勉強しなさい
・宿題スレに行きなさい
>>872 それは昔、インターフェースを使うべきところで継承を使っていたケースがあっただけで
継承の重要性が低くなっているわけでは全く無い。
フレームワークを作る側だろうが使う側だろうが同じこと。
>まあこれはフレームワークなどを「作る側」の話であって
「作る側」に限定した話を一般化するのか?
お前、プロジェクト毎にフレームワーク作ってそうだな
>>876 継承より集約が推奨されるという流れなのは事実。
集約オブジェクトが公開する仕様はインタフェースとして公開すべし、
プログラムを書く側はインタフェースに対して書くべし、っていう流れなのも事実。
具体的に反論できないなら何も言わない方がいいよ。
>>877 >「使い分け」って意味を知らないと見えるね。
フレームワークを作る側と使う側で違うわなって書いてるのに??
881 :
デフォルトの名無しさん :04/12/06 01:40:37
>>878 すみません。宿題スレのほうに行きます。
>>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(); } } }
>>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();
}
}
}
コンパイルしてないからこれでいいのかは知らん
>>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();
にしても許してやる。
889 :
デフォルトの名無しさん :04/12/06 02:27:29
>>880 > 継承より集約が推奨されるという流れなのは事実。
> 集約オブジェクトが公開する仕様はインタフェースとして公開すべし、
> プログラムを書く側はインタフェースに対して書くべし、っていう流れなのも事実。
へたれモデラーの論理ですね。
何でもかんでも継承の次は何でもかんでもインタフェースですか。
890 :
デフォルトの名無しさん :04/12/06 02:34:31
>>887 その場合ですと、
BufferedWriter や FileOutputStream が明示的にcloseされないように思うのですが
特に問題ないのでしょうか?
(FileOutputStreamをcloseしないとファイルが閉じられないわけではない?)
>>890 ストリームのclose()はそれがラップしている下位ストリームをclose()するから
一番外側(一番上)のストリームをclose()するだけでいい。
887は更にPrintWriterで囲む方が良いかもしれない。
PrintWriter pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filename), "Windows-31J")));
893 :
884 :04/12/06 02:52:49
>>891 > ストリームのclose()はそれがラップしている下位ストリームをclose()する
そうだったんですか。web上のサンプルコード見てると
全部closeしてるものが結構あったりしたので…
ありがとうございました。
変なことだろうとは思うんですが・・・ テキストファイルにMath.random() * 101が書き込まれてて それをString型として読み込んで、 実行クラスでMath.random() * 101を動作させるってことは可能ですか? やるとしたらどうやったらいいですか?
>>895 可能
//それをString型として読み込んで、
BufferedReader br = new BufferedReader(new FileReader(ファイル));
String line = br.readLine();
br.close();
//実行クラスでMath.random() * 101を動作させる
Math.random() * 101;
>>895 間違ってもそのプログラム使って、
「テストの結果がしゅみレーション結果と違う!お前らカンニングしただろ!」とか叫ぶなよw
901 :
デフォルトの名無しさん :04/12/06 03:32:40
ふと疑問に思ったので質問させてください。
>>887 で、new FileOutputStream()やnew OutputStreamWriter()で例外が発生した場合、
bwはどうなるのでしょう?
bw.close()が呼ばれても大丈夫?
どういう順番に処理が行われるのでしょう?
904 :
デフォルトの名無しさん :04/12/06 04:52:01
EclipseなどIDEを使わずに エディタとJDKだけでソースをデバッグする方法って System.out.println() アサート 以外に何があるのでしょうか?
>>901 > で、new FileOutputStream()やnew OutputStreamWriter()で例外が発生した場合、
> bwはどうなるのでしょう?
インスタンスが生成されないから、なんの参照値も代入されずにnullのまま。
改行みすった... orz
910 :
デフォルトの名無しさん :04/12/06 12:14:22
わかんないよ〜 if(topfname.equals(fname)) これのnotバージョンてある? !入れるやつとか・・記述の仕方がよくわかんないな〜
if(!topfname.equals(fname))
booleanなら可読性をあげるために == false という手もある
>>910 自分で独自にメソッドを実装しろよ。
if(topfname.notEquals(fname))
915 :
デフォルトの名無しさん :04/12/06 13:59:47
JNIについて質問させていただきます。 JNIを用いて、Lispのネイティブコードを利用することは可能でしょうか?
916 :
デフォルトの名無しさん :04/12/06 14:01:40
勿論、可能です。
>>895 いや、なかなか面白いですね。
トリッキーなアプリで、たまに似た様な事をするケースがありますね。
可能です。やり方はあります。
その後の回答者は、あなたの質問を理解できなかったようですね。
ま、2ちゃんですしw
おつかれさん
919 :
デフォルトの名無しさん :04/12/06 15:56:22
インターフェースでそれを実装すれば絶対にその中にある メソッドを記述(オーバーライド)しなければいけないから 一種の約束手形の役割になるって聞いたのですが、 それについては分かるのですが、 それ以外の用途でインターフェースについて便利な使い道ってあるのでしょうか?
その質問はJava三大FAQのうちの一つです
A. これもうんざり。あきた。標準 API で実践してからもっかいこい。
interfaceの秘密を知りたければ、
そなたには結城浩のJava言語で学ぶデザインパターン入門(
http://www.hyuki.com/dp/ )
を読むことをお勧めする。
オブジェクト指向を極めたいものにとっては超初心者向けでわかりやすいぞ。
A-2. まあ、実際設計できるようになってからもう一回来てください。コーダーにはinterfaceの存在意義なんて一生わからんから。
>>921 全然回答になってないじゃん
FAQでこれを読めって…
インターフェースの意義に対する質問なんてくだらないかもしれないが
ちゃんと回答が書いていたらくだらない質問する人間も減るんじゃないのか?
ちょっと前のレスの継承とインターフェースについても
専門の本を読めば載ってる訳だし
つーか、 >絶対にその中にあるメソッドを記述(オーバーライド)しなければいけない これ以上の役割って919は何を求めているの?
つーか、 >絶対にその中にあるメソッドを記述(オーバーライド)しなければいけない これ以上の役割って919は何を求めているの?
ある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となって欲しいのです。
ある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となって欲しいのです。
ヒー 連書きすみません
928 :
デフォルトの名無しさん :04/12/06 17:16:40
>>923 過去レスを読んでると
インターフェースでこういう使い方以外の用途に使ってそうな感じだったから
なんでみんなインターフェース、インターフェースというのかが分からなかったから
もしかして実際の開発ではもっと重要な使い方があると思ったから
>>928 FAQを書き直しておいたからそっちを見てくれ。
931 :
デフォルトの名無しさん :04/12/06 17:34:36
継承について 自分がどのクラスに継承されてるのかってスーパークラスが 知る方法(画面出力とか)とかありますでしょうか?
>>931 ない。
自前のClassLoader使ってて、読み込んだ全てのクラスが取れるなら
全てのクラスの中に対して Class#isAssignableFrom(Class) とか使えばわかるかも。
でもブートストラップクラスローダに読み込まれたクラスに関しては無理だから完全じゃないけど。
933 :
デフォルトの名無しさん :04/12/06 18:33:51
String a="あ"; String[] b={"い","う",}; 上のような,二つの値を返すということはできるでしょうか? 返せるとしたら、戻り値の型及びreturnの記述方法を教えてくださいまし。
>>933 return new Object[]{ a, b };
>>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()」を渡すしかないのでしょうか?
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は、配列と文字列なので
違うとは思うのですが、何かまずいのでしょうか?
>>938 return new Object[str,neko];
↓
return new Object[]{str, neko};
>>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]);
これで取得できるのでしょうか?
やって見たんですが・・やはりエラー・・
>>942 面白いギャグだな。
Object[] objs = myc.hoge(a[0]);
xxx = (String)objs[0];
aaa = (String[])objs[1];
としろ。
少々相談に乗ってください。 Windowsのあるサービスを起動したり、止めたりするプログラムを作ってるんですが、 サービスが起動(停止)する、あるいはタイムアウトしたら、次の処理へとしたいんです。 この場合、サービス起動(停止)用のスレッドと、タイムアウトをカウントするスレッドの 二つを用意して、お互いに監視させてって考えたんですが、 もっとスマートな方法はないでしょうか? タイムアウトは10秒としています。 java Threadとかで検索してみたんですが、なかなか参考になるサイトがなかったので、お願いします。
すいません、少々相談に乗ってください。 Windowsのとあるサービスを起動したり、停止したりさせるプログラムを作っています。 起動停止にはexecに"net start"コマンドを入れているんですが、 このサービスの起動(停止)後、もしくはタイムアウトしたら、次の処理へとしたいんです。 この場合、サービス起動(停止)用のスレッドと、タイムアウトを検知するスレッドの二つが必要ですか? 他にスマートな方法があったら教えてください。 ちなみにタイムアウトは、起動(停止)に10秒かかったら、としています。 java thread とか タイムアウトとかで検索してみたんですが、参考になるものが見つからなかったので、 お願いします。
2重投稿してしまいました。 スイマセンm(_ _)m
>>944 ノシ java.util.Timer & java.util.TimerTask
java.util.Timerの↓二つ使えば何とかなる。
void schedule(TimerTask task, Date time)
指定した時間に指定したタスクが実行されるようスケジュールします。
void schedule(TimerTask task, long delay)
指定した遅延のあとに、指定したタスクが実行されるようスケジュールします。
すいません、少々相談に乗ってください。 Windowsのとあるサービスを起動したり、停止したりさせるプログラムを作っています。 起動停止にはexecに"net start"コマンドを入れているんですが、 このサービスの起動(停止)後、もしくはタイムアウトしたら、次の処理へとしたいんです。 この場合、サービス起動(停止)用のスレッドと、タイムアウトを検知するスレッドの二つが必要ですか? 他にスマートな方法があったら教えてください。 ちなみにタイムアウトは、起動(停止)に10秒かかったら、としています。 java thread とか タイムアウトとかで検索してみたんですが、参考になるものが見つからなかったので、 お願いします。
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する事で何が実現出来るのでしょうか?
>>951 新しいインスタンスを生成して実引数として渡しているだけ。
>>952 つまり
add(new ThreadableButton())
は
ThreadableButton a = new ThreadableButton()
add(a);
これと全く同じと考えていいのでしょうか?
954 :
デフォルトの名無しさん :04/12/06 22:18:26
if(!rs.next){ とれてる場合; }else{ とれない場合; } これじゃだめかな 初心者のおいらが携帯からカキコ
まちがった 逆だった…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メソッドの戻り値で判断すればいいのですね・・
試して見ます
>>953 新しい変数を宣言してるのに「全く同じ」なわけがない。
重箱
だったら「全く同じ」ものなんてこの世に存在しません。
>>906 >ふと疑問に思ったので質問させてください。
>
>>887 >で、new FileOutputStream()やnew OutputStreamWriter()で例外が発生した場合、
>bwはどうなるのでしょう?
>>906 みたいなバカに騙されるなよ。
コンストラクタで例外が発生した場合は、「bwに何かが代入される前」に
例外処理ブロックに飛ぶ。bwには「未初期化」の状態のまま。nullなど入っていない。
>>887 のコードで「bw.close()にたどり着く」ということは「コンストラクタが例外を発せずに実行された」ということ。bwは絶対にnullにならない。
964 :
デフォルトの名無しさん :04/12/07 01:01:42
質問です〜 下のように文字列がある場合 「あいうえおかきくけあああいうえこあ」 あの個数を数えるサンプルプログラムを教えてください。。 この場合結果は、5個になる。
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って呼ぶ必要はないのでしょうか。
>>966 呼ばないといけないけど、呼べない。呼ぶ手段が無い。それはデメリット。
ただし、そこまで気にしないといけない場面(※)がどれだけあるかというと、ほとんどない。
※new FileOutputStream()が成功して、上位のnew OutputStreamWriter(), new BufferedWriter(), new PrintWriter()のどこかで例外が起こる場面。
99.9%以上、「new FileOutputStream()の時点で失敗する」か、「すべて成功するか」のどちらかだろう。
968 :
デフォルトの名無しさん :04/12/07 01:17:32
教えてください。 Java等はおもいっきり初心者なのですが、今1つの問題をかかえています。 ホームページビルダーを使って、パスワード付きリンクを作りました。 このホームページはフレームページで、フレームの左側にリンクを作りました。 しかし、フレームの右側に、BBSなどの自分が作ったページ以外のものが表示されている状態だと、スクリプトエラーが発生してしまいます。 なにが悪いのかすらわかりません。 どうすれば外部のリンク先を表示したままパスワード入力ができるようになるのでしょうか?教えてください。
>>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);
}
またJavascriptの質問が・・・(´・ω・`)
首(ry ↓ 首から下を省略 ↓ 首から下がない ↓ 首切っ
>>967 そういう例外的な状況を「確実に」処理するための仕組みが
try-catch-finallyの例外機構だと思ってる俺は間違ってますか?
問題発生率がいくら無視できるほど小さいからといっても
いろいろな場所で積み重なれば無視できないほど大きくなるわけですが。
>>975 間違ってる。
「そういう例外的な状況」を確実に処理できて、且つ、
>>970 以上にまともな方法を考えてみれ。
>>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見れば一発でした・・・
プログラムと全く関係ない話で恐縮ですが、他に適切なスレが見つかりませんでした。
2ch用のMSPゴシックをインストールした辺りからJAVAアプレットの表示が
おかしくなりました。
ttp://www.imgup.org/file/iup2440.png 上図のように日本語表記が出来なくなりました。
設定をいじろうにも日本語が読めないのでどうすることも出来ません。
システムの復元をしても駄目でした。
日本語を表示する方法があれば教えて頂けると幸いです。
OS:WindowsXP HomeEdition SP2 Build 2600
JAVA Plug-in 1.4.2_06
try { while (true) { byte b = in.readByte(); sha.update(b); md5.update(b); } } catch (EOFException ignore) { } こういう書き方どう思います? 結城浩氏のサンプルコードみたいなんだけど。
2ch用のMSPゴシックってなんだろう?
>>981 じゃあMSPゴシックをアンインストールすれば?
>>982 printStackTrace()しる!
986 :
デフォルトの名無しさん :04/12/07 14:52:36
例外にはあくまで例外的な事象を表現させたい
987 :
デフォルトの名無しさん :04/12/07 14:53:49
JavaからRealPlayerを操作することってできないでしょうか。 曲の再生が終わったかを判定したいんですが。
>>987 C/C++からRealPlayerが操作できるなら、JNI経由でJavaからも操作できるだろ。
メソッドの命名規則の質問なんですがpublic void setHoge()という メソッドを定義するとして、実際にHogeをsetする内部処理を 行う部分をprivateな別のメソッドとして定義して、setHogeの中で 呼び出したいんですが、こういうメソッドはどういう風に命名すべきでしょうか?
991 :
デフォルトの名無しさん :04/12/07 16:34:08
>>982 前後が読めないがDataInputインターフェース使ってるのかな
それならEOFかどうかの判断には例外しかないのでそれであってる
>>990 setHogeInternal() とか setHogeImpl() とか使うね。
>>993 どうもです
implてimplantですよね
いえ、implementation。 内部処理というよりは、公開されたインタフェースの実装、という意味合いの方が強い時は こちらを使っています。
996 :
初心者 :04/12/07 19:39:48
あるアプリケーションドメインを対象に現実世界をモデル化するクラスの集合を作成しなさい の意味がいまいち分かりません・・・ 具体例など挙げてもらえると非常に嬉しい・・・
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
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。