【初心者】Java質問・相談スレッド94【大歓迎】
過去ログ、関連スレッド、よくある質問とその回答、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/ これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。
よくある質問
・「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
http://www.wikiroom.com/java/?path,classpath ・String に == は使うな。equals を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
前スレッド
【初心者】Java質問・相談スレッド93【大歓迎】
http://pc8.2ch.net/test/read.cgi/tech/1149349035/ /* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作板をご利用ください。
http://pc5.2ch.net/hp/ 次スレは
>>980 あたりで。
ずるしてらくしてかれいに2げっとかしらかしら〜
3 :
1 :2006/11/21(火) 06:14:35
前スレ994です。if文についての回答ありがとうございました!
5 :
デフォルトの名無しさん :2006/11/21(火) 15:30:48
taglibで、チェックボックスとかラジオボタンのnameとかvalue属性以外の属性をセットするのってどうやるん? 例えばid属性とか(´・ω・`)
あ、こっちはpurejavaか・・・ スレ違いスマソ(´・ω・`)
7 :
デフォルトの名無しさん :2006/11/21(火) 15:35:02
Server VM とやらを使ってみようと思って -server をつけてみたら, Error: no `server' JVM at ...... と表示された. Server VM というのは別にインストールする必要があるんでしょうか?
普通は別にインストールする必要は無い。 sunのvmの場合は、ドキュメントを見る限りどちらも同じvmだが、初期パラメータが違うだけっぽい。 特殊なアーキテクチャ・vmなら、そいつはなにか追加インストールが必要かもしらんが sunのvm + windows なら不要。
>>7 そのエラーメッセージの後に表示されたファイルを探して、
それがもしないのなら、java -serverで呼び出しているjavaの実行環境にはserver VMはない。
もし、JDKをインストールしているなら、
JDKをインストールしているディレクトリ下にjre/bin/serverというディレクトリがあることを確認して、
JDKインストールディレクトリの下のbinディレクトリにあるjava実行ファイルを直接フルパスで指定して、
-serverオプションをつけて実行してみて。
10 :
8 :2006/11/21(火) 15:50:21
>>7 すまん。 今書いた内容に嘘が混じっていた。 心から恥じる。
server/clientは別のvmを使っている。
win版なら、jre/bin/{server|client} に別々のjvm.dllが入っている。
かと言って別にインストールする必要は無いが。
bin/javaでもjre/bin/javaでもどちらでもいけるかも
パスの設定次第だけど、JDKをインストールしたときにJREもインストールすると、 Windowsの場合、JDKインストールディレクトリの下のbinへのパスよりも、 Windowsのシステムディレクトリやその下のsystem32へのパスが優先されていると、 そちらにあるjavaが使うJREはclient VMしかインストールしないので-serverが利かないみたい。 JDKの方にあるJREにはserverとclientの両方がインストールされているので、 直接そちらのjavaを指定して使うか、パスの順番を変更するか、どちらかで対応。
13 :
7 :2006/11/21(火) 18:21:20
>>8-12 アドバイスありがとうございます
環境はSunVM+Winでした
>>12 パスの順番を変更したら解決しました
ありがとうございます
hibernateとかibatisみたいなORマッピングツールでやってるみたいに、 プログラムからJavaのソースを作りたいんですけど、 何か上手い方法とかあるでしょうか? 普通にFileWriterとかでせこせこ書いてるのかな?
15 :
デフォルトの名無しさん :2006/11/21(火) 23:16:33
すみません。現在JAVAでパチスロのオリジナルアプリを作っているのですが 1つの絵柄が高さ100ピクセル幅150ピクセルでそれが縦に21個連なったリールを回っているように見せるために 画像をスライドする方法を探しています。 画像を上から下へと一定のスピードでスライドさせるにはどうすればいいのでしょうか?
えっと 又基本的なこと質問させてください ここで学んでいるのはジャヴァアプリーケーションとのことですが 実際のアプリ(業務ソフトウェアなど)を作る場合Windowsの部品を(コマンドボタンなど) つかうと思うんですが、皆さんはどういう(ソフト?)風に作っているのですか? よくわからないのですがエクリプス?に、そういう部品をつくる環境があり それで作るのでしょうか? (vbなんかはvbのソフトで作りますよね) なんか外れた質問とは思いますが for文 do文などわかりますがそういう根本的なことがわかりません 御先輩方よろしくお願いいたします
18 :
ぴゅあ :2006/11/22(水) 00:06:40
>>15 デバッグの手法とかは習ってなかったりするんだろうけど
身に付けた方がいいと思いますよ
闇雲にコードいじりまくっても、なかなか思い通りにならないし
まぐれでできてしまっただけになったりです
>今のままでは動かないようです。
その原因が何処にあるかを探し出すこと
>変数aを使用したいのですが
と言っているところから変数aがうまく扱えていないと考えているんだろうと思いますが
(扱い自身と思っているのか、変数a絡みの何かだろう程度なのかとかは読み取れませんが)
変数aが期待通りになっているかどうかからまず調べることですし
その前に「コードは書いた 動きません」ではなくて
何処がどうなって欲しいのに、どうなってしまってうまく行かないと思っているのか
何処がおかしいと思っているのか等、
質問するなら頭の中にあることをもっと明確に示して欲しいところですけど
それ以前にこのコードでコンパイル通りますか?
>>17 Eclipse + VEでやってる。
ただ、JavaのGUIアプリ開発はAWTとSwingを理解してないと辛い。
VBみたいなポトペタを期待してたらがっかりするだろう。
それでも、Web一辺倒だった同僚が「Eclipse + VEでヴィジュアルプログラミング〜」
みたいなタイトルの本で勉強して、それなりにGUIアプリのコードさわれるようになったので、
やればなんとかなるだろう。
20 :
ぴゅあ :2006/11/22(水) 00:13:03
>>17 あちしの場合はEclipse上で
JFrame等諸々を組み合わせたコードをそのまま書いてますが
(いちおそれで十分と思ってコード書いているので)
ちゃんと見てないのでよく判らないですけど
VE(Visual Editor)とかいうプラグインとかが
そのVBの…とか言っているのに相当したりするのかなぁ?
と思っていたりしますけど
使い勝手とかは判らないけど、"Eclipse VE"とかでググれば
色々情報がある筈ですよ
直接コードを書くつもりなら
取り敢えず"JFrame"とかでググッておけばいいと思うけど
>>15 は宿題スレにも同じソースで丸投げされているな・・・同じ大学か^^;
22 :
デフォルトの名無しさん :2006/11/22(水) 00:24:01
ユーザID単位でsynchronizedでロックするために、 シングルトンのmapにユーザID詰め込んで、 それをgetしてsynchronized(map.get(key))みたいにしたら きちんとユーザID単位でロックされますでしょうか? それともmap.get(key)ではインスタンスのコピーがgetされるだけで ロックには使えないのでしょうか?
>>19 >>20 ご丁寧にありがとうございます
VEですかふむふむ
前スレのお勧めで独習ジャヴァ買ったんですけど
初めてのジャヴァと書いてる内容が似てて隊靴で・・・
JFrame初耳ですググッテみます^^b
>>18 ざっと見たが、絶対に通らないとおもうぞ。
12行目でTurnOverを渡しているが、受け取り元がMyMouseAdapterだからな・・・
26 :
ぴゅあ :2006/11/22(水) 00:38:33
>>23 >初めてのジャヴァと書いてる内容が似てて隊靴で・・・
更に先に進んでも"独習ジャヴァ"と共にたまには読み直してやってください(何度も)
前に読んでよく解らなかったことも何時の間にか解ってることに気付いたりとか
新たな理解もあったりする筈です
>>24 でしょ
24 ども独習もうちっとよんでそっち健闘します でわ^^ノシ Zzzz
>>27 VBみたいな感覚でGUIアプリケーションを作りたいなら,
Eclipse+VE よりも NetBeans がお勧め。
http://ja.netbeans.org/downloads/55/index.html 動作はちょっと重めだけど,VBみたいに,マウスでコンポーネントを貼り付けて,
それをダブルクリックしてイベントハンドラを書いたり,といったことができるよ。
Hello, World みたいなコンソールアプリケーションとは違って,
派手な GUI アプリが簡単に作れるから,勉強のモチベーションも湧きやすいと思う。
ただし,ちゃんとしたアプリケーションを作るには,
結局 JFrame など Swing の仕組みをきちんと理解してないといけないから,
Swing の仕組みはしっかり勉強した方がいいよ。
そのためにはクラスとかインターフェースとか継承とかはきちんと理解しとくべき。
独習Javaをしっかり読んで,基礎の理解をしっかりとやりつつ,
GUIプログラミングも楽しんでください。
29 :
デフォルトの名無しさん :2006/11/22(水) 08:06:11
アダプターを継承してリスナークラスを使う仕様でプログラムを作っていますが
リスナークラスの使い方がどうもよく分かりません。
2つのアダプターを使いたいのですが、例えば
Aのアダプターを継承したクラスの関数の呼び出しをトリガーとして
Bのアダプターを継承したクラスの関数を呼び出すなど、どう書いたらいいのでしょうか?
以下のプログラムだとmainが2つあるのでコンパイラが通りません。
しかしBのmainを変えたとしてコンパイラが通っても、B内では
Aの関数呼び出し時に値を変更しトリガーとして設定する変数main.varAなんかを
使うことはできませんよねorz
このアダプターを継承している2つのクラス間で変数をやり取りするには
どう改変したらいいのでしょうか?
http://www.za.ztv.ne.jp/yosi-h/
>>29 Adapter 使わずに Listener 使えば?
Adapter って匿名クラス作る時とかに、
空のメソッド作る手間省くためにあるだけだし。
92の方にも書いてしまったのですがこちらが現行スレの様なのでお願いします。 GUIを使って電卓のようなものを作りたいと思っています。 Label test = new Label(); int key = 0; 0を押した時。 if(key!=0) key=(key*10)+1; else key=1; test.setText(Integer.toString(key)); 1を押した時。 if(key!=0) key=(key*10)+1; else key=1; test.setText(Integer.toString(key)); クリアを押した時。 if(key!=0) if(key>=10) key=key-(key%10); else key=0; test.setText(Integer.toString(key)); と作ってみたのですが1を押したら11、2を押したら22、 クリアを押したら0が入力されるようになってしまいました。 1を入力したら1、key=1の時に2を入力したら12の様にするように作りたいです。 どこの部分が間違えているでしょうか? よろしければご教授ください。
32 :
30 :2006/11/22(水) 08:16:56
>>30 う、後出しになってしまって申し訳ありません。
学校の宿題の一部として考えているのですが、
アダプタの継承が必須なためそこを変えることができません。
日 本 語 で お k
>>32 宿題は宿題スレへ。
ってか、
>>29 じゃ何を困ってるのか良く分からんぞ。
35 :
30 :2006/11/22(水) 08:26:59
>>34 だと思ったのですが宿題というだけで
困っていて聞きたいのが一部分だったのでここかと思いました…
分からないのはアダプターを継承したクラス間での変数操作の実装になります。
説明が下手だったら申し訳ないorz
36 :
ぴゅあ :2006/11/22(水) 08:39:29
>>29 >>15 のようであるけど、端折りすぎてよく解らんものになってしまってるし
>>29 で聞いているのも複数のことが混じってて考えがよくまとまってないような気もします
>トリガー
>mainが2つある
>変数をやり取り
>mainが2つある
と言っているのはよく解らないけど
>変数をやり取り
は、そのよく解らないコードで解決できていないんでしょうか?
>トリガー
と言っているところから推測すると
>変数main.varAなんかを
が変更されたとき
>Aのアダプターを継承したクラスの関数の呼び出しをトリガーとして
がイベントとして
>Bのアダプターを継承したクラスの関数を呼び出すなど
がリスナとして応答する作りが必要になるんではないだろうかと
思えたりしますけど
A,Bにそういう実装(イベント/リスナの仕組みそのもの)が必要
ということではないのかな?
37 :
30 :2006/11/22(水) 08:53:48
>>36 お付き合いいただきありがとうございます。
今UPしたプログラムですと「メインクラス main;」が2つあるためコンパイルエラーになります。
こう書けば同じmain.varAを操作できるのではと思いましたがやっぱりだめでした。
片方をmainでなく違ったものにすればコンパイルは通りますが、
オリジナルアダプタークラスAで使えるmain.varAは
オリジナルアダプタークラスBではやはり使えず困っています。
イベントはマウス操作やキーボード操作で、
例えばオリジナルアダプタークラスAの関数にはmouseClicked()があって
マウスがクリックされるとそれをトリガーとしてキーボードが入力可能状態になる。
再びクリックされるとキーボードの入力ができなくなる。
というのを2つの派生クラスで行いたいのですが、
トリガーとなる変数の受け渡しができずに困っている状態です。
UPしたプログラムのように、単にif(main.varA ==1) のように使用できたら・・・と思います。
現実はオリジナルアダプタークラスAでインスタンスmainを宣言しているため
main.varAはオリジナルアダプタークラスBでは使用できません。
38 :
ぴゅあ :2006/11/22(水) 09:26:41
>>37 >今UPしたプログラムですと「メインクラス main;」が2つあるためコンパイルエラーになります。
あぁそういうことか
"「メインクラス main;」が2つある"という理解は変じゃないかと思うけど
まず
>>29 に書いたようなものの通りにコードを書いてあるんであればコンパイルは通るんじゃんないでしょうか
またトリガという言葉を使われていますが
>マウスがクリックされるとそれをトリガーとしてキーボードが入力可能状態になる。
・オリジナルアダプタークラスAでは状態(main.varA)を変更しているだけ
・オリジナルアダプタークラスBでは状態(main.varA)を見て動作を変えるだけ
トリガという言葉は不適切なような気もします
言われている範囲だけならmain.varAについての同期(synchronized)はなくても大丈夫かな
>>31 0を押した時。と1を押した時。が全く同じ文面だが1を押した時。に関しては別に問題ないと思う
クリアを押した時。はそれだと 123→クリアを押す→120 になるけど
やりたいことは 123→クリア→12 って事?
それなら123を10で割る(小数点切捨て)だけでいいが…
> 1を押したら11、2を押したら22、
レスの部分だけでは発生しないので予想としては
key=0の時、1を押す→(どこかでkey=1にしてしまう)→更に『1を押した時。』を実行(既にkey=1なので11になる)
とか
40 :
ぴゅあ :2006/11/22(水) 11:23:54
>>31 >1を押したら11、2を押したら22
に関しては挙げられたところに問題があるんではなくて
それらのコードを実装しているところに問題があるんではないでしょうか
それらの処理が"1"とかを押したときのイベントで2回呼び出される実装になってしまっている
ということのようにも思えます
(つまり挙げるならその部分のコードが必要ということ)
些細なことですけど(なので組み方はどっちでもいい)
また学んでいる段階として、以下はまだ考える必要はないのかも知れないですけど
それらのコードに至るまでのところって、押されたキーに対してそのまま文字"1","2"が来てるだろうと思うのですけど
そのままStringとして処理したのでもいいんじゃないかと
>GUIを使って電卓のようなものを
ということなので、"+"とか"-"とかに対して計算を行う際にIntegerなりにして演算してやるとか
コードもスッキリするかも
また"if(key!=0)"は要らないんじゃないかと
示されたコードの+1とか+2とかやっているところは変数に入れて渡すという手がありますよね
(「0を押した時」「1を押した時」とか個別にコードを書く必要がなくなる)
>クリアを押した時。
の動きは
>>39 に指摘もあるけど
電卓の"→"キーみたいなもののつもりなんでしょうか
クリアと言っているところから"AC","CE"キーのつもりかな?とも
思えたりしますけど
("if(key!=0)"としているところが、また解り難くしているのか?)
41 :
31 :2006/11/22(水) 11:51:06
携帯からレスで失礼します。
先に結果から言うとインスタンス変数とパラメータが両方ともint keyになっていた
為に発生していた模様です。
thisを使い使い分けるか変数名を変えるということで変数名を変えたら解決しまし
た。
>>39 0と1が同じなのは打ち間違いでした。
クリアについては非常に参考になりましたありがとうございます。
>>40 最近よくレスをいただいています。
ありがとうございます。
Stringでの処理とは受け取った引数をそのまま表示ということですか?
if(key!=0)は不必要だと気づきましたのでクリアに関しては削除しました。
その後のイベント処理はpublic void setKey(int param) というメソッドを作り、
押されたボタンを判断して変数で処理するようにいたしました。
現状では未だオブジェクト指向指向としてプログラムを書けないので今後もお世話に
なると思います。
そのときはまたよろしくお願いします。
42 :
ぴゅあ :2006/11/22(水) 12:15:06
>>41 >Stringでの処理とは受け取った引数をそのまま表示ということですか?
int keyに代わるStringの変数で末尾に引数で受け取った文字を連結する
ということです
>public void setKey(int param)
を呼ぶ前に押されたキー(たぶんcharの文字とか)からint(0〜9の値)に変換して渡し
>test.setText(Integer.toString(key));
でまたStringに戻すようにことになっていません?
int keyに代わる(たぶんフィールドな)変数をStringBufferとかで用意しておき
"1"とか"2"とか押されたときは単に末尾に連結
(押されたキー(文字)の並びにさえなっていればいい筈ですから
またそのためにintにして演算する(更に文字列に変換する)必要はないかと)
クリアは文字列を空にする…この場合は"0"を表示したいのでしょうから文字列"0"を入れる
(あぁそうか この"0"のときに"1"とかが押されたときのためにif文は必要になるか。。。)
"+"とかで計算が発生するときだけintなりにして演算すればいいですよね?
>>31 のコードでは"if(key!=0)"不要です
keyが0の場合のkey=1;はkey=(key*10)+1;でも同じことになるでしょ?
いちおまだこの辺はオブジェクト指向とか関係ないところになるでしょう
43 :
ぴゅあ :2006/11/22(水) 12:18:13
イメージが掴めるまでは無理にStringとして扱わないで 今のままでもいいと思いますよ
JAVAを独学で初めて二ヵ月になるんですが メソッドの意味がいまだにわかりません 誰か低脳な俺にもわかるように説明してください
45 :
デフォルトの名無しさん :2006/11/22(水) 14:38:13
"Javaで言うメソッドとは、C言語で言う関数のこと。"
46 :
デフォルトの名無しさん :2006/11/22(水) 14:42:27
*.classファイルの読み方を学ぶにはどこを見ればいいでしょうか? オブジェクトファイル形式とバイトコードの読み方が知りたいです。
47 :
8 :2006/11/22(水) 14:48:47
>>46 >オブジェクトファイル形式とバイトコードの読み方
ってのが何を指しているのかよくわからんが、逆アセなら javap で可能。
ニーモックの意味はsunのどっかにVM仕様ドキュメントがあったような。
そんな小難しい命令体系ではないので、少しアセンブラ知ってればなんとなく分かる。
48 :
ぴゅあ :2006/11/22(水) 15:44:03
>>45 さすがっ!
そのレスの仕方は思い浮かばなくなってしまってました。。。
>>44 ざっくり言えば、
コンピュータに何かをやらせたい時に呼ぶのがメソッド。
どうやらせたいか、その方法(method)を書いてあるのでメソッドという。
52 :
デフォルトの名無しさん :2006/11/22(水) 17:34:21
BigDecimal使うと誤差がなくなると言われたんですけど どういう意味ですか? BCDがとうこう〜とも言われたような気がします。
すんません質問させてください Appletの中で、値をメソッドにあてるときに A.B(); という形で間にピリオドを入れますが これって値が二つのときは使えますか?
意味不明
57 :
デフォルトの名無しさん :2006/11/22(水) 23:01:26
LinkedListみたいのを自分で作りたいんですが, index番目にobjを追加するメソッドを作るにはどう すれば良いんでしょうか? 自力で調べたいんですが調べてもでてこなくて・・ できれば調べ方などを教えていただけると助かります。 よろしくお願いします。
LinkedListのソース見ろよ、タコ
連結リスト 線形リスト 単方向リスト
線形リストを自分で実装する、てのはデータ構造入門の代表的な 例題だからいくらでもあると思うが。 実装によっては再帰の学習にもなる。
63 :
デフォルトの名無しさん :2006/11/23(木) 02:34:47
配列の文字列を変数として使うことは可能でしょうか? Data dt = new Data(a,b,c); とあったとして、dtをdt_Aray[0]内の文字列に変更したいです。
String[] dt_Aray Data dt = new Data(a, b, c) という前提で dt = dt_aray[0]としたいと言うことなら、無理。 インスタンスを代入できるのは、インスタンスの属するクラスか、 そのクラスの先祖クラスの変数に対してのみ。(あとインターフェイス) DataでなくObject dtなら可能。
65 :
ぴゅあ :2006/11/23(木) 03:38:17
>>63 いや… それらの文章がどう説明間違いしているのか
色々受け取れて推測し難いんですよね。。。
前者と後者で全然別のことを言っているようにも受け取れるし
もうちょっと考えて
詳しく書き直してみて欲しいです
>>64 dt = dt_aray[0]としたいと思ってました。
Data dt_aray[0] = なとどしてみましたがやっぱり無理でした。
>>65 言葉足らずですいませんm(_ _)m
現在、テキストファイルの中に
name1,num1,num2,num3
name2,num1,num2,num3
・
・
name3,num1,num2,num3
を形としたデータが入ってまして、dt_Aray[n][4] の中にsplitで分けて入れています。
Data dt = new Data(a,b,c) をn回行い、かつname を Data dt = new Data(a,b,c); のdt 部分
と置き換えて使用できればないいなと、考えています。
64さんの仰った通り無理ということでしたら、
回避策として何かありましたら教えてもらえないでしょうか。
67 :
デフォルトの名無しさん :2006/11/23(木) 04:48:43
Javaに詳しい人いる? これ、どういうエラーよ? すげえ急いでるからダッシュで教えてくれ! マジで大至急!(;´Д`)困ってる エラー内容: java.lang.UnsatisfiedLinkError : AMD64のプラットホームで、IA32bitのdllを読み込む事はできません。 at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1751) at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1676) at java.lang.Runtime.loadLibrary0(Runtime.java:823) at java.lang.System.loadLibrary(System.java:1030) at org.eclipse.swt.internal.Library.loadLibrary(Library.java:123) at org.eclipse.swt.internal.win32.OS.<clinit>(OS.java:18) at org.eclipse.swt.widgets.Widget.<clinit>(Widget.java:95) 環境: E: > .\java -version java version "1.6.0-rc" Java(TM) SE Runtime Environment (build 1.6.0-rc-b104) Java HotSpot(TM) 64-Bit Server VM (build 1.6.0-rc-b104, mixed mode) E: > VER Microsoft Windows [Version 5.2.3790]
68 :
デフォルトの名無しさん :2006/11/23(木) 04:56:51
これだけだとjava.lang.UnsatisfiedLinkErrorとしか分からないだろ(;´Д`) どういうプログラムでどういう状況でエラーが出たか ずっと動いてるプログラムが急にエラー吐いたのか開発段階でのバグとりなのか とりあえず臭い所にtrycatch噛ませてログとれ
69 :
デフォルトの名無しさん :2006/11/23(木) 04:57:42
こんなエラー出したことがないので推測だが、推測として2点挙げられる。 @64ビット環境なのに、32ビット専用のDLLを読み込もうとしているので、 インポートやクラスパス設定ミス。 AJVMがAMD製の64ビットCPUをサポートしてないので、 AMD製のCPUに対して命令できない。つまり動かない。
70 :
デフォルトの名無しさん :2006/11/23(木) 05:00:26
まんこくせー
71 :
デフォルトの名無しさん :2006/11/23(木) 05:08:29
dsに弾き解除してと伝えてくれ(;´Д`)
72 :
デフォルトの名無しさん :2006/11/23(木) 05:11:43
ちんぽしごけええええええええええええええーーーーーーーーーーーーーーーーーーーーーー
73 :
デフォルトの名無しさん :2006/11/23(木) 05:16:51
74 :
デフォルトの名無しさん :2006/11/23(木) 05:21:22
おまいらあやしいわーるどに釣られてアフォかとw
75 :
デフォルトの名無しさん :2006/11/23(木) 06:16:08
>>67 とりあえず、起動する時に
-d32 オプションで上げてみるとかだな
76 :
デフォルトの名無しさん :2006/11/23(木) 06:25:02
今日の注目すべき馬鹿書き込み 投稿者: 投稿日:2006/11/23(木)06時24分04秒 ■ ★ > 投稿者: 投稿日:2006/11/23(木)06時21分13秒 ■ ★ ◆ > > あのときはゲスッとアブナイからだな > 両者とも跡形もなく消えたな 笑 ゲスッはiRCになっただろ 参考:2006/11/23(木)06時02分03秒
77 :
デフォルトの名無しさん :2006/11/23(木) 06:30:41
更なる高みを目指した、超絶馬鹿書き込み 投稿者: 投稿日:2006/11/23(木)06時29分39秒 ■ ★ なあ、ゲスッってiRCになったのか?
78 :
デフォルトの名無しさん :2006/11/23(木) 08:27:10
すんません。運用SEでjavaプログラムほとんどやらないので質問。 threadのwhileループ内で、Socketオブジェクトをnewしては(connectした後) closeするのを繰り返してるんだけど、長時間経つと非ヒープ領域がリークして いきます。close後にnullはしているんだけどリークしていきます。
79 :
デフォルトの名無しさん :2006/11/23(木) 08:28:33
こんな感じ(thread内のrun定義) public void run(){ while( true ){ SocketAddress socketAddress = null; Socket socket = null; try { socket = new Socket(); socket.setKeepAlive(true); byte[] ip = InetAddress.getByName(this.serverAddress).getAddress(); InetAddress addr = InetAddress.getByAddress(this.serverAddress, ip); socketAddress = new InetSocketAddress(addr, this.port); SocketAddress bindAddress = new InetSocketAddress(this.bindip, socket.getPort()); socket.bind(bindAddress); socket.connect(socketAddress, this.timeout); socket.close(); socket = null; } catch (Exception e) { // 注 : UnknownHostExceptionとか複数の例外もすべて同様 socket.close(); socket = null; } } }
80 :
デフォルトの名無しさん :2006/11/23(木) 08:29:13
JVMの(バグ?の)せいだ!とかファビョられてるんだけど、どうなんでせう。 何度も同じオブジェクトのnewとnullを繰り返してるコーディング自体が java的にはあんまりよくねーとか、コーディングの問題もあるんでないの? とかも思います。 (nullせずに、addressとかのプロパティ上書きして再connectするか、 thread自体抜けて起こしなおすとか・・newの前のSocketオブジェクト宣言 自体がwhile内で何度も呼ばれてるのも気になるが。) こういうコーディングってそれ自体問題があるとはただちに言えないんでしょうか。 ちなみにおんなじthreadが100個ぐらい並列で起きていています。
81 :
デフォルトの名無しさん :2006/11/23(木) 12:36:08
javaの書き込みを何度もしてる本人はおもしろいんだろうけど 周りからみるとちっともおもしろくない それに気付けないところが痛いんだよな なんか実生活でもういてそうな感じ
82 :
デフォルトの名無しさん :2006/11/23(木) 12:36:52
渾身のギャグが出来たと同僚1人1人に見せてまわるタイプ
83 :
デフォルトの名無しさん :2006/11/23(木) 12:40:12
あの一連のJAVAの書き込みってひょっとして晒してるつもりなの?(;´Д`)うわあ
84 :
デフォルトの名無しさん :2006/11/23(木) 12:42:26
Java貼り付けの子がプチ切れた
85 :
デフォルトの名無しさん :2006/11/23(木) 12:43:59
javaのひとは午前4時くらいからやってるだろ(;´Д`)なんどもなんども
86 :
デフォルトの名無しさん :2006/11/23(木) 12:44:40
うぜえから死ねよ
87 :
デフォルトの名無しさん :2006/11/23(木) 12:49:30
public void run() throws Exception { synchronized( this ){ SocketAddress socketAddress = null; Socket socket = null; try { socket = new Socket(); socket.setKeepAlive(true); byte[] ip = InetAddress.getByName(this.serverAddress).getAddress(); InetAddress addr = InetAddress.getByAddress(this.serverAddress, ip); socketAddress = new InetSocketAddress(addr, this.port); SocketAddress bindAddress = new InetSocketAddress(this.bindip, socket.getPort()); socket.bind(bindAddress); socket.connect(socketAddress, this.timeout); socket.close(); socket = null; } catch (Exception e) { // 注 : UnknownHostExceptionとか複数の例外もすべて同様 socket.close(); socket = null; } } }
88 :
ぴゅあ :2006/11/23(木) 12:52:57
>>66 なるほど
>name を Data dt = new Data(a,b,c); のdt 部分
>と置き換えて使用できればないいなと
dtとかの"変数名"はプログラムの記述上、人が見て判り易いように付けるもの
変数dtの内に入れられる"値"のように、プログラム実行中に自由に変える(宣言する)ことはできないです
Map(HashMapとか)を使い、nameをkey,new Data(a,b,c)をvalueとして
格納してやってはどうでしょうか
nameをdt部分と置き換えたいということでしたから
nameが一意であることにも問題ないんでしょう
(仮にdt部分と置き換えることが出来たとして
後に続くコードでその変数名をどう扱うつもりだったのかも判らないけど…)
同様に
テキストファイルにある並びに対する順序性についても
重要ではないだろうと思うので問題ないんでしょう
ということでどうですか?
89 :
デフォルトの名無しさん :2006/11/23(木) 12:56:19
暫定荒らしてるのと同じ子だろうなぁ(;´Д`) 暫定でも子供扱いされておもちゃにされて(;´Д`)本店でも子供扱いされて・・・なんか憐れだ
90 :
デフォルトの名無しさん :2006/11/23(木) 13:05:47
2006年11月23日 コラム:iRCはゲスッに吸収されたのか 最近本店で、iRCがゲスッになったというまことしやかなデマが流れた。 ここでゲスッについて振り返っておきたい。 ゲスッが誕生したのは1996年、あやしいが県人会に引っ越してくる前である。 当初単なるアングラ掲示板であったゲスッ掲示板は、 あやしいから追い出された一部の過激派メンバーによって掲示板荒らしグループへと変貌した。 そして翌97年、組織的に掲示板を荒らす初のグループとして誕生したのである。 その後ゲスッは98年のありがとう黒マグロ事件を経て徐々に規模を縮小、 99年のゲスッメモリアル閉鎖にともない歴史上から姿を消した。 しかし2004年、突如として彼らはiRCに出現したのだ。 ゲスッがiRCを吸収したのではない。iRCがゲスッを吸収したのである。 これによりiRC幹部だったVVSおじたんがゲスッ幹部に移籍するなどの事件が発生したが、 ゲスッ統括の権限はすべてiRCに委譲されたのだ。 以後ゲスッによる様々な掲示板へのiRC宣伝などが行われ、 iRCといえば荒らし、といった現在の体制が構築されたのである。
91 :
デフォルトの名無しさん :2006/11/23(木) 13:16:44
何が半年ROMれだ。そんなあやしいわーるどのような俺ルール押し付けんな。 俺を新人扱いすんな。セガBBS古参なめんな。2CHの歴史なんざまだ6年ほどだろ確か。 確かに見るようになったのはネバダ事件以降だがアングラ常連のわびさびぐらい心得てる。 アングラ常連の分際で吼えるな。
なんでもかんでも茶化せばオッケー、盛り上がればVIPクオリティ、ってか。 おちょくり派の心の闇は深いね。 俺トリップを使わない。2ちゃんねるのわびさびが殺がれるしな。 余裕を持てボケ
94 :
高等遊民 :2006/11/23(木) 13:18:47
Amazonで買ってds様にお布施しろよ
95 :
デフォルトの名無しさん :2006/11/23(木) 13:19:58
おちょくり派は帰れ
96 :
ザンコロ :2006/11/23(木) 13:22:52
まだ暫定やられてんのか(;´Д`)
97 :
デフォルトの名無しさん :2006/11/23(木) 13:25:22
わざわざ寿司屋に行って、なんで上やら並を頼むんだ? 特上頼まないと勿体無いだろ
98 :
高等遊民 :2006/11/23(木) 13:26:05
私は気に入ったものをずーっと使い続けるタイプです
99 :
デフォルトの名無しさん :2006/11/23(木) 13:28:10
今日もちんぽをシコシコしながら おまんこ教への祈りをヽ(´ー`)ノ
100 :
デフォルトの名無しさん :2006/11/23(木) 13:33:03
あきこちゃんの人がいる(;´Д`)わかる!!!1」1
101 :
デフォルトの名無しさん :2006/11/23(木) 13:38:06
なんだかんだ言って暫定退避のポテンシャルに嫉妬してんだろ
みんな落ち着いてフレグランスドJAVA
103 :
デフォルトの名無しさん :2006/11/23(木) 14:04:54
104 :
ぴゅあ :2006/11/23(木) 14:33:41
>>78-79 と
>>80 が同じ人かどうか判らないし
>>79 のrunメソッドの中でのwhileループでの話とされているところと
>>80 のおんなじthreadが100個ぐらいとの関わりも…
>>78 のリークとは具体的に何を指しているのか。。。
bindしていたりするところの絡みとか
暫くやってないので検証してみないと…ではあるけど
立て続けに(無闇矢鱈と)connect/disconnect(close)を繰り返しているのは
ソケットとしても好ましくないような気がしたりですけど。。。
105 :
66 :2006/11/23(木) 14:44:26
>>88 88さんの仰るとおり、続くコードでその変数はインスタンスするときに使うだけで
特にファイル名から指定する必要はありませんでした。
変数名は確かに勝手に変えられると困ることが分かりました。
これからHashMapを実装して試してみようと思います。
とても丁寧に答えてくださりありがとうございました。
106 :
ぴゅあ :2006/11/23(木) 14:58:22
>>105 >続くコードでその変数はインスタンスするときに使うだけで
>特にファイル名から指定する必要はありませんでした。
("ファイル名"="テキストファイルの中身name"のことかな?と思ったりしますけど)
ということから、ちょっと気になったので補足したいと思いますけど
テキストファイルの中のnameが変数名として区別するつもりのものであったとするなら
List(ArrayListとか)でnew Data(a,b,c)を格納すればいいでしょう
この場合にはテキストファイルの各行の並びが(保証もされて)インデックス0〜n-1として扱えます
Listで済ませられるものなら、Mapよりコストも下げられます
107 :
デフォルトの名無しさん :2006/11/23(木) 15:00:26
>>104 あー、同じ人なんです。
行数制限あったので3分割してみました。
ここID出ないんだね・・。
リークは非ヒープ領域がリークします。
jconsoleの表示でいうと右下の縦棒グラフの一番右側。
108 :
デフォルトの名無しさん :2006/11/23(木) 15:34:14
>>103 教えていただいたURLの情報で、リークする部分が非ヒープ領域か
どうなのか確認する必要はありますが、もしこの例がビンゴだとした場合
ThreadGroupからの参照を外そうとすると、thread自体は一度潰して
参照の後始末がされるように仕向ける必要があるということになりますね。
(ちなみに環境はJDK1.5、RHEL3 u6です。)
となると、常駐するthread(生存期間が長いthread)でオブジェクトの生成・廃棄
を繰り返す設計自体がそもそもアホなんでしょうか・・。
その辺の塩梅が開発(つーかクラス設計?)やらないんでよく分からんのですが。
。
109 :
ぴゅあ :2006/11/23(木) 15:34:18
>>107 (そうそう時間も開いてるし
>>87 は誰?というのもあったけど)
jconsoleは使ったことなくて
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/management/jconsole.html を見つけて見ていたりしますけど
>リークは非ヒープ領域がリークします。
というのをどのようにリークとして判断したのか(jconsoleで見て判断できる情報があるのかよく判ってないけど)
>jconsoleの表示でいうと右下の縦棒グラフの一番右側。
は3本ある見方(時間経過?)とか今一つ読み切れてなかったりしますけど
>ちなみにおんなじthreadが100個ぐらい並列で起きていています。
はrunメソッド内のwhileループ絡みではなくて
>>103 の言っているようなところだろうと思いますけど
「右下の縦棒グラフの一番右側」を見てリークと判断したところとかは
オブジェクトが未使用になっても直ぐにメモリ上から開放されるわけではないという仕組み(ガベージコレクション)から
リークしていると思ってしまったとかということはないですか?
110 :
デフォルトの名無しさん :2006/11/23(木) 15:36:39
111 :
ぴゅあ :2006/11/23(木) 15:40:36
112 :
ぴゅあ :2006/11/23(木) 15:43:12
>>110 そこんところはそうだろうと読み取れました(笑)
113 :
デフォルトの名無しさん :2006/11/23(木) 15:57:28
>>111 80でし。スレ汚しすんません。
実況板以外では初書込みなんで不慣れでスンマセン。
実は開発は他社(つーか顧客!)さんで、そこにOS売った販売元のSEつーか
運用・製品サポートしてる部隊の雇われなんです。
JVMなんだから開発側で調べろよボケ!で突き返そうとしたら上に止められました。
何でもJVMのバグじゃねぇ?という質問に見解なり、答えなきゃいけないそうで・・。
114 :
ぴゅあ :2006/11/23(木) 16:11:49
>>113 そうなんですか
でも飽くまで
>運用・製品サポート
という立ち場なら開発元と連携とって
販売先とを繋ぐのがサポートの役目だと思ったりしますけどね
どうなんだろう。。。(>上に止められました。)
その製品自身を(jconsoleとかで分析できるものなら)分析するくらいまでは
サポートとしての範疇であるかも…としても
ややその範疇を越えてきているような気も…?
(開発元から完全に引き取ってしまったものとかなら
自力で(無理なら解る人を募るとか)なんとかするしかないですが)
115 :
デフォルトの名無しさん :2006/11/23(木) 16:15:36
>>109 たびたびスレ汚しすんません。80です。
> (そうそう時間も開いてるし
>>87 は誰?というのもあったけど)
87は自分じゃありません。流しのgru?
> jconsoleは使ったことなくて
>
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/management/jconsole.html > は3本ある見方(時間経過?)とか今一つ読み切れてなかったりしますけど
ttp://java.sun.com/developer/technicalArticles/J2SE/jconsole.html の
ttp://java.sun.com/developer/technicalArticles/J2SE/jconsole/HeapMemory.jpg
でいうところの、右下の Non-heapの部分code cacheが増えてきますね。
上記URLにもあるとおり、heap部分の3分割は、時間じゃなくて世代別GCの
各Generationの消費割合のハズです。
> 「右下の縦棒グラフの一番右側」を見てリークと判断したところとかは
> オブジェクトが未使用になっても直ぐにメモリ上から開放される
> わけではないという仕組み(ガベージコレクション)から
> リークしていると思ってしまったとかということはないですか?
Non-HeapはGCでは回収されない部分のはずなので、GC問題よりも
コーディング設計かJVM自体のバグの問題かなーと思ってます。
ちなみに、米国SDCのフォーラムにBugなんでねーの?とpostしてみたけど、
見事に外人さんにはスルーされてますw
そういや、今月Sunがそのうちjava(実装部分?)のソースコード公開すると発表してましたが・・
116 :
ぴゅあ :2006/11/23(木) 16:50:53
117 :
1/2 :2006/11/23(木) 17:07:12
非 static のメンバークラスより、static のメンバークラスを選ぶように、 と言う事を Findbugs の指摘や Effective Java の項目 18 で見ました。 例えば、単に内部メソッド間の受け渡しにしか利用しないデータクラスを 定義するとすると、それを static にした方が良いと言うことでしょうか?
118 :
2/3 :2006/11/23(木) 17:08:29
# すみません 2/3 に訂正させてください…改行制限が。 泥臭く書くと以下のようなケースです。internalProcess1 の結果を internalProcess2 に渡して、その結果を返したいが、その際にデータクラス Bar を作る。 public class Foo { public String doSomething(String arg) { Bar result = internalProcess1(arg); return internalProcess2(result); } private Bar internalProcess1(String arg) { .... return new Bar(factor1, factor2); } private String internalProcess2(Bar arg) { .... } class Bar() { private String factor1 = null; private Integer factor2 = null; Bar(String factor1, String factor2) { this.factor1 = factor1; this.factor2 = factor2; } } }
119 :
3/3 :2006/11/23(木) 17:09:11
心配しているのは、Bar を static にした場合、 ある Foo インスタンス foo1 の Bar と、 他の Foo インスタンス foo2 の Bar が別インスタンスになるかどうか、 と言うことです。なんとなく、static とつけると共用されてしまいそうな 気がしてしまうのですが、そうではないと言うことなのでしょうか?
120 :
デフォルトの名無しさん :2006/11/23(木) 17:14:42
java素人です。 csvファイルから','区切りでデータを読み込んで、配列に入れたいのですが上手く動作しません。 何がいけないのでしょうか? public static void main (String[] args){ try{ File file = new File(filename); FileReader filereader = new FileReader(file); int test; int k = 0; for(int i=0; i > 17; i++){ char[] list = new char[10]; while((test = filereader.read()) != ','){ list[k++] = (char)test; System.out.print(list[i]); } } filereader.close(); } catch(FileNotFoundException e) { System.out.println("ファイルが見つかりません"); } catch(IOException e) { System.out.println("入出力エラーです"); } }
>>120 BufferedReader使うと行単位で読み取りできて簡単だよ。readLine()ってのがある。
あとは行ごとにString#split(String)してカンマ区切りで配列にすれば一丁上がり。
122 :
デフォルトの名無しさん :2006/11/23(木) 17:43:24
ありがとうございます。 BufferedReaderを使って、readLine()で1行ずつ読み込むのも試してはみたんですが 上手くいきませんでした。 「行ごとにString#split(String)」というのは、 try { BufferedReader reader = new BufferedReader( new FileReader(filename)); String line; while(true){ line = reader.readLine(); line = (String)split(String); if(line== null){break;} System.out.println(line); } という具合でよろしいのでしょうか?
try { BufferedReader reader = new BufferedReader( new FileReader(filename)); String line; String[] ent; while((line = reader.readLine())!=null){ ent = line.split(","); for(int i=0;i<ent.length;i++){ System.out.println(ent[i]); } } }catch(Exception e){} String#split(String)で検索ぐらいしてもいいんじゃないか?
124 :
デフォルトの名無しさん :2006/11/23(木) 18:26:11
すいません。理解しました。 読み込んだファイルを1つのセル毎に配列に入れることって可能ですか?
>>119 > ある Foo インスタンス foo1 の Bar と、
> 他の Foo インスタンス foo2 の Bar が別インスタンスになるかどうか、
別。
他の言語でもよくあるけど、予約語を増やさないために、
一つの予約語に複数の意味を持たせる事がある。
>>125 ありがとうございます。安心しました。
しかしこのあたりの違いは間違いを起こしやすそうですね…
127 :
ぴゅあ :2006/11/23(木) 18:35:09
>>117-119 >Findbugs の指摘や Effective Java の項目 18
にどういうことが書かれているか判らないあちしとしては
それに習って
>>117 が考えたコードも並べてくれると
どういうことを言っているのか判りやすいし
仮に知っていたとしても、或いは他の人にも
それがあると
>>117 がどう解釈しているかも
判ったりするんじゃないだろうかと思ったりします
「static class」ググッてみた結果として
http://wisdom.sakura.ne.jp/programming/java/java46.html のような話ではないだろうかと思ってみたりしますけど
(内容の判断はし切れないところもあるけど)読んでみるとよいのかも
>なんとなく、static とつけると共用されてしまいそうな
>気がしてしまうのですが、そうではないと言うことなのでしょうか?
恐らく
>class Bar {
を
>static class Bar {
とするようなことを言われているんだろうと思いますが
そこまでコードが書けているのなら、簡単な検証コードを書いてみて
実際に自分の目で確認してみるのがいいんじゃないかと
>>124 やりたいことはこう?
ArrayList<String[]> list = new ArrayList<String[]>();
try {
BufferedReader reader = new BufferedReader( new FileReader(filename));
String line;
while((line = reader.readLine())!=null){
list.add(line.split(","));
}
}catch(Exception e){
e.printStackTrace();
}
String[][] cells = list.toArray(new String[list.size()][]);
これで、CSVファイルの各要素が2次元配列cellsに格納される。
131 :
デフォルトの名無しさん :2006/11/23(木) 22:19:28
JVMをOSの起動時にメモリに常駐させる方法ってありますか??
windows
135 :
デフォルトの名無しさん :2006/11/23(木) 23:06:05
女子中学生のおまんこぺろぺろ大会開始いいいいいいいいいいーーーー!
136 :
デフォルトの名無しさん :2006/11/23(木) 23:27:34
>>133 Windowsのどのバージョンかに依っても対処法が違ってくる
更にいえばPPC版やAlpha版とかの可能性もあるから
「windows」なんて横着せずにちゃんと書いて貰いたい
137 :
デフォルトの名無しさん :2006/11/23(木) 23:47:54
>>129 ありがとうございます。
しかし教えて頂いた方法だと、エラーがでてしまうのですが。
>>136 すまぬ
windowsXP SP2です。
どうしても起動時にVMを常駐しろとの要望があってさ・・・
(いらねぇと俺は思うんだけどね)
>>137 エラーが出るじゃワカランよ。そのエラーを書いたら?
140 :
デフォルトの名無しさん :2006/11/24(金) 00:09:58
>>139 そうですよね。すいません。
エラー内容は「'(' または '[' がありません。」
ArrayList<String> list = new ArrayList<String>();
と出てしまいます。ソース全文は
'(' または '[' がありません。
ArrayList<String> list = new ArrayList<String>();
141 :
デフォルトの名無しさん :2006/11/24(金) 00:13:57
140です。 ソースは、 InputStreamReader isrIns = new InputStreamReader(System.in); BufferedReader kbwordIns = new BufferedReader(isrIns); ArrayList<String> list = new ArrayList<String>(); try { BufferedReader reader = new BufferedReader( new FileReader(filename)); String line; while((line = reader.readLine())!=null){ list.add(line.split(",")); } }catch(Exception e){e.printStackTrace();} String[][] cells = list.toArray(new String[list.size()][]); for(int i=0;i>5;i++){ for(int j=0;j>5;j++){ System.out.println(cells[i][j]); } } です.何度もすみません。
>>140 >>129 のはJ2SE 5.0でないとコンパイルできない。J2SE5.0でもコンパイルオプションによってはエラーになる。
ひょっとして古いJ2SE使ってない?1.4.2とか。
どうしても1.4.2使いたいのなら、
ArrayList list = new ArrayList();
と書いて、toArray()するところは
String[][] cells = (String[][])list.toArray(new String[list.size()][]);
と書くといいよ。
143 :
デフォルトの名無しさん :2006/11/24(金) 00:26:30
>>142 コンパイルできました!!どうやら古いverでした。
本当に助かりました。ありがとうございます!!
144 :
デフォルトの名無しさん :2006/11/24(金) 01:52:47
>>115 103で書き込んだ者です。
jconsoleや、code cacheは今回初めて名前を知ったのですが、
あなたのコードを試しに動作させたところ、確かにcode cashが
増えていくようです。
今度は全てのコードを取り去った空のwhile文だけを動かして
jconsoleで測定してみましたが、やはりcode cascheは同じように
増えていきます。なのでSocketは無関係ではないでしょうか?
また、-XX:ReservedCodeCacheSize=500k などと小さな値を指定して
動作させてみたところ今度は特に増える様子はありませんでした。
逆にこの値を増やすと、動作時のメモリも増えていきます。
疑問なのですが、これはバグと言えるのでしょうか。
何をもってバグであると相手は主張しているのでしょうか。
(OutOfMemoryErrorが発生しているのでしょうか?)
動作させた環境はJava HotSpot(TM) Client VM バージョン 1.5.0_09-b03です。
>>144 何をもってバグであると相手は主張しているのかそれを知っているのはその相手だけ
JVMのバグってんなら、他のメーカー(IBMやBea)のJVMに載せ換えてみりゃいいじゃん。 そんなメモリリークがらみのバグが三社ともにスルーされてるとは思えないし。
148 :
ぴゅあ :2006/11/24(金) 07:43:21
>>115 >>144 が調べてくれたことを読んで、ふと思ったんですけど
もしかして販売先のお客様で障害が発生してというのではなくて
(或いは全く違う原因かも知れない障害が発生してのことかも知れませんが)
jconsoleで見てみたらcode cacheが増えていっていた
ということではないですよね?
或いはお客様からそういう指摘があったとか
また、キャッシュということですから
満杯なるまで使われることもあるし
適当なところで古いキャッシュを捨てて再利用する筈ですが
それが溢れて(溢れているようなタイミングで)異常終了をしているように見えた
とかいうところから追求していたんだろうか
と、今更ながら思えたんですけど
149 :
デフォルトの名無しさん :2006/11/24(金) 12:20:04
Javaは文字列の値を変更するたびに新たにオブジェクトを生成するの? class Test { public static void main(String[] arg){ String s1 = "abc"; String s2 = s1; //リテラルオブジェクトを共有 s1 = s1 + 'd'; //このタイミングで新たなオブジェクト1を生成しそのリファレンスをs1に代入 System.out.println("s1=" + s1 + " s2=" + s2); s2 = s1; //オブジェクト1のリファレンスを共有 System.out.println("s1=" + s1 + " s2=" + s2); s2 = s2.concat("e"); //s2からオブジェクト1の末尾に'e'を追加 if (s1 == s2) System.out.println("同じ"); //同じじゃなかった System.out.println("s1=" + s1 + " s2=" + s2); // s1もabcdeにならないのはなぜ??? } }
>>149 Stringは変更のほとんどない文字列用のクラス。
頻繁な変更での性能を求めるなら、バージョンにも依るけど、
StringBufferかStringBuilderクラスを利用する。
>>150 >Stringは変更のほとんどない文字列用のクラス。
なるほど。
Stringのconcat()のドキュメントにはこうありました。
>String オブジェクトによって表される文字列と引数文字列によって表される文字列とを
>連結したものを表す新しい String オブジェクトが生成されます。
(1) s2 = s2.concat("e"); //新たに生成されたオブジェクトのリファレンスをs2に代入
(2) s2.concat("e"); //新たに生成されたオブジェクトは破棄されちゃう
(3) s2 = s2 + 'e'; //(1)とまったく同じ動作。
こうなるみたいですね。どうも勘違いしてました。
JavaにはPerlのevalみたいなのはないのかな?
153 :
デフォルトの名無しさん :2006/11/24(金) 18:53:04
あるよ 古っ
例外処理用としてのPerlのeval相当のものはある。
try { } catch (...) { } を使う。 じゃなくてほんとは、文字列をプログラム断片として評価する方法をしりたいんじゃないのか?
流れを切って失礼します アプレットからCGIにデータをPOSTしたいのですが try{ // URL指定 URL MyUrl=new URL(svUrl); // コネクションの設定 HttpURLConnection connection = (HttpURLConnection)MyUrl.openConnection(); connection.setRequestMethod("POST"); // 出力フラグのセット connection.setDoOutput(true); (データの出力) } catch(Exception e){} のように記述して自宅鯖で試したところ なぜかアクセスログにはGETでアクセスしたと記録されてしまいます WEBで調べたところsetDoOutputが必要とあり、試したのですが効果ないようです 正しい形式で送信するには、まだ不足があるのでしょうか?
158 :
デフォルトの名無しさん :2006/11/24(金) 20:08:25
JTable で質問です。 現在JPanel上にJTable とその他多数のコンポーネントが配置されています。 TableCellRendererインターフェースを使ってテーブルのレンダラーを自作で書いていたんですが、 他のコンポーネントがフォーカスを掛けられない状態のときはJTableもフォーカスを掛けられない状態でも ちゃんと望んだデータを表示するのですが、どこか他のコンポーネントにかかっているとデータを変えても、 JTable上をクリックしないと表示がされません。TableCellRendererを明示的にコールする方法があれば教えてください。 クリックをしなくてもレンダラーをコールする方法を教えてください。
159 :
158 :2006/11/24(金) 20:17:02
すいませんrepaint書けたら解決しました申し訳ないです。
ファイル操作で質問があるのですが、 javaで、ある特定のフォルダ内にあるファイル名だけを全部取得する というようなことはできるのでしょうか?
>>160 File[] files = new File("特定のフォルダ").listFiles()
>>152 //Java版eval()
import java.io.*;
class Eval{
private static int execProcessBuilder(ProcessBuilder pb){
try{
Process p = pb.start();
BufferedReader stdIn = new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReader errIn = new BufferedReader(new InputStreamReader(p.getErrorStream()));
String line;
while ((line = stdIn.readLine()) != null) System.out.println(line);
stdIn.close();
while ((line = errIn.readLine()) != null) System.out.println(line);
errIn.close();
return p.waitFor();
}catch(Exception e){
e.printStackTrace();
return 1;
}
}
public static int eval(String str){ try{ File tempJavaSource = File.createTempFile("javaEval", ".java"); String tempSourceFileName = tempJavaSource.getName(); String className = tempSourceFileName.substring(0, tempSourceFileName.length()-".java".length()); PrintStream ps = new PrintStream(tempJavaSource); ps.print("class " + className + "{public static void main(String[] args){" + str + "}}"); ps.close(); ProcessBuilder javacProcessBuilder = new ProcessBuilder("javac", tempJavaSource.getAbsolutePath()); execProcessBuilder(javacProcessBuilder); ProcessBuilder javaProcessBuilder = new ProcessBuilder("java", "-cp", "\""+tempJavaSource.getParent()+"\"", className); return execProcessBuilder(javaProcessBuilder); }catch(Exception e){ e.printStackTrace(); return 1; } } public static void main(String[] args){ eval("System.out.println(\"Hello, world!\");"); } }
165 :
デフォルトの名無しさん :2006/11/24(金) 23:11:11
javadocの カスタムドックレットを作っています。 DocletAPIって javadocコメントやタグ以外の ソース本体を参照することってできないのですか? 特定のリテラルやクラスの参照があるかどうか チェックしたいんですが。
eval周辺は、Mustangでコンパイラやスクリプト関係のAPIが入るから使えそうだね。
>>152 1.5以前では標準ライブラリに含まれてないけど、
BeanScriptingFramework とかもあるよ。
まぁ、スクリプト言語と違って、コンテキスト渡そうとすると
凄く面倒だからスクリプト言語と同じ感覚で使うのは無理かもだけど。
168 :
157 :2006/11/25(土) 01:16:53
>>157 です、問題のアプレット、動作しました
結論から言うと、そもそもデータが送れていなかったようです
値を渡したいだけの場合でもインプット側のストリームも開かないと通信してくれなかったらしく
それを追加したら問題なく動作してくれました
JavaでSystem.out.println()で表示される文字色を 実行中に状況に応じて変更することは可能なのだろうか。
170 :
ぴゅあ :2006/11/25(土) 03:32:04
>>169 いちおSystem.out.println()は標準出力へということであるから
使える場面は限定されたりするだろうけど
例えばWinに限定するなら
String esc = new String(new byte[] { 0x1B });
System.out.println(esc + "[18m" + "ABC");
なんかやだから試してはないけど
「コマンドプロンプト エスケープシーケンス」でググッたひとつ
http://kasai86.ld.infoseek.co.jp/dos/esc.htm とかを参考にしてみればできるかも知れない
それより、それらしきコンポーネントを作ったりして
使いまわせるようにした方が
(自前で作らなくてもあったりしない?
手軽に…というところでは作ることになるのかもだけど)
Javaらしく使えるんじゃないかと思うけど。。。
JTextPaneを継承して、 「書き込むと、文字列をスタイル付きでそのTextPaneにappendする」 という働きをするOutputStreamが得られるものを作ったことがあるんだが、 どこかに埋もれてるorz System.setOutとかに設定してやればそのままprintlnとか出来た。
>>169 pure javaじゃなくなるけどJava Cursesとか
>>170 windowsに限定してもエスケープシーケンスはcmdでは使えなかった気がする
174 :
ぴゅあ :2006/11/25(土) 13:29:45
>>172 >cmdでは使えなかった気がする
ということをリンク先に書いてあるみたいですよ
でもそこに書いてあることが何処までできるのかは判らないけど
(起きてから簡単にやってみてはみたけどそれっぽくならない感じだし…
NT系ではシーケンスが変わったとか何処かで見たような気がする?のは
気の所為のような気もする。。。)
175 :
JAVO :2006/11/25(土) 13:49:44
Java script超初心者ですが質問があります。 <input type=button value="Roll" onClick=' var randomValue; randomValue= Math.floor(Math.random()*6)+1; document.myForm.ValueofDice.value=randomValue; var totalNumberOfRolls; totalNumberOfRolls=parseInt(document.myForm.totalrolls.value); document.myForm.totalrolls.value=totalNumberOfRolls+1; if(randomValue==1) { var 1rolll; 1rolll=parseInt(document.myForm.1isrolled.value); document.myForm.1isrolled.value=1rolll+1; } if(randomValue==6) { var 6rolll; 6rolll=parseInt(document.myForm.6isrolled.value); document.myForm.6isrolled.value=6rolll+1; } '>
176 :
JAVO :2006/11/25(土) 13:51:14
ボタンを押すことによって3つのテキストボックスにそれぞれ、 1、ボタンを押した回数。 2、ランダムナンバー1〜6のうち1が出た回数。 3、ランダムナンバー1〜6のうち6が出た回数。 が出るようにしたいのですがどうしてもうまく作動してくれません。 何が問題なのでしょうか? 問題だと思われる箇所を抜き出して載せてみました。 よろしくおねがいします。
春ですね
>>176 > が出るようにしたいのですがどうしてもうまく作動してくれません。
> 何が問題なのでしょうか?
「プログラムは思ったとおりに動かない、書いたとおりに動く」
初心にでも戻るんだね
>>175 JavaScriptはスレ違い。ここはJavaスレなんで。
180 :
デフォルトの名無しさん :2006/11/25(土) 15:13:59
サーブレットとBeansを連携させてるんですがコンパイルできません 1 Beansをコンパイルする 2 -classpath $TOMCAT_HOME/common/lib/servlet-api.jarをつけてサーブレットをコンパイルする という順でしているのですが2をやろうとすると シンボルが見つけられませんとメッセージが出ます Beansを参照していないような気がします どうすればいいのでしょうか? ぐぐったのですが解決しませんでした
>>180 -classpath $TOMCAT_HOME/common/lib/servlet-api.jar:$PATH_TO_BEANS とかやんないとダメ。
-classpath は、既存のクラスパスに追加するんじゃなくて上書きだから、
-classpath に指定されてない場所にあるクラスはコンパイル時に使用されない。
182 :
JAVO :2006/11/25(土) 15:31:26
>>178 ども。解決しました。
variable,text nameに数記号使えないなんて知らなかったもんで。
スレ違いということすらわからない初心者なもんで、、失礼しました。
183 :
デフォルトの名無しさん :2006/11/25(土) 15:39:04
>>181 さっそくのレスありがとうございます
Beanが同じフォルダにある場合、
-classpath .:$TOMCAT_HOME/common/lib/servlet-api.jar
でもいいのでしょうか?
ちなみにこれをやると
Beanのクラスは参照してるが、今度はjavax.servletやjavax.servlet.httpが
存在しないと表示されます
どうしたもんでしょうか?
185 :
ぴゅあ :2006/11/25(土) 16:08:37
>>183 ":"でセパレートされているところを見るとUNIX/Linux上だろうと思いますけど
$TOMCAT_HOME/common/lib/servlet-api.jarのパスが合ってないとか
$TOMCAT_HOMEが展開されていないとかいうのはないんですよね?
186 :
184 :2006/11/25(土) 16:17:12
いじったのは HashSet<Ball> hs= new HashSet<Ball>(); を使うあたりです
>Beansを参照していないような気がします
基本的なことだけど、
Beansとのつなぎ、データの出し入れはJSPのプロパティを利用する。
すなはちServlet-JSP-<jsp:useBean・・・-Beansと繋ぐ(MVCの基本だけど)
また、EJBに関しても直接ServletやJSPとつなげないから、JSPのJavaBeans経由(JSPのJavaBeansプロパティ経由)でつなぐ。
他にやり方があるのかどうかは知らないけれど、こういう基本的なことだったら、
ttp://www.amazon.co.jp/gp/product/4774114111 が良く整理されてて分かりやすいよ。蛇足だったらスマソ。
188 :
ぴゅあ :2006/11/25(土) 17:00:13
宿題スレでなくてもいいような気もするけど
>>184 >汚くなった
とはどういうところが?
なんかジックリ真面目に読まないと問題点が探し難そうだけど
気になったりしたところは…
BallクラスとBFrameクラスでそれぞれThread使ってるところや、この2つのクラスが互いに作用しあっていたりするところ
(それぞれのクラスの目的が分離されていないのがまた読み難くさせている気が…)
Ballクラスはフィールドr,c,x,y,dx,dyくらいを持ってて
BFrameはフレーム(描画…Ballオブジェクトを移動させるタイミングも作ったり)と
フィールドhs(Ball群を持つ)を持つくらいにした方が(何故HashSetを選択したのかは判らないけど)
考えるにも楽そうな気もしないでもないけど
(互いのrun同士で悪さしあっているとかいう影響はでてきていたりしない?
Ballを移動させる処理としてBFrameクラスに1個runメソッドがあったりしたのでもいいんじゃないかと思うけど…)
dx,dyは移動量のつもりだろうと思うけど、その間を繋ぐ描画がなさそうなところとかが
>汚くなった
ということになっていたりなんでしょうか
189 :
ぴゅあ :2006/11/25(土) 17:03:49
あと些細なところですけど Mainクラスの >(引数を書かなければ,ボールは1個だけとなる。) はそうなってないんでは? またmainメソッド内のfor文 >i!=n; とかは、ちょっとだけ気になったりします。。。
190 :
デフォルトの名無しさん :2006/11/25(土) 20:54:24
Sun Java Studio Enterprise 8を最近DLして使っています。 細かい機能についての質問で申し訳ないのですが、 階層に合わせてスペースを入れて位置を揃えてくれる機能はありませんでしょうか?
>>190 Control+Shift+F(コードの再フォーマット)でできませんか?
>>191 できました!かなり便利になりました。
ありがとうございました!
あっても無くてもいい引数を宣言する方法を教えてください。 public void AAA(String src, String src2, ....... ) と行きたいんですが。。 お願いします。
public static void main(String[] args) { AAA("a", "b", "c"); } public static void AAA(String src, String... srcs) { System.out.println("src: " + src); for (String s : srcs) { System.out.println("srcs: " + s); } }
可変引数でググれ
>>194 ,195
解決しました、ありがとうございました。
197 :
ぴゅあ :2006/11/25(土) 23:36:24
>>193 Java2 5.0以降なら
public void AAA(String src, String ... src2)
という書き方が
それ以前の場合には残念ながらできないです
ならばどうするか
よく見ていたりするだろうメソッド宣言
public static void main(String[] args)
を参考に考えてみてはどうでしょうか
Java2 5.0以降で書ける
public void AAA(String src, String ... src2)
は
public void AAA(String src, String[] src2)
と書いたのと同様になります
>>197 たのむから Java2 5.0 なんて書きかたしないでくれよ
Java2 5.0 (笑)
すみません。等差数列を計算するプログラムを書こうと思って、 とりあえずはかけたのですが(数値は適当です) class Loop { public static void main(String[] args){ double a0=3; double d=4; int number=100; double a; for(int i=0;i<number;i=i+1){ a=a0+d*i; System.out.println(a); } System.out.println("END"); } } この解を配列としてあつかうにはどう書き足したらいいか 分かりません。教えて頂きたいです・・・
Math.random()とnextInt()の的確な使い分けかたってありますか? あとnextIntにおけるseedとはどういう意味があるのでしょうか? よろしければご教授ください。 お願いします。
202 :
デフォルトの名無しさん :2006/11/26(日) 01:57:37
以前 JProgressBar を教わったものです。このクラスを使ってプログラムを書いていて、 (自分にとって)とても奇妙な事に遭遇しました。是非下のコードを(VisualEditorで書きました) コピペして、このオブジェクト保持する main クラスを書いて実行ボタンを押してみて下さい。 ProgressBar の見た目が、test() メソッドの実行が終了するまで変化しません。 ところが、この test() メソッドを main クラスから実行すると、なんと動くのです。 いったいどうしてこんな動きをするのでしょうか? また、実行ボタンから ProgressBar を正常に動かす方法があればどうか教えて下さい。 宜しくお願いします。
203 :
202 :2006/11/26(日) 01:58:33
import javax.swing.JPanel; import javax.swing.JFrame; import java.awt.FlowLayout; import javax.swing.JProgressBar; import javax.swing.JButton; public class Test2 extends JFrame { private JPanel jContentPane = null; private JProgressBar jProgressBar = null; private JButton jButton = null; public Test2() { super(); initialize(); } private void initialize() { this.setSize(300, 200); this.setContentPane(getJContentPane()); this.setTitle("JFrame"); } private JPanel getJContentPane() { if (jContentPane == null) { jContentPane = new JPanel(); jContentPane.setLayout(new FlowLayout()); jContentPane.add(getJProgressBar(), null); jContentPane.add(getJButton(), null); } return jContentPane; }
204 :
202 :2006/11/26(日) 01:59:05
private JProgressBar getJProgressBar() { if (jProgressBar == null) { jProgressBar = new JProgressBar(); jProgressBar.setMaximum(10000000); } return jProgressBar; } private JButton getJButton() { if (jButton == null) { jButton = new JButton(); jButton.setText("実行"); jButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { test(); } }); } return jButton; } public void test() { int j = 0; for (int i = 0; i <= 10000000; i++) { j++; jProgressBar.setValue(j); } } }
>>200 double a;ってのを配列にしてしまえばOK
例えばこんな感じ
class Loop {
public static void main(String[] args){
double a0=3;
double d=4;
int number=100;
double[] a = new double[number]; //配列の宣言
for(int i=0;i<number;i=i+1){
a[i]=a0+d*i; //配列に格納
System.out.println(a[i]); //一応出力したいなら配列の要素で
}
System.out.println("END");
}
}
>>202 たぶんJProgressBarのsetValueメソッドを呼ぶところを
SwingスレッドにinvokeLaterで渡してやるといいはず。
207 :
202 :2006/11/26(日) 02:50:01
>>206 レスして下さってありがとうございます。
でも何をどうして良いのか何にもわかりません・・・。
Swing スレッドが何で、何をどう渡すのでしょう・・・?
ごめんなさい、本当の初心者で。
宜しかったら詳しく教えてくれませんか?
何かを読め、と言われたら読みますのでどうか・・。
>>207 俺
>>206 じゃないけどワープはいかんと思うよ。
いきなりGUI使おうって思っても正直凄く難しい。
自分も前いきなりGUIやろうと思ったけど全くわからなかった。
最近やっとAPIの読み方わかってきたし少しくらい考えて書けるようになってきた。
それでもまだGUIを作るのには何日も掛かるし考えも中々まとまらない。
悪いことは言わないから何か作りたいならやさしいJavaくらいは読んでおけ。
GUIが使いたいならSwingの本何かしら読んでおくといいと思う。
209 :
206 :2006/11/26(日) 03:11:57
>>202 =207
Swingではイベントディスパッチスレッドというスレッドが裏で走ってて、
GUI上の見た目を変化させる処理はすべて
このスレッドから実行しないといけないことになってるんだ。
そのために使うメソッドがSwingUtilities.invokeLaterな。
引数で指定した処理をイベントディスパッチスレッドで実行してくれる。
だから jProgressBar.setValue(j)の代わりに
SwingUtilities.invokeLater(new Runnable() { jProgressBar.setValue(j); })
とかすればいいはず。
210 :
202 :2006/11/26(日) 03:12:08
>>208 確かに GUI は簡単にかじっただけなので難しいです・・。
言われた通り、足元をもっと踏み固めて進んだほうが良いですよね。
ほんとそう思います。せめて難しい事にチャレンジしながらでも基礎は固めようと思います。
208さんのように考えながら作れる頑張りたいですもんね。忠告ありがとう。
ところで今、ちょっとスレッドに付いて調べていました。そして Runnable ってインターフェースを
見つけたんですが、これを Test2 に実装すればいいのでしょうか?
足元も緩いのですが、今からチャレンジしてみます。
208さん重ねてですが本当にありがとう。頑張りますね!
211 :
202 :2006/11/26(日) 03:16:10
>>209 レスがニアミスしました。親切で丁寧ににありがとうございます!
Runnable はインナークラスなんですね!勉強したつもりでも自分の頭で思いつきませんでした・・。
でも良い所まで言っていたみたいで少しうれしいです。
早速やってみます。本当にありがとうございました!
とりあえず目を瞑るから スレッド越しについて色々調べてきてね
213 :
202 :2006/11/26(日) 04:25:03
またすみません。
自分であっぷした
>>204 の test() メソッドもちょっと間違ってるし、
Runnable() インナークラスも上手くいきませんでした。
run() メソッド内の jProgress.setValue(j); の引数 j がアウタークラス
の変数なので final しないと参照できないのです。それで、Runnable()
のクラス定義する部分を他のメソッドに置いて、そのメソッドに final
した j を渡して実行してみました。でも結果は同じでした。
やっぱり足元が緩い自分には荷が重いのかもしれません。残念です。
今日はもうダウンします。
お付き合い頂きありがとうございました。
>>212 スレッド越しですね。一応調べてみます。
>>202 jButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
test();
}
});
を
jButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
new Thread() {
public void run() {
test();
}
}.start();
}
});
に
actionPerformedの処理はイベントディスパッチスレッドの中で行われるので
時間がかかる処理は別スレッドで行わないとグラフィック描画処理が固まる。
これだけでもそれなりに動くと思うが安全のために
jProgressBar.setValue(k);
はSwingUtilities.invokeLaterに食わせてやるべきだろうね
215 :
デフォルトの名無しさん :2006/11/26(日) 06:40:37
すいません 簡単な計算(足し算)ソフトを作ってるんですが ボタン、テキストフィールド3つ(txt1 txt2 txt3) を表示させることが出来たんですが ボタンをおせばtxt3のところに txt1 + txt2 の答えを表示させるにはどうすればいいんですか? 分かりにくい文章かもしれませんがお願いします
>>215 ボタンにaddActionListenerでActionListenerを実装したクラスを登録。
そのクラスのactionPerformedメソッドの中で、
txt1 + txt2の答をtxt3のsetTextメソッドで設定する。
217 :
デフォルトの名無しさん :2006/11/26(日) 07:00:13
>>202 jがローカル変数なのでfinalでないとうまくいかない。
jをインスタンス変数にしてやればアクセスできるようになる。
private int j;
public void test() {
j = 0;
for (int i = 0; i <= 10000000; i++) {
j++;
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() { jProgressBar.setValue(j); }
});
}
}
でも真面目にがんばるから思った通り遅いね、こりゃ。
内部クラスだからうまくいかないというより
匿名クラスだから外側の変数の受け渡しがうまく書けない。
内部クラスでもこんな感じで
public void test() {
int j = 0;
class Hoge implements Runnable {
int k;
void setValue(int k) { this.k = k; }
public void run() { jProgressBar.setValue(k); }
}
Hoge hoge = new Hoge();
for (int i = 0; i <= 10000000; i++) {
j++;
hoge.setValue(j);
javax.swing.SwingUtilities.invokeLater(hoge);
}
}
>>201 nextInt()というのはjava.util.Randomのメソッドのこと?
Math#random()に対応するのはRandom#nextDouble()
どちらも0〜1の範囲の乱数を返す。
Math#random()は1を含まないけど、Random#nextDouble()が1を含むかどうかは忘れた。
Math.random()は乱数の種をこちらから指定できないので、
検証その他の目的で同じ乱数列を何度も使いたいときには使えない。
その用途にはjava.util.Randomの方を選択。
もちろん乱数列を全て保存するのなら別だが。
乱数の種seedは擬似乱数を生成するときの初期値として使う。
すいません。 アフォな事を質問します。 javaランタイム入ってないのに、なんでjavaアプレットが動作するのでしょうか? javaアプレットはランタイム不要?
>>220 以下のどれかだろう。
・実はこっそりとSun JREがプリインストールされている。IBMとかDellとかのPCにはプリインストールされてる。
・アプレット起動時にJREがインストールされたが、それに気づかなかった。
・Microsoft製のJRE(化石時代の古い代物)ががんばってる。Windows XP SP1(?)以前まではインストールされていた。
・実はJavaアプレットではなくflashだった。
・やっぱここは幻覚だろ つか > javaランタイム入ってないのに はどうやって確信を得たんだ?
>>219 java.util.Randomの事です。エスパーありがとうございます。
Random.nextDouble()の方も1.0は含まないと思います。
Rando.nextInt(5)としても0〜4までしか生成されませんので。
普段使いでは(int)(Math.random()*5);のように使っているのですがJ2MEだと
Math.random()は使えずにRandom.nextInt()のみだったので気になりました。
両者比べても大して違いは見られないようなので擬似乱数として
使わないのならimportしない分Math.random()の方が手軽に使えますね。
ありがとうございました。
(´д`)
すみません、質問なんですが
フリーの「SUN ONE STUDIO 4」を
ttp://www.sun.co.jp 上で探したんですが
指定された該当ページにいくと404になっいて、いくら探索しても見つかりません
どこにあるか教えていただけませんか?
227 :
ぴゅあ :2006/11/26(日) 12:54:58
>>202 イベントが起こった中で長い処理(test()メソッドの中の)をやっているから他のイベントが処理できなくなっている
なのでその処理(test()メソッドの中の)が終わるまでバーの表示も更新されない
(比べてみれば判ると思うけど実行ボタンはその処理が終わるまで押されたままの表示)
ボタンが押されたイベントは処理(test()メソッドの中の)を起動するトリガとして捉えて
スレッドを起こしてtest()メソッドの中の処理を実行してやるようにすればいいです
そこまでは
>>214 も挙げているようなところ
SwingUtilities#invokeLaterは必要ないと思う
例えばJProgressBar#setValueとかの中の奥底の方でやっているようなところ
test()メソッドをそのままスレッドを起こして遅いというのは
JProgressBar#setValueを10000000+1も呼んでいるのと
その処理の殆どがJProgressBar#setValueで費やされているから(検証の仕方の問題)
例えば
jProgressBar.setMaximum(100);
とし
if (i%100000 == 0) {
jProgressBar.setValue(i/100000);
}
とかするのでもいいと思うし
実際に進捗モニタとして使われる場合には
JProgressBar#setValueが一連の処理の中で占める割合は僅かなものになるでしょうから
"遅い"というようなことにはならないと思いますよ
>>224 「疑似乱数として使わないのなら」てどういう意味?
229 :
200 :2006/11/26(日) 13:55:56
>>205 ありがとうございます。とても丁寧で分かりやすいです。
>>224 java.lang.Math#random()もjava.util.Randomクラスのメソッドが返すものも
放射性物質とか熱雑音とか使って乱数を生成するような実装になっていない限りは
生成されるのは普通は擬似乱数
てか少なくともjava.util.Randomの方はseedを指定できる点で真の乱数ではない
そしてMath#random()はjava.util.Randomを呼んでるし両者は同じものと考えていい
使い勝手が違うだけ
231 :
デフォルトの名無しさん :2006/11/26(日) 14:30:35
>>227 あの処理であのサイズの進捗バーの表示を10000001回更新することの無意味さが分かってる上でのコーディングだからね。
進捗バーを使って202が実際にやろうとしている処理は"遅い"ということになる。
やるなら227が例示しているように100000回に1回程度の更新でいい。これだと表示は十分スムーズになる。
でも、実際に動作するかどうか別として、invokeLaterが必要ないと言い切るのは非行だ。
> Once a Swing component has been realized, all code that might affect or depend on the
> state of that component should be executed in the event-dispatching thread.
はSwingでの基本ルールだし、setValueには「このメソッドはスレッドに対して安全です」表示がない。
例えば218の後半の方法を使うなら、
jProgressBar.setMaximum(10000000);
はそのままで、
for (int i = 0; i <= 10000000; i++) {
j++;
hoge.setValue(j);
if (j % 100000 == 0)
javax.swing.SwingUtilities.invokeLater(hoge);
}
のようにinvokeLaterを使うべきじゃないかね? 処理が遅くなることはない。
この場合、jProgressBar.setMaximum(100);でsetValue(i/100000)でも同じ効果なのでそれでもいいが、
どうせ進捗バーの中でスケーリングされるんだから素直にjの値を使うということで。
もうね、イベントループしてるスレッドにキューでも作って「プログレスバーの表示を〜にしてね♪」みたいなメッセージでも突っ込んでおけばいいんですよ
あげちまった...
ついでに内部クラスHogeを使う方法はこれまずいね。
こうすべきか。
public void test() {
int j = 0;
class Hoge implements Runnable {
private int k;
Hoge(int k) { this.k = k; }
public void run() { jProgressBar.setValue(k); }
}
for (int i = 0; i <= 10000000; i++) {
j++;
if (j % 100000 == 0)
javax.swing.SwingUtilities.invokeLater(new Hoge(j));
}
}
>>232 SwingWorker?
234 :
ぴゅあ :2006/11/26(日) 15:49:18
>>231 ,
>>233 最近のチュートリアルにはSwingWorkerが出てきているみたいですけど
最新はまだ触ってないので代わったわけとか見れてないけど
触るならEventQueue#invokeLaterとかなのかなとも思えたりもするけど
深く追えてはないし(ついさっき例が出てきて触ってみてるだけだし)
今のところはまだ微妙な気もしていたりするけど…
235 :
ぴゅあ :2006/11/26(日) 16:01:42
あぁあとJProgressBar#setValueの方は (5.0のソースコードで)その先のfirePropertyChangeメソッドで イベントキューに溜めて処理してるんじゃないかと思ってて JProgressBar#setValue自身がスレッドセーフかというのは 別途JProgressBar#setValueを扱う側で考えるのかな… (SwingUtilities#invokeLaterを使うとかいうのではなく) とか思ってたりしてますけど。。。
236 :
220 :2006/11/26(日) 21:58:41
>>221 >>222 >>223 レス有難うございます。
まず223の回答から
>> > javaランタイム入ってないのに
>> はどうやって確信を得たんだ?
プログラムの追加と削除からIBM-Java Runtime 32bit〜削除。
そしてOSはXP_SP2の為、Microsoft VMも無いこと確認。
222の回答
>>・実はJavaアプレットではなくflashだった。
Javaアプレットでした。
となると221の
アプレット起動時、javaのロゴが表示されて、
何かダウンロード中みたいだったのがJREのインストールだったのかな?
>> ・アプレット起動時にJREがインストールされたが、それに気づかなかった。
が正解な感じがします。
>>221 >>222 >>223 ありがとうございました。
237 :
202 :2006/11/27(月) 00:11:33
>>214 >>218 >>227 >>232 イベントディスパッチスレッドはシングルスレッドだから固まるんですね。
(知ったように書いていますが実はまだ危ういです)
それだから actionPerformed(ActionEvent); でスレッドを作って test() をよびだすんだと
今やっと分かりました。(スレッド越しと言うのは、一つのスレッド実行中に新しい別の
スレッドを作ることを指すのでしょうか?)
SwingUtilities.invokeLater(...); が必要か、な議論はルールだから守らなきゃくらいしか
自分には分かりませんでしたが、Runnable を実装したクラスをイベントディスパッチ
スレッドに渡して(安全に?)スレッドを起こしてもらうためのものなんですかね?
でも、とりあえず使い方は分かりました。無事動きましたしほんとに助かりました。
また、余計な話ですが、内部クラスからローカル変数を参照するのに final が必要でも、
イスタンスフィールドならそのまま参照できるのを知って自分の素人さも痛感しました。
なぜそうなるのか、また自分で調べてみます。そして書き方もいろいろあるのが面白くて
楽しかった。深い人に教えてもらえて嬉しかったです。余裕ができたら SwingWorker も
知りたいですが、208さんが言った Swing 本も近々探して早く勉強したいです。
ありがとうございました。
さぁさぁ! スレが殺伐としてまいりました・・・!!!タタタタ・・
240 :
デフォルトの名無しさん :2006/11/27(月) 11:25:04
同じパッケージ内にある別々のファイルのクラスにアクセスする方法は、 同じファイル内のクラスにアクセスするのと同じでしょうか? sample1とsample2があってこの中でクラスを共有したいのですが、 参照しようとすると Exception in thread "AWT-EventQueue-0 このようなエラーが出てきます。
それはあなたが馬鹿だからです。
242 :
デフォルトの名無しさん :2006/11/27(月) 12:05:50
そ?!そんなああああ!!!
>>240 packageの概念についてもっと勉強した方が良い
class Loop10 {
public static void main(String[] args){
double a0=3;
double d=4;
int number=100;
double a;
for(int i=0;i<number;i=i+1){
a=a0+d*i;
System.out.println(a);
}
System.out.println("END");
}
}
すみません。前にも似た感じの質問したんですけれど、
今度はこの等差数列の初めと終わりの解を3個づつ表示
したいんですが、配列を使ってどうしたらいいか教えて
くださいです。
ちなみに配列として扱ったものならば
>>205 で答えていただきましたが
ここに書き足すものが何か分からないです・・
テーブル状に表すことが出来るデータを格納するとき、どんなデータ構造を使うのが適しているでしょうか? LinkedHashMap<Integer,LinkedHashMap<Integer,String>> table; 今、こんなのを作って使っているのですが・・・
>>245 二次元テーブルならArrayList<ArrayList<String>> table;でいいんでないかい?
スパースなのならメモリ効率悪いが
>>245 独自クラス書いた方がよくないか?
縦で抽出したり、横で抽出したりするだろうから
>>246 のArrayList入れ子を縦横と横縦で持つような。
public class Fullname{ Person[] p = new Person[2]; p[0]=new Person("UDO","SUZUKI"); p[1]=new Person("TAKAAKI","ISHIBASHI"); /*略*/ } class Person{ String first; String second; Person(String first,String second){ this.first = firtst; this.second = second; } } としたら Temp.java:3: ']' がありません。 p[0]=new Person("UDO","SUZUKI"); ^ Temp.java:3: <identifier> がありません。 p[0]=new Person("UDO","SUZUKI"); ^ Temp.java:4: ']' がありません。 p[1]=new Person("TAKAAKI","ISHIBASHI"); ^ Temp.java:4: <identifier> がありません。 p[1]=new Person("TAKAAKI","ISHIBASHI"); ^ エラー 4 個 とエラーが出てしまうのですが何が原因か分からないです。。。
>>248 FullnameクラスをTemp.javaファイルに保存しているのが敗因その1。
クラス名とファイル名は一致させること。
>>249 すいません、直したやってみましたが駄目です。。
p[0]=new Person("UDO","SUZUKI"); p[1]=new Person("TAKAAKI","ISHIBASHI"); ここはメソッドの中じゃないとまずいんじゃないか
>>251 解決しました!メソッドの中じゃないと駄目なんすですか。。知らなかったです。ありがとうございました!
253 :
デフォルトの名無しさん :2006/11/27(月) 22:59:43
都内で平日夜間か土日に通えるJAVAのスクールってどんなとこがあるかな? リナックスアカデミーは開講日が合わず断念。 (次は二月〜らしい) 一応初心者レベルは脱したつもりだからちょいとレベル高めの講座とかあるといいんだが。
>>253 高いレベルを目指すならプログラム書いて独学でしょ。
今時、Javaの情報なんてググればいくらでもでてくるし。
というか、スクールでプログラム言語を勉強するという感覚が未だに分からんです。はい。
学術的にということであれば、大学の講座を受講するという手もあるかも。
Javaって言語に特化した授業なんてあるかしらんけど。
256 :
デフォルトの名無しさん :2006/11/27(月) 23:39:25
今勉強しているサンプルプログラムの クラスの中にstatic{}という構文があったんだけど これって何ですか? いつ実行されるんですかね? static{ 〜 〜 } staticでググッてもstatic修飾子の話しかでてこないっす
257 :
デフォルトの名無しさん :2006/11/27(月) 23:44:49
>>256 static イニシャライザ、ですね。
クラスのロード時に実行されます。
258 :
デフォルトの名無しさん :2006/11/27(月) 23:50:28
259 :
デフォルトの名無しさん :2006/11/28(火) 00:00:54
Encodeの為の i18n.jar ってどこから入手するの? J2SDK1.4.13、JRE1.4.13 のlib およびjre\libの中には入っていませんでした。 知ってる方教えてください。
260 :
デフォルトの名無しさん :2006/11/28(火) 00:16:08
連続した数字の4番目と5番目の間に文字を入れることはできますか? 11334567→1133あ4567
261 :
デフォルトの名無しさん :2006/11/28(火) 00:17:05
あい
substring
Javaで実行している環境のネットワークアドレスとブロードキャストアドレスを取得するにはどうすればよいでしょうか?
>>260 new StringBuilder("11334567").insert(4,"あ").toString()
265 :
260 :2006/11/28(火) 01:10:15
ありがとうございます
266 :
前スレ897 :2006/11/28(火) 01:53:40
>>ぴゅあさん 1週間、課題の方をやってみましたがどうも掴めません。 質問があるのですが、アウトプット部分の I: i=0 R2: a[0]=20 R1: min=20 a[0]=20 R: min=20 が、省略されるような形で組みなおせば良いのでしょうか?
UIコンポーネントの生成はUIスレッドで行う
LinuxでXWindowSystemをインストールしていない状態で、swingのGUIを用いてるアプリケーションを動作しようとするとどうなるでしょうか?
269 :
デフォルトの名無しさん :2006/11/28(火) 05:38:59
乱数で0.002以上0.003未満を生成するプログラムの書き方教えてください。
>>269 Math.random()/1000+0.002
>>268 まずやってみてから、その動作が理解できない場合に、動作の詳細を添えて質問することを勧める。
272 :
ぴゅあ :2006/11/28(火) 07:33:28
>>266 mainメソッド内のarrayMin()メソッドの呼び出しのところから
iの値と流れ(if(i>0)による分岐,arrayMin()の再帰呼び出し,return)に注目して
流れを書き出してみれば判ると思いますよ
(ロジックを目で追ってみる)
答えは"if(i>0)"をどうするかにあるんですけどね
適当にやったら"やったらできた"のようになりかねないので
ちゃんと目でロジックを追ってみるのがいいと思います
>組みなおせば良いのでしょうか?
組みなおす必要はないです
iの値とif文(iの値に対して)でどう分岐させるかだけ
答えが出れば、「それだけのことか」みたいなものかも知れませんけど
273 :
ぴゅあ :2006/11/28(火) 08:12:14
>>266 あとarrayMin()メソッドの冒頭で
int n = i - 1;
とかして
>int min = arrayMin(a, i - 1);
はそのままでいいけど
"a[i - 1])"やif文の中のiはnに置き換えて考えてみるのもいいかも
単純なことに思えるかも知れないけど
iとnとは持つ意味が違うので
>>263 そういやブロードキャストアドレスてどうすんだろう・・・
IPは、
for(Enumeration<NetworkInterface> e = NetworkInterface.getNetworkInterfaces();e.hasMoreElements();){
NetworkInterface inf = e.nextElement();
System.out.println("Interface:"+inf.getDisplayName());
for(Enumeration<InetAddress> ips=inf.getInetAddresses();ips.hasMoreElements();){
InetAddress ads =ips.nextElement();
System.out.println("IP:"+ads.getHostAddress());
}
}
で取れそうだけど・・・・
>>263 Mustangだといろいろ便利になってるんだが。
InterfaceAddress#getBroadcast()とか。
とりあえずブロードキャスト投げたかったら255.255.255.255を使うんじゃだめ?
276 :
276 :2006/11/28(火) 20:12:55
くだ質ですがカキコさせていただきます。Java歴1ヶ月とちょっとです。 Javaだけの話じゃなくなってしまうかもしれませんが、現在以下のようなコードを書いています。 void getdata() { byte data[] = new byte[16] data[0] = (byte)0x00; data[1] = (byte)0xFF; data[2] = (byte)0xE2; data[3] = (byte)(AUDIO_VOL[apu.volume1] & 0x3F); data[4] = (byte)0x00; data[5] = (byte)0xFF; data[6] = (byte)0xE2; data[7] = (byte)(0x40 | AUDIO_VOL[apu.volume2] & 0x3F); data[8] = (byte)0x00; data[9] = (byte)0xFF; data[10] = (byte)0xE2; data[11] = (byte)(0x80 | AUDIO_VOL[apu.volume3] & 0x3F); data[12] = (byte)0x00; data[13] = (byte)0xFF; data[14] = (byte)0xE2; data[15] = (byte)(0xC0 | AUDIO_VOL[apu.volume4] & 0x3F); return data; } ↓続き
277 :
276 :2006/11/28(火) 20:13:46
4バイトで1項目なのですが、以下のように場合によって if(apu.volume1_enable) { data[0] = (byte)0x00; data[1] = (byte)0xFF; data[2] = (byte)0xE2; data[3] = (byte)(AUDIO_VOL[apu.volume1] & 0x3F); } 返し値に書き込むかどうかを決定させたいのです。 その場合、data[]は可変長になるのですが、 これを上手く書く事ができません。 ByteArrayOutputStream.toByteArrayでやってみたり、 書き込んだサイズをカウントしておいて、 カウントしたサイズの配列にコピーしたりやってみたのですが、 速度が遅くなってしまいました。どなたか上手い書き方を教えていただけないでしょうか。
>>277 まず、条件判定を全部して何バイト長になるか決定しておくというのは?
そして、書き込みのときは、
インデックスを変数にして i++ とかにしておく。
必要のない4バイトは飛ばされる。
もっとセンスのいい方法ありそうだけど。
279 :
276 :2006/11/28(火) 20:37:42
int datasize = 0; int index = 0; if(apu.volume1_enable) datasize += 4; if(apu.volume2_enable) datasize += 4; if(apu.volume3_enable) datasize += 4; if(apu.volume4_enable) datasize += 4; data[] = new byte[datasize]; if(apu.volume1_enable) { data[index] = (byte)0x00; data[index+1] = (byte)0xFF; data[index+2] = (byte)0xE2; data[index+3] = (byte)(AUDIO_VOL[apu.volume1] & 0x3F); index += 4; } if(apu.volume2_enable) { data[index] = (byte)0x00; . . . という風にも書いてみたのですが、 わざわざサイズのインデックスを用意するのと、 その値の操作がスマートに書けなかったのです・・・。 これ位しか方法がないのならこう書くしかないのでしょうが・・・。
class AutoIndexer{ private int idx; public AutoIndexer(int c){ idx=c; } public int moveIndex(){ return idx++; } } みたいなのを使っている。 英語は苦手。
281 :
278 :2006/11/28(火) 22:30:11
ゴメン想定外のコーディングだ。それは。 if(apu.volume1_enable) { data[index++] = (byte)0x00; data[index++] = (byte)0xFF; data[index++] = (byte)0xE2; data[index++] = (byte)(AUDIO_VOL[apu.volume1] & 0x3F); } だと思った。 スピード追求してるみたいだからベタな書き方だけど。 サイズの計算なくすなら、まずは最大幅幅確保してからという手もありだ。 変数indexが最後には、サイズと一致しているハズだから 最後に byte[] result = new byte[index]; System.arraycopy(data,0,result,0,index); でいいんじゃない? 最大幅分のbyte配列のメモリは余計に使うけど。
282 :
デフォルトの名無しさん :2006/11/28(火) 23:52:39
sleep中のスレッドを正しく破棄するにはどうすればいいのでしょうか? stop()を使っているのですが、時々ThreadDeathが発生して困っています。
interruptして自分で止まるのを待て。 InterruptedExceptionを無視するスレッドだったら安全に止める術はない。
284 :
276 :2006/11/29(水) 00:09:49
>>280 ターゲットが携帯電話(iアプリ)なもので、クラスを使わずにやってみたいのです・・・。
>>281 有難うございます。
事前に容量計算+これでいくことにします。
随分恥ずかしいコードを書いてしまいました。
プログラミング自体初心者なのがバレバレですね。
>サイズの計算なくすなら、まずは最大幅幅確保してからという手もありだ。
>byte[] result = new byte[index];
>System.arraycopy(data,0,result,0,index);
試しにこれもやってみたのですが、
arraycopyで遅くなってしまうようです。
285 :
282 :2006/11/29(水) 00:14:24
main(){ ・・・ TM tm = new TM(); tm.start(); ・・・ if(x == 1){ //tm.stop(); tm.interrpt(); } } class TM extends Thread{ public void run(){ try{ Thread.sleep(100000); a(); }catch(InterruptedException e){} } これで条件成立の場合、破棄されてa()が実行されることはないのでしょうか?
286 :
ぴゅあ :2006/11/29(水) 01:01:30
>>285 まずThread#stop()はDeprecatedですよね
>sleep中のスレッドを
と条件を限定して言っているので問題ないでしょう
287 :
ぴゅあ :2006/11/29(水) 01:04:25
というより、まずやってみればいいわけですが (トレースするためのコードもちゃんと書いて)
リトルエンディアン方式で格納されたバイナリデータをint型変数に読み込みたいのですがどう書けばよいでしょうか。 たとえば0x04 0x03 0x02 0x01というデータを32bitの0x01020304というint型変数にしたいのですが。 DataInputStreamとreadByte()使うのはわかるんですが・・・
5つの入力値を配列に代入して合計値を求めたいのですが、 自分なりに考えた結果、sum=(a[0]+a[1]+a[2]+a[3]+a[4]); としたのですが、 このステートメントが明らかにおかしいと思われます。合計値を求めるには、どうすればいいのでしょうか? import java.util.Scanner; class CalcArray{ public static void main(String args[]){ float a[]=new float[5]; Scanner sc = new Scanner(System.in); for(int i=0;i<5;i++){ System.out.print((i+1) + "つ目の入力値:"); a[i]=sc.nextFloat(); } float max,min,sum,average; max = a[0]; for(int i = 0;i<5;i++){ if(max<a[i]){ max = max + a[i];a[i] = max - a[i];max = max - a[i]; } } min = a[0]; for(int i = 0;i<5;i++){ if(min>a[i]){ min = min + a[i];a[i] = min - a[i];min = min - a[i]; } } sum=(a[0]+a[1]+a[2]+a[3]+a[4]); average=(a[0]+a[1]+a[2]+a[3]+a[4])/5; System.out.println("5つの入力値の最大値は"+max+"です。"); System.out.println("5つの入力値の最小値は"+min+"です。"); System.out.println("5つの入力値の合計は"+sum+"です。"); System.out.println("5つの入力値の平均は"+average+"です。"); }}
>>289 max = max + a[i];a[i] = max - a[i];max = max - a[i];
と
min = min + a[i];a[i] = min - a[i];min = min - a[i];
でa[i]の値を変えているから
最大値最小値の求め方が異常だ
>>290 この方法だと合計値は求められないんでしょうか?
>>288 Integer.reverseBytes(int i)
>>291 最大値最小値を求める部分をとっぱらっちゃえば求まる
sum=(a[0]+a[1]+a[2]+a[3]+a[4]);は明らかにおかしくない
最大値最小値の求め方について再考することを勧める
そんな複雑なことをする必要はないif(){...}の...に書く文はひとつでいいはず
>>293 すいません。ほぼ独学で学んでいるもので、
他の最大値最小値の求め方を教えていただけないでしょうか?
>>294 if(max<a[i]){
max = a[i];
}
if(min>a[i]){
min = a[i];
}
わざわざa[i]に代入して入力データを壊す意義が分からない
ユーザーからの入力を記憶しているただ一つの配列、 更にこの先の計算に必要な配列の内容を書き換えるから 事故が起きる
>>296 ありがとうございます。
今から書き直してみます。
>>292 ありがとうございます。できました。
byte[]に読み込んでByteBuffer使う方法考えてたんですがこんなに簡単にできるんですね。
300 :
デフォルトの名無しさん :2006/11/29(水) 22:29:58
はじめまして宜しくお願いします。 StrutsでWebアプリケーションを作成しているのですが、 多重ログインをさせたくない場合はどのように処理をさせればいいのでしょうか? ログアウト時必ずDBのフラグを倒すと言う処理をしたいのですが。 セッション解放時+タイムアウト時の処理方法を教えてください。 XMLにsession-timeout設定+HttpSessionListenerを実装するクラスの作成 までは何とかわかりましたが、その他のXMLの設定やstruts-configの設定、 アクションクラスと別にHttpSessionListenerを実装するクラスを作らないと ダメでしょうか? HttpSessionListenerを実装するクラスの呼び出し方法が判りません。 わかる方詳しく教えてください。また、参考になるサイトはありませんか? 宜しくお願い致します。
301 :
デフォルトの名無しさん :2006/11/29(水) 22:32:39
011001 111000 110011 っていう二次元配列があったら1の数にあわせて 2 1 3 2 2 っていうのを1次元配列に格納するプログラムを作りたいのですがどうすればいいのでしょう?
ピクロス
ピクロスじゃないんですけど これだけ見ると確かにそんな感じに見えますね(・ω・;) どなたかわかる方ヨロです
304 :
デフォルトの名無しさん :2006/11/29(水) 22:47:14
String line; この中に入っている文字列の1文字目から8文字目や 18文字目から26文字目を抽出する関数を教えてください。
306 :
デフォルトの名無しさん :2006/11/29(水) 22:52:21
>>305 そう思って以下のコーディングを行ったのですが、
シンボルを解決できないといわれます。
シンボル: メソッド substr (int,int)
場所 : java.lang.String の クラス
line2 = line.substr(1,8);
-----------------
String line;
String line2;
//読み込みデータがなくなるまで読み込み
while ((line = br.readLine()) != null) {
//書き込むデータがなくなるまで書き込み
line2 = line.substr(1,8);
bw.write(line2);
bw.newLine();
substring
308 :
デフォルトの名無しさん :2006/11/29(水) 22:56:12
>>307 省略形は不可でしたか。すみません、ありがとうございます。
309 :
デフォルトの名無しさん :2006/11/29(水) 23:05:00
C+みたいにJAVA+って出ないんですか フォームとかいちいち作るの面倒くさいんですけど
>>309 C+何だそれは?C++のパクリ言語か?
>>300 HttpSessionListenerは、web.xmlに登録して、サーブレットコンテナに呼んでもらうもの。
ただ、多重ログイン防止用途だとHttpSessionListenerは使えなかった。
まえやったときは、HttpSessionListener#sessionDestroyed()でログアウト処理をさせようとしたら、
既にセッションが無効になっていて、セッション内のユーザ識別子が取得できなかった。
ただ、Servlet APIには
> Notification that a session is about to be invalidated.
とあるので、コンテナのバグかもしれない(Tomcat 4.1.31)。俺の解釈違いか?
代わりに採った方法は、ユーザ識別子を持たせたオブジェクトに、HttpSessionBindingListenerを実装させるというもの。
このインタフェースを実装したオブジェクトは、セッションへの登録と破棄時にAPI規定のメソッドが呼ばれる。
セッション自体の破棄の時も呼ばれるので、その時にログアウト処理を行うようにした。
>>296 すいません。今度は入力値にマイナスの値を1つでも入れないと、最小値が初期値0になってしまいます。
改善策お願いします。
import java.util.Scanner;
class CalcArray1{
public static void main(String args[]){
float a[]=new float[5];
Scanner sc = new Scanner(System.in);
float max = 0,min = 0,sum,average;
for(int i=0;i<5;i++){
System.out.print((i+1) + "つ目の入力値:");
a[i]=sc.nextFloat();
if(max<a[i]){
max = a[i];
}
if(min>a[i]){
min = a[i];
}
}
sum=(a[0]+a[1]+a[2]+a[3]+a[4]);
average=(a[0]+a[1]+a[2]+a[3]+a[4])/5;
System.out.println("5つの入力値の最大値は"+max+"です。");
System.out.println("5つの入力値の最小値は"+min+"です。");
System.out.println("5つの入力値の合計は"+sum+"です。");
System.out.println("5つの入力値の平均は"+average+"です。");
}
}
>>301 たぶんこんな感じ
改行おかしいのは行数制限のせいだから気にするな
static int[][] num1(int[][] x){
int[][] ret=new int[x.length][(x[0].length+1)/2]; int[] num=new int[x.length]; int n=0;
for(int i=0;i<x.length;i++){ for(int j=0;j<x[0].length;j++){
if(x[i][j]==1) n++;
else if(n!=0){
ret[i][num[i]]=n;
num[i]++;
n=0; } }
if(n!=0){ ret[i][num[i]]=n; num[i]++; n=0; }
int[] a=new int[num[i]];
for(int j=0;j<num[i];j++) a[j]=ret[i][j];
ret[i]=a; }
return ret; }
>>312 maxとminにa[0]を入れるのが一番楽
316 :
デフォルトの名無しさん :2006/11/29(水) 23:59:50
文字列の長さがあるにもかかわらず、以下の範囲オーバーのエラーが出ます。なぜでしょうか。 Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String ind ex out of range: -39 at java.lang.String.substring(Unknown Source) at DeleteCheck.main(DeleteCheck.java:29) -------------------- String line; String line2; //読み込みデータがなくなるまで読み込み while ((line = br.readLine()) != null) { //書き込むデータがなくなるまで書き込み int len = line.length(); System.out.println("文字列sの長さは " + len + " です。"); System.out.println(line); if ( len > 49){ line2 = (line.substring(1,8)+line.substring(40,1)); bw.write(line2); bw.newLine(); }
>>312 あー、初期化のとこまで見てなかったよ
float max = Float.MIN_VALUE,min = Float.MAX_VALUE,sum,average;
Scannerで配列にデータを読み込む前にmin,maxを初期化するのならこうかな
318 :
デフォルトの名無しさん :2006/11/30(木) 00:02:10
4列のcsvファイルに入れる場合で、キーボードから打ち込んだ時に、 test1,test2 と、途中でnullとした場合にエラー処理したいのですが、どうにも上手くできません。 while(check == 0){ InputStreamReader isrAdd = new InputStreamReader(System.in);//キーボードから追加内容読み込み用インスタンス BufferedReader kbwordAdd = new BufferedReader(isrAdd);//キーボードから追加内容読み込み用インスタンス String Addword = kbwordAdd.readLine();//キーボードから1行読み込み File file = new File(filename); // CSVデータファイル if(Addword.equals(null)){ System.out.println("正しく入力して下さい。"); check = 0; } else { BufferedWriter Addwrite = new BufferedWriter(new FileWriter(filename, true)); // 追記モード Addwrite.write(Addword);//キーボードからの内容を新たな行に追加書き込み Addwrite.newLine();//新しい行に書き込み Addwrite.close(); System.out.println("書き込みました。"); check = 1; } わかる方はお願いします。
>>316 1文字目のインデックス番号は0
配列と一緒で1から始まるのではない
320 :
デフォルトの名無しさん :2006/11/30(木) 00:05:59
>>319 ↓このようなことでしょうか?
これでも同じくエラーになります。
line2 = (line.substring(0,8)+line.substring(40,1));
すみません。教えてください。
321 :
317 :2006/11/30(木) 00:06:41
>>312 すまん。
>>317 は間違い
float max = -Float.MAX_VALUE,min = Float.MAX_VALUE,sum,average;
もしくは、
>>314 のいうように、Scannerで読んだあとで
max = min = a[0];
<!--* はじめ *--> <table><tbody><tr><td> <div style="background:#999;margin:10px 0px 0px 10px"> <div style="border:1px solid #000;background:#fff;position:relative;top:-7px;left:-7px;width:480px"> <table cellspacing="0" cellpadding="0"><tbody><tr><td> <div style="padding:7px"> <a href="リンク先URL" target="_top"><img src="バナーのURL" border="0" width="幅(ピクセル)" height="高さ(ピクセル)"></a></div> </td><td style="border-left:1px solid #000;padding:7px;font-size:13px;color:#000;width:100%" onclick="window.open('リンク先URL')" onmouseover="this.style.backgroundColor='#ffbbbb'" onmouseout="this.style.backgroundColor='#fff'" align="center"> *ここにサイト名* <table><tbody><tr><td style="font-size:13px;color:#000"> *ここに紹介* </td></tr></tbody></table> </td></tr></tbody></table></div></div> </td></tr></tbody></table> <!--* おわり *--> このソースで右側のテーブルでマウスオーバーで色を変えるだけで リンクはジャンプしないようにするにはどうしたらいいのでしょうか。
323 :
デフォルトの名無しさん :2006/11/30(木) 00:08:29
>319 これでエラーがなくなりました。 引数2が引数1からの桁数だと思っていたことが原因のようです。 line2 = (line.substring(0,8)+line.substring(40,41));
>>320 substringの第2引数は長さではなく終了インデックス
注意点は、終了インデックスは取り出したい最後の文字ではなく、その次の文字のインデックス
325 :
デフォルトの名無しさん :2006/11/30(木) 00:12:50
>>317 ありがとうございました。おかげ様でできました。
>>314 一応317さんのお陰でできましたが、
その方法でもやってみようと思います。
329 :
317 :2006/11/30(木) 00:18:02
330 :
322 :2006/11/30(木) 00:19:35
>>327 ありがとうございます。板違いである事すらわかりませんでした。
みなさまお目汚しごめんなさい。
>>331 きちんと修正してます。
本当にありがとうございました。
>>328 今見たら
>>289 のソースではちゃんと
>>314 の方法で初期化してるじゃないかw
道理で以前はうまくいくはずだ
ソースを書き換えた時に余計なバグを作りこんだね
>>331 すいません。またまたお聞きしたいのですが、
>>314 案の
max = a[0];
min = a[0];
は、どこに配置すればいいんでしょうか?
float max,min,sum,average; の直後に配置するとやはり、
入力値にマイナスの値を1つでも入れないと、最小値が初期値0になってしまうんですが。
>>335 OKです。できました。ありがとうございました。
こちらのがシンプルなので、この方法で大学に提出したいと思います。
>>301 1と0しかデータにないものとして
int[][] ai = {{0,1,1,0,0,1},{1,1,1,0,0,0},{1,1,0,0,1,1},{0,1,1,1,1,1,0,0,1,1,1,0}};
List<Integer> runList = new ArrayList<Integer>();
for (int i = 0; i < ai.length; i++) {
int runLength = 0;
for (int j = 0; j < ai[i].length; j++) {
if (ai[i][j] == 1) {
++runLength;
} else if (runLength != 0) {
runList.add(runLength);
runLength = 0;
}
}
if (runLength != 0) {
runList.add(runLength);
}
}
int[] runArray = new int[runList.size()];
int i = 0;
for (int n : runList) {
runArray[i++] = n;
}
for (int n : runArray) {
System.out.println(n);
}
338 :
336 :2006/11/30(木) 01:16:23
あれっ?数値変えたらエラー出た。 まあ今日は寝よう。 協力してくれた皆さんどうも。
エグゼキュータブルjarファイルをダブルクリックするだけでコマンドプロンプトが 立ち上あがるようにするにはどうすればよいでしょうか?そこから標準入出力させるようにしたいのですが、、、
340 :
デフォルトの名無しさん :2006/11/30(木) 01:22:12
フィールドの初期化について質問です。 class Unko { private int weight; Unko() { weight = 0; } } とするのと class Unko { private int weight = 0; Unko() { } } とするのは何が違うんでしょうか?
>>340 複数コンストラクタがあるときは違ってくる可能性があるが
340の例だと何も違わない。
>>340 そもそもフィールド値は初期化されるので
private int weight = 0; は無意味
private int weight; でおk (0以外の場合は値代入必要だけど・・・)
343 :
340 :2006/11/30(木) 02:11:39
>>340-341 ありがとうございます。
たしかに複数コンストラクタがある場合は考えなくていけないですね。
それとフィールドはc++と違って勝手に初期化してくれるのを忘れてました。
javaって親切ですよね。
念のためコンパイルしてバイトコードを比べてみたんですが、
生成された中間コードは同一でした。賢いな〜
344 :
デフォルトの名無しさん :2006/11/30(木) 07:15:14
class A{ private int a = 0; A(){ // ★ } } このクラスを使うとして, クラスBからAのコンストラクタを 呼び出した場合変数aを1プラスする, クラスCからAのコンストラクタを 呼び出した場合は何もしない, ということを行いたい場合 ★にはどのような処理が入りますでしょうか? つまり呼び出す側のクラスの識別です.
>>344 そういうのはちゃんと「私は〜です」って名乗る様にしないといけないのでは?
class A{
public A(Object obs){
if(obs instanceof B){
}else if(obs instanceof C){
}}}
みたいな
346 :
デフォルトの名無しさん :2006/11/30(木) 07:45:37
347 :
ぴゅあ :2006/11/30(木) 08:07:42
>>344 >「私は〜です」って名乗る様にしないといけないのでは?
と言っているのが前に続く話なのか・・・見れてないけど
クラスAが新たに作ろうとしているクラスなら
呼び出す側で明示的に+1するかどうかを示すのがいいんじゃないかと思うけど
既に作りあげられたものの中でクラスAが呼ばれている状況を調べたいということだったりするのなら
例えばクラスAのコンストラクタの中で例外を起こしてcatchし
スタックトレースを取って何処から呼ばれたのか解析してみるとか
もっと楽な方法あるのかなぁ?
348 :
デフォルトの名無しさん :2006/11/30(木) 08:33:25
WinMeを使用しているんですが、JavaのJDKをインストールしようとしたら、 「管理者権限のないアカウントでログインしているので、インストールできません」っていう ダイアログが出てきて、インストールできなかったんですが、どうすれば管理者権限のあるアカウントで ログインできるんでしょうか? 自分は中古のPCを買ってきて、最初の設定のまま使っているんですが、電源を入れてBIOSの画面が出た後に WinMeが起動して、まず「ユーザーネーム」と「パスワード」を入力するダイアログが出てきます。 いつも、そこで「キャンセル」ボタンを押すと、デスクトップが表示(マイコンピュータとかゴミ箱とか)されて来るので、 そのままインターネット・エクスプローラーなどのアプリケーションソフトを使っているんですが・・・
>>348 いくら中古でも普通初期設定は最低でもアドミニストレーター権限持つぞ!
再インストールをおすすめする。どんなソフト入れられてるかわからんぞ!
キーロガーとバックドア仕込んだ中古品だったら終了だな
servletにて生成したhtmlにてappletを呼び出し、そのappletから再度servletを呼ぼうとしています。 htmlからappletを <applet>タグ にて呼び出し appletから getAppletContext().showDocument( java.net.URL ) でservletに移動しています。 servletからappletの呼び出しはまったく問題ないのですが、 appletからservletを呼び出す際にsessionが切れてしまいます。 (showDocument(URL)で移動すると cookieを登録できないので JSESSIONID:〜の情報が渡せない) appletから別ページに遷移する際にcookie情報を渡してあげる方法はありませんでしょうか? ヒントだけでもかまいませんのでお願いいたします。
353 :
デフォルトの名無しさん :2006/11/30(木) 16:08:50
SWT(Eclipse RCP)でグラフを作成・表示したいんだけど、やっぱり一番情報あるのはJFreeChartかな? ちなみに作成しようとしているのは (1)レーダーチャート(最低5角形) (2)折れ線グラフ (3)関数曲線 てなトコロです。(3)は「上下する6点をつなぐ自然な曲線が欲しい」という漠然とした要求しかないので、サイン波を六個くっつけてでっち上げようと思っています(苦笑) こーゆーアルゴリズム(つーかクラス)、誰か作ってそうなんですけど検索できませんでした(^^; 3.0からはSWTからでもSwing(=JFreeChart)が使えるらしいのですが、他にグラフ作図ライブラリ(特にSWTとの親和性の高いもの)があれば、情報を頂ければ幸いです。よろしくお願いします。
355 :
354 :2006/11/30(木) 16:29:11
ブリット or2=3
357 :
デフォルトの名無しさん :2006/11/30(木) 18:13:00
Exception inthread"main"java.lang.Error: Do not use javax.swing.JFrame.setLatout() use javax.swing.JFrame.getContentPane().setLayout() instead at javax.swing.JFrame.createRootPaneException(JFrame.java:465) at javax.swing.JFrame.setLayout(JFrame.java:531) at s13.main(s13.java:17) というエラーがでてしまいます。ソースコードを下に書くので どうかご指導お願いします。
358 :
デフォルトの名無しさん :2006/11/30(木) 18:14:28
import javax.swing.*; import java.awt.*; public class s13 { public static void main(String[] args) { // JFrameクラスのインスタンスを作成 JFrame frame = new JFrame( "いろいろのせたアプリケーション"); // レイアウトマネージャ(FlowLayout)のインスタンスを作成 FlowLayout f_layout = new FlowLayout(FlowLayout.CENTER, 5, 5); // コンテナ(フレーム)にレイアウトをセット frame.setLayout(f_layout); // JButtonクラスのインスタンスを作成。 JButton button = new JButton("ボタンです。");
359 :
続き :2006/11/30(木) 18:15:14
// JLabelクラスのインスタンスを作成。 JLabel label = new JLabel("ラベルです"); // JTextFieldクラスのインスタンスを作成 JTextField text = new JTextField("テキストフィールドです。", 15); // フレームにコンポーネントを追加 frame.getContentPane().add(button); frame.getContentPane().add(label); frame.getContentPane().add(text); // フレーム(ウィンドウ)が閉じる際の処理を定義 frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE); // フレームのサイズを設定して表示 frame.setSize(250,100); frame.setVisible(true); } }
>>357-359 > Do not use javax.swing.JFrame.setLatout() use
> javax.swing.JFrame.getContentPane().setLayout() instead
このエラーメッセージの通りだぜ。
362 :
名無し :2006/11/30(木) 18:53:14
スロットを作ってるんですけど画像がそろったときにどうすれば文字(アラート)がでるのか教えてください 多分あとfunction judgeのif文の関数の入れ方だけだと思うんですけど。。 var n=0;var image=new Array(4);function Setimage0(){for(i=0 ; i<4 ; i++){image[i]=new Image(200,150);image[i].src="image"+i+".jpg";}} var m=0;var image=new Array(4);function Setimage1(){for(i=0 ; i<4 ; i++){image[i]=new Image(200,150);image[i].src="image"+i+".jpg";}} var l=0;var image=new Array(4);function Setimage2(){for(i=0 ; i<4 ; i++){image[i]=new Image(200,150);image[i].src="image"+i+".jpg";}} function Scroll0(){time0=setTimeout("Scroll0()",500);document.photo0.src=image[n].src;n++;if(n>=4)n=0;} function Scroll1(){time1=setTimeout("Scroll1()",500);document.photo1.src=image[m].src;m++;if(m>=4)m=0;} function Scroll2(){time2=setTimeout("Scroll2()",500);document.photo2.src=image[l].src;l++;if(l>=4)l=0;} function Stop0(){clearTimeout(time0);} function Stop1(){clearTimeout(time1);} function Stop2(){clearTimeout(time2);} function Judge() {if(( == ) && ( == )){alert("当たり!");}}
363 :
352 :2006/11/30(木) 18:53:59
URLに泣く泣く;JSESSIONID=をつけて動作させることにしました。
お騒がせして申し訳ありませんでした。
>>357 1.5系使えばとりあえずは動きますが
364 :
デフォルトの名無しさん :2006/11/30(木) 19:09:41
整数の演算でオーバフローを起こすことって できないんでしょうか? とても不便です。
Integer.MAX_VALUE + 1 すればオーバーフローが起きるけど、 そーゆー事じゃなくて?
366 :
364 :2006/11/30(木) 19:27:17
>>365 オーバフローで例外が発生してほしいのです。
無理。普通は BigInteger なり BigDecimal なりを使ってオーバーフローしないようにする。 ってか、オーバーフローで例外って何のために必要なんだろ?
368 :
デフォルトの名無しさん :2006/11/30(木) 21:01:25
JAVAでテキストファイルを読み込んでラインソートを行いたいのですが、よいコマンドありましたら教えてください。 ソートキーは、頭から8桁と40桁目から10桁です。 イメージはこんな感じなんですが。。 sort dt(substring(0,8),substring(40,50));
>>368 行単位でStringにして、配列に放り込んで、Arrays#sort(T[] a, Comparator<? super T> c)、
もしくは、Listに放り込んで、Collections#sort(List<T> list, Comparator<? super T> c)、
この場合、TはString、
で、コンパレータcを、頭から8桁と40桁目から10桁をどちらが第1キーでどちらが第2キーか知らないが、
自分の思うような順序付けを返すように実装する。
370 :
デフォルトの名無しさん :2006/11/30(木) 22:08:15
>>369 ありがとうございます。
やってみます。
import java.util.*; import java.io.*; public class LineSort4 { public static void main(String[] args) throws IOException { ArrayList<String> list = new ArrayList<String>(); BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("C:\\target.txt"), "utf-8")); try { for (String line; (line = br.readLine()) != null; list.add(line)); } finally { br.close(); } Collections.sort(list, new LineComparator()); for (String s : list) System.out.println(s); } } class LineComparator implements Comparator<String> { public int compare(String s1, String s2) { int r = s1.substring(0, 4).compareTo(s2.substring(0, 4)); return r != 0 ? r : s1.substring(10, 14).compareTo(s2.substring(10, 14)); } } 作ってみた
おならか?
誤爆
import java.util.*; import java.io.*; public class LineSort3 { public static void main(String[] args) throws IOException { ArrayList<Line> list = new ArrayList<Line>(); BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("C:\\target.txt"), "utf-8")); try { for (String line; (line = br.readLine()) != null; ) list.add(new Line(line)); } finally { br.close(); } Collections.sort(list, new LineComparator()); for (Line line : list) System.out.println(line.line); } } class LineComparator implements Comparator<Line> { public int compare(Line t1, Line t2) { int r = t1.key1.compareTo(t2.key1); return r != 0 ? r : t1.key2.compareTo(t2.key2); } } class Line { public String line; public String key1; public String key2; public Line(String line) { this.line = line; this.key1 = line.substring(0, 4); this.key2 = line.substring(10, 14); } }
376 :
・w・ :2006/11/30(木) 22:42:36
何方かjava言語の初級から中級あたりを学べる無料のサイトって知っている方いますか? 一様gooで検索してみたんですがどれだかわからなかったので情報ください;w;
377 :
353 :2006/11/30(木) 22:43:58
>>354 >>355 どもっす。作表や印刷まで一体になってるのは使いやすそうですね。
縦横の棒グラフや折れ線グラフをパパっと出すには便利そう。
曲線やレーダーチャートが出来るかな……?
ちょっと調べてみますね。
378 :
デフォルトの名無しさん :2006/11/30(木) 22:53:33
宿題丸投げスレからきました。
【 課題 】
マウスをドラッグ中に名前を1文字ずつ適当な間隔を置いてアプレットに表示する。
そしてボタンを用いて表示する文字を変更できるようにせよ。
名前の色変更x4、フォント変更x2、文字サイズ変更x2、表示スピード変更x2、計10個のボタンを作れ。
さらにキーボードからの入力を配列に格納し、キーボードからの文字入力があった際には
名前でなく入力文字を表示していくようpaint等を設定せよ。
なおenterキーの入力は無効、↑↓→←が押下された際には
マウスと同じように表示位置を変更させる仕様とする。
【 補足 】
完成させてコンパイラも通ったのですが、名前を1文字ずつ表示していく部分しか稼動しません。
ボタンもきちんと設定したつもりが反応せず…どこが悪いのでしょうか?
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=28822
379 :
デフォルトの名無しさん :2006/11/30(木) 22:58:06
AメソッドはBメソッドを呼び出した後じゃないと呼び出してはいけない時 BメソッドをAメソッドを呼び出す前に呼び出したとします。 こういう状況を例外クラスを投げたいんですが, 既存クラスにこういう状況の時に投げる例外クラスってありますかね?
>>379 java.lang.IllegalStateException とか。
>>379 java.lang.IllegalStateExceptionとかいいんじゃね?
RuntimeExceptionのサブクラスだし、try catch書かなくていい。
379です IllegalStateExceptionに2票入りましたね。いただきです どーもでした
383 :
ぴゅあ :2006/12/01(金) 00:24:09
>>348 恐らくネットワーク(ドメイン)に参加させて使っていたものなんでしょう
WinMeは殆ど使わなかったし殆ど覚えてないけど"管理者権限"とかなったかどうかは・・・
(調べてる時間はないし…)
パスワードファイルの削除,ネットワーク設定の確認とかすればいいだろうと思うけど
聞くならそれはまずWin関係の方で聞いた方がいいと思います
そのまま何とかして使うよりは
>>350 も言ってるOSの再インストールの方がいいと思いますけど
384 :
tom :2006/12/01(金) 00:27:29
サーブレットの勉強しようと思い、tomcatインストールしたんだが、よく分かりません。 まず、環境変数、pathの設定はしてlocalhost:8080を指定したらとりあえず、tomocatの 画面はでたんだが、そこから一体なにをすればいいのか・・・。
385 :
ぴゅあ :2006/12/01(金) 00:29:36
>>349 ごめん
その更に先まで読んでなかった。。。
386 :
ぴゅあ :2006/12/01(金) 00:44:55
>>384 >そこから一体なにをすればいいのか・・・。
とかいうことを勉強するためにインストールしたんじゃ…?
387 :
デフォルトの名無しさん :2006/12/01(金) 00:45:30
数値計算の途中で、HashMapの入力をしたいのですが、Errorが出てしまいます。 import java.util.HashMap; public class Test{ public static void main(String args[]){ HashMap<String, Double> hashmap = new HashMap<String, Double>(); double d; d = ((Double)hashmap.put(String.valueOf("hoge"), Double.valueOf(1.0D))).doubleValue(); } } 上のコードでコンパイルは出来るのですが、 実行中に以下のエラーメッセージが出てきます。 Exception in thread "main" java.lang.NullPointerException at Test.main(Test.java:6) 実際のプログラムは、HashMap.put()の前後にもっと式が続くのですが、 上のコードの何が悪いのか良く分かりません。 良ければ、何かご助言お願いしますm(__)m Javaのversionは、1.5.0_09-b1です。
>>387 原因はputの戻り値がnullだからだろう。
だがそのソースでputの戻り値をdに入れている意味がわからない。
なんかやりたいことと違ってないか。
参考。javadocより。
> 戻り値:
> 指定されたキーに関連した値。または、キーのマッピングがなかった場合は null。
> 戻り値 null は、HashMap が以前に null と指定されたキーを関連付けていたことを
> 示す場合もある
>>387 hashmapに入れたものをすぐに取り出そうとしているのだろうが、
そのコードではそれは実現しない。
HashMap<String, Double> hashmap = new HashMap<String, Double>();
double d;
hashmap.put(String.valueOf("hoge"), Double.valueOf(1.0D));
d = hashmap.put(String.valueOf("hoge"), Double.valueOf(2.0D)).doubleValue();
System.out.println(d);
これで本当に2が表示されるかどうか確かめてみれば分かる。
JavaでPictBridge扱えるAPIって無いですか? 自作しようにも、個人で規格書取り寄せようとすると5万円かかるらしくて。
391 :
デフォルトの名無しさん :2006/12/01(金) 02:03:41
JDK 5.0 Update 9 with Java EE をダウンロードして、インストールしようとしたんですが、 「Java_ee_sdk-5-windowsが原因でMSVCRT.DLLにエラーが発生しました。 Java_ee_sdk-5-windowsは終了します。問題が解決しない場合はコンピュータを再起動してください。」 っていうメッセージが出てきて、インストールできませんでした・・・ MSVCRT.DLLっていうダイナミックリンクライブラリが何なのか分からなかったので、ググって見たんですが、 どうやら、Visual C で書かれたプログラムを実行するのに必要な、ランタイムライブラリらしいですね WinMeでは、インストールできないんでしょうか?
392 :
デフォルトの名無しさん :2006/12/01(金) 06:47:42
Javaでプログラムの2重起動をチェックする方法はあるのでしょうか? あれば教えてください。 宜しくお願いします。
393 :
392 :2006/12/01(金) 07:21:32
申し訳ありません。 ロックファイルを作成するということで解決することにしました。
>WinMeでは、インストールできないんでしょうか? その可能性は高い
395 :
387 :2006/12/01(金) 10:40:43
>>388 ,
>>389 HashMap.put()の戻り値は、代入前の値になるのですね。
プログラムは書き換えて動くようになりました。
有難うございます。
396 :
デフォルトの名無しさん :2006/12/01(金) 11:27:37
すいません。質問です。 ファイルをコンパイルし、実行しようとすると Exception in thread "main" java.lang NoSuchMethodError: main と出るのですが、どういう意味でしょうか?? どなたか回答お願い致します。
>>396 「そんなメソッドはないよ」と怒られてる
398 :
デフォルトの名無しさん :2006/12/01(金) 12:07:04
http://www.wikiroom.com/java/?path,classpath Q. javac Hello.javaでコンパイルはできたのですが、 java Helloを実行しようとすると
『Exception in thread "main" java.lang.NoSuchMethodError: main』と表示されて実行できません。
A. もし上記のようなエラーがでたときは、mainメソッドが正しく記述されていない可能性があります。
このエラーは、あなたが実行させようとした Hello クラス内に、
publicであり、かつstaticであり、かつ戻り値の型が voidであり、
かつ引数を1つだけとり、かつその唯一の引数の型がStringの配列であり、
かつ、名前が小文字4文字のmainであるようなメソッドが Java 実行環境によって発見できなかった場合に起ります。
以下に、正しい main メソッドを書くためのチェックリストを示します。
mainメソッドに、ちゃんとpublicはついていますか?
mainメソッドに、ちゃんとstaticはついていますか?
mainメソッドの戻り値の型は、ちゃんとvoidに、なっていますか?
mainメソッドの引数は、ちゃんとStringの配列になっていますか?
mainメソッドの名前は、ちゃんと小文字4文字のmainになっていますか?
正しいmainメソッドの例は以下の通りです。
public static void main(String[] args) {
}
正しいmainメソッドのもう一つの例。
public static void main(String[] iAmVeryHappyToday) {
}
399 :
396 :2006/12/01(金) 14:18:22
二進数で 00100111011 11110101001 という数字がある場合ある範囲だけを選択して入れ替える又はNOTをしたいです。 00|100111|011→00|1101010|11 11|110101|001→11|1001110|01 としたい場合はどういう考え方をしたらいいですか? 用途としては2つの数を2点交叉や突然変異を起こす為に使いたいのです。 自分で思いついたのでは数字1個につき配列を与えて0か1を代入させる byte[] b1 = {0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1}; byte[] b2 = {1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1}; for(int i=2; i<8; i++) { temp = b1[i]; b1[i] = b2[i]; b2[i] = temp; } 元の数を2進にするには上から1024,512,256...と引けたら1を入れる、引けないなら0。 2進→10進も逆でやるつもりです。 もしくはInteger.toBinaryString(int i);が使えるようなら有効に使いたいです。 これでは余りにもスマートとは言えない考え方です。 もっとスマートにできるやり方をご存知でしたらご教授いただきたいです。 よろしくお願いします。
401 :
400 :2006/12/01(金) 23:20:34
実際には for(int i=2; i<8; i++) { temp = b1[i]; b1[i] = b2[i]; b2[i] = temp; } の2も8もランダム(Random.nextInt(int i)でもいい)で生成する予定です。 具体的には int num1 = (int)(Math.random()*2048); int num2 = (int)(Math.random()*2048); do { int min = (int)(Math.random()*9+1); int max = (int)(Math.random()*9+1); } while(min>max); byte[] b1 = new byte[11]; if(num1-1024>0) { byte[0]=1; num1-=1024; } else byte[0] = 0; (中略) for(int i=min; i<max; i++) { temp = b1[i]; b1[i] = b2[i]; b2[i] = temp; } のような感じです。 よろしくお願いします。
402 :
デフォルトの名無しさん :2006/12/01(金) 23:25:33
>>394 MeでJAVAの開発環境っていいものありませんか?
JDKがインストールできないとなると・・・困った;
>>400 範囲を選択してNOT がしたいなら
反転したい範囲に 1 が立ってる数との XOR をとればいい。
java.util.BitSet使えるかも。 途中だけ入れ替えるには、 入れ替えたい桁を0、残したい桁を1にしたmask1 入れ替えたい桁を1、残したい桁を0にしたmask2 を用意。 例 b1 = 00|100111|011 b2 = 11|110101|001 mask1 = 11|000000|111 mask2 = 00|111111|000 でもって c1 = (b1 & mask1) | (b2 & mask2) c2 = (b2 & mask1) | (b1 & mask2) かな。 BitSetのandNotとかorとか使ってもできるだろうし、 64(32)ビット以下ならlongやintを直接ビット演算してもいい。
405 :
デフォルトの名無しさん :2006/12/01(金) 23:38:33
ツリーでノード名を取得するのはどうすればいいのでしょうか?
406 :
404 :2006/12/01(金) 23:41:44
すいません。解決しました。 Objectクラスを継承しているのを忘れていました。
407 :
400 :2006/12/01(金) 23:42:02
>>403 凄く参考になりますありがとうございます。
まだ良くわからないのでじっくり考えてみますね。
>>404 まだやっとJava構文がわかり始めたくらいなのでBitSetなんてクラス知りませんでした。
凄く参考になります。
BitSetの使用がどうなっているのか良くわかりませんが自分のやりたいことの場合だと
mask1、mask2の範囲を0<2047にしてやればランダムで入れ替える場所を
セットすることもできそうですね。
少しAPIとにらめっこしてきます。
二人とも本当にありがとうございました。
408 :
406 :2006/12/01(金) 23:43:09
誤爆。。。 上のは405です。
409 :
デフォルトの名無しさん :2006/12/01(金) 23:47:47
410 :
デフォルトの名無しさん :2006/12/01(金) 23:50:20
superは予約語じゃん。じゃん。
>>410 うは…全く知りませんでした^^;
新たに大量のエラーが出てきてしまいましたがとりあえずそこの関連部分のエラーは解消されました。
ありがとうございました。
>>391 ホントにJava EE要るの?Java SEじゃなくて?
もしその違いが分からないなら、多分あなたにはJava EEは要らない。
それなら、「JDK 5.0 Update 10」ってのをダウンロードするといいよ。
リリースノート見ると、Java SE SDKならWindows Meに対応してる様子。
てかJ2EEって参照実装でしょ? JBoss使ってるときSunからEE落とした記憶が無い
J2EEって言葉は標準仕様を指す言葉でしかない。 Java EE SDK は、参照実装でもあり、Sunの製品でもある、 Project Glassfishで作られたOSSライセンスのソフトウェア。 今はServlet2.5に対応しているコンテナが事実上Glassfishしか無いから、 Java EE5の機能をフルに使いたい場合は SunのJava EE SDK(Glassfish)しか選択肢がないことになる。 Tomcat6やそれを含むJBossはまだベータ版だしね。 あ、OracleやSAPがJava EEフル対応の製品だしてたっけ?
415 :
デフォルトの名無しさん :2006/12/02(土) 00:47:36
>>412 >Java SE SDKならWindows Meに対応してる
最初、JAVA SE をDLしたんですが、ダメだったんですよ
それで、EEならUpdate9なんで、Meに対応しているかもって、他のスレで言われたので
DLしたんです・・・でも、インストールできなくて
416 :
400 :2006/12/02(土) 01:10:25
度々すみません。 BitSetの使い方がいまいちわかりません…。 BitSet bit = new BitSet(int nbits);←のnbits-1がインデックスの数とは 配列の数と考えたら言いのでしょうか? 初期値がfalseという事なので適当な値を入れてbit.set(int bitIndex);をしてtrueにしたつもりが System.out.println(bit);しただけじゃ{}としか表示されませんでした。 表示のさせ方が間違ってるのかな? あと違う話ですけど結局扱うのは0か1なのでbooleanでの配列の方がメモリは節約できますか? もちろん軽く動作するって意味です。 それとも考えすぎかな?
417 :
tom :2006/12/02(土) 01:16:45
tomcatをインストールしました。localhost:8080をブラウザから指定すると、tomcatの画面 にはなりました。次に、webappsディレクトリの下にentryというディレクトリを自分なりに つくり、その下にWEB-INFディレクトリを作りました。そして、ブラウザから、localhost:8080/entry/ とやると、HTTPステータス404のエラー画面になってしまいます。どうしてでしょうか? 環境変数はCATALINA_HOMEでPATHは;%CATALINA_HOME%binとしました。 コンソールでもset pahコマンドでpathの確認もしました。 なにか間違ってるのですかね?
一応boolean[]の高機能版と思えば間違いないよ。 BitSetの強力な使い方の一例に「フラグの立って(または降りている)インデックスを イテレートする」というものがある。boolean[]と比べればわかるがかなり速度が違う。 メモリ云々についてはビット演算がどういう類のものか考えればわかるでしょ。
>>417 ディレクトリ名と同じxmlを用意して、中にContextタグを書けば動くんじゃね。
コンストラクタの引数は、最初にビットを何桁用意するかの指定です。 new BitSet(1024)なら、0〜1023(1024-1)桁は最初から使えます。 ただし、必要に応じて自動的に大きさは変わるのであまり気にしなくてよいです。 初期に指定しておけば、その範囲で使う限りは拡張処理の必要がないので、 性能的に得になるというだけです。 BitSetのtoString()は、{ 立ってる, ビットの, 桁, ... } という表記になります。 0桁めと2桁めが立っている4桁のBitSetなら { 0, 2 } setしたならなんか出るはずですけど、出ませんか。 二進数のように表示するには、端から見ていって立ってれば1、立ってなければ 0を書き出すみたいに書く必要があると思います。 桁数はたぶん右から数えると思うので、逆順に出力しないといけないかも。 BitSetは内部的には、必要なビット数 ÷ 64の要素を持ったlong配列を持ってて その該当ビットを立てたり下ろしたりしてるので、メモリ効率はbooleanと大差 ないと思います。
>>419 コンテキストパスがディレクトリ名と同じ場合はコンテキスト設定ファイルは要らないはず。
>>417 WEB-INFの下にweb.xmlは置いた?
404は何が見つからないと言ってる?コンテキスト/アプリそのものが見つからない?
それともファイルが見つからないだけ?
Tomcatが正常に起動してるから、環境変数はOKだよ。
BitSetは64ビット環境になれば更に性能が向上するんだろうな
>>420 凄く丁寧に解説していただきとても感謝しております。
恐らくSystem.out.println(bit);だけで入力していたからだと思います。
bit.toString()としたら表示できるのでしょうね。
本当にありがとうございました。
> その該当ビットを立てたり下ろしたりしてるので、メモリ効率はbooleanと大差 > ないと思います。 booleanは一人で4byte使ってる希ガス
BitSetはゲームパッドを仮想するのに丁度よい。
>>423 あれぇ、PrintStream#println(Object obj)は内部でString.valueOf(obj)を
使う、で、それはobj.toString()の結果を使うので明示的にtoString()を
付けても付けなくても出力は変わらないはずだが。
427 :
デフォルトの名無しさん :2006/12/02(土) 03:48:13
教えてください。 DecimalFormat kingakuFormat new DecimalFormat("###,###,###"); Integer kingaku1,kingaku2; kingaku1 = 12300; kingaku2 = 100; kingakuFormat.format(kingaku1); kingakuFormat.format(kingaku2); 結果 12,300; 100; これを、 12,300; 100; のように桁を右に揃えたいのです。
>>427 よくわかんないんだけど、コンソールに出力するときに右揃えなればいいのかな?
printf関数使ったらどうでしょ。
System.out.printf("%12s\n", kingakuFormat.format(kingaku1));
System.out.printf("%12s\n", kingakuFormat.format(kingaku2));
みたいな
429 :
デフォルトの名無しさん :2006/12/02(土) 04:18:19
>>428 さん
ありがとう
ございますます。
印刷をしたいので、左がはにスペースを加えて
文字列として取り出したいのです。
431 :
デフォルトの名無しさん :2006/12/02(土) 04:30:40
紙に印刷をしたいのです。
432 :
デフォルトの名無しさん :2006/12/02(土) 04:34:30
000,012,300; 000,000,100; はわかるのですが。 0ではなくスペースにしたいのです。
>>432 > 000,012,300;
> 000,000,100;
これは↓になるのか?
, 12,300;
, ,100;
434 :
デフォルトの名無しさん :2006/12/02(土) 04:45:47
>>433 さん
にはなりません。
やりたい事は用紙の指定した位置に
右揃えで3桁ごとにカンマをつけて印刷をしたいのです。
>>432 new DecimalFormat("000,000,000");
にしたときはなるよ、
いやもう既に
>>428 で出来る
説明要求に正確に応えられないのはもう飽きたス
(´д`;)バージョンチガウ?javax.printとか使ってる?
もう現状を包み隠さず申せ
438 :
デフォルトの名無しさん :2006/12/02(土) 05:21:55
>>437 さん
包み隠さず申し上げます。
印刷関係は
Jetbeeというオープンソースのライブラリを使っています。
g.drawString(kingakuFormat.format(kingaku1), 250, 316+ line2*12);
上のここに渡したいのです
kingakuFormat.format(kingaku1)
>>438 String.format("%11s",kingakuFormat.format(kingaku1));
これで、だめかな?
440 :
デフォルトの名無しさん :2006/12/02(土) 06:55:45
>>439 さん
ありがとうございます。
それも、以前やってみたのですが、
正確に右詰ができなかったのです。
桁によって少し左にずれるみたいでした。
>>440 そうかカンマと数字でフォントの大きさが違うのかな。
ゴメン。
443 :
デフォルトの名無しさん :2006/12/02(土) 07:06:36
>>441 さん
ありがとうございます。
C,VB,Delphiだと右詰めは簡単なのですが.....
>>443 ですが、どうした?
適用不可なのかな?
445 :
デフォルトの名無しさん :2006/12/02(土) 07:21:36
>>444 さん
自分の勉強不足を痛感したのです。
javaのことですので必ずできると思います。
みなさんありがとうございます。
>>445 右詰で表示したい文字列の左端 = 右詰で表示したい文字列の右端 - g.getFontMetrics().getStringBounds(右詰で表示したい文字列, g).getWidth()
でも
右詰で表示したい文字列の左端 = 右詰で表示したい文字列の右端 - g.getFontMetrics().stringWidth(右詰で表示したい文字列)
でもどうぞ
パディングなんて無駄なことはいらない
447 :
デフォルトの名無しさん :2006/12/02(土) 07:50:23
>>446 さん
ありがとうございます。
こんなところ迄今の自分ではたどり着ける訳が
ありませんでした。
素直に
>>438 のようにdrawStringで表示するときに文字列の右端の座標で指定したい
って質問すればすぐ回答が得られたと思うよ
449 :
デフォルトの名無しさん :2006/12/02(土) 08:25:38
>>448 さん
このg.drawString(kingakuFormat.format(kingaku1), 250, 316+ line2*12);
は、Jetbeeでオーバライドされています。
ですから、同じ長さの文字列を渡したいのです。
g.drawString(kingakuFormat.format(kingaku1), 250, 316+ line2*12);
450 :
tom :2006/12/02(土) 08:28:17
417です。
tomcatをインストールしました。localhost:8080をブラウザから指定すると、tomcatの画面
にはなりました。次に、webappsディレクトリの下にentryというディレクトリを自分なりに
つくり、その下にWEB-INFディレクトリを作りました。そして、ブラウザから、localhost:8080/entry/
とやると、HTTPステータス404のエラー画面になってしまいます。どうしてでしょうか?
環境変数はCATALINA_HOMEでPATHは;%CATALINA_HOME%binとしました。
コンソールでもset pahコマンドでpathの確認もしました。
なにか間違ってるのですかね?
>>421 エラー画面は、
Type: ステータスレポート メッセージ:/entry/ 説明 :The requested resource (/entry/) is not available.
と出てきています。
どうすればいいんですかね?
drawStringがオーバーライドされてるの? なら、オーバーライド後のメソッドの仕様が分からないことには何とも言えんが、 drawString(String,int,int)の第3引数がオーバーライド後も文字列の左端の座標の指定なら 与えるべき座標は計算できるのでは?
452 :
tom :2006/12/02(土) 08:51:51
450です。 ちなみに、コマンドプロンプトから、cdコマンドを使いentryディレクトリ まではいけます。 助けてください・・・・お願いします。
453 :
デフォルトの名無しさん :2006/12/02(土) 08:59:25
>>451 さん
今まで経験した言語では例えば12文字の長さの文字列
を左の印刷開始位置を指定すれば文字列に空白やカンマが
含まれていても正確に右詰されて印刷できたもですから、
javaでも同じかと思いました。
また、同じ12文字を渡すのに毎回座標を計算しなければならないのは、
なんとも腑に落ちないものでしたので、私の理解が足らないと思い込んで
いました。必ず同じ長さで文字列を整形できるクラスのメッソドが
あるのではないかと。
>>451 GraphicsのdrawStringは抽象メソッドだからオーバーライドされているのは当然
>>453 単に等幅のフォントしか使ってなかっただけじゃないのか
455 :
デフォルトの名無しさん :2006/12/02(土) 09:27:54
>>454 さん
そのようですね。
javaで等幅のフォントを指定する事はできますでしょうか?
456 :
デフォルトの名無しさん :2006/12/02(土) 09:43:33
455です。 javaで等幅のフォントを指定する事はできますでしょうか? 調べました。 Font theFont = new Font("MSP明朝 ", Font.PLAIN, 10)にしてありました。 もう少し調べてみます。
457 :
デフォルトの名無しさん :2006/12/02(土) 09:50:52
456です。 Font theFont2 = new Font("Courier", Font.PLAIN, 10); g.setFont(theFont2); Courierは等幅のフォントですがだめでした。
458 :
デフォルトの名無しさん :2006/12/02(土) 10:05:47
457です。 コンソールでは綺麗に右詰で右に整列しているのですが、 Jetbeeというオープンソースのライブラリの問題なのかな、 そんな事はないとおもいますが。 その他は綺麗に印刷ができているので。 みなさんありがとうございました。
>>450 だから、/WEB-INF/web.xmlは置いたのか?って聞いてんだよ。
環境変数はOKだとも言ってんだろ?
同じこと何度も書くな。うざい。
JetWriter jw = new JetWriter(true, false); if (jw.jetPrintDialog()) { jw.jetOpenReport(); Graphics2D g = jw.jetGetGraphics2D(); g.drawString("JetBee Sample 1 Report", (int)(400 - g.getFontMetrics().getStringBounds("JetBee Sample 1 Report", g).getWidth()), 150); g.drawString(" 2,33 , 45t", (int)(400 - g.getFontMetrics().getStringBounds(" 2,33 , 45t", g).getWidth()), 180); g.drawString("mogmogu a,,,,...", (int)(400 - g.getFontMetrics().getStringBounds("mogmogu a,,,,...", g).getWidth()), 210); g.drawLine(400, 100, 400, 250); jw.jetCloseReport(); } 印刷したけど右に揃ってるぜ ライブラリが悪いんじゃなくてお前の使い方が悪いだけだ
462 :
デフォルトの名無しさん :2006/12/02(土) 10:28:46
>>446 さん
に教えてもらった
g.getFontMetrics().stringWidth(s)で長さをしらべてみました。
System.out.println(s +" "+ s.length()+" "+g.getFontMetrics().stringWidth(s));
12,090 11 44
300 11 39
13,460 11 44
9,620 11 41
300 11 39
13,180 11 44
9,425 11 41
300 11 39
20,690 11 44
14,755 11 44
300 11 39
11は文字の長さです。
右がg.getFontMetrics().stringWidth(s)です。
このへんかな。
Font theFont2 = new Font("Courier", Font.PLAIN, 10);
g.setFont(theFont2);
等幅フォントのCourierです。
464 :
デフォルトの名無しさん :2006/12/02(土) 10:35:59
>>461 さん
ありがとうございます。
そうですか、もう少し落ち着いて良く
調べてみます。
>>461 そのソース見るとそのライブラリはGraphics2Dの実装返すみたいだから、
drawString(String s, int x, int y)を使うよりも、
drawString(String s, float x, float y)を使った方がさらに正確かも。
466 :
デフォルトの名無しさん :2006/12/02(土) 11:00:56
450です。
>>460 WEB-INFディレクトリにweb.xmlはおいていません。
>>466 置けよ。必須なんだから。動くわけないだろ。
言われたこと全部確認せずに何度も同じことあちこちにコピペするなよ。
うざい。
CourierじゃなくてMonospaced指定してみたら?
469 :
デフォルトの名無しさん :2006/12/02(土) 11:24:19
>>468 さん
ありがとうございます。
おかげさまで希望通りいきました。
13,460 11 55
9,620 11 55
300 11 55
13,180 11 55
9,425 11 55
300 11 55
20,690 11 55
14,755 11 55
300 11 55
せっかく細かく位置を調整できるってのに 右揃えするためにフォントを替えるなんてありえんだろ カンマが幅広すぎて格好悪いことこの上ねえ コンソールに出力するのとはわけが違う
471 :
デフォルトの名無しさん :2006/12/02(土) 11:37:16
472 :
471 :2006/12/02(土) 11:39:13
474 :
デフォルトの名無しさん :2006/12/02(土) 11:45:36
>>470 さん
そうですね。
今回は大変収穫がありました。
細かく位置を調整する方法も教えていただき。
>>471 俺アプレットってわからないんだけど再起動するとボタンが破綻するのは仕様?笑
俺の環境だと色やフォントが変わる以前にY A M A D Aの一文字すら表示されないぞ?
476 :
471 :2006/12/02(土) 12:08:51
>>473 それも失敗したやつです。
削除できたらいいのですがここは上げっぱなしのようで…orz
>>475 環境によるのかもしれません。。。
書いた仕様に対してどこがおかしいのか分かりますでしょうか?
下手にコンパイラが通ってしまうためここから進みませんorz
>>476 とりあえず俺が思ったのはアプレットって大きなCanvasなの?
新しくextends Canvasでクラス作ってみたけどだめだったから
paint(Graphics g)のところが何かおかしいんじゃないかと…。
見えてないのかとsetVisible(true);なりやってみたけど出てこないからやっぱり書けてないんじゃないかな…。
俺携帯の開発しかまともにやったこと無いからJ2MEしかわからなくて力になれなくてすまん。
まぁ暇だから俺も一緒に考えてみるよ笑
478 :
477 :2006/12/02(土) 12:20:40
>>476 とりあえずひとつわかった事はxの座標がおかしくない?
200だから画面外に描画されてるっぽい。
>>476 あと
class MyButtonAdapter implements ActionListener {
の
public void actionPerformed(ActionEvent e){
}
の最後にd.repaint();入れたらボタン押すごとに新しい文字が出るようにはなった。
やりたいのはこういうことじゃなかったらどうしようwwww
力不足ですまんねー。
480 :
471 :2006/12/02(土) 12:35:13
>アプレットって大きなCanvasなの? >200だから画面外に描画されてるっぽい すみません、学習が足りずCanvasの意味が分かりませんorz 私の環境ではアプレットは200より十分大きなサイズをhtmlファイル内で記述していました。 >d.repaint();入れたらボタン押すごとに新しい文字が出るようにはなった。 >やりたいのはこういうことじゃなかったらどうしようwwww いえいえ、ボタンが反応しただけでも進歩しています。 あくまでマウスドラッグ時のmouseDragged()に反応して一定間隔で描画したいのですが、 ボタンが無反応なんですよねorz
initメソッド内 ×Button button1 = new Button("Black"); ○button1 = new Button("Black");
>>480 俺GUIに弱いから曖昧だけどCanvasクラスを利用して描画してるのだと捕らえている。
少なくとも携帯アプリではCanvasを使って描画だったから。
自分はブラウザじゃなくてアプレットビュワーですので画面外なんですねw
ボタンの方は恐らく条件判定が間違っているのだと思う。
if(e.equals(d.button1)) {}とか
if(e.getSource().equals(d.button1)) {}にしても無理だった。
誰かエロい人に聞いてくれ。
ちなみにif節を外したら一定の動作だけどちゃんと動いてくれたからな。
>>481 さんの言うように新しいオブジェクトだから受けれて無いだけかも?
もっかい見てこよう。
484 :
ぴゅあ :2006/12/02(土) 14:15:27
>>416 BitSetの扱うものがbooleanとされているのはなんでだろう…と思うところもありますが、BitSetは置いといて先にビット,ビット操作について理解してみるのがいいように思います
>>400 の話で
>byte[] b1 = {0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1};
で扱おうとするとかならBitSetでもいいたろうかとも思うけど(byteはbooleanに置き換えられた方がいいような気もするけど)
続くコードもBitSetのメソッドに置き換わるくらいで(置き換わることを望んでいるかどうかですけど)
>二進数で
>00100111011
とか考えるなら、
>>403 らが言ってるようなところとかの方がいいような、BitSetではあまり適さないようにも思えたりします
因みに、かつてビット(0/1)と今で言うbooleanがごっちゃに扱われていたのを明確化されたのがbooleanで、それを逆行してもいいならそれでもいいかと思うけど
>それとも考えすぎかな?
そうじゃないかと思います
(byteと比べて…ということでもあるのだろうと思いますけど)true/falseは数値ではないこと,booleanは実装依存ということになっているのでは?
2進数として扱う(扱える)ことを想定していてビット,ビット操作等が理解できているなら、BitSetよりビット操作(ビット演算とかもある)の方がいいような気もするし、BitSetに変えても書くコード量が減るより増えるようなことがあったりしそうな気がしたり・・・
また、BitSetという名前もついているけど(これはこじ付けにもなるのかな?)
java.util.Setは実装されてないけど、Set系とかのような意識として扱うとかなら、ビット操作とかよりBitSetの方がよかったりするのかも?(処理の中でビット数が不定とか2進数として扱うのに非常に多いとか)
ガンダムSEED
486 :
ぴゅあ :2006/12/02(土) 15:05:48
>>480 まとめにしかならないけど
button1フィールドを宣言しているのにinitメソッドでローカル変数button1に格納している(
>>481 )
(MyButtonAdapter等で見ているのはフィールド)
MyButtonAdapter#actionPerformedでイベントを受け取る(またイベントからの判断)のはやったけど
paint(repaint)が必要であることをAppletに伝えられてない(
>>479 )
あと、先の話になるのでもあるでしょうけど
(ブラウザだと問題ないのだろうと思うけど)
Applet#initメソッドでaddしたものをApplet#destroyメソッドでremoveしたりするといいのかも
487 :
ぴゅあ :2006/12/02(土) 15:12:46
>>476 言うまでもないことだろうけど
>下手にコンパイラが通ってしまう
コンパイラは構文とか足りないものくらいまでは面倒見てくれるけど
書いたロジックまでは見てくれないから仕方ない
ロジックは自分で考えなきゃ
そこ、ぼやいても仕様がない
488 :
デフォルトの名無しさん :2006/12/02(土) 15:54:40
サーブレットのコンパイルが通りません。シンボルが解決できませんと8個ぐらい エラーがでてきます。クラスパスをコンソールから調べたところ、 CLASSPATH="C:TOMCAT5_5\common\lib\servlet-api.jar"と表示されました。 何か、クラスパスの設定が間違っているのですかね?
490 :
デフォルトの名無しさん :2006/12/02(土) 16:06:38
488です。
>>489 C:¥にしてみてもダメでした・・・。
何をC:¥にしたの?
492 :
デフォルトの名無しさん :2006/12/02(土) 16:18:42
493 :
デフォルトの名無しさん :2006/12/02(土) 16:26:09
>491 環境変数の値です。
494 :
ぴゅあ :2006/12/02(土) 16:31:11
>>488 デフォルトならC:\TOMCAT5_5にインストールされるのではないんじゃないの?
>>493 \(^o^)/ オワタ
C:\>set (enter)
COMPUTERNAME=C:¥
ComSpec=C:¥
HOMEDRIVE=C:¥
HOMEPATH=C:¥
LOGONSERVER=C:¥
Path=C:¥
PATHEXT=C:¥
...
\(^o^)/ ナンテ コッタイ
496 :
ぴゅあ :2006/12/02(土) 16:35:54
あ でも"TOMCAT5_5"と書いているところを見ると自分でインストール先指定したのかな。。。
で、
>>490 の後でもエラーの内容も変わらず?
それらのエラーメッセージ挙げてみてもいいのかも?
>クラスパスをコンソールから調べたところ
のところもレスするには微妙に自信なかったりしますけど…
497 :
ぴゅあ :2006/12/02(土) 16:37:32
もともとのアドバイスは、 CLASSPATH=C:TOMCAT... を CLASSPATH=C:¥TOMCAT... にしろ、という話だったと思うのだが、まさか CLASSPATH=C:¥ にしちゃったの?
499 :
デフォルトの名無しさん :2006/12/02(土) 16:48:26
>>ぴゅあさんへ エラーメッセージは、シンボルが解決できませんと表示されています。エラーは全部で6個です。 HttpServletRequestやHttpServletResponseのところに^がでています。 インストール先はC:\Program Files\Apache Software Foundation\Tomcat 5.5になっていたので インストールするときにProgram Files\Apache Software Foundation\をけしました。
500 :
デフォルトの名無しさん :2006/12/02(土) 16:52:24
>>498 CLASSPATH=C:\TOMCAT にちゃんとしましたよ。さすがにC:\だけにはしていません。
私の書き方が悪かったです。すみません。
501 :
ぴゅあ :2006/12/02(土) 16:53:01
>>499 (ここんとこ触ってないのでCLASSPATHに必要だったかどうかとか定かではないですが)
その消したのを消さないままで書けばたぶん解決するんだろうと思いますよ
どうでもいい質問なんですけどぴゅあさんはプログラマをやってらっしゃるのですか? いつも凄く為になる解説をしていただけるので気になっていました。
503 :
ぴゅあ :2006/12/02(土) 17:43:09
>>502 ここ1,2ヶ月はずっと断り続けていたSE業を押しに負けて引き受けてしまったので
今のところプログラマではないですが(春には戻ってるだろうけど)
なので当面はたまに遊びだけ
どうでもいい質問とかいうのに引っ掛けて(?)どうでもいいような話も加えておけば
プログラマだからというわけでもないと思うけど
ただ、プログラマ(仕事)という意味合いでも解る人が増えてくれれば
仕事としての面では、会社も売上率が上がるだろうし
それに伴ってプログラマとかの給料とかももっと上がったりすることもあるんだろうし
それより、解る人がもっと増えてくれれば
自分自身にとっても仕事も楽になるし
更にもっと色んな仕事(プログラムを書くとか)にも触れることができるようになるだろうなぁ
ってとこ?
別に「凄く為になる解説」と言ってもその僅かな部分しか伝えられないし
仮にそれによってその相手が伸びてきたとしても
そうそう追いつけるものでもないだろうし(追いつかれるかどうかとかはどうでもいいことだけど)
もし追いつかれてしまうようなら、自分がもっと勉強すればいいだけのことですしね
それより、質問に答えようと(課題を消化しようとするようなもの?)考えることが
質問者側には単に答えているだけのように見えてそうで、自身の知り得ていないことを知る機会になるかも
と思っているのかも
>502 どうでもいい質問は通りすがりの俺が答えましょう ぴゅあさんは風水師です。 鬼門の方角にJAVA_HOMEを設定すると運気があがります。
505 :
ぴゅあ :2006/12/02(土) 17:57:26
>>504 >ぴゅあさんは風水師です。
>鬼門の方角にJAVA_HOMEを設定すると運気があがります。
意味解らんし。。。(−−;
てか、マジでそんな話あったら
あちしには難し過ぎて理解できんかも
(かも…じゃなくて、できん(汗))
506 :
デフォルトの名無しさん :2006/12/02(土) 18:04:42
ぴゅあタン(;´Д`)ハアハア
ぴゅあってプログラムの知識はあるけど 文章を書く能力はそんなに無いよね 全体的に読みにくい
508 :
デフォルトの名無しさん :2006/12/02(土) 18:21:59
>>ぴゅあさん classpath解決できましたよ!!ありがとうございました!!コンパイルも無事できました!! 本当にありがとうございました!!
509 :
デフォルトの名無しさん :2006/12/02(土) 19:24:05
classpathは解決できたのに・・・・ブラウザから指定できない・・・ 私の場合、ディレクトリはwebappsの下にchapter03-3というディレクトリ を作り、その下にWEB-INFを作り、そしてweb.xmlをおきました。そして WEB-INFのしたにclassesディレクトリを作りました。 ブラウザからlocalhost:8080/chapter03-3/Helloと指定すると、エラー画面 になってしまいます。説明 The requested resource (/chapter03-3/Hello) is not available. というものも表示されています。なぜでしょう? web.xmlはこんな感じです。 - <servlet> <servlet-name>mySample</servlet-name> <servlet-class>Sample</servlet-class> </servlet> - <servlet-mapping> <servlet-name>mySample</servlet-name> <url-pattern>/Hello</url-pattern> </servlet-mapping> </web-app>
>>509 Servletはデフォルトパッケージで作るな。
511 :
デフォルトの名無しさん :2006/12/02(土) 20:22:45
>>510 509です。どういうことでしょう?ちょっと分かりません。テキストを写して
書いただけなんで・・・。
そもそもweb.xmlは、自分でメモ帳などで書くのですか?どうやって作るもの
なのでしょうか?
>>509 釣られてあげようではないか。
classesフォルダの直下にSample.classを置くと幸せになれるよ
Sample.classはいわゆるサーブレットってやつでつよ。
「サーブレット」がなんなのかびみょーなら
ぐぐると易しく解説してくれてるサイトがいぱーい引っかかりますよ。
513 :
デフォルトの名無しさん :2006/12/02(土) 20:33:16
>>512 一応classesフォルダの直下においてあるんですけど。それでもダメです・・
>>513 だから、デフォルトパッケージで作るなって。
パッケージを知らないのなら、
Servlet以前に入門書でJavaの基礎から勉強し直した方がよい。
515 :
デフォルトの名無しさん :2006/12/02(土) 20:58:45
>>514 パケージ作りました。パッケージ文も追加してコンパイルいたのですが、やはり
ダメでした。
classes以下では、javaのパッケージの考え方が使われているのは知っていたのですが、
テキストなどには、すべて、デフォルトパッケージでサンプルなどがあるもので・・・。
>>515 で、コンパイルされたclassファイルは
パッケージ階層と同じディレクトリ階層を作って、そこに入れた?
それから、web.xmlのクラス名の指定も完全限定名にしたの?
517 :
デフォルトの名無しさん :2006/12/02(土) 21:37:48
>>516 別にデフォルトパッケージでも大丈夫だろ?なんでパッケージにこだわってんの?
第一、ここは初心者が質問しに来るところだぜ。第一、サーブレットの最初の方から
パッケージなんてそんなにでてこない。本によっては全部デフォルトパッケージで
サンプル作ってるやつだってある訳だし。質問見ると、とにかくブラウザに表示したい
訳だろし。パッケージパッケージ言ってないで質問の意図分かってやれよ。
アプレットって過去の遺物なんでしょうか。 アプレットみたいなやつで最近はやりのやり方があったら教えてください。
>>509 そのままだと、コンテキストのデプロイに失敗しているのかそれ以外か判断付かないね。
webapps/chapter03-3/hoge.html を作成し、適当なHTMLを記述してみて。
http://localhost:8080/chapter03-3/hoge.html をブラウザで表示できないなら、
コンテキストのデプロイに失敗している。logs フォルダに何かログがあるはずなので、そこを見てみよう。
hoge.htmlが見えたなら、他の原因かな。ちょっと思いつかない。
とりあえずログ見てみよう。
520 :
デフォルトの名無しさん :2006/12/02(土) 21:57:39
>>509 俺から見ると別に問題はなさそうなんだが・・・。単純にブラウザから
の指定の仕方、例えば、スペルミスとかじゃないのかな?
>>516 あんまり初心者いじめんなよ。あなたも最初からすぐに理解してできたわけじゃないでしょ?
自分が分からない立場だったらどうよ?混乱するだけだろ?
>>515 またまた釣られてみました。
509で書かれたweb.xmlを見る限り、先頭に<web-app>が抜けてるよぉ。
できればSample.classのソースコードとweb.xmlの詳細を載せてもらえると、なんかわかるかも
無名パッケージはあまり推奨されてないし、 特にJSPでは、Javaの仕様の関係で無名パッケージのクラスが使えないからね。 ま、サーブレット単体では動かなくなることはないんだけど。 実際Tomcat5.5付属のサンプルなんか無名パッケージに属してる。
>>517 デフォルトパッケージで動かしてみてから言えよ。
JSPを使ったときに、デフォルトパッケージではまるんだよなぁ・・・
525 :
デフォルトの名無しさん :2006/12/02(土) 22:29:53
>>521 import javax.servlet.http.*;
import javax.servlet.*;
import java.io.IOException;
import java.io.PrintWriter;
public class Sample extends HttpServlet {
public void doGet( HttpServletRequest req,
HttpServletResponse res )
throws ServletException, IOException {
res.setContentType( "text/html; charset=Shift_JIS" );
PrintWriter out = res.getWriter();
out.println( "<html>" );
out.println( "<head>" );
out.println( "<title>Sample</title>" );
out.println( "</head>" );
out.println( "<body>" );
out.println( "HelloWorld!" );
out.println( "</body>" );
out.println( "</html>" );
}
}
526 :
デフォルトの名無しさん :2006/12/02(土) 22:30:42
- <web-app とか - <servlet> とか - <servlet-mapping> とか。 先頭に"-"がなぜ付いている? コンテナ起動時に何かエラーが出てないかい? > res.setContentType( "text/html; charset=Shift_JIS" ); 相当古い本を使っているか、サンプルがマズい本を使っているね。 Windows環境なら res.setContentType( "text/html; charset=Windows-31J" ); がおすすめ。
528 :
デフォルトの名無しさん :2006/12/02(土) 22:48:02
>>527 サンプルがまずいんですか・・・
-<web-app よくわかりませんが"-"がついています。
コンテナ起動時にはとくに何もおきていないです。
コンテナ起動時に起きるエラーといとどういうものが考えられますか?
>>527 IE6で開いたのをコピペしたんじゃないか?
>>528 要素の前に付いている"-"は全部取ろう。
>コンテナ起動時に起きるエラーといとどういうものが考えられますか?
parse error とか出てない?
"-"なんて付いているから、web.xmlの読み込みに失敗しそう。
531 :
デフォルトの名無しさん :2006/12/02(土) 23:26:52
>>530 parse error というものは出ていないです。"-"は消します。
web.xmlというのはメモ帳で自分で作成するのですか?
それとも、どっかからコピーしてきて少しだけ直すもんなんですか?
とりあえず、今日はもうテキスト読んで考えてみます。
色々とアドバイスありがとうございました。またよろしくお願いします。
532 :
デフォルトの名無しさん :2006/12/03(日) 00:19:47
質問させてください。 String型やint型をInteger型に変換したいのですが、 new Integer(String a)などとインスタンス生成すればできますよね。 しかし、ループのなかで変換をを行いたい場合、 インスタンス生成以外の方法で変換をかけることはできないでしょうか?
> インスタンス生成以外の方法で変換をかけることはできないでしょうか? 基本的に無理。 ループまわす回数や数値の範囲によっては、 インスタンスプール使うって手もあるけど。
534 :
532 :2006/12/03(日) 01:05:46
>>533 回答ありがとうございます。
たとえば無茶ですが、以下のように生成したとしても
制御する方法があるということですか。
for(int i=0 : i<100 ; i++){
new Integer(a[i]);
}
インスタンスループについて調べてみましたが
なかなか難しい・・。
>>534 Javaのバージョン何使ってる?
5.0使ってるならInteger#valueOf使いなさいな
内部で配列にキャッシュしてるから。
Stringの場合、Mapでキャッシュするのが一般的だが
生成される相手がIntegerならMap#getのコストやString#equalのコストのが高くつくかもね
Java使ってる時点で何やっても高コストC言語で作りなさい
フィッシングを謳うコンプレックスマンがまた登場しました
538 :
ぴゅあ :2006/12/03(日) 04:37:34
>>532 何故そうしたいと思ったのかが判らないところですけど
書くコードとしてはnew Integer(...)としたくないというところなんでしょうか
Integerが内部に持つ値を直接置き換える手段はなく
例えdecode,valueOfメソッドを使って見た目はnewしてないように見えるコードにしても結局内部でnewしてます
(5.0のvalueOf(int)でキャッシュを持っていると言っても高々-127〜+128程度の範囲で予めnew Integer()してるだけだし)
intについては1.4までだとnew Integer(int)しか手段がないみたいです
そんなことやってくれるものが他にあるか?と言っても、Integerと決めた時点で内部では毎回newするしかないし
素直にnewするコードを書くのがいいんじゃないかと思いますけど
どうしても見た目にnewしたくないのなら、そういうクラスを作るのが早いんじゃないでしょうか(1.4までの場合)
見た目だけにしかならないと思うし、Integerとしては見えなくなるのは嫌だったりしないのか?とか思ったりもするけど
無駄な努力をしようとしているようにも思えてしまったりですけど
もっと違うことを求めていたりするんでしょうか
539 :
デフォルトの名無しさん :2006/12/03(日) 10:29:27
昨日に引き続き質問させてもらいます。 今、web.xmlのことで悩んでいるのですが、メモ帳で中身を書いたら、中身が消えていました。 そもそもweb.xmlというものは0から自分で書くものなのですか?それとも、コピーして書き換える 程度なのですか?書き換える(編集)する場合は、どうすればよいのでしょう?
540 :
デフォルトの名無しさん :2006/12/03(日) 10:31:53
539です。 web.xmlの中身はこんな感じになっちゃっていました。どうしてでしょうか? The XML page cannot be displayed Cannot view XML input using XSL style sheet. Please correct the error and then click the Refresh button, or try again later. -------------------------------------------------------------------------------- End tag 'servlet-name' does not match the start tag 'url-pattern'. Error processing resource 'file:///C:/Tomcat 5.5/webapps... <url-pattern>/HellohtmlServlet</servlet-name> ----------------------------------^
>>539 >そもそもweb.xmlというものは0から自分で書くものなのですか?それとも、コピーして書き換える程度なのですか?
どちらでもお好きなように。最終的に正しい書式になっていればOKです。
メモ帳でも、他のテキストエディタでもお好きなのを使ってください。
で、消えちゃったと言っているのは、消えたのではなく
内容が間違っているのでIEで表示できていないだけでしょう。
「<url-pattern>/HellohtmlServlet</servlet-name>」
じゃなくて
「<url-pattern>/HellohtmlServlet</url-pattern>」
じゃないの?
XMLの書式は(HTMLも基本的に同じ)開始と終了の要素名が一致していないとダメ。
542 :
デフォルトの名無しさん :2006/12/03(日) 11:12:40
>>541 ありがとうございます。もう一度書いてみます。
543 :
デフォルトの名無しさん :2006/12/03(日) 11:19:49
一見して2行目の先頭がオカシイ。
545 :
デフォルトの名無しさん :2006/12/03(日) 11:41:35
>>544 もしかして”-”ですか?なんかいつもついているんですよね?
>>545 それは、あなたがいつも付けているから。
IEで開くのはやめよう。
いつもメモ帳やテキストエディタで開こう。
547 :
デフォルトの名無しさん :2006/12/03(日) 11:55:47
>>546 ”-”消してみました。でもダメでした・・・。
web.xmlを書くときはまず最初にconfディレクトリにある大元のweb.xmlをメモ帳
などで開き、必要なところだけコピーして直せばいいんですよね?そんで、WEB-INF
の中においておけば。大元を開くと、なんかすご〜くいっぱい書いてあるので、どれを
コピーしたらいいのか・・・・。
後、web.xmlをWEB-INFの中に作って、web.xmlをダブルクリックで開くと、いつも先ほど
の(540)記述した画面になっているのですが、confにある大元のweb.xml以外はIEで
見ることはできないのでしょうか?
>>547 confのweb.xmlをコピーして編集するぐらいなら
Tomcatのwebappsディレクトリにあるサンプルから
コピーしてきて編集した方がいいかと。
言うとおり、すごーくたくさんあって大変だから。
まさか、confのweb.xmlは変更してないよね?
IEで見られないのは、書式が間違っている可能性が高いな。
正しく書いてあればIEで見られるはず。
549 :
デフォルトの名無しさん :2006/12/03(日) 12:19:04
>>548 了解しました。アドバイスありがとうございます!
confのweb.xmlにはさすがにヤバイ気がして手をつけていません。
551 :
デフォルトの名無しさん :2006/12/03(日) 13:01:20
すいません、JARファイルを作成してるのですが 画像のパスが何故か絶対パスで取得しているみたいで 元の画像を元のフォルダから別のところに移すとJARファイルを実行しても画像が表示されなくなります プログラム内の画像の指定は ./image/aaa.png って感じで指定しているし画像もJARファイルに入っています 何ででしょうか
>>503 ドン亀レスなんですがぴゅあさんは凄い方なのですね。
元々はプログラマに腰を据えていたらSEにって話が来たのですかね?
Javaメインのプログラマさんですかね?
もし自分がPGになるのならぴゅあさんみたいな方の下につきたいですね。(PGとしてもSEとしても。)
きっとこのままだと自分もPGになると思うのでその節はよろしくお願いしますね。
>それより、質問に答えようと(課題を消化しようとするようなもの?)考えることが
質問者側には単に答えているだけのように見えてそうで、自身の知り得ていないことを知る機会になるかも
と思っているのかも
というのには同意です。
自分も初心者にもかかわらず宿題スレを見て考えて見たりしていますので。
やっぱりぴゅあさんは凄い方ですね。
誉め過ぎですか?笑
553 :
デフォルトの名無しさん :2006/12/03(日) 15:44:34
サーブレットでパッケージがあるときのコンパイルってどうすればいいのですか? デフォルトパッケージの時のコンパイルは、自分の場合、ファイルを作ったディレクトリ までcdコマンドで移動して、javac classpath・・(省略)・・クラス名.javaでコンパイルしています。 クラス名の前に何かつけるのですか?
>>553 統合環境を導入するまでもないのならmakeツールを使えば楽ができるよ
個人的にはAntがおすすめ
>>551 画像の取得の仕方を書いていないのではっきりとは言えないが、
画像をStringでファイル名として指定しているのならjarの中のリソースを見つけることはできない。
getResource等でリソースとして検索してそのURLを画像の取得に使う。
もし、そうしているのなら、リソース名の大文字小文字の違いをみてみる。
jarの中では大文字と小文字は区別されるので、
Windowsのようにこれを区別しないファイルシステムではうまくいっても、
jarに入れた途端うまく見つけられなくなる。
556 :
ななし :2006/12/03(日) 17:08:52
557 :
デフォルトの名無しさん :2006/12/03(日) 17:13:03
>>554 どういうことでしょう?makeツールというものは初めて聞きました。
ま〜楽にコンパイルできなくてもいいんで、クラス名の前に何か追加する
ような方法でもいいです。とりあえず、コンパイルできれば。
558 :
デフォルトの名無しさん :2006/12/03(日) 17:18:27
class Test { void method(int a, int b){ a +=10; b=a++; System.out.println("a="+a+"b="+b); } なんでa=11 b=10になるのですか? そもそもa +=10ってのは、a=a+10それともa=1+10のことですか?
559 :
ぴゅあ :2006/12/03(日) 17:25:47
>>552 >もし自分がPGになるのならぴゅあさんみたいな方の下につきたいですね。
それがいいかことなのかどうかは判らんですけどね。。。(あと略)
ああ あと別にJavaメインというわけではないです
多い感があるのは単に時代の流れ?(Javaはなるべく避けて通っているけど…(汗))
>>554 別に突っ込みいれるほどのことでもないと思うけど
この世界でmakeツールとはあまり言わないような気もするけど…
どうなのかな
>>557 ビルドツールと言えば聞いたことは・・・ないかもですけど
取り敢えずは触れそうなものかどうか、
>>554 の言っているAntについて調べてみては?
>クラス名の前に何か追加する
>ような方法でもいいです。
て、よく判らんけどコマンドラインのこと?(javac なんちゃらとか)
別にmakeツールでもいいよ、通じる通じる。 しかし、この業界、細かいことに拘って威圧するやつ多いから 無難な言葉に矯正できるならしとくべきか。 理系崩れとかは特に粘着だから気をつけるべし。
561 :
ぴゅあ :2006/12/03(日) 17:30:40
>>558 methodメソッドを呼んでいるところで仮引数aに1を渡しているんだろうと思いますけど
それを色々変えてやってみればいいと思います
あと、"b=10"については
>b=a++;
のところを"b=++a;"にして結果を見てみて、何でかな?と思ってみるのがいいかも
563 :
ぴゅあ :2006/12/03(日) 17:34:23
>>560 確かに通じることは通じると思う
でも、特にJavaやってる人のとこに行くと、変にやたらと拘る人いるよねぇ。。。(−−;
ただ、まだ聞いたことない相手だし(
>>557 )
ちゃんと言っといてあげた方がいいんだろうと思うし
>>558 次のように書いた場合の void method(int, int) と等値
public class Test {
public static void main(String[] args) {
Test test = new Test();
test.method(0, 0);
}
void method(int a, int b) {
a = a + 10;
b = a;
a = a + 1;
System.out.println("a=" + a + ", b=" + b);
}
}
ぴゅあって何で気持悪い書き方するんだ? 論文書いたこと無いのかよ
566 :
ぴゅあ :2006/12/03(日) 17:48:14
567 :
デフォルトの名無しさん :2006/12/03(日) 18:17:05
557です。
>>559 そうです。コマンドラインからのコンパイル方法です。
javac -classpath〜クラス名.javaに何か追加するコマンドがあるのですか?
>>559 「makeツール」って言葉は普通に使うぞ。
569 :
ぴゅあ :2006/12/03(日) 18:42:46
>>567 javacでやっている代わりにAntを使ってみるのもひとつ
ということです
あ そっか
この流れ見てなかったけど
>ファイルを作ったディレクトリ
>までcdコマンドで移動して、javac classpath・・(省略)・・クラス名.javaでコンパイルしています。
をどうかしたいのでなくて、たぶん
>>509 辺りから(再び?)始まってるデフォルトパッケージの話の流れなんですね
サーブレット周りはもう長くやってないし殆ど覚えてないけど
話の流れで出てきているものがそれぞれ適切なことを言っているとして
現段階では無理せずデフォルトパッケージ云々は忘れておいていいってことじゃないでしょうか
JSPを使うようになると意識しないといけないということであるなら、そのときになってからで十分だと思うし
>>567 cdでいちいち移動しても別に構わないけれど、
パッケージが複数あった時に、それぞれのディレクトリまでいちいち移動するのは面倒だろう。
例えば、
package aに属するA.javaがディレクトリ./src/aにあって、
package bに属するB.javaがディレクトリ./src/bにあったとしたら、
javac src/a/A.java src/b/B.javaでとりあえずコンパイルできる。
もし、例えば、B.javaの中でa.Aが使われてるなら、
javac -sourcepath src src/b/B.javaだけでもA.javaの方も見つけてくれてコンパイルされる。
ディレクトリ内の全てのjavaファイルがコンパイル対象ならsrc/b/*.javaみたいにしてもいい。
コマンドラインで指定することが多くて面倒なら、
ソースファイルを列挙したリストをファイルにして、そのファイル名の頭に@を付けて、
java @リストファイル
みたいにするとそれなりにやってくれる。
まあjavacのツールリファレンスを読んでから質問すべきだな。
>>566 納得
てか論文関係無しに変だぞ
例)〜けど〜けどの2重使用
572 :
デフォルトの名無しさん :2006/12/03(日) 18:54:07
573 :
ぴゅあ :2006/12/03(日) 19:09:41
>>571 確かに書いてて変だと思ってるけど
めんどいのでそのままにしてる。。。(汗)
ここんとこ出掛けるのにあまり時間なかったりもしてたりするし…
それより話の中身の方がなんとか解って欲しいと思ってたりするし
ぴゅあなんてこのスレで真っ先にNGワードになる対象だろ。
殺伐としてきたのでこれ、置いておきますね ∧_∧ ( ・ω・)=つ≡つ 馴れ合い?ぽコぽコにしてやんよ (っ ≡つ=つ ./ ) ババババ ( / ̄∪ (…中略…) ∧_∧ ((..;)ω;) ブワッ (っ ≡つ / #) ( / ̄∪
576 :
デフォルトの名無しさん :2006/12/03(日) 19:38:38
>>570 コンパイルできません・・・・。
私の場合、classesディレクトリの下にpack01というパッケージを作ってっています。
たしかにぴゅあの文章理解をできる能力は 他人のプログラムを読むための練習になるな
JAXPでXMLのDocumentをファイルに出力する方法なんですが、古いJavaの本を見ると Document doc; XmlDocument xdoc = (XmlDocument) doc; BufferedWriter bw = new BufferedWriter(new FileWriter("result.xml")); xdoc.write(bw, "Shift_JIS"); となってますが、J2SE5.0にはXmlDocumentというクラスがありません。Documentをファイルに出力するには一般的にどのように書くのでしょうか?
ぴゅあ不確かなことを想像だけで答えすぎ。 初心者を混乱させることもしばしば。 半分ぐらいはまともなレスつけてるんだから、 もう少し絞って答えればいいのに。
>>579 不確かなことを想像だけで答えすぎ。
初心者を混乱させることもしばしば。
半分ぐらいはまともなレスつけてるんだから、
もう少し絞って答えればいいのに。
>>578 自己レスができました。
// 文書を書き出す
XMLSerializer sr = new XMLSerializer(new FileOutputStream("result.xml"), new OutputFormat(doc));
sr.serialize(doc);
582 :
デフォルトの名無しさん :2006/12/03(日) 23:28:07
union[i].drawEverything(Graphics g);
> union[i].drawEverything(Graphics g); union[i].drawEverything(g); i やら j がインスタンス変数だったり…… 凄いな、これ。
585 :
582 :2006/12/03(日) 23:34:12
>>583 直したいのは確かにその部分のエラーですが…
すみません、ご回答の意味を汲み取れませんorz
587 :
582 :2006/12/03(日) 23:37:33
>>584 それで直りました。ありがとうございました。そういや型名は不要でしたかorz
とりあえずここまで一気に作って1回目にコンパイルして出たエラーなので
だいぶおかしなところもあると思います。というかJava自体習いたてなのでその辺は見逃してください^^;
588 :
デフォルトの名無しさん :2006/12/04(月) 00:11:56
public class SE { static final int EXTERNAL_BUFFER_SIZE = 128000; static AudioInputStream audioInputStream; static AudioFormat audioFormat; static DataLine.Info info; static SourceDataLine line; static File soundFile; static SE se = new SE(); private SE(){ try{ soundFile = new File("se_saa01.wav"); audioInputStream = AudioSystem.getAudioInputStream(soundFile); audioFormat = audioInputStream.getFormat(); info = new DataLine.Info(SourceDataLine.class,audioFormat); line = (SourceDataLine)AudioSystem.getLine(info); }catch(FileNotFoundException fe){ fe.printStackTrace(); }catch(IOException ie){ie.printStackTrace(); }catch(Exception e){ } }
589 :
デフォルトの名無しさん :2006/12/04(月) 00:12:46
public static void pico(){ try{ line.open(audioFormat); line.start(); int nBytesRead = 0; byte[] adData = new byte[EXTERNAL_BUFFER_SIZE]; while(nBytesRead != -1){ nBytesRead = audioInputStream.read(adData,0,adData.length); System.out.println(nBytesRead); if(nBytesRead >= 0){ int nByteWritten = line.write(adData,0,nBytesRead); } } line.drain(); line.close(); }catch(Exception e){System.out.println(soundFile);} } }
590 :
デフォルトの名無しさん :2006/12/04(月) 00:14:47
これで SE.pico(); SE.pico(); ってな感じに実行しても一回しか音が鳴らないのですが どうしたらよいのでしょう?
592 :
590 :2006/12/04(月) 00:24:49
oubulic static void main(中略) { SE.pico(); SE.pico(); } としかやってませんが。 いちおうファイルがないとかではないですし。これだけでプログラム全部のせてます。
594 :
590 :2006/12/04(月) 00:44:38
ごめん。。そのレス気づいてたけど千いってたし。 よく理解できなかったからもう一回きいてみたんです。 すみませんでした。
595 :
デフォルトの名無しさん :2006/12/04(月) 00:46:23
>>590 まぁアレだ、
きっと、「1回だけ音が鳴るメソッド」を
「2回呼び出している」ケド
「1回しか音が出ない」
と言いたいわけだな?
イヤ、違うのか。。。
>>594 本当は閉じる処理とか必要だと思うが、
audioFormat = audioInputStream.getFormat();
をpico()のlineを開いてる辺りに入れただけで何回pico()を呼び出しても鳴るようになると思う。
基本的にストリームはデータを出し尽くしたらリセットするか開き直さない限りデータは出てこない。
この場合、1回目のpico()でデータを出し尽くしたので2回目のpico()は鳴らなくなった。
わるい audioFormat = audioInputStream.getFormat(); でなく audioInputStream = AudioSystem.getAudioInputStream(soundFile); の方だ
>>594 lineを閉じている辺りにaudioInputStream.close();を入れておくとなおよい気がする
599 :
590 :2006/12/04(月) 01:28:27
>
>>595-598 サンクスです。
ってじゃあ同じファイルをべつべつに同時再生ってjavaじゃむりなんですか?
600 :
590 :2006/12/04(月) 01:29:12
やってみたら鳴り終わってから同じファイルが再生されたんですが。
>>600 そりゃそうだろ、そういうふうにプログラミングしてるんだから
本当に同時に同じものを再生したら1回鳴らせるのと同じじゃん
>>600 Sound APIでミキシングするか、音が良くないがスレッド二つ使ってpicoを呼び出せ
603 :
602 :2006/12/04(月) 02:09:37
スレッド使うなら、audioInputStreamはstaticでなくてコンストラクタとpicoの中のローカル変数にすること audioInputStreamをインスタンス変数にしてpicoをインスタンスメソッドにしてもいい
MIDIをパンニングするにはどうしたらいいのでしょうか? ミュートやソロなどしか見当たらないので困っています。
質問があります。 int temp; int[] kakuritu = new int[20]; int[] youso1 = new int[20]; int[] youso2 = new int[10]; for(int i = 0; i<20; i++) { for(int j = 0; j<20; j++) { temp = temp+youso1[j]; } kakuritu[i] = kakuritu[i]/temp; } youso1[]の値をランダムで生成した時にyouso1[]の値ををkakuritu[]の重み付けに基づいて選択し youso2[]に代入するにはどうしたらいいでしょうか? 重み付けまでは自分で考えてみたのですがよくわからないのでお願いします。
> 重み付け って具体的な話じゃなくて抽象的、つまり話しをはぐらかしてる意味があるのって分かってる?
607 :
605 :2006/12/04(月) 15:47:45
×kakuritu[i] = kakuritu[i]/temp; ○kakuritu[i] = youso1[i]/temp; の間違いです。 よろしくお願いします。 わかりにくいかもしれませんので補足説明しますが youso1[]の総和分のyouso1[i]が確率になります。 ずれていませんように。 fi pi=---- n Σ fk k=0 よろしくお願いします。
重みのテーブルから重みの総和のテーブルを作っておいてそれを使うのが よいのでは?
609 :
605 :2006/12/04(月) 15:56:00
>>606 もしかしたら重み付けって意味を取り違えてたかもしれません。
1 2 3 4 5 があったら上から0.4 0.25 0.2 0.1 0.5 の様な確率を決めて置く事いうんですか?
数学が苦手な為にすみません。
>>608 重み付けの意味を履き違えていたようです。
piの実数を使って選択をしたいです。
重み付けも後で使うので参考にさせていただきます。
610 :
デフォルトの名無しさん :2006/12/04(月) 16:25:33
JTextField にJLabelを張って、そのJLabelまでカーソルがいかないようにしたいのですが、どのようにすれば いいでしょう? JTextField textField = new JTextField(); textField.setLayout(new BorderLayout()); JLabel label = new JLabel("箱"); label.setFont(GreenUIConstants.FONT_BOLD_SIZE18); label.setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); label.setBorder(null); textField.add(label, BorderLayout.EAST); これでJTextFeildにJLabelははれるのですが、カーソルもそこまで移動してしまいます。 このJLabelまでカーソルがいかないようにするにはどうすればいいでしょうか? 宜しくお願いします。
>>610 JTextFieldでsetLayoutなんか使えるんですね。
私は面倒ですが、パネル上に別々に貼り付けるか、座標を指定して貼り付けてます。
612 :
デフォルトの名無しさん :2006/12/04(月) 16:41:18
>611 パネルに貼るのは簡単なのですが、textFieldに張りラベル以外のところで入力を許したいのですが無理なのですかね ・・・ 左寄せの場合はsetMarginを使えば先頭を余白にしてなんとかできるのですが、 右側にラベルを寄せてというのがどうしても出来なくて。もし分かる方がいらっしゃれば宜しくお願いします。
finalを付けると、代入( = ) が使えないだけと言う認識でいたのですが、 他に何か特別が意味があるのでしょうか? 例えば、finalを付けるとインナークラス内でも参照可能になるのですが、 なぜ参照可能になるのか、理論がわかりません。 final Map map = new HashMap(); Map mapTest = new Map() { public void clear() { map.put("test", "1"); } }
615 :
613 :2006/12/04(月) 17:00:54
>>614 とても参考になりました。
インナークラスの中では、変数と言うよりも、
オブジェクトの参照そのものに置き換わる感じですかね。
参照に置き換わっているから、
インナークラスの外のローカル変数に寿命が来ても、ずっと参照可能になっていると。
早速のお返事ありがとうございました。これは勉強になりました。
617 :
デフォルトの名無しさん :2006/12/04(月) 17:16:03
ものすごく初歩的なところでつまずいてるんですが、 ジャンケンを数回して勝ち負けを記録していくプログラムなんですけど、 相手がグーを三回連続でだしたらその後の自分の手はパーのみを出し続けるってどういうふうに作るんですか? if文だけで作れるんでしょうか?
618 :
613 :2006/12/04(月) 17:44:19
>>610 >>616 さんのサイトを見てみましたが、
どうやらJTextFieldsのレイアウトは座標指定みたいですね。
textField.setLayout(new BorderLayout()); は、ダメみたいです。
レイアウトを使わないで試したところ、右側にラベルを配置しても、うまく行きました。
>>617 ざわざわ・・・
前回の相手の手と連続で出した回数を保存しておけばいいんじゃないか
で、3連続以上だったらフラグを立てる
ただ、それが強いとは思えん
>>619 ざわざわってそういう意味かwwwwwww
621 :
605 :2006/12/04(月) 19:20:22
やっぱわかりにくかったので答えてもらえないでしょうか…。
重み付けではなく
>>607 のように"youso1[]の総和分のyouso1[i]の確率"
を利用して取捨選択したいです。
アドバイスよろしくお願いします。
>>621 よくわからんが、こういう事がやりたいの?
int a[]={10,90};
int b[]={1,2};
int sum=0;for(int i=0;i<a.length;++i) sum += a[i];
for(int j=0;j<20;++j){
int r=(int)(Math.random()*sum);
for(int i=0;i<a.length;++i){
r-=a[i];
if(r<0){
System.out.println(b[i]);
break;
}
}
}
623 :
605 :2006/12/04(月) 22:01:08
つーかJavaに関係なくね?
625 :
605 :2006/12/04(月) 22:09:41
>>624 それは少し思いましたが…。
Javaで作ってるのですが考え方はわかるのですが、どう書いたら良いのかわからないので。
簡単に言うと 「確率を元に選出するにはどうしたらいいんですか?」 と言う事です。
説明がだらだら長くなってしまいすみませんでした。
627 :
605 :2006/12/05(火) 00:56:48
お手数掛けてすみません。
>>622 さんの場合ですと凄く近いものは感じるのですがどうしてもわからない部分がありまして。
int r=(int)(Math.random()*sum);
for(int i=0;i<a.length;++i){
r-=a[i];
if(r<0){
System.out.println(b[i]);
break;
}
という部分が気になります。
rの値は0〜99(総和-1)を取りrからa[i]を引いて行った結果r<0になった時にb[i]を出力。
rの値をランダムで取得している点、例えばr=10&&a[0]=11だった場合だともし後ろの方に確率が高く
設定されている要素があったとしても一番最初の要素が吐き出されるのではないかと。
a[i]判定が頭から順の評価な点で割り出した確率と全く同じものとはいえない気がしまして…。
a[]は要素だと思ったのですが全体(総和=分母)が100だから確率?だとしてもそうしたら渡すものは
b[]では無くa[]なのでは?と思ってしまったり…。
自分の理解力が低いのだと思いますが。
よろしければ解説がいただければと。
スレ汚してすみません。
>>622 さんのものを参考にもう少し自分で考えてみてわからなかったらまたきます。
失礼いたしました。
628 :
デフォルトの名無しさん :2006/12/05(火) 02:03:01
Unicodeの16進法から文字に変換するプログラムを作っているのですが、 うまくいかずに悩んでいます。 javaで中国語や韓国語の文字列処理を扱っているのですが、 以下のプログラムは、Unicode値から文字列に変換したものをファイルに書き込むだけの 単純なものなのですが、作成されたファイルを開いても文字化けしてしまってうまくいきません。 もちろん、ファイルはUTF-8で開いています。 因みに、プログラム中の「DACF」は、中国語で「谙」(←文字化けかも。日本語の「諳」に当たる漢字です)という漢字です。 宜しくお願いします。 ============================================================================== import java.io.*; public class Sample { public static void main(String[] args) { try { FileOutputStream fos = new FileOutputStream("C:\\test\\china.txt"); OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8"); BufferedWriter bw = new BufferedWriter(osw); String strchr = String.valueOf((char)Integer.parseInt("DACF", 16)); System.out.println(strchr); bw.write(strchr + "\n"); bw.close(); osw.close(); fos.close(); } catch (Exception ex) { ex.printStackTrace(); } } } ==============================================================================
じゃあフォントが無いだけというオチ? バイナリエディタで開いた結果は?
631 :
デフォルトの名無しさん :2006/12/05(火) 05:17:42
>>629 >>630 レスありがとうございました。
すみません、当方の確認ミスでした。
「DACF」の値ですが、文字コードがUTF-8ではなくGB2312(SHIFT_JISの中国版?)
とのことで、エディターで指定しなおしたところ、表示されました。
java以前の話だったようで、切り分けが出来てなくて申し訳ありませんでした。
お陰で手持ちの課題が全て解決しました。謝謝!
632 :
デフォルトの名無しさん :2006/12/05(火) 05:40:00
>613 >616 >618 レス遅れて申し訳ありません。 まだ試していませんがやってみます。 ありがとうございました。
GUIアプリを作る場合にNetBeansでコンポーネントを配置してEclipseで内容を書こうと考えてるのですが他にお勧めの方法はありますか? 補足として個人的にはSWTよりはSwingのが使いやすいかなと考えています。 JBuilderやJ++は論外ですかね?
J++は論外。製品ラインが消えたから。 J#ってのはあるが、だったら C# で書けと。 (C#もJ#もスレ違いなのでここではこれ以上言わない。) 他には Eclipse のプロジェクトで VisualEditor(VE) ってのがある。 VE と NB と JBuilder で簡単なアプリ作ってみて とっつき易いと感じたものを選べば、それがあなたにとってのベストなはず。 Swing で行くと決めたなら、Swing スレを眺めて見るのも良いかと。 VE も NB もそれぞれ利点・難点があって好みの問題って感じになってる。 (JBuilder派はSwingスレではほとんど見ない。)
635 :
デフォルトの名無しさん :2006/12/05(火) 15:04:40
Javaのメソッドで2つ以上の変数を操作して返す方法を教えてくれませんか? C言語で以下のような処理をJavaで行いたいです。 void syori(int *xy,long *dis) { *xy += testX(); *dis += testDis(); }
>>635 無理。
int[] とか インスタンス変数に int を持ってるクラスのインスタンス使って似たような事できるけど。
void f1(int[] xy, long[] dis){ xy[0] += testX(); dis[0] += testDis(); }
class P { int x; }
class D { long val; }
void f2(P p, D dis){ p.x += testX(); dis.val += testDis(); }
>>635 配列やコレクションクラスで何とか実現できるけど、基本的には専用の
classを作るべき。
638 :
デフォルトの名無しさん :2006/12/05(火) 15:12:49
今java言語のプログラミングレッスン上で勉強してるんですが・・・ 知り合いからやさしいjavaって言う入門書のほうが簡単と言われたんですが2ちゃんねるの住人の中でこの参考書を使用した方って居ませんか?
639 :
デフォルトの名無しさん :2006/12/05(火) 16:26:32
>>639 210行あたりに
paper.load( InputStream )
があるので、Paperクラスに読み込み処理 Paper#load() が書いてあると思われる。
たぶん、描画情報のオブジェクトを配列かリストに入れて、シリアライズしたもんじゃねーの?
641 :
デフォルトの名無しさん :2006/12/05(火) 16:42:05
最近テキスト見ながら勉強しています 今はデータベースソフト(MY SQL)をインストールして アプリを作成しているのですが、 これってもし完成して別の環境で起動したい場合、 そこにデータベースソフトが入っていなければ作動しないのですか・・・? 簡単な仕組みまで教えていただきたいです
データベースに接続しにいくタイミングで例外が発生すると思う
643 :
デフォルトの名無しさん :2006/12/05(火) 16:55:41
>>640 さん
教えて頂きありがとうございます。
>描画情報のオブジェクトを配列かリストに入れて、シリアライズしたもん
とは一体どういう事なのでしょうか??
644 :
640 :2006/12/05(火) 17:04:18
>>643 俺のてきとーなカンだ。 俺ならこう作る、って読みなんで、実際は違うかもな。
たぶん書道アプレットみたいなモンだと思うが、一筆(マウスボタンをプレス→離す)ごとのマウス移動の軌跡を
順番に保存するオブジェクトがあるんだろうと思われる。
んで、save/loadで書いたとおりに保存/再生できるっぽい。
saveは、マウス軌跡保存オブジェクトをシリアライズ(ググれ)してファイルに保存。
loadは、そのファイルからオブジェクトに戻して、保存された情報を元に描画、って感じか。
つかソース読めば分かることなんだが
645 :
デフォルトの名無しさん :2006/12/05(火) 17:29:25
>>644 さん
なるほど。
なんとなくつかめてきました!
とても参考になりました!あとは自分で何とかがんばります!
ありがとうございました!
JLabelの特定の部分だけ背景色を変えることはできるのでしょうか?
648 :
デフォルトの名無しさん :2006/12/05(火) 19:34:27
頭
>>648 イベント受け取った後、Draw を再描画せんといかんのでは?
それにdataを初期化してないんじゃないか
652 :
648 :2006/12/05(火) 20:20:27
>>650 d.repaintをつけても同じでした。
というか配列にうまく入れられていないっぽいですorz
>>651 適当な初期化をしてみましたが変わりません。。。
どこかにもっと大きなミスがあるのでしょうか。
>>648 public class Draw extends Applet{
char[] data = new char[1];
public void init(){
this.addKeyListener(new MyKeyAdapter());
}
public void paint(Graphics g){
g.setFont(new Font("Plain", Font.PLAIN,36));
g.drawChars(data, 0,1,20,20);
}
}
class MyKeyAdapter implements KeyListener{
public void keyPressed(KeyEvent e){
Draw d = (Draw)e.getSource();
d.data[0] = e.getKeyChar();
d.repaint();
}
public void keyTyped(KeyEvent e){
}
public void keyReleased(KeyEvent e){
}
}
それから、最初はフォーカスが得られてないだろうから、クリックするなりなんなりフォーカスを与えてやること。
654 :
デフォルトの名無しさん :2006/12/05(火) 21:22:46
SunのJava Studio Enterprise8を使っています。 書いたソースのアプレットをhtmlで動かしたいのですがどうすればいいのでしょうか?
>>653 ありがとうございました!
フォーカスという概念は初めて知りました。
ググってみたところrequestFocus();とかいう関数なんかもあるんですね。
現行のプログラムに下のような部分があるんだけど、これって正常に動作してるのでしょうか? class Test{ private List testList = new ArrayList(); public void testMain(){ List localList = new ArrayList(); for(int i=0; i<5; i++){ getList(); localList = testList.get(i); ・ ・ ・ } } private void getList(){ Map tempMap; ← 何か値を入れる testList = new ArrayList(); testList.add(tempMap); } }
>>647 JLabelにセットする文字列の頭が<html> で始まってると、
その先はHTMLとして解釈される。
setText("<html><font color='red'>ほげ</font>")
とか。
個人的には大嫌いな仕様だが。
えーい、やくたたずめっ
660 :
654 :2006/12/05(火) 23:36:05
どなたか654を…切実ですorz 専用スレがあればいいんですが。。。
661 :
ぴゅあ :2006/12/06(水) 00:04:37
>>660 >SunのJava Studio Enterprise8を使っています。
と前置きしているところで微妙に判らないような気もしますけど
(申し訳ないけどJava Studio Enterprise8とやらは使ってないです)
>アプレットをhtmlで動かしたい
アプレットの勉強を始めるとたぶん普通に初っ端からでてきたりするんだろうと思うようなところではない?
SunのJava Studio Enterprise8に対して何かしたいのか
http://www.hellohiro.com/applet.htm に説明されているようなことなのか(適当にググッた)
よく判らんのですが。。。
後者なんかは「そんなんわかっとるわい」とかなりそうだし?
662 :
デフォルトの名無しさん :2006/12/06(水) 00:24:40
union は Super クラスの配列だから Super クラスのサブクラスのフィールド ex,ey の存在なんて知らない だからアクセスできない setStartPoint と setEndPoint メソッドはソースの肥やしか? ご丁寧にスーパークラスに用意されてるんだから ちゃんとサブクラスで実装して使え
664 :
ぴゅあ :2006/12/06(水) 00:48:30
>>662 "Super union[]"ですよね
"union[j].ex"とかしたときex(或いはまたey)あります? Superクラスの中
あと目に付いたのは…
まだ書き忘れているだろうと思いますけど
>Super union[] = new Super[100];
でSuperクラスのインスタンスを保持する配列(入れ物)は確保していますけど
インスタンス化の処理は何処へ・・・
665 :
662 :2006/12/06(水) 08:32:32
>>663 とりあえずコンパイラが通るか練習用に、setEndPointメソッドと同じものを
別名で作って試したりしていました。しかし上手くいかなかったものでsetEndPointは保留にしていました。
SuperクラスにsetEndPointって名前であるからこそ使えるんですねorz
>>664 おっしゃっていることの意味が若干理解できていません私orz
48行目あたりの文でインスタンスを生成し、始点であるsx,syが
mousePressedで決定されたのでついでにコンストラクタで代入している。
のち49行目で配列に格納。というつもりで書いてます。。。
sx,sy が sexy に見えたら入院
>>424 の boolean のサイズが 4byte といった、
メモリサイズはどのようにして割り出せば良いのでしょうか。
例えば、int は何バイトで、String なら何文字の時に何 byte, と言ったような。
668 :
667 :2006/12/06(水) 10:50:56
EventDispatchThreadってどういう時に出るメッセージなんでしょうか。
>>669 メッセージ?
swing関係で例外出すのはこのへんだが
deleteを使ってフォルダの削除を行いたいのですが フォルダの中にデータやフォルダがあると削除できない仕様になっています これを指定したフォルダ以下のデータを纏めて削除するにはどうすればよいでしょうか?
672 :
デフォルトの名無しさん :2006/12/06(水) 12:07:37
配列の配列というのはどう宣言すればいいのでしょうか? 具体的には byte[] data1=null; byte[] data2=null; data1=readByte("test1.jpg"); //readByte(String );は data2=readByte("test2.jpg"); //ファイルのバイトデータを返すと思ってください を for(int i=1; i<=2; i++){ data[i]=readByte("test"+i+".jpg"); } のように扱いたいときはどう記述すればいいのでしょうか?
>>671 ファイル削除してから再度ディレクトリ削除するメソッド実装すればいいんじゃね。
>>672 byte[][] data = new byte[ 10など #ここは必須# ][];
data[0] = readByte( *** );
〜〜〜
って感じだが、宣言時にサイズ指定しなければいけない。(new byte[] [] は無理)
数が不定なら、ArrayListでも使ってみたら?
675 :
672 :2006/12/06(水) 13:27:52
>>674 ありがとうございます
>byte[][] data = new byte[ 10など #ここは必須# ][];
>data[0] = readByte( *** );
これでOKなんですね
[]の数が2つなら使うときも2つじゃないとダメかと勘違いしていました
サイズ指定するのはやむをえないのでしょうね。
>数が不定なら、ArrayListでも使ってみたら?
実はiアプリなので使えないです。。
676 :
デフォルトの名無しさん :2006/12/06(水) 13:30:48
public class Kadai7_0203 { private int a, b; public a(int a, int b) { this.a = a; this.b = b; } public static void main(String[] a) { if (a.length == 4) { new a(Integer.parseInt(a[0]), Integer.parseInt(a[1])).a(); new a(Integer.parseInt(a[2]), Integer.parseInt(a[3])).a(); } else { System.err.println("java a 一つ目の縦 一つ目の横 二つ目の縦 二つ目の横"); } } private void a() { System.out.println("縦:" + a + ",横:" + b + ",面積:" + a * b); } } エラー文字: Kadai7_0203.java:3: メソッドの宣言が不正です。戻り値の型が必要です。 public a(int a, int b) { ^ エラー 1 個 どのように直せばいいのか教えてください
>>667 boolean が 4byte ってのはスタックに積まれてる時とかの話じゃないか?
VM仕様では boolean[] は byte[] 使う事になってるから 1byteだし。
あとはオブジェクトインスタンスには VM仕様では
特に何バイトと定義されてないオブジェクトヘッダが付くとか、
細かい事を考えればいっぱいある。
100万文字の String1個 なら、大体 2メガバイトぐらい使うだろう
みたいな大雑把な計算には使えるけど、
"a" と new byte[5] と int 各1個づつで何バイト使うか?
みたいのは、そのプログラムを実行する VMの実装を調べないとわからないよ。
× public a(int a, int b) { ○ public void a(int a, int b){
>>676 一番簡単な修正方法は
クラス名を Kadai7_0203 から a に変える
だが本当にそれでいいのか?
aって名前が多過ぎて自分で訳わかんなくなってないか?
680 :
87のプログラムwo :2006/12/06(水) 14:02:21
678>voidいれたらKadai7_0203.java:9: シンボルを解決できません。 シンボル: クラス a 場所 : Kadai7_0203 の クラス new a(Integer.parseInt(a[0]), Integer.parseInt(a[1])).a(); ^ Kadai7_0203.java:10: シンボルを解決できません。 シンボル: クラス a 場所 : Kadai7_0203 の クラス new a(Integer.parseInt(a[2]), Integer.parseInt(a[3])).a(); ^ エラー 2 個 になりました(;w; 679>提出する際学籍番号を入れて出すんですがプログラムを製作最中に番号がわからなくなったのでわかり易いaにしたんです^^;;
681 :
↑ミスりました・・・本当は676のスレ主です :2006/12/06(水) 14:06:23
676 680のスレ主です・・・題名ミスりました
ああプログラム全体貼ってたのか・・ じゃあ678のは間違いでした。スマソ。 Kadai7_0203.java ってファイルを a.java に変えて 679氏の策に従えばとりあえず動くかとは思う。 とは言え書くあなたはともかくとして、読む方は泣く。 (それだけ回答が得られにくくなる。) 課題なら採点者の心象もアレになる。
すみません、初心者なので質問させてください public class Test08 { public static void main(String[] args) { StringBuffer val01 = new StringBuffer("aaa"); String val02 = new String("aaa"); Sample02a myClassA = new Sample02a(); Sample02b myClassB = new Sample02b(); System.out.println(val01); myClassA.myMethod(val01); System.out.println(val01); System.out.println("------------------------"); System.out.println(val02); myClassB.myMethod(val02); System.out.println(val02); } } class Sample02a { void myMethod(StringBuffer data) { data = data.append("bbb"); } } class Sample02b { void myMethod(String data) { data = data + "bbb"; } }
上記のプログラムの実行結果が aaa aaabbb ------------------------ aaa aaa となります。 StringとStringBufferで2回目のoutputが違うのはなぜですか?
void myMethod(String data) { data = data + "bbb"; この部分は、"bbb"という文字列を加えた新しいオブジェクトを生成して それをdataに代入してるかららしいよ。 ところで質問です。Webアプリケーションサーバはどれを使うのがいいでしょうか? Sunのやつ、Tomcat?お勧めのものがあれば教えてください。
686 :
685 :2006/12/06(水) 14:30:22
PCサーバ一台で済んでしまうレベルの用途なので、 WebLogicやWebsphereのような高価なものはいりません。
>>685 あー新たにオブジェクトを作ってしまうんですか・・・
回答ありがとうございます。
Tomcatで十分だと思います。
688 :
685 :2006/12/06(水) 14:39:00
>>687 >Tomcatで十分だと思います。
なるほどそうですか。どうもです。
689 :
667 :2006/12/06(水) 17:57:40
>>677 ありがとうございます。ううむ、そうですか。
では目方を変えて、その大ざっぱな計算の仕方と言いますか、
あるオブジェクトが何個あったらこれ位、と言った計算をするための
材料を集めるにはどのようなことを調べればいいでしょう?
MemoryMXBean beforeBean = ManagementFactory.getMemoryMXBean();
MemoryUsage beforeUsage = beforeBean.getHeapMemoryUsage();
long beforeUsed = beforeUsage.getUsed();
Foo foo = new Foo(); // Foo オブジェクトのサイズを計りたい(ここでは一つだが複数個生成、など)
MemoryMXBean afterBean = ManagementFactory.getMemoryMXBean();
MemoryUsage afterUsage = afterBean.getHeapMemoryUsage();
long afterUsed = afterUsage.getUsed();
などとして、afterUsed - beforeUsed を計算してみたのですが、変わったり
変わらなかったりで… foo を計算の後に参照させたりもしてみたのですが、
特に、何故全く変わらない事があるのかよく分かりません(少しでも振れると思ったのですが)
showConfirmDialogを用いて警告を表示するプログラムを組んでいます。 多重の警告を表示できるように,警告の契機の度にスレッドを作成し, そのスレッド上でshowConfirmDialogを呼んでいるのですが、ダイアログは警告分表示されるものの OKボタンを押せるのは最新のダイアログのみとなっています。 表示されたどのダイアログに関してもOKボタンを押せるという仕様にするにはどうすればよいでしょうか。 ご指導願います。
691 :
デフォルトの名無しさん :2006/12/06(水) 18:58:17
>>690 > すべてのダイアログはモーダルです。各 showXxxDialog メソッドは、ユーザの対話が終了するまで現在のスレッドをブロックします。
リファレンスはちゃんと読もうね。
どうしても必要なら自分でモードレスなJDialogを構成して表示。
692 :
690 :2006/12/06(水) 19:07:49
返信どうもです。 マルチスレッドにすれば対応可能かな・・・と思ったんですが。 やはりモードレスなダイアログを作成するしかないようですね。 有難うございました。
>>692 呼び出すスレッドを別のものにしても、
グラフィックスの処理自体はEDTで一元的に処理されてるから。
694 :
ぴゅあ :2006/12/06(水) 21:23:43
>>665 何処が解らなかったのかが判らないけど(いちお2つのことを書いてるし)
>>663 の前半の話についても調べてみれば?
そこには全く触れてないみたいだし
695 :
ココ電球(∩T∀T) ◆tIS/.aX84. :2006/12/06(水) 21:27:53
ダイアログはプロセスろっくだよー マルチスレッドじゃだめね マルチプロセスならおけ
696 :
ぴゅあ :2006/12/06(水) 21:30:28
>>692 スレッドを使ったというのはそのダイアログを出したいがためだけ?
そのダイアログにあたるものを1個にするとかいうのもありそうだけど
それだと考えてた仕様から変わることになるよねぇ。。。
(自分で作らなきゃいけないだろうという点は同じか・・・)
697 :
662 :2006/12/06(水) 21:41:53
698 :
デフォルトの名無しさん :2006/12/06(水) 21:47:04
こりゃ英語の文法的なことなんですけど いちよーJava関連なので質問さしてください。 AクラスのaメソッドはAクラスのbメソッドが呼び出された後でなくてはならない時に 例外を投げたいのですが、 その時のメッセージはどんな感じでしょうか? A#a must be called after A#b has been called A#a must be called after A#b was called いかがでしょう?
常に成り立つ単なる事実って現在形でよかったような記憶があるんですが、 isはダメなんですかね。 ぐぐってみると A#a must be called after A#b.で止めてる例が結構ありますね。 個人的にはYou cannot call A#a before A#b.と書きます。
>>698 > after A#b was called
文法的には was じゃなくて is 。
質問です。 エクリプスでjarファイルにしてパッケージ化し、ダブルクリックで実行できるようにしたのですが コマンドプロンプトが表示されなくなってしまい困っています(dos窓に色々な情報を表示させているので)。 プログラムでコマンドプロンプトを表示させる方法はどのような文を追加すればよいのでしょうか?
698です。 なるほど、A#a must be called after A#b.で止めても問題ないですね そして文法の勉強もできました ありがとうございました
単にコマンド窓を出しても標準出力がその窓に向かないんじゃないかな。 .jarと同じディレクトリにバッチファイルを置く方法ではダメだろうか?
704 :
701 :2006/12/06(水) 22:38:04
>>703 ありがとうございます。
バッチファイルでコマンドプロンプトは出たのですが、
その窓にはプログラム中のSystem.out.printが効かないようです。
もう少し調べてみます
705 :
ぴゅあ :2006/12/06(水) 22:53:53
>>697 イベントに(何の対処もなしに)順序性を求めるのはあまりよくないのかも
と思ったりしますけど…
実際にどのようにして、どんな問題が出てます?
(若干作りとして気になるところもあるけどそれは関係はない筈
"フィールドでjを初期化しててinitやstartメソッドではやってないけど、それはunion[]も同じなので"
まぁ気になるようなところはいっぱいあるので… それは追々見ていってください)
706 :
デフォルトの名無しさん :2006/12/06(水) 22:54:44
javaからjspを実行して(任意の引数を渡して実行したい)、その結果を任意のファイル名でファイル出力をしたいのですが JSP実行には、どのクラスのどの関数をCALLすれば良いですか?(サーバーサイドで実行されていることをクライアントで実行したい) 目的としては、サーバーに負荷をかけたくないので、よくアクセスされるものに関しては、HTML化しておきたいんです。
先輩方、プログラムで躓いたので、質問させて下さい。 指定のURLからHTMLソースを得るプログラムなのですが、日本語のみ文字化けしてしまいます。 URL dairly_add = new URL(rss_add); connector = (HttpURLConnection)dairly_add.openConnection(); connector.setRequestMethod("GET"); BufferedReader dairly = new BufferedReader(new InputStreamReader(connector.getInputStream(),"JISAutoDetect")); while (( str = dairly.readLine()) != null) { System.out.println(str); } dairly.close(); connector.disconnect(); 文字コードの変換はJISAutoDetectで大丈夫かと思ったのですが、無理でした。 ご教示お願いします。
708 :
デフォルトの名無しさん :2006/12/06(水) 23:06:47
>>701 .batファイルからjavaを起動すれば良いんじゃないかな?
709 :
662 :2006/12/06(水) 23:08:15
>>705 まずmousePressedとmouseReleasedを完成させて、
mouseReleasedで終点が決定した時点で描画するようにできました(697のプログラム)。
その後mouseDragged中にも描こうとしている図形が表示される仕様にしたいのですが、これが上手くいきません。
mouseDraggedメソッド内でsetEndPoint、repaintを入れてみましたが
dragg中に確かに激しく点滅はするのですが図形の描写はありません。
そしてpaintメソッドの条件の問題かと思って確認なんかをしていたら697の疑問に気付いたりとorz
いやしかし様々なアドバイスありがとうございます。
711 :
ぴゅあ :2006/12/06(水) 23:21:24
>>704 以前あったと思うんですけど見つけられない。。。
コマンドプロンプトに代わるビューを作って…とかいうのではない?
712 :
ぴゅあ :2006/12/06(水) 23:27:34
>>709 いちお(若干気にならないでもないけど@自分の中で)
>(初めての描画の際はj = 0でrepaint文に入るはず)
というのは問題にならないんじゃないかと思うんですよ…
単に疑問として思ったのか、実際に何か問題が起こっているのを確認したのか
とかによると思いますけど
>dragg中に確かに激しく点滅はするのですが図形の描写はありません。
というのはたぶん
>>697 より後に作り込んで行ったコードですよね?
713 :
707 :2006/12/06(水) 23:31:32
SetResponseHeaderクラス? このクラスに引数で指定した文字コードでエンコードするってことなのでしょうか?
前に仕事で書いたやつの骨組みだけ。 import java.awt.BorderLayout; import javax.swing.*; import java.io.*; public class TextPaneOutputStream extends ByteArrayOutputStream { private JTextPane text; public TextPaneOutputStream(JTextPane text) { super(); this.text = text; } public synchronized void write(byte[] b, int off, int len) { Document doc = text.getDocument(); try { doc.insertString(doc.getLength(), new String(b, off, len), null); } catch (BadLocationException e) { // ignore or log } } public static void main(String[] args) { JTextPane text = new JTextPane(); JFrame f = new JFrame("Test"); f.add(text, BorderLayout.CENTER); System.setOut(new PrintStream(new TextPaneOutputStream(text))); f.setSize(300, 300); f.setVisible(true); for (int i = 0; i < 10; i++) { System.out.println("hello!"); } } }
716 :
662 :2006/12/06(水) 23:47:25
>>712 実際問題との関連としては、mouseDragged中にmouse位置を終点としてrepaintさせたいのですが
public void mouseDragged(MouseEvent e){
union[j].setEndPoint(e.getX(),e.getY());
repaint();
}
とmouseReleasedと同じように記述しても細かな点滅のみで表示はさませんでした。
理由についてj番目であるunion[j]が42行目(i > j)の条件にそぐわずdrawEverythingが実行されなかったからだと思いました。
しかしよくよく見たらmouseReleasedもjのインクリメントはrepaintの後に行っていて、
なぜ(i < j)でj = 0なのにしっかり表示されてしまうのか、
その疑問の解決がmouseDraggedでうまく表示させるのに必要な手順だと思いました。
717 :
ぴゅあ :2006/12/06(水) 23:58:26
>>714-715 わざわざありがとう
いや、前にこのスレッド(たぶん2つ前くらい前までの間)で
その手の話が挙がったような気がしたんですけどね
見つけられなかった…ということです
(コードまでは挙げられてなかったと思うけど)
>>704 宛てにどうぞ
718 :
662 :2006/12/07(木) 00:02:18
42行目の条件のjを5とか6にしてみるとmouseDragged中でも描画が確認されました。 ただし定数にしてしまったことでその5、6個の図形の描画しかなされない状態に当然なっています。 やはりj番目より1つ前までの図形の描画を行っていて、j番目であるマウス位置によって形の変わる 図形の描画はpaint文の条件にはねられてdrawされないということなのでしょうか。。。 それならmouseReleasedもなぜ表示されるのか不明ですし、混乱しますorz
>>713 ちがう。向うからヘッダが返ってきてるからそこからcharsetを読み取る。
ヘッダに含まれていないときはhtmlならmetaタグ中のを読む。
でも、
>URL dairly_add = new URL(rss_add);
って変数名を見るに、RSS?
ならローカルファイルシステム上のXMLファイル扱う要領でok.
>>706 JSPで生成されるJavaのコード見てないからわからないけど、
レスポンスに直接出力されてた気がする。
ベロシティー使えば確実にできるよ。JSPじゃないけど。
サーブレットの後ろにフィルター置けば、HTML取れるのかな?取れる?
721 :
ぴゅあ :2006/12/07(木) 00:10:58
>>716 >しかしよくよく見たらmouseReleasedもjのインクリメントはrepaintの後に行っていて
やはりそんな風に考えていたんですね
(でも実際にjの値がどうなっているのかまでは確認してないのですよね)
いちお言われているところによく判らないところもあるから書かずに置いておいたところですけど
「repaintは"なるべく早い時期に"paintを呼び出そうとする」というのがあって
paintが呼び出されるのが続くj++より前になるか後になるかは判らないし
それだけ(repaintに対してpaintが何時呼び出されるか…だけ等)に依存するコードとするのはよくないだろうと思います
加えてマウスイベント処理内でrepaint,j++をやっているので
paintはそのイベント処理(mouseReleased)が終わった後まで待たされる可能性が高い(その直後かどうかは保証がない)
と考えていいと思います
つまり、j=0なんだからdrawEverythingが呼ばれるのはおかしいというのではなく
実際にはj=0でない状態にあるからdrawEverythingが呼ばれていた可能性がある
と考えられると思います
(それを確認するためには「実際にjの値がどうなっているのか」を確認してみることです)
ついでに訂正(
>>717 )
コードはあったような気もした。。。
722 :
707 :2006/12/07(木) 00:22:02
>>719 RSSから対象アドレスを取得してるからrss_addなのです。
仰る意味も理屈も理解出来るんだけど、手段が出てこないですorz
XMLはDocumentクラスで解釈して各要素を取り出す程度しかやったことないですし……。
レスポンスヘッダっていうのは、指定URLにアクセスした際に自動的に返って来るものですか?
そこに文字コード等が載ってるから、それを読み取るっていう認識でOK?
ちょいと自分で調べてみます。
723 :
デフォルトの名無しさん :2006/12/07(木) 00:25:12
>>720 うはw
まさにやりたいのはこれ。ありがとう!!
HTML化もいいけど、Apacheの静的キャッシュが有効になるように配置しないなら ByteArrayOutputStream#writeToを使うのがオススメ、Velocityとも相性がいい
>>722 URLConnection#getContentType()
サーバー側で付けてくれてなければあとは
HTTP4.01のW3C勧告を参考にしてクライアント側で頑張る。
726 :
ぴゅあ :2006/12/07(木) 00:33:39
>>718 >たぶん
>>697 より後に作り込んで行ったコードですよね?
を前提として話してますが
(そういったコードは実装されてなさそうだし、実際にそうならないし)
考えるのに適当かどうかはなんとも言えないところですけど、気になった部分のひとつ
mouseReleasedメソッドでやっているj++をunion[]を何個使ったかという意味合いにして
mousePressedメソッドで
>union[j] = ...;
の後ででもやってやるというのはどうでしょう
(このjugde[]の使い方も気になるところですが…)
彼方此方jの扱いをちゃんと見直す必要とかも出てきてしまうので
どうか…とも思いはしますが。。。
(mousePressedの後には必ずmouseReleasedが呼ばれることになるので
union[]が必ず1個使われることになるのでもあり考え方としても問題ない)
>union[j].setEndPoint(e.getX(), e.getY());
がまだ呼ばれていないときがあるじゃないかというのはdrawEverythingで工夫(後にでも?)
その後の実装が判らないのでちらつきというのがどういう風に見えているのかは判らないですけど
描画時のちらつきを除去にはどうするか(ダブルバッファリング)とか調べてみればいいのだろうかと
そういうちらつきであるとするなら、ちらつくというのはまだ放っておいていいんでしょう
>表示はさませんでした。
というのはドラッグ中の処理がうまく書けていないからかな?
727 :
725 :2006/12/07(木) 00:34:03
HTTPじゃなくてHTMLだろ... orz
会社のソースに xxxBean という名前のクラスがあったので、 先輩にこれ何ですか?と聞いたら「setterとgetterだけのクラスを Beanというんだ」と言われました。 それでググってみたのですが、Beanの正しい意味はわかりませんでした。 この先輩の説明はあっているのでしょうか?
729 :
707 :2006/12/07(木) 00:46:36
>>724-725 親切な回答ありがとう。
俺の頭がアフォなせいで、理解してるのか怪しいけど、実際に弄りながら勉強していきます。
明日早いから今日は寝て、明日またやってみます。
こんばんわ。初めて質問させていただきます。 今、JARファイルを作成しようと思い、色々とやっているのですが インナクラスの扱い方がちょっとよく分かりません。 マニフェストファイルを作成し、普通のクラスをいくつかまとめてJARファイルにすることはできたのでるのです。 しかしそこにインナクラスがひとつでも絡むと そのクラスについてのみ「●●.classというファイルまたはディレクトリはありません」 というメッセージがDOS窓に表示されてしまうのです。 で、その●●というインナクラスを持つ、△△クラスだけでJARファイルにしてみたのですが そうすると今度はJARファイルにはなるのですが、それをダブルクリックしてもエラーメッセージが出るだけになってしまって・・・。 素人丸出しの質問で申し訳ないのですが、どうかよきアドバイスをよろしくお願い致します。
>>728 Beanであるためには、プロパティにアクセスするためにsetXxx getXxx
というメソッドを使える必要があるが、逆にsetXxx getXxxでアクセスするものすべてをBeanと呼ぶわけではない。
さらにいえば、BeanだからといってxxxBeanと名付けなければいけないわけでもない。
>>730 JAR にまとめる時はどうやってます?
△△.java をコンパイルすると △△.class 以外にも △△$1.class とか出来るはずだけど
出来上がった JAR にこれもきちんと含めてます?
setter/getterだけのクラスは構造体名+Infoのが一般的な気もするが。
>構造体名+Info 初めて聞く流儀ですが、例えばどこで使われてます?
本という情報があればBookInfoとか、IBMとかのサイトでも良く見る
あるソースをビルドしようとしたら、 for-each ループを使用可能にするには、-source 1.5 を試してください というエラーがでてきました。 javaのバージョンは1.5.0_08なのですが、何かおかしいところがあるのでしょうか?
コマンドラインで java -version が5.0と出ても Eclipseが相変わらず1.42のJREを参照してればそうなるんじゃない?
説明が足りませんでした。 antでビルドをしています。 MANIFEST.MFは以下の通りです。 Ant-Version: Apache Ant 1.6.5 Created-By: 1.5.0_08-b03 (Sun Microsystems Inc.)
逆に-targetを1.4にしてるとか てかjarはあんま関係ないのでは? コンパイルに対する内容しだいなので。
ビルドするときに、 [echo] Compiling with Java 1.5 from 1.4 source to 1.4 target, と出るので、1.4であることは確実なのですが、 これを1.5にすることはant側で出来るのでしょうか?
>>732 インナークラス含めてコンパイルしたらこんなものが出来るとすら知りませんでしたorz
仰るとおりに、△△$1.classも含め実行したら
ちゃんとJARになり、またダブルクリックした後の処理もきちんとされました。
どうもありがとうございました。
>>742 build.xmlで指定はしていなかったのですが、
build.propertiesにてversion変更したら無事実行できました。
相談させていただくことにより、一旦頭が冷えて解決することができました。
ありがとうございました。
>>735 そりゃ、EJBのValue Objectの命名規則じゃないか?
EJBの場合、同じエンティティを表すクラスが複数現れる
(EJBObjectやHome/Remoteインタフェース、Value Objectなど)
ので、そういう面倒な命名規則が役に立つけど。
745 :
デフォルトの名無しさん :2006/12/07(木) 12:09:47
画像をいろいろな角度に回転させたり傾けたりしたものを取得するプログラムを作っています。 回転させた画像についてはAffineTransformクラスを使って作成することができました。 では傾けた画像を得るにはどのようなクラスを用いればいいのでしょうか?
回転と傾けるってどう違うんだ? 2D軸と3D軸の話か?
傾けるってのは長方形→平行四辺形みたいなことかと。
質問があります。 それなりのプログラムを書こうとするときにいつも クラス名、変数名、メソッド名で困ってしまいます。 クラス名はそんなに多くないからどうにかなりますが変数とメソッドは悩みます。 どういう基準で名前をつければ良いでしょうか? 思いつかない場合ですと int temp とか int kazu, kazu1とか日本語まで取り入れてしまう始末です。 メソッドでもpublic void setKazu(){]とかとか。 気がついたらグローバルとローカルで重複の変数になっていてちゃんと動作しなくて悩んだことも多々あります。 皆さんの基準などを教えていただけたらうれしいです。 アドバイスよろしくお願いします。
フィールド:名詞、メソッド:動詞 kazu1はマズイ。こんなんするぐらいならいっそ日本語で private int 生徒数; public void 生徒数設定(int 生徒数){... の方が分かり易い分マシだと思う
それぞれの役割とスコープをちゃんと考えてりゃ、ネーミングに困る事は無い。 いくつか候補のうち、どれにしようか・・・ はあるけど、適当に付けるような事態にはならない。 適当に付けると後で困るからな。
752 :
デフォルトの名無しさん :2006/12/07(木) 20:26:14
753 :
デフォルトの名無しさん :2006/12/07(木) 20:47:11
>>747 >>748 2D軸と3D軸の話で,
傾けるってのは長方形→平行四辺形みたいなことでゴザイマス。
日本語下手でスマソ
754 :
デフォルトの名無しさん :2006/12/07(木) 20:53:00
質問させていただきます。 Javaの話に限定したわけじゃないですが、 クラスの中にフィールドをいっぱい入れて、 それぞれにsetterとgetterを入れたりしたら、 結局フィールドをprivateにしてる意味があるのでしょうか。
755 :
デフォルトの名無しさん :2006/12/07(木) 20:56:38
>>754 少なくとも、気づかずにフィールドの値を動かしていたというようなことは防げる。
>>754 入れてはいけない値を入れるような無制約な書き換えの恐れが無くなるし
はじめまして。 同一プロセス内で複数の Java 仮想マシンが動作したため、エラーになりました この問題を解決するにはどうすればよろしいのでしょうか。 再インストールはしましたが変わりません。 よろしくお願いします。
>>754 変数がおかしな値になってる原因を調べるときにsetterブレークできる
リード、セットの頻度も調べられたりテスト時などに余計な処理をはさんだり出来る
>>758 同一プロセス内で複数のJava仮想マシンが動作することはあり得ません。
使用したOS、Javaのバージョン、エラーが発生したJavaソフトウェアの名前、
エラー発生時の状況(ログ、標準出力など)
再インストールしたソフトと再インストール後の状況を添えて
もう一度書き込んでください。
>>754 後からスレッドセーフにする必要が出た時などに
修正する箇所を減らすことが出来る。
実行してるユーザーのユーザーディレクトリを取得する方法は、ないでしょうか? windowsならc:/Document and Settings/XXXX Linuxなら/home/XXXなどを取得したいのですが・・・。
System.getProperty("user.home");
ある項目ごとの時系列データをデータベースにして色々処理したいんですが Javaで操作できるおすすめのデータベースとかって何かありますか?
テキストファイル
HSQLかな、Derbyは終了処理に癖がある(正常な例外で終わる)からちょっとキモイ。
>763 ありがとうございます。 getPropertyでいろんな情報が、取れるのですね。勉強になりました。
768 :
707 :2006/12/07(木) 22:40:56
こんばんは、昨日アドバイスもらってやってみましたが、まだ文字化けしています。 getContent-Typeで文字コードの取得をやってみたのですが、使いどころが間違っているのでしょうか? URL dairly_add = new URL(rss_add); URLConnection dairly = dairly_add.openConnection(); InputStream honbun = dairly.getInputStream(); byte buf[] = new byte[256]; int n; System.out.println("Content-length: " + dairly.getContentLength()); System.out.println("Content-type: " + dairly.getContentType()); while (( n = honbun.read(buf, 0, buf.length)) != -1 ) { System.out.write(buf,0,n); } こんな感じに改良したのですが、どこがおかしいのか教えていただければ幸いです。 作成にはEclipseを使っています。
769 :
デフォルトの名無しさん :2006/12/07(木) 23:05:54
>>752 ですが誰かお願いできませんか?
さっきから色々やっているのですができなくて困っています・・・
>>769 冒頭のコメントにあるとおりのHTMLを作って開いたらそれっぽい
ベジェ曲線が表示されるのだが?
いったい何をやったのか書いてみたまい。
アプレットだってことはわかってる?
>>764 766氏とかぶるが俺も HSQL を勧める。
772 :
デフォルトの名無しさん :2006/12/07(木) 23:43:40
>>770 さん
すいません。
今実行できました。ありがとうございます。
>>768 Content-TypeもContent-LengthもInputStreamも全部
扱いどころが間違ってる。
775 :
デフォルトの名無しさん :2006/12/07(木) 23:58:37
776 :
707 :2006/12/08(金) 00:03:00
>>773 やっぱりそうですか…orz
色々探してるんだけど、なかなか参考になるサイトが無いです。
たぶん、どこのプロセスで文字化けが起こっているのか?ということと、ストリームの仕組みが分かってないせいだと思います。
InputStreamからデータを取り出す時に文字化けって起こってるのでしょうか?
>>776 charset取得してもそれをストリームに指示しないと
だれもコード変換してくれない。適当な参考書でストリームについて
書いてあるページめくってみ。
ところでHTTPURLConnectionのデフォルトの状態でGETメソッド使ったとき
HTTP/1.0で接続するのって規格上保証されているんだっけ? データの終りを
ストリームの終端で判別するのあぶなくね? HTTP/1.1になってる実装系あったりしない?
>>775 無理
java3Dという選択肢もあるがこれもjoglと同じで標準で入っているわけではないし
メソッドの戻り値に複数のJavaBeanを返すことって可能なのでしょうか。 例えば、Hoge1とHoge2なJavaBeanがあったとします。Hoge1だけ返すなら↓のように簡単にできるのですが。。。 public Hoge hoge(){ return new Hoge(); }
>>779 public Object[] hoge() {return new Object[]{new Hoge1(), new Hoge2()};}
>>780 ありがとうございます。
戻り値がObject[]になってますがジェネリックスか何かを使って明示的に型指定できないのでしょうか?
Object<Hoge1,Hoge2>[]にすると Objectは総称ではありません。・・・パラメータ化できません。
となります。
782 :
デフォルトの名無しさん :2006/12/08(金) 03:49:39
>>781 いや、そのジェネリクスの使い方は間違ってるよ。Object<T1,T2>なんてものはないので。
Hoge1とHoge2のスーパークラスを作って両者ともそれを継承するようにするか、
インタフェースを定義して両者それを実装するようにして、
SuperClass[]とかInterface[]とかみたいに返すようにすればObject[]を返すよりは限定できる。
>>781 がやりたかったことを推測すると、適当に書くとこんな感じかも。
hoge()はこんな感じで、
public Pair<Hoge1,Hoge2> hoge() {return new Pair<Hoge1,Hoge2>(new Hoge1(), new Hoge2());}
で、こういうクラスを定義する。
public class Pair<T1,T2> {
public T1 t1;
public T2 t2;
public Pair(T1 t1, T2 t2) {
this.t1 = t1;
this.t2 = t2;
}
}
そして、
Pair<Hoge1,Hoge2> p = hoge();
みたいに取ってきて、p.t1, p.t2でそれぞれのインスタンスを得る。
あー、いや、 Hoge1とHoge2しか返さないことが分かってるなら、 無理にジェネリクスなんか使わずに、 Hoge1とHoge2を内部に保持するクラスを作って、 それを返すようにすれば<..,..>なんて面倒な書き方は不要になる。 なんにせよ、メソッドは一つのものしか返せないので、 戻り値で複数のものを受け取りたいときは、配列かクラスにまとめるしかない。
>>782 >>783 別途クラスを作成しないといけないんですね、理解できました。
ありがとうございますm(__)m
786 :
785 :2006/12/08(金) 04:27:00
>>784 setter,getterからHoge1,Hoge2を取得するようにってことですね?!
ありがとうございますm(__)m
>>786 setter,getterでも
>>783 みたくフィールドをpublicにする方法でもありと思う。
そのへんのアクセス制御の匙加減は場合によるので。
788 :
デフォルトの名無しさん :2006/12/08(金) 05:20:46
アプレットで生成した画像(ブラウザ上、アプレットビューアー上の画像) はwordには貼り付けられないのでしょうか? もし知っている方いましたら教えてください。
>>788 画面をキャプチャして画像のところだけ切り出してそれを貼ればいいんじゃね?
790 :
デフォルトの名無しさん :2006/12/08(金) 06:48:28
>>789 できました!!!
朝早くからありがとうございました!!
JAVA APPLETで教えてください。 【やりたいこと】 ・別ウインドウを開かず、IPマルチキャストでデータを受信し、その内容を表示する ・Htmlタグで指定したボタンでスタート、ストップしたい。 【やったこと】 スレッドを作ってマルチキャスト受信。 【問題点】 アプレット起動時には、マルチキャストに接続できますが、いったんマルチキャスト グループから抜けると、再度グループに入ろうとしたところで例外が発生。 ↓ Security exception occurred(run):access denied (java.net.SocketPermission 225.1.1.1 connect,accept,resolve) java.security.AccessControlException: access denied (java.net.SocketPermission 225.1.1.1 connect,accept,resolve) at java.security.AccessControlContext.checkPermission(Unknown Source) at java.security.AccessController.checkPermission(Unknown Source) at java.lang.SecurityManager.checkPermission(Unknown Source) at java.lang.SecurityManager.checkMulticast(Unknown Source) at java.net.MulticastSocket.joinGroup(Unknown Source) at MultiCastTest.MultiCastReceive.run(MultiCastReceive.java:213) at java.lang.Thread.run(Unknown Source) 解決方法を教えてください。
792 :
ぴゅあ :2006/12/08(金) 08:08:17
>>754 >フィールドをprivateにしてる意味があるのでしょうか。
と考えるのではなく
まずクラス内にあるもの全てprivateととし、外から勝手に触らせない
外から触らせてもよい/触らせるものは何かを考えて制限を緩めていく
というような見方をしてみるとかもいいのかも
それはフィールド丸まま触らせていいと思えばフィールドでもいいし、setter/getterでもいいけど
setter/getterでアクセスさせるなら、フィールドに入れられる値に条件(制限)を与えたり,仕様変更に応じてそれらを変えたりするのも楽ですよね
(スレッド間での事とか諸々)
そんな条件とか全くないということが明確ならフィールドでもいいと判断できるだろうし
>>791 Applet上でIP使ってゴリっと通信できたら、そりゃ困る罠
794 :
791 :2006/12/08(金) 13:07:25
795 :
デフォルトの名無しさん :2006/12/08(金) 14:06:32
「エラーが出て」るんなら、そのエラーを貼れ。 自分の言いたいことだけ言って、そのくせ何も判断材料をを出さなければ 答えようが無い。
私のパソコンではそこに書いてある通りにやって実行できました サイトは間違っていません あなたが間違っています 以下796と同文
798 :
795 :2006/12/08(金) 14:26:40
すみません 言葉足らずでした HelloWorld.java:7: ’}’がありません エラー1個 とエラーが出ます
>>798 7行目に’}’がない。
足りないのは言葉ではなく注意力かな。
800 :
795 :2006/12/08(金) 14:36:54
>>799 ありがとうございます 早速やってみます
答えが書いてあっても読まないのって一体・・・
802 :
795 :2006/12/08(金) 15:02:36
さっきの者ですがやっぱりできませんでした;超初心者なんです; 原因を考えた結果最初変数等を入れるときにサイトが最新バージョンに対応して いなかったので 変数名PATH 変数値C:\Program Files\Java\jdk1.5.0_10\bin と入れました 間違っていないでしょうか?
間違っているのはそこじゃない。 明らかにソース入力ミスだ。 もう面倒だから、そこからコピペしてコンパイルしてみろ。 コンパイルできたら、自分の書いたやつとどこが違うのか比べてみろ。
804 :
795 :2006/12/08(金) 15:14:47
ファイル名はサイトので cd C:¥WORk dir javac HelloWorld.java dir です 何か違っているでしょうか?
806 :
795 :2006/12/08(金) 15:16:56
807 :
795 :2006/12/08(金) 15:21:02
やっぱダメです;
809 :
795 :2006/12/08(金) 15:24:58
コピペで入録も何度もしたんですけどね;
pathが違ってたら
>>1 の中段みたいなエラーが出る
そこを通り越して
>>798 のエラーが出るなら
pathには問題が無かったんだよ
てかそんな見当違いのところをいじるな
>>798 のエラーは
HelloWorld.javaファイルの7行目に } がない、といっている
で、実際そうなのか確かめてみたよな?
811 :
795 :2006/12/08(金) 15:33:13
HelloWo}rld.java ですか? HelloWorld.java'}'とやってますた;
問題のエラーは、カッコの対応関係上ここには } があるはずと コンパイラには思えるのだがそうなっていなかったという意味ね。 その行自体ではなく、全体のカッコの対応関係を確認すべし。
javaの前に日本語の勉強もしとけ
>>811 それは7文字目だ。
修正してるファイル(やディレクトリ)とコンパイルしてるファイル(やディレクトリ)が違ってるのかとも思ったが、それは予想外だ。
public class HelloWorld
{
public static void main(String args[])
{
System.out.println("Hello Java World !");
}
}←ここが7行目(ここが抜けてる)
JISAutoDetectで自動判別された文字コードは、 まだ取得できないんですかね? EUCのファイルで試したところ、"JISAutoDetect"と返ってきました。 オープンソースであっても良さそうですが。
>>815 1.4 以降なら java.nio.charset.CharsetDecoder#detectedCharset() で取れるよ。
817 :
815 :2006/12/08(金) 16:28:16
>>816 以下のソースで試してみました。
----------------------------------------------------------
//ファイルオープン
fis = new FileInputStream(_file);
CharsetDecoder dec = Charset.forName("JISAutoDetect").newDecoder();
isw = new InputStreamReader(fis, dec);
br = new BufferedReader(isw);
//ファイル読み込み
String line = "";
while ((line = br.readLine()) != null) {
}
//ファイルクローズ(適当)
br.close();isw.close();fis.close();
//検出した文字コードを出力
System.out.println(dec.detectedCharset());
----------------------------------------------------------
これでEUCファイルを読み込むと、漢字も文字化けせずに読めたのですが、
dec.detectedCharset()の箇所で、
「java.lang.IllegalStateException: charset not yet detected」
と言うエラーになりました。
ヘルプには「IllegalStateException - 読み込みバイト数の不足のため、文字セットを特定できなかった場合」と書いてありますが、
読み込んだ内容は正しくEUCと判断しているようなので、読み込み不足はないと思うのですが。。
そもそも、br.readLine() で1行ずつ読み込んでいるのに、なぜEUCだとわかるのかがわかりません。なんでですかね?
819 :
795 :2006/12/08(金) 16:42:59
>>814 どうもありがとうございます
今日はじめたばっかりなのでまたあほな事聞くと思いますが
気長に付き合ってください
本物の厨房か消防っぽいな・・・ 日本語も勉強しろ。 読み書き両方だ。
初歩的な質問なんですが ○.java というソースファイルを作ってjavacでコンパイルする 所まではわかるのですが。 ○○.javaなどのソースファイルが複数に及ぶ場合 ○○1.java〜○○20.java と20個のファイルで一つのソフトだとした場合 それをひとまとめにする場合はどうすればよいのでしょうか?
822 :
795 :2006/12/08(金) 16:57:40
高校の頃の現国の成績ズタズタだったので 変わらない思います;
823 :
815 :2006/12/08(金) 16:58:00
>>818 ありがとうございます。参考になりました。
ちょっとソースも見てみます。
readLine()では手遅れだから、InputStreamReaderのコンストラクタで先読みしてるのかな??
>>821 フォルダに入れてもいいし、jarアーカイブでまとめても良い。
jarにする場合は少し作業が必要だが、ダブルクリックで実行可能にすることができる。
>>824 ありがとうございます。
○○1.java〜○○20.javaを○○フォルダに入れて
○○フォルダをjavacすればよいのでしょうか?
>>825 「ひとまとめにする」じゃなくて「ひとまとめにコンパイルする」だろ?
日本語ははっきりと。
javac ○○*.java
>>825 そんな気がしました。
javac *.java で、コンパイルできますよ。
クラスファイルは複数できます。これを1つにしたいのなら、jarにします。
829 :
795 :2006/12/08(金) 17:23:23
ありがとうございます 見事できました まさかソースファイルに原因があったとは(-_-;)自分でプログラム組む時 ソースファイル自分で組める気がしませんorz
無能なPGが一人増えた瞬間 デスマーチを引き起こす原因が誕生した瞬間 に立ち会えた幸せ
831 :
795 :2006/12/08(金) 17:40:34
無能か有能かになるかはなってみないと分りませんよ? 無能になる確立80%ですが
>>721 >「repaintは"なるべく早い時期に"paintを呼び出そうとする」というのがあって
>paintが呼び出されるのが続くj++より前になるか後になるかは判らないし
これってマウスイベント中にrepaintが書かれた事についてだよね。
repaintの次の行にj++が書かれていても、マウスイベント中なんだからpaintは呼び出されないんじゃないか。
それともマウスイベント中にpaintが呼び出される事ってあるの?
repaintってペイントイベントをキューに追加してるだけだと思ってたんだけど、俺勘違いしてる?
’;’や’}’の付け忘れは、始めたての頃だと誰もが経験するよ。 そこで1時間も悩んだり、2chに聞いたりするかは人次第だが… ま、それだけで自分を無能と決めつけなくてもいい。 これだけ悩めば、もう懲りて気をつけるようになるでしょ。
>>826-828 大変参考になりました。ありがとうございます
正直ドキュメントを読んだことなかったのですが
これからじっくり読んでみたいとおもいます
835 :
デフォルトの名無しさん :2006/12/08(金) 18:18:06
カメラを使ったiアプリを作りたいんですが、 バーコードリーダみたくカメラに現在映っている画像を 1秒間に何回か読み込ませて何かの処理に成功したらそこで止まる。 というようなプログラムを作成することは可能でしょうか? 例えば●に似た形を認識すればキャンバスに"発見!"と出力するような プログラムです
Swingアプレット上で、 入力した文字列が端まで来たときに、文字を折り返したいのですが どのようにすれは良いのでしょうか。。
>>835 作成する事が不可能、と断定するための条件は何もないと思います
>>817 JDK 6.0 のソース、ちろっと見てみたけど
ファイル終端までくると CharsetDecoder#reset() 呼んでるんだわ。
で、 CharsetDecoder#reset() されると detectedCharset() の状態もリセットされるみたい。
そーいや、StreamDecoder のバグで CharsetDecoder#flush() 呼ぶべきところで
CharsetDecoder#reset() 呼ぶって奴があった記憶があるけど、これだったかも?
ドキュメント読まずにどうやってプログラム書くんだ?
windows なら javac ○○フォルダ\*.java する
841 :
ココ電球(∩T∀T) ◆tIS/.aX84. :2006/12/08(金) 19:04:03
>>839 コピペ張り合わせ&クライアントに催眠術
またゴミコテがきた
>>835 可能か不可能と聞かれたら一応可能です。(ただし、iアプリに定められている容量では不足だと思う)
例で言うと、画像認識サービスGTAPなどがあります。
とは言え、画像認識はまだまだ研究途上なので専門知識のない方が、プログラム組めるほど
ライブラリはないですよ。
844 :
817 :2006/12/08(金) 19:36:01
>>838 JDK5で早速試してみたところ、whileで読み込んでいる時は"windows-31j"と取得でき、
ファイルを読み終えて取得するとエラー(正常動作)になりました。
大変勉強になりました。ありがとうございます!
ドキュメントってサイトにアクセスして見るしかないでしょうか? 一括ダウンロードとかしてないのですかね? もしくは書籍として販売とか。
>>845 公式でzipで配布してるジャマイカ
日本語訳はSE5.0までだけどな(6.0は英語のみ)
848 :
847 :2006/12/08(金) 20:26:59
リロードしろよ俺orz
849 :
707 :2006/12/08(金) 21:23:40
遅ればせながら、昨晩文字化けで悩んでた件、解決しました。 InputStreamReaderに文字コードを指定してやればよかったんですねorz ストリームの使い方が全然分かってなかったです。 アドバイスくれた方々、ありがとうございます。 あと一つ確かめたい事があるんですが、readLine()で読み込んだ複数行を 1つの変数に文章として格納するのって可能ですか? whileでreadLineを繰り返しながら、変数に格納していく方法を今適当に思いついたのですが
850 :
707 :2006/12/08(金) 21:55:35
あ、自己解決した。 a = a + bのwhileで1つの変数に1行で入りました。 Java初心者だけど、手探りでやって成功すると楽しい!
851 :
ぴゅあ :2006/12/08(金) 23:32:50
>>832 >加えてマウスイベント処理内でrepaint,j++をやっているので
も読んでみて欲しかった。。。
852 :
ぴゅあ :2006/12/08(金) 23:36:47
>>831 >無能になる確立80%ですが
まずこれを忘れてみとくことからだと思う。。。
JAVAである程度テキストで勉強し、そこそこ掴めてきたのですが 作成したプログラムをコマンドプロンプトからではなく 実行ファイルから起動したいのですが、方法がわかりません これはどうすればいいのでしょうか?
激しく遅レスですが、
>>764 に答えてくれた人ありがとうございました
HSQLを色々弄ってみることにします
855 :
749 :2006/12/09(土) 00:46:19
亀レスすみません。
>>750 アドバイスありがとうございます。
やっぱり英語ができないと難しいですよね。
いくつか候補があると迷ったりしちゃいます。
変な名前の変わりに一応コメントを入れて動作はわかるようにしてありますね。
>>751 それができないのが初心者です。
例えばですけど変数をラベルで表示させたい場合はint num Label l_num とするようにはしていますが。
どうしても数が増えると辛いものを感じますね。
Labelなども再利用できる物であればLabel labelとか気軽につけれるものですが同時にいくつも表示したい場合とかだと困ります。
まだ基礎を覚えて少しプログラムを書き始めたあたりなので慣れてきますかね?
>>855 数でもさ、「何の」数なのかってのがあるでしょ。
その「何の」の部分を名前にしないからわけがわからなくなるんだよ。
初心者はなぜか短い名前をつけがちだけど
冗長なぐらいの長い名前をつける方がいいよ。
>>856 やはりそうですよね。
自分の考えとしては作っている途中で行き当たりばったりっていうのがあると思います。
最初に設計をしてから作るべきですかね?
簡単な仕様書の様なものを書いてクラス名、変数名、メソッド名の簡単な動作や用途をまとめて書いておくような。
少し肝に銘じて「何の」数かと意識してやってみます。
ありがとうございます。
>>857 そこまでおおげさに考えなくても855で書いてる
>変な名前の変わりに一応コメントを入れて動作はわかるようにしてありますね。
をそのまま変数名にすればいい。
>>851 そこは既に読んだよ。同じ事言ってると思ったからわざわざ書かなかっただけ。
>加えてマウスイベント処理内でrepaint,j++をやっているので
>paintはそのイベント処理(mouseReleased)が終わった後まで待たされる可能性が高い(その直後かどうかは保証がない)
「可能性が高い」って事は「イベント処理中にpaintが実行される可能性が少なからずある」って事だよね。
じゃ無くて「1必ずイベント処理が終わってからpaintが実行される」と思うんだけど。
>「repaintは"なるべく早い時期に"paintを呼び出そうとする」というのがあって
>paintが呼び出されるのが続くj++より前になるか後になるかは判らないし
こっちも同じ事言ってるよね。
俺は「マウスイベント処理中にpaint処理が実行される事は絶対に無い」、と思ってるんだけど、
>851は「paintが実行されるのはいつかわからない」→「イベント処理中もありえる」って事なんだよね。
それとも何か勘違いしてる?マウスイベント処理中にpaint処理が実行される事ってあるの?
860 :
デフォルトの名無しさん :2006/12/09(土) 02:19:23
質問させてください。 ArrayListについてですが、 ArrayList List = new ArrayList; と List.clear() では同じことにはならないんでしょうか?
861 :
デフォルトの名無しさん :2006/12/09(土) 02:26:17
言葉足らずでした。 Line = new ArrayList(); while(CNT < 10){ Line.clear(); while (CNT < 2){ Line.add("1"); } CNT++; } ではArrayListにデータどんどんたまってしまいますか?
>>860 「同じこと」に期待される要件を列挙してみてくれ。
それと、コンパイルエラーになるような式を書かれても意味がわからんぞ。
>>861 CNT が2未満なら二つ目の while で無限ループになる。
そうでなければ CNT の値によらず、Line は空。
864 :
デフォルトの名無しさん :2006/12/09(土) 02:32:26
>>843 ありがとうございました。
画像に対して「決定」ボタンを押せば処理するという方向で行きたいと思います。
もひとつ質問お願いします。
DoJa 3.0を使っています。
自作のクラスが入ったjarをクラスパスに含めたいのですが、
どこのフォルダに含めればいいのでしょうか?
>>861 CNTの初期値が2未満だと、内側のwhileが終了しないのでどんどん溜まる。
それはサテオキ、変数名を大文字で始めないこと。Javaの慣習です。
866 :
ぴゅあ :2006/12/09(土) 02:38:40
>>859 >俺は「マウスイベント処理中にpaint処理が実行される事は絶対に無い」、と思ってるんだけど
ならば、それでいいと思う
>>864 事故解決しました
jdkのいつものextの中でした。スマソ
>>853 コンパイルしたファイル拡張子を.exeに変更
869 :
デフォルトの名無しさん :2006/12/09(土) 04:44:24
Eclipseをインストールして、プロジェクトを作ろうとしたら、フリーズしてしまいます・・・ WinMeなんですが、原因不明です どうすれば、使えるようになるのか分かる方いませんか?
>>868 ドSめ。
>>853 *.jar形式にまとめる。
その際にManifestファイルを作り忘れるな。
俺余り詳しくないから調べたらわかると思う。
>>864 開発環境でのみ使用するなら
>>867 でいいんジャマイカ
でも実機では動かないのはあたりまえ
**************** をGraphicsとして表示させたいのですが String sにn個の*を格納させたいとき String s=""; for(int i=1;i<=n;i++)s+="*"; g.drawString(s,0,0); これよりもっとスマートにsに*を格納させる方法はありませんか?
>>873 スマートかどうかは分からんが、nが大きいなら、こういう手も。
char[] cs = new char[n];
java.util.Arrays.fill(cs, '*');
g.drawChars(cs, 0, n, 0, 20);
せめて、Stringの加算でなく、StringBuilderかStringBufferを使った方がいいかも。
あと、drawStringのy座標が0だとデフォルトの座標系のままでは画面に表示されない。
複数のファイルをjarにまとめるやり方がわかりません。 どうすればよいのでしょうか?
String s="map m = collections.synchronizedmap(new hashmap(...));"; これをString[] moji=s.split(""); で1文字ずつmojiに格納していくと(や.や,や;まで格納させてしまうのですがアルファベットだけ格納させるにはsplitで可能でしょうか? そうでなければStringTokenizerでの分割の仕方を教えてください
いつもソースファイル作ると\12288は不正な文字ですってエラーが出る んですけど原因って主にどういうのですか?基本的なことですが 教えてください
>>877 そのようなStringから文字への切り分けとしてsplitが適切かどうかは置いておいて、
string.split("[^a-zA-Z]+|\\B")
>>879 プログラムを書くときに、いわゆる全角スペースを視覚化できるエディタを使った方がいいよ。
884 :
デフォルトの名無しさん :2006/12/09(土) 16:30:19
配列を半分に分割して、左右をそれぞれ 並列に処理するにはどのようにしたらいいですか?
885 :
デフォルトの名無しさん :2006/12/09(土) 16:35:41
エンコードについて質問です。 import java.net.*; import java.io.*; public class test1 { public static void main(String[] args) { String str = "あいう"; System.out.println("元の値:"+str); try { String str1 = URLEncoder.encode(str, "UTF-16"); String str2 = str.getBytes("UTF-16").toString(); System.out.println("encode:"+str1); System.out.println("getbytes:"+str2); } catch (UnsupportedEncodingException e) { } } } 上記のコードを実行すると、 元の値:あいう encode:%FE%FF%30%42%30%44%30%46 getbytes:[B@14fe5c の結果となります。 ¥u3042¥u3044¥u3046 のような結果を得るにはどうしたらいいでしょうか?
>>884 分割したそれぞれの処理を別スレッドで動作させれば、
並列動作を許すハード、OS上ならたぶん並列動作する。
別プロセスで処理させても同様。
>>885 for (char c : "あいう".toCharArray()) System.out.printf("\\u%04x", (int)c);
>>885 Stringに結果が欲しいなら
Formatter f = new Formatter();
for (char c : "あいう".toCharArray()) f.format("\\u%04x", (int)c);
String s = f.toString();
889 :
デフォルトの名無しさん :2006/12/09(土) 17:07:13
>>887 ありがとうございます。
最終的にString型の中に入れるにはどうしたらいいのでしょうか?
890 :
デフォルトの名無しさん :2006/12/09(土) 17:15:23
>>888 聞こうと思った事を応えてくれてありがとうございます。
初心者の為、コピペすると
Formatter型が解決できません &
for each ソースステートメントはソースレベルが5.0の場合にのみ使用可能になります。
というコンパイルエラーになります。
どうしたらいいでしょう?・・・・
import文とパッケージについて学ぶと良い
892 :
デフォルトの名無しさん :2006/12/09(土) 17:29:22
>>888 訳あって、JDK1.4.2を使っています。
import java.util.logging.formatter;
だと見つかりませんになります。
java.util.logging.*;
入れてみましたが、ダメでした。
>>890 1.4以下か……
Formatterは1.5からだから。
それならこんな感じか。めんどくさいや。
char[] chars = "あいう".toCharArray();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < chars.length; i++) {
sb.append("\\u");
String ss = Integer.toString((int)chars[i], 16);
for (int j = ss.length(); j < 4; j++) sb.append('0');
sb.append(ss);
}
String s = sb.toString();
int iをString stringに格納したいのですが string=i.toString();だと間接参照できない、とエラーが出るのですがどうしたらstringに格納できますか?
>>894 string = Integer.toString(i);
>>722 rss_addなんてコーディングスタイルがいかにもC言語厨みたいだな
897 :
デフォルトの名無しさん :2006/12/09(土) 17:46:37
>>893 すごい!できました。
こういう関数って何か標準であるのかと思っていました。
確かに面倒ですね。
ありがとうございました。
898 :
デフォルトの名無しさん :2006/12/09(土) 18:02:07
文字列の日付からDate型へ変換する方法についての質問です。 「2006-11-09T10:34:36+09:00」のような日時をDate型にするために、 以下のようにしてみましたが、うまくいきません。 日付と時間の間の「T」とタイムゾーンが悪いのはわかるのですが、どうしたら良いでしょうか? ちなみにこの日時の形式は、RSS1.0の中で使用されていました。 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-ddTHH:mm:ssz", Locale.US); Date date = null; try { date = format.parse("2006-12-09T03:00:16+09:00"); } catch (ParseException e) {} System.out.println(date);
Bufferedreader br; line=br.readLine(); としていて例えば下のようなテキストがあったとき fdak fare rewlkj lkjfdsa fsa この空白の2行にはline=""何が入るのでしょうか?\nでも^でも$でもないようなのですが・・・
>>898 タイムゾーンに:が入ってなければ書式指定中のTを'T'とするだけで
解析できるみたいなんだが、そのままだと上手くいかないな。
エラーでシンボルを見つけられませんと出て何時まで経っても問題解決 できません 原因として何が考えられるでしょうか?
903 :
898 :2006/12/09(土) 18:29:30
>>900 なるほど。Tの方は確認できました。ありがとうございます。
タイムゾーンの方は、GMT+09:00って、前にGMTが付いていれば動くんですけどねぇ。
デフォルトはGMTだって教えればいいのかな。調べてみます。
>>899 空行なら "".equals(line) && (line.length() == 0) になるような文字列。
空白文字があるなら、空白文字の入った文字列。
>>899 line=""って答を自分で書いているじゃないか
>>901 コンパイラが識別子が何か分からないって言っているんだから
宣言してない変数を使ってるとか
どこにあるか分からないクラスを使っているかだ
タイプミスの可能性もある
906 :
デフォルトの名無しさん :2006/12/09(土) 18:34:52
>>893 問題無いと思っていたのですが・・・
まだ・・・ダメでした。
:{省略}
for (int j = ss.length(); j < 4; j++) sb.append('0');
sb.append(ss);
}
String s = sb.toString();
System.out.println("1: "+s);
s = "2: "+"\u3042\u3044\u3046\u3048\u304a";
System.out.println(s);
このようにすると・・・一見同じようにみえるのですが・・・
結果が以下になりました。
1: \u3042\u3044\u3046\u3048\u304a
2: あいうえお
何が違うのでしょうか?私は2のようにしたいなと思っています。
もう、私、わからなくなりました。。。
お助けください。
ttp://pzxa85.hp.infoseek.co.jp/www/wwwjssm2.htm ここの「「別ウィンドウに表示」を制御する」について質問です
縦フレームの左側にこのプログラムを組み、
チェックが外れている時は右フレームにリンクを表示させたいのですが
どこをどのように書き換えればできるでしょうか?
(ベースターゲットは右フレームに指定してあります)
初心者がいろいろいじってみたのですがさっぱり…
どうしてもチェックが外れている時は同フレームに表示されてしまいます。
指導よろしくおねがいします。
もう一つ質問なのですがエラーが出たときもしかして^で教えてくれてます?
System.out.printIn("ようこそ");}} この部分のドットがシンボルエラー言われるのですが何故ですか? ちゃんと半角で入れています
>>910 ギャグなのか・・・マジなのか・・・スペルミス
printIn思ってましたprintlnだったんですね^^;私は本当に無能の様です;
これからも聞く思いますが気長に付き合ってください
だが、断る
>>906 s = "2: "+"\u3042\u3044\u3046\u3048\u304a";
の中の"\u3042\u3044\u3046\u3048\u304a"は"あいうえお"を意味する文字列リテラル。
もし、文字列リテラルの中に\を入れたかったら
>>893 の"\\u"みたいに、
"\\"としないといけない。Stringクラスの内部では\は\で入っているけれど、
リテラルではエスケープしてやる必要がある。
あ、逆か。2のようにしたいのなら、何でわざわざ"あいう"をユニコードエスケープしたの?
ユニコードエスケープしたというよりユニコードエスケープした表現を文字列にしたのか、か。 "\\u3042\\u3044\\u3046\\u3048\\u304a"を"あいうえお"にしたいなら、 さっきの逆をやればいい。"\\u"を取って4桁の16進表記をcharに変換してやる。
質問です。 GUIを使った場合に public void paint(Graphics g) { } メソッド以外で描画させるにはどうしたらいいですか? 又は他のメソッドの戻り値を利用して描画をさせるとか。 動作が良くわかっていないんですけど一番最初にpaintが描画してしまうようなのでどうしたら良いのかわかりません。 よろしくお願いします。
>>918 paint()やupdate()は何もしないようにオーバーライドして、
getGraphics()でGraphicsインスタンスを取ってきて描画して最後にdispose()する。
921 :
デフォルトの名無しさん :2006/12/09(土) 20:37:06
>>918 まず、ボタンが押された時とかの好みのタイミングで、
その、他のメソッドの戻り値をインスタンス変数に入れる。
次に、paint()の中で、そのインスタンス変数を参照してそれに応じた描画を行う。
>>919 ,920
凄く漠然とですがわかりました。
少し勉強してみますね。
>>921 こちらの場合は元々paint()内に例えば
drawString("s", 0, 0);
とか入れておいて外でsの値を変更してrepaint()という意味ですかね?
参考になりましたありがとうございます。
923 :
デフォルトの名無しさん :2006/12/09(土) 20:45:56
GUIで文字列とかガ出ているときに、特定の文字列だけ青くさせて、 その青い部分を開くとpanelが現れたりするにはどうすればいいのですか? 青くするのは文字列の文字を青くすればいいですよね。 リンクみたいのを晴れたりしないのですか?文字列の部分の座標がクリック されたのを感知したらパネルが現れるようにすればいいのですか? そのほかにも方法はありますか?
924 :
デフォルトの名無しさん :2006/12/09(土) 21:07:44
>>915 >>917 もともとは、テキストファイルの中に入っていたMS932文字が化けたのが発端です。
その元々のテキストファイルの中を
"\u3042\u3044\u3046\u3048\u304a"として入れておいてあげると化けなかったので
UTF16にするといいんだわと思いました。
テキストファイルの中身は触らずに、取り込んできたアプリケーションで"\u3042"
の形にしてあげる事ができれば・・・とがんばっていました。
単純に sb.append("\\u"); をはずしてみたら、結果は
1: 3042304430463048304a
2: あいうえお
になりました。
MS932で入っているString型をUTF16として入っているString型にするには
どうしたらいいのでしょうか????
>>924 普通に
BufferedReader br = new BufferedReader(new FileReader(filename));
String s;
while ((s = br.readLine()) != null) {
System.out.println(s);
}
とかで化ける? もしかして、Linuxとかを使ってる?
ある文字セットでエンコードされているバイト配列をStringに変換するなら、 String(byte[] bytes, String charsetName)ってコンストラクタがある。
927 :
デフォルトの名無しさん :2006/12/09(土) 21:29:45
>>925 すいません。ファイルを読み込んでいる部分はソースが無いのでわかりません。
ソース上で値が入っているString型の変数名しかわかりません。
でも・・・
今思えば・・・テストで作った
String str = "あいう";
System.out.println("元の値:"+str);
のprintlnは化けてないので、同じ状態じゃないのかもしれません。
でも、本体の方も
1: \u3042\u3044\u3046\u3048\u304a
と一応同じコードに変換しました。全然違うものでは無くて、
もともとが「あいうえお」と入っているString型(MS932?)とわかります。
スクロールしないと全部見れないほどの項目があってそれぞれにGraphicsで棒グラフを作りたいのですが FrameにCanvasを貼ってもCanvasはディスプレイの座標で打ち込むから画面下に隠れてる項目がスクロールできないのですが Graphicsを使うって条件でスクロールが使える方法やクラスは何かないですか?
AWTなのか。 ScrollPaneについて調べてみたらよいのでは?
すみませんが質問です実際ソースを組むときにリファレンスなどを見て組んで 良いのでしょうか?
931 :
デフォルトの名無しさん :2006/12/09(土) 21:43:41
>>926 今、あるサイトを参考に以下みたいのをやってみました。
String str = "あいうえお";
byte[] ms932_byte = str.getBytes("MS932");
String utf16_str = new String(ms932_byte, "UTF-16");
System.out.println("3:"+utf16_str);
でも、結果は以下のように?になりました。
3:???芦?
new String(str.getBytes("UTF-16"), "MS932") Javaのネイティブの文字エンコーディングはUTF-16なので 間違ってMS932の状態で入っているStringからUTF-16としてつまり無変換でバイトの配列として取り出し 改めてMS932でStringにする
>>930 逆に問いたい。
リファレンスなどを見ずにどうやって組むのか。
>>931 ms932_byteの文字セットはMS932なんだから当然UTF-16で復号化はできない
>>933 レスありがとうございます
それを聞き安心しました とてもじゃないけど全部用語を暗記してやるのは
自分には無理です
936 :
デフォルトの名無しさん :2006/12/09(土) 21:53:47
>>932 あれ?私のやったのと逆ですね?一応、やってみました。
String str = "あいうえお";
String ms932_str = new String(str.getBytes("UTF-16"), "MS932");
System.out.println("4:"+ms932_str);
結果・・・こうなりました。
4:??0B0D0F0H0J
何か根本的に私は勘違いしているのかしら・・・
937 :
デフォルトの名無しさん :2006/12/09(土) 22:01:30
Cookieクラスを使って作成したクッキーファイルって クライアントマシンの何処にできるんですかね? C:\Documents and Settings\ユーザー名\ の配下だと思ってたんだけど・・・ OSはWindowsXPです。
>>924 > MS932で入っているString型をUTF16として入っているString型にするには
MS932 の String型なんかない。
String は全部 Unicode(UTF-16)
>>936 ユニコードの文字列を UTF-16 のバイト列に変換して、
その UTF-16 のバイト列を MS932 のバイト列とみなして
ユニコードの文字列に変換しようとしてるんだから化けるのは当然。
ASCIIの範囲だったら辛うじて読めるかもしれんが、2バイト文字入ってたらダメ。
ちなみに、
>>932 のも嘘だから信じないように。
昔の JDBC とかで setEncoding できなかった時に
new String(jdbcResult.getBytes("ISO8859_1"), "MS932") みたいなのはあったけど。
>>866 >ならば、それでいいと思う
ごめん。意味がわからない。これは
>>721 で書いたのは間違ってるっていう解釈でいいのかな。
>paintが呼び出されるのが続くj++より前になるか後になるかは判らないし
721でこう書いたのは何か根拠があっての事なんだと思うんだけど、その根拠が知りたい。
俺が間違ってるなら間違ってる、ってはっきり書いてくれ。書いた上でその根拠をを示してくれ。
正しい事を知っておくのはプログラムをする上での基本だと思うから。
941 :
デフォルトの名無しさん :2006/12/09(土) 22:50:30
>>939 ありがとう、939さん
教えてもらったやり方で、私の今までテストしていたものは?????となりましたが、
本来適用してもらった方では化けませんでした。
答えてくれた皆さんにも感謝してます。勉強になりました。
みんな、まいしてる。(○´3`)チュ
942 :
デフォルトの名無しさん :2006/12/09(土) 22:53:45
上!興奮して間違っちゃった。なんか変な日本語・・・ こう書きたかったです↓ 教えてもらったやり方で、私の今までテストしていたものは?????となったけど、 本来適用したかった方では化けませんでした。 (*^。^*)テヘヘ
943 :
ぴゅあ :2006/12/10(日) 00:30:42
>>940 >正しい事を知っておくのはプログラムをする上での基本だと思うから。
そうなの?
「間違ってました。申し訳ない」とか、偉いとかバカとか格差を付けたいとかではなくて?
最近何故か要らんのは減ってるみたいでもあるけど ま 2chだ 判らんけど
しかし、この手のレスが付くと便乗してくる人たちが大量に発生しそうなのに…
なんとかって機能使ってたりするってことなのかな
それはそれで楽ってことでもあるだろうけど
>俺は「マウスイベント処理中にpaint処理が実行される事は絶対に無い」、と思ってるんだけど
「絶対であって疑いを持つ気は微塵もない」と言っていることを意味しているのですよね
ならば、それでいいと思う
あちしには「絶対」なんて言葉はそうそう使えるもんぢゃないけど
あと付け加えておけば
>>加えてマウスイベント処理内でrepaint,j++をやっているので
>も読んでみて欲しかった。。。
は、段階踏んで書いたつもりだったけど、それが判らないものだったらしい
それは申し訳ない
945 :
デフォルトの名無しさん :2006/12/10(日) 01:13:48
質問の答えになってないな 意味不明のエクスキューズとかキモイんですけど
>>943 >>正しい事を知っておくのはプログラムをする上での基本だと思うから。
>そうなの?
そうだよ。間違った知識を元に書いたコードは正しい動作をするとは限らない。
自分の知識が正しいか、正しくないか、というのはコードを書く時にとても重要だ。
>「間違ってました。申し訳ない」とか、偉いとかバカとか格差を付けたいとかではなくて?
偉いとかバカとかって格差ってどういう事?
もし間違っていたなら間違っていたと言えばいいだけ。そこに格差なんて感じるの?
間違っているなら間違っている、正しいなら正しい、これだけだ。
何度も書くが自分の知識が正しいか、正しくないか、というのはコードを書く時にとても重要。
>「絶対であって疑いを持つ気は微塵もない」と言っていることを意味しているのですよね
違うよ。
「俺が間違っているならそう書いてくれ」って書いてるじゃん。
イベントドリブンの場合、1つのイベントが終わるまで次のイベントは処理されない。
もしrepaintがペイントイベントを発行するなら、現在処理中のマウスイベントが終了するまで次のペイントイベントは実行されない。
だからマウスイベントが処理中にペイントイベントは実行されない、という考え。
一個ずつ処理されるんだから最後のが前に来ることは絶対ないよね。
でももしrepaintがペイントイベントを発行せずpaintを直に実行する等の処理をするなら、マウスイベント処理中にpaintを実行する事はありえるという訳だ。
で、repaintはペイントイベントを発行するの?しないの?
>あちしには「絶対」なんて言葉はそうそう使えるもんぢゃないけど
どういう事?よく知らないで書いてるって事?
もしあやふやな知識しか持ってないなら、
>>721 の時点でそう書くべきだと思う。
>>716 だけで無く、このスレを見ている全員に対して失礼だ。
>>946 >イベントドリブンの場合、1つのイベントが終わるまで次のイベントは処理されない。
これが成立しなかったら、全てのイベントハンドラは、スレッドセーフに書かなきゃいけないな。
synchornized 宣言でいっぱいだ。
ぴゅあ、不確かなことを憶測だけで書くのはいい加減やめておけ。 仕様化されていることはプログラマとしては「絶対」と言っていいと思うよ。 仕様通りに動作しなかったらそれは「バグ」だから。 一般概念の「絶対」まで話を大きくしたかったら、それはもう板違い。 哲学板へでも行け。
便所の落書きにそこまで求めるのもどうかと思う
SmtpClient使ってメール送信プログラム作ってるんですが、送信先のメールアドレスで 文字化けするんだけど、これって単純に文字コードの問題でしょうか? String変数の中身を渡す仕組みなんですが。 ちなみにprintlnでその変数指定やると文字化けなく表示されてます。 iso-2022-jpでコード変換も済んでるはずなのに……。
951 :
ぴゅあ :2006/12/10(日) 02:44:57
>>945 それなりにやってきているんだろうと思うし
その中で「絶対」という考え方を身に付けたということは、時間の無駄であるような気もしてるけど・・・
逆に「絶対」とは何処から?とも聞いてみたいとしてみるか?というようなところでもあるけど
まず、
>>721 に対して間違っているんじゃないかと言っているんですよね?
また、読んだとはされているけど、同じことを言っているということは同じに扱ったということだろうし
まずrepaint,j++,paintの関係
次に
>加えてマウスイベント処理内で
でマウスイベント処理内での話
を書いたつもりだけど、「書いてることが判らん」か「同じことを言っている」(解っている)ということだろうと思うけど
(この話の前には
>イベントに(何の対処もなしに)順序性を求めるのはあまりよくないのかも
の前置きもある)
ただ
>可能性が高い
とした部分は「です」としようと思ったが、全てのプラットホームで「です」と言えるか?と"疑問"を持ったので敢えて「可能性が高い」としたけど
(
>>716 (他、読んだ相手に)「絶対」という考え方を持たせたくないし)
で、間違っているんじゃないかというこの話の流れよね?
実際には
>>721 とは少しずれた部分で話をしてるような気もしていたりする(「絶対に」付きで)
違うかな
952 :
ぴゅあ :2006/12/10(日) 02:46:22
>>945 マジに話しようとしているとして
>自分の知識が正しいか、正しくないか、というのはコードを書く時にとても重要だ。
はそうだけど、「絶対に」はあまり好ましくないような気がする
今正に正しいと思っていることは自分にとって正しいと思うことであり
それを元にコードを書く/書くことになるけど
自身に"疑問"も同時に持つから考えることができるんじゃないの?
「絶対に」は考えることを失わせることになるんじゃないかと思うけど
で、それ風のレスっていうのも、そういうところなんかな
とか思ってみたり
>>951-952 >実際には
>>721 とは少しずれた部分で話をしてるような気もしていたりする(「絶対に」付きで)
俺はずっと純粋に技術的な質問をしてるよ。
「repaintはペイントイベントを発行するの?しないの?」という質問なんだけど。
で、javaのソースをダウンロードしてざっと調べてみた。repaintはペイントイベントを発行してるようだね。
>>721 は間違いって事でいい?
>>可能性が高い
>とした部分は「です」としようと思ったが、全てのプラットホームで「です」と言えるか?と"疑問"を持ったので敢えて「可能性が高い」としたけど
どういう事?
結局これはよく知らないままに書いてたって事を言いたいの?
>自身に"疑問"も同時に持つから考えることができるんじゃないの?
俺が
>>832 を書いた時点で自身に"疑問"は抱かなかった?
>「絶対に」は考えることを失わせることになるんじゃないかと思うけど
「絶対」という言葉が気に入らないのかな?「可能性は高い」に対しての「絶対無い」なんだけどね。
どうしても気に入らないなら「可能性は無い」でいいよ。
それともマウスイベント処理中にpaint処理が実行される可能性があるって言いたいのかな?
もしそうなら根拠を示してきっちり反論すべきだよ。
それが正しいなら俺は受け入れる、正しくないなら受け入れない、それだけだよ。
955 :
デフォルトの名無しさん :2006/12/10(日) 08:27:42
ぴゅあって宗教家みたいだな
>>950 >文字化けするんだけど、これって単純に文字コードの問題でしょうか?
単純に文字コードの問題
>iso-2022-jpでコード変換も済んでるはずなのに……。
ここが間違ってるに100ペリカ
実行可能形式の*.jarファイルを作る時の質問です manifest.txtというファイルに Main-Class: Main <改行> と入れる。 構造がhoge(フォルダ)\Main.classだった場合にはどうしたら良いでしょうか? jar cfvm hogehoge.jar manifest.txt hoge.Main.class ではできたjarファイル形式ではちゃんと動作してくれませんでした。 どうしたらいいかアドバイスをいただけたら光栄です。
携帯だとMANIFEST.MFなんだけど、他は違うんだね…
>>958 jarの中に入るのはそうですけど自分がネットで調べた感じではファイル名は何でもよさそうでした。
クラス名.mani にしているところや 自分のように manifest.txt としているところもありましたね。
String bun="fdsa"; g.drawString(bun,44,44); や g.drawString("fdsa",44,44); だとエラーになってしまうのですがどうしたら第一引数にbunをもってこれますか?
>>957 FQCNで指定する。つまり
Main-Class: hoge.Main
>>962 おうおうありがとう。
あとでやってみる。
一応同じフォルダに入れてやったときもできなかったから他に何か間違ってるのかもしれないし。
>>958-959 jarファイルの中では必ずMETA-INF/MANIFEST.MFでなければならないが、
jar コマンドのmオプションでマニフェストファイルを明示的に指定すれば、元はどんな名前でもいい。
ただ、
>>597 のは引数の順番がマニュアルと違うな…
*.jarのファイルはjarファイルだと、jarコマンドが認識してくれるんだろうか。
EJBを利用して ユーザにuser/passwordを入力させて、もし正しければsessionIDを発行します。 次回からユーザはアクセスにこのsessionIDを利用して操作を継続させるような サンプルはないのでしょうか?
>>962 まて。hogeがパッケージ名とは書いてないぞ。
単に hoge/Main.class という名前で格納しているだけかもしれん。
考えすぎだろうけど、パッケージ名ならそう書け。
>>957
もしhogeが本当にパッケージ名でないのなら、 Main-Class: Main Class-Path: hoge で行けたと思う。
swingの画面で最大化をするとタスクバーにIMEの アイコンが現れ、作成時の画面にするとIMEのアイコンが 消える。 漢字入力はできる。 必ずこの現象がでるわけではない。 同じ画面ではでるが。 IMEの操作はプログラムの中で何もしていないのに。
Windowsではよくあること
971 :
デフォルトの名無しさん :2006/12/10(日) 14:40:43
>>969 Editできない設定かVisbleできない
Swingコンポーネントにフォーカスを移動する
部分がないですか。
そのあたりをしっかりプログラムすれば。
972 :
950 :2006/12/10(日) 14:59:44
>>956 文字化けはメールの一部だけなのですが、それでも文字コードが原因ですか?
Charset iso = Charset.forName("ISO2022JP")
という型で指定しているのですが。
>>972 情報小出しするんなら解決は来年になるな。よいお年を(^-^)/~
質問 javax.media.Player.getVisualComponent()で取得したComponentを JFrameのContentPaneにaddしたところ 動画はJFrameの上で問題なく再生されましたが JFrameのJMenuBarよりも上に描画されているためメニューの項目が見えなくなってしまいました。 ただ、メニュー自体は有効で、メニューに対してショートカットキーからの動作は問題なく動いています。 メニューの項目をPlayer.getVisualComponent()より上に描画させるにはどのようにしたらよいか御教授願います。
>>971 設計時の画面ではIMEのアイコンがタスクバーに
表示されませんが最大化してコンポーネントを移動すると
IMEのアイコンがタスクバーに表示されます。
漢字入力はできるのですが「A」や「あ」がタスクバーに
表示できません。
何でなんだろう?
CARDLayoutで表示をしています(関係ないかもしれないけど)
>>974 JPopupMenu.setDefaultLightWeightPopupEnabled(false); でどうか?
教示
979 :
デフォルトの名無しさん :2006/12/10(日) 17:06:33
>>976 すいません、やっと仰っている意味がわかりました。
無事解決できました。
ありがとうございました。
javadriveが糞重い・・・ SwingのJTreeやJTableを学びたいんだけど、 他に良いサイトありませんか?
982 :
デフォルトの名無しさん :2006/12/10(日) 18:47:25
子ページ <script language="javascript"> function istest() { if( opener.form1.test.value!=1) { window.close }else { window.open('異なるページ'); } } </script> 親ページ <script language="javascript"> window.open( 子ページ ) </script> <form name=test> <input type=hidden name=test value=1> </form> こういった構成の場合、どのようにしたらURLConnectionをもちいて、 取得先ページの window.open("異なるページ") を実行させることができますか?
Javaにデストラクタがないのは何故ですか? finallyよりもRAIIの方が便利です
Javaのオブジェクトがスタックと密接してないから。 D言語はscope属性を加えるとRAIIになるみたいだから期待しろ。
>>984 普通に考えて、GCの実装の自由度あげるためじゃないか?
質問です。 Sun Java Studio CreatorでJSFを駆使して作ったアプリケーションを Tomcat5.0 + J2SE1.5環境にそのままデプロイして動作させることはできますか?
>>987 必要なライブラリがアプリケーションのWEB-INF/libに入っているかどうかだな。
サンクス、調べます
というか、Java Creatorでwarにして、webappに突っ込むだけでは?
991 :
デフォルトの名無しさん :2006/12/11(月) 11:01:43
地名をローマ字で入力すると、「Welcome to 地名」と画面に出力する(例えば、Ubeと入力すると Welcome to Ubeと画面に出力する)そして空うち(空行入力)で終了するプログラムを作成せよ。 といった問題です。どうかといてみてください
992 :
デフォルトの名無しさん :2006/12/11(月) 11:06:34
宿題スレ行け
994 :
デフォルトの名無しさん :2006/12/11(月) 12:46:51
宿題スレに池という奴が一杯いるな
995 :
デフォルトの名無しさん :2006/12/11(月) 13:30:00
javaで「凸四角形を矩形に変換する」といったプログラムを 作ることは可能ですか?? 射影変換を使って作ろうと思ったのですが、計算の過程がう まくいかないらしく、プログラムが思うように動いてくれませ ん;;
998 :
977 :2006/12/11(月) 17:58:07
こことサイザー専用Javaスレ のURL逆だったorz
埋め梅産め膿め績め
じゃう゛ぁ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。