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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
過去ログ、関連スレッド、よくある質問とその回答、
質問をする前に、貴方が見なければならないサイトについての情報は、
下の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デフォルトの名無しさん:2006/11/21(火) 06:12:32
ずるしてらくしてかれいに2げっとかしらかしら〜
31:2006/11/21(火) 06:14:35
すまん。
前スレのリンク間違った。

前スレッド
【初心者】Java質問・相談スレッド93【大歓迎】
http://pc8.2ch.net/test/read.cgi/tech/1161492130/
4デフォルトの名無しさん:2006/11/21(火) 13:41:22
前スレ994です。if文についての回答ありがとうございました!
5デフォルトの名無しさん:2006/11/21(火) 15:30:48
taglibで、チェックボックスとかラジオボタンのnameとかvalue属性以外の属性をセットするのってどうやるん?
例えばid属性とか(´・ω・`)
6デフォルトの名無しさん:2006/11/21(火) 15:34:17
あ、こっちはpurejavaか・・・
スレ違いスマソ(´・ω・`)
7デフォルトの名無しさん:2006/11/21(火) 15:35:02
Server VM とやらを使ってみようと思って -server をつけてみたら,
Error: no `server' JVM at ......
と表示された.
Server VM というのは別にインストールする必要があるんでしょうか?
8デフォルトの名無しさん:2006/11/21(火) 15:44:47
普通は別にインストールする必要は無い。
sunのvmの場合は、ドキュメントを見る限りどちらも同じvmだが、初期パラメータが違うだけっぽい。
特殊なアーキテクチャ・vmなら、そいつはなにか追加インストールが必要かもしらんが
sunのvm + windows なら不要。
9デフォルトの名無しさん:2006/11/21(火) 15:48:39
>>7
そのエラーメッセージの後に表示されたファイルを探して、
それがもしないのなら、java -serverで呼び出しているjavaの実行環境にはserver VMはない。
もし、JDKをインストールしているなら、
JDKをインストールしているディレクトリ下にjre/bin/serverというディレクトリがあることを確認して、
JDKインストールディレクトリの下のbinディレクトリにあるjava実行ファイルを直接フルパスで指定して、
-serverオプションをつけて実行してみて。
108:2006/11/21(火) 15:50:21
>>7
すまん。 今書いた内容に嘘が混じっていた。 心から恥じる。
server/clientは別のvmを使っている。
win版なら、jre/bin/{server|client} に別々のjvm.dllが入っている。
かと言って別にインストールする必要は無いが。
11デフォルトの名無しさん:2006/11/21(火) 15:53:27
bin/javaでもjre/bin/javaでもどちらでもいけるかも
12デフォルトの名無しさん:2006/11/21(火) 16:05:44
パスの設定次第だけど、JDKをインストールしたときにJREもインストールすると、
Windowsの場合、JDKインストールディレクトリの下のbinへのパスよりも、
Windowsのシステムディレクトリやその下のsystem32へのパスが優先されていると、
そちらにあるjavaが使うJREはclient VMしかインストールしないので-serverが利かないみたい。
JDKの方にあるJREにはserverとclientの両方がインストールされているので、
直接そちらのjavaを指定して使うか、パスの順番を変更するか、どちらかで対応。
137:2006/11/21(火) 18:21:20
>>8-12
アドバイスありがとうございます
環境はSunVM+Winでした

>>12
パスの順番を変更したら解決しました
ありがとうございます
14デフォルトの名無しさん:2006/11/21(火) 23:09:31
hibernateとかibatisみたいなORマッピングツールでやってるみたいに、
プログラムからJavaのソースを作りたいんですけど、
何か上手い方法とかあるでしょうか?
普通にFileWriterとかでせこせこ書いてるのかな?
15デフォルトの名無しさん:2006/11/21(火) 23:16:33
以下のプログラムにおけるMyMouseMotionAdapterクラス(54行目〜)内で
MyMouseAdapterクラス(34行目〜)内でいじっている変数aを使用したいのですが、
今のままでは動かないようです。どう改変したらいいのでしょうか?

http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=28745
16デフォルトの名無しさん:2006/11/21(火) 23:42:30
すみません。現在JAVAでパチスロのオリジナルアプリを作っているのですが
1つの絵柄が高さ100ピクセル幅150ピクセルでそれが縦に21個連なったリールを回っているように見せるために
画像をスライドする方法を探しています。
画像を上から下へと一定のスピードでスライドさせるにはどうすればいいのでしょうか?
17デフォルトの名無しさん:2006/11/21(火) 23:50:13
えっと
又基本的なこと質問させてください
ここで学んでいるのはジャヴァアプリーケーションとのことですが
実際のアプリ(業務ソフトウェアなど)を作る場合Windowsの部品を(コマンドボタンなど)
つかうと思うんですが、皆さんはどういう(ソフト?)風に作っているのですか?
よくわからないのですがエクリプス?に、そういう部品をつくる環境があり
それで作るのでしょうか?
(vbなんかはvbのソフトで作りますよね)
なんか外れた質問とは思いますが
for文 do文などわかりますがそういう根本的なことがわかりません
御先輩方よろしくお願いいたします
18ぴゅあ:2006/11/22(水) 00:06:40
>>15
デバッグの手法とかは習ってなかったりするんだろうけど
身に付けた方がいいと思いますよ
闇雲にコードいじりまくっても、なかなか思い通りにならないし
まぐれでできてしまっただけになったりです

>今のままでは動かないようです。
その原因が何処にあるかを探し出すこと
>変数aを使用したいのですが
と言っているところから変数aがうまく扱えていないと考えているんだろうと思いますが
(扱い自身と思っているのか、変数a絡みの何かだろう程度なのかとかは読み取れませんが)
変数aが期待通りになっているかどうかからまず調べることですし

その前に「コードは書いた 動きません」ではなくて
何処がどうなって欲しいのに、どうなってしまってうまく行かないと思っているのか
何処がおかしいと思っているのか等、
質問するなら頭の中にあることをもっと明確に示して欲しいところですけど

それ以前にこのコードでコンパイル通りますか?
19デフォルトの名無しさん:2006/11/22(水) 00:12:02
>>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"とかでググッておけばいいと思うけど
21デフォルトの名無しさん:2006/11/22(水) 00:16:14
>>15 は宿題スレにも同じソースで丸投げされているな・・・同じ大学か^^;
22デフォルトの名無しさん:2006/11/22(水) 00:24:01
ユーザID単位でsynchronizedでロックするために、
シングルトンのmapにユーザID詰め込んで、
それをgetしてsynchronized(map.get(key))みたいにしたら
きちんとユーザID単位でロックされますでしょうか?
それともmap.get(key)ではインスタンスのコピーがgetされるだけで
ロックには使えないのでしょうか?
23デフォルトの名無しさん:2006/11/22(水) 00:26:46
>>19 >>20
ご丁寧にありがとうございます
VEですかふむふむ
前スレのお勧めで独習ジャヴァ買ったんですけど
初めてのジャヴァと書いてる内容が似てて隊靴で・・・
JFrame初耳ですググッテみます^^b
24デフォルトの名無しさん:2006/11/22(水) 00:28:42
>>18
ざっと見たが、絶対に通らないとおもうぞ。
12行目でTurnOverを渡しているが、受け取り元がMyMouseAdapterだからな・・・
25デフォルトの名無しさん:2006/11/22(水) 00:36:59
>>23
独習Javaの内容はマスターしたという前提で勧めると、この辺かな。
http://www.amazon.co.jp/gp/product/4798011401/
応用編は、とりあえず今は読まなくていい。
26ぴゅあ:2006/11/22(水) 00:38:33
>>23
>初めてのジャヴァと書いてる内容が似てて隊靴で・・・
更に先に進んでも"独習ジャヴァ"と共にたまには読み直してやってください(何度も)
前に読んでよく解らなかったことも何時の間にか解ってることに気付いたりとか
新たな理解もあったりする筈です

>>24
でしょ
27デフォルトの名無しさん:2006/11/22(水) 00:43:37
24
ども独習もうちっとよんでそっち健闘します
でわ^^ノシ
Zzzz
28デフォルトの名無しさん:2006/11/22(水) 05:07:12
>>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/
30デフォルトの名無しさん:2006/11/22(水) 08:13:25
>>29
Adapter 使わずに Listener 使えば?

Adapter って匿名クラス作る時とかに、
空のメソッド作る手間省くためにあるだけだし。
31デフォルトの名無しさん:2006/11/22(水) 08:13:51
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の様にするように作りたいです。

どこの部分が間違えているでしょうか?
よろしければご教授ください。
3230:2006/11/22(水) 08:16:56
>>30
う、後出しになってしまって申し訳ありません。
学校の宿題の一部として考えているのですが、
アダプタの継承が必須なためそこを変えることができません。
33デフォルトの名無しさん:2006/11/22(水) 08:17:21
日 本 語 で お k
34デフォルトの名無しさん:2006/11/22(水) 08:22:05
>>32
宿題は宿題スレへ。

ってか、>>29 じゃ何を困ってるのか良く分からんぞ。
3530: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にそういう実装(イベント/リスナの仕組みそのもの)が必要
ということではないのかな?
3730: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)はなくても大丈夫かな
39デフォルトの名無しさん:2006/11/22(水) 10:53:57
>>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)"としているところが、また解り難くしているのか?)
4131: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として扱わないで
今のままでもいいと思いますよ
44デフォルトの名無しさん:2006/11/22(水) 14:27:42
JAVAを独学で初めて二ヵ月になるんですが
メソッドの意味がいまだにわかりません
誰か低脳な俺にもわかるように説明してください
45デフォルトの名無しさん:2006/11/22(水) 14:38:13
"Javaで言うメソッドとは、C言語で言う関数のこと。"
46デフォルトの名無しさん:2006/11/22(水) 14:42:27
*.classファイルの読み方を学ぶにはどこを見ればいいでしょうか?
オブジェクトファイル形式とバイトコードの読み方が知りたいです。
478:2006/11/22(水) 14:48:47
>>46
>オブジェクトファイル形式とバイトコードの読み方
ってのが何を指しているのかよくわからんが、逆アセなら javap で可能。
ニーモックの意味はsunのどっかにVM仕様ドキュメントがあったような。
そんな小難しい命令体系ではないので、少しアセンブラ知ってればなんとなく分かる。
48ぴゅあ:2006/11/22(水) 15:44:03
>>45
さすがっ!

そのレスの仕方は思い浮かばなくなってしまってました。。。
49デフォルトの名無しさん:2006/11/22(水) 16:26:11
>>46
ttp://java.sun.com/docs/books/vmspec/2nd-edition/html/VMSpecTOC.doc.html
クラスファイル形式は4章、命令セットについては6章あたりかな?
そこだけに限定せず、VM仕様全体にざっと目を通しておくと役に立つこともある。
50デフォルトの名無しさん:2006/11/22(水) 16:36:44
>>47 >>49
丁寧にどうもありがとうです。
51デフォルトの名無しさん:2006/11/22(水) 16:42:15
>>44
ざっくり言えば、
コンピュータに何かをやらせたい時に呼ぶのがメソッド。
どうやらせたいか、その方法(method)を書いてあるのでメソッドという。
52デフォルトの名無しさん:2006/11/22(水) 17:34:21
BigDecimal使うと誤差がなくなると言われたんですけど
どういう意味ですか?
BCDがとうこう〜とも言われたような気がします。
53デフォルトの名無しさん:2006/11/22(水) 17:51:59
こーいう事
言語に関係なく、コンピュータが2進数で浮動小数点数を計算する以上避けられない問題
http://javafaq.jp/S029.html
http://www.kyoto-su.ac.jp/~yamada/programming/float.html
54デフォルトの名無しさん:2006/11/22(水) 20:02:26
すんません質問させてください

Appletの中で、値をメソッドにあてるときに

A.B();

という形で間にピリオドを入れますが
これって値が二つのときは使えますか?
55デフォルトの名無しさん:2006/11/22(水) 20:12:23
意味不明
56デフォルトの名無しさん:2006/11/22(水) 20:44:53
>>54
ピリオド⇒.
セミコロン⇒;
57デフォルトの名無しさん:2006/11/22(水) 23:01:26
LinkedListみたいのを自分で作りたいんですが,
index番目にobjを追加するメソッドを作るにはどう
すれば良いんでしょうか?
自力で調べたいんですが調べてもでてこなくて・・
できれば調べ方などを教えていただけると助かります。
よろしくお願いします。
58デフォルトの名無しさん:2006/11/22(水) 23:09:35
LinkedListのソース見ろよ、タコ
59デフォルトの名無しさん:2006/11/22(水) 23:53:24
60デフォルトの名無しさん:2006/11/22(水) 23:57:17
61デフォルトの名無しさん:2006/11/23(木) 00:09:31
連結リスト
  線形リスト
  単方向リスト
62デフォルトの名無しさん:2006/11/23(木) 01:43:47
線形リストを自分で実装する、てのはデータ構造入門の代表的な
例題だからいくらでもあると思うが。

実装によっては再帰の学習にもなる。
63デフォルトの名無しさん:2006/11/23(木) 02:34:47
配列の文字列を変数として使うことは可能でしょうか?

Data dt = new Data(a,b,c);
とあったとして、dtをdt_Aray[0]内の文字列に変更したいです。
64デフォルトの名無しさん:2006/11/23(木) 03:25:30
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
いや… それらの文章がどう説明間違いしているのか
色々受け取れて推測し難いんですよね。。。
前者と後者で全然別のことを言っているようにも受け取れるし

もうちょっと考えて
詳しく書き直してみて欲しいです
66デフォルトの名無しさん:2006/11/23(木) 04:10:51
>>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年ほどだろ確か。
確かに見るようになったのはネバダ事件以降だがアングラ常連のわびさびぐらい心得てる。
アングラ常連の分際で吼えるな。
92デフォルトの名無しさん:2006/11/23(木) 13:17:45
なんか凄いことになってるぞ
http://book3.2ch.net/test/read.cgi/poem/1164122962/
93デフォルトの名無しさん:2006/11/23(木) 13:18:40
なんでもかんでも茶化せばオッケー、盛り上がれば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
なんだかんだ言って暫定退避のポテンシャルに嫉妬してんだろ
102デフォルトの名無しさん:2006/11/23(木) 13:39:16
みんな落ち着いてフレグランスドJAVA
103デフォルトの名無しさん:2006/11/23(木) 14:04:54
>>80
あまり詳しくありませんが、こんなのを発見。
使い古されたThreadがThreadGroupに登録されてたままになっていたりはしませんか?
http://www.aerith.net/java/thread-memory-leak-j.html
104ぴゅあ:2006/11/23(木) 14:33:41
>>78-79>>80が同じ人かどうか判らないし

>>79のrunメソッドの中でのwhileループでの話とされているところと
>>80のおんなじthreadが100個ぐらいとの関わりも…

>>78のリークとは具体的に何を指しているのか。。。

bindしていたりするところの絡みとか
暫くやってないので検証してみないと…ではあるけど
立て続けに(無闇矢鱈と)connect/disconnect(close)を繰り返しているのは
ソケットとしても好ましくないような気がしたりですけど。。。
10566: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
すんません。
>>107
>>108
は 80 です。
111ぴゅあ:2006/11/23(木) 15:40:36
>>108
>運用SE
ということなので、周りに開発メンバー居たりします?と思ったりしますけど
もし居るなら、話を投げてみるのが早いでしょう

>ThreadGroupからの参照を外そうとすると
例えばこの辺とか読んでみると参考になったりするかも?
http://www.aerith.net/java/thread-memory-leak-j.html
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
>>115
そう見ればいいのか・・・
でも
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/management/jconsole.html
にはNon-Heapが3本あって2つしか説明ないのはなんでだろう…

コードキャッシュということならHotSpot JVMに疑い濃厚っぽいですよね
突き詰めるにはかなり困難そう。。。

>今月Sunがそのうちjava(実装部分?)のソースコード公開すると発表してましたが・・
発表記事は見てないけど、そんな話をしているのは見掛けました
プラットホーム毎のネイティブコード部分が含まれてくるんだろうか?とか
1171/2:2006/11/23(木) 17:07:12
非 static のメンバークラスより、static のメンバークラスを選ぶように、
と言う事を Findbugs の指摘や Effective Java の項目 18 で見ました。

例えば、単に内部メソッド間の受け渡しにしか利用しないデータクラスを
定義するとすると、それを static にした方が良いと言うことでしょうか?
1182/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;
    }
  }
}
1193/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("入出力エラーです");
}
}
121デフォルトの名無しさん:2006/11/23(木) 17:24:04
>>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);
}

という具合でよろしいのでしょうか?
123デフォルトの名無しさん:2006/11/23(木) 18:00:24
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つのセル毎に配列に入れることって可能ですか?


125デフォルトの名無しさん:2006/11/23(木) 18:27:34
>>119
> ある Foo インスタンス foo1 の Bar と、
> 他の Foo インスタンス foo2 の Bar が別インスタンスになるかどうか、
別。

他の言語でもよくあるけど、予約語を増やさないために、
一つの予約語に複数の意味を持たせる事がある。
126デフォルトの名無しさん:2006/11/23(木) 18:31:01
>>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 {
とするようなことを言われているんだろうと思いますが
そこまでコードが書けているのなら、簡単な検証コードを書いてみて
実際に自分の目で確認してみるのがいいんじゃないかと
128デフォルトの名無しさん:2006/11/23(木) 19:22:12
>>127
前から思ってたけど無駄に長いよねお前
129デフォルトの名無しさん:2006/11/23(木) 19:45:04
>>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に格納される。
130デフォルトの名無しさん:2006/11/23(木) 21:53:27
>>117
static宣言されていないクラスは「エンクロージングインスタンス」に対して
暗黙の参照をもつためクラスの依存関係ができてしまうため良くないってこと。
エンクロージングクラスのprivate宣言されている部分に対してアクセスしない場合は
staticのほうがいいよ。

書籍「Java Puzzlers」にもそのことはのってるよ。
あとエンクロージングクラスについてここが一番分かりやすかった。
[jfriends-ml 10128] Re: Effective Java 第 1 回議事録
ttp://61.196.224.14/~ttakahashi/bof/logs/2002/msg00144.html
131デフォルトの名無しさん:2006/11/23(木) 22:19:28
JVMをOSの起動時にメモリに常駐させる方法ってありますか??
132デフォルトの名無しさん:2006/11/23(木) 22:32:03
>>131
何のOSだよ
133デフォルトの名無しさん:2006/11/23(木) 22:32:35
windows
134デフォルトの名無しさん:2006/11/23(木) 22:39:28
>>131
サービスに登録すればいいんじゃね
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

ありがとうございます。
しかし教えて頂いた方法だと、エラーがでてしまうのですが。
138デフォルトの名無しさん:2006/11/23(木) 23:48:43
>>136
すまぬ
windowsXP SP2です。
どうしても起動時にVMを常駐しろとの要望があってさ・・・
(いらねぇと俺は思うんだけどね)
139デフォルトの名無しさん:2006/11/23(木) 23:54:25
>>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]);
}
}
です.何度もすみません。
142デフォルトの名無しさん:2006/11/24(金) 00:20:25
>>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です。
145デフォルトの名無しさん:2006/11/24(金) 03:04:42
>>138
できないものはできないとはっきり言え
146デフォルトの名無しさん:2006/11/24(金) 03:14:40
>>144
何をもってバグであると相手は主張しているのかそれを知っているのはその相手だけ
147デフォルトの名無しさん:2006/11/24(金) 06:11:50
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にならないのはなぜ???
}
}
150デフォルトの名無しさん:2006/11/24(金) 12:30:28
>>149
Stringは変更のほとんどない文字列用のクラス。
頻繁な変更での性能を求めるなら、バージョンにも依るけど、
StringBufferかStringBuilderクラスを利用する。
151デフォルトの名無しさん:2006/11/24(金) 12:37:11
>>150
>Stringは変更のほとんどない文字列用のクラス。
なるほど。

Stringのconcat()のドキュメントにはこうありました。
>String オブジェクトによって表される文字列と引数文字列によって表される文字列とを
>連結したものを表す新しい String オブジェクトが生成されます。

(1) s2 = s2.concat("e"); //新たに生成されたオブジェクトのリファレンスをs2に代入
(2) s2.concat("e"); //新たに生成されたオブジェクトは破棄されちゃう
(3) s2 = s2 + 'e'; //(1)とまったく同じ動作。

こうなるみたいですね。どうも勘違いしてました。
152デフォルトの名無しさん:2006/11/24(金) 18:28:02
JavaにはPerlのevalみたいなのはないのかな?
153デフォルトの名無しさん:2006/11/24(金) 18:53:04
あるよ 古っ
154デフォルトの名無しさん:2006/11/24(金) 19:02:26
例外処理用としてのPerlのeval相当のものはある。

155デフォルトの名無しさん:2006/11/24(金) 19:26:03
>>153-154
どうやるの?
156デフォルトの名無しさん:2006/11/24(金) 19:58:59
try {
} catch (...) {
}
を使う。

じゃなくてほんとは、文字列をプログラム断片として評価する方法をしりたいんじゃないのか?
157デフォルトの名無しさん:2006/11/24(金) 20:03:44
流れを切って失礼します
アプレットから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を明示的にコールする方法があれば教えてください。
クリックをしなくてもレンダラーをコールする方法を教えてください。

159158:2006/11/24(金) 20:17:02
すいませんrepaint書けたら解決しました申し訳ないです。
160デフォルトの名無しさん:2006/11/24(金) 22:11:40
ファイル操作で質問があるのですが、
javaで、ある特定のフォルダ内にあるファイル名だけを全部取得する
というようなことはできるのでしょうか?
161デフォルトの名無しさん:2006/11/24(金) 22:14:16
>>160
File[] files = new File("特定のフォルダ").listFiles()
162デフォルトの名無しさん:2006/11/24(金) 22:27:22
>>161
ありがとう!!
163デフォルトの名無しさん:2006/11/24(金) 22:35:39
>>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;
        }
    }
164163の続き:2006/11/24(金) 22:37:06
    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コメントやタグ以外の
ソース本体を参照することってできないのですか?
特定のリテラルやクラスの参照があるかどうか
チェックしたいんですが。
166デフォルトの名無しさん:2006/11/24(金) 23:48:03
eval周辺は、Mustangでコンパイラやスクリプト関係のAPIが入るから使えそうだね。
167デフォルトの名無しさん:2006/11/25(土) 00:13:29
>>152
1.5以前では標準ライブラリに含まれてないけど、
BeanScriptingFramework とかもあるよ。

まぁ、スクリプト言語と違って、コンテキスト渡そうとすると
凄く面倒だからスクリプト言語と同じ感覚で使うのは無理かもだけど。
168157:2006/11/25(土) 01:16:53
>>157です、問題のアプレット、動作しました

結論から言うと、そもそもデータが送れていなかったようです
値を渡したいだけの場合でもインプット側のストリームも開かないと通信してくれなかったらしく
それを追加したら問題なく動作してくれました
169デフォルトの名無しさん:2006/11/25(土) 02:23:22
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らしく使えるんじゃないかと思うけど。。。
171デフォルトの名無しさん:2006/11/25(土) 03:54:14
JTextPaneを継承して、
「書き込むと、文字列をスタイル付きでそのTextPaneにappendする」
という働きをするOutputStreamが得られるものを作ったことがあるんだが、
どこかに埋もれてるorz

System.setOutとかに設定してやればそのままprintlnとか出来た。
172デフォルトの名無しさん:2006/11/25(土) 05:47:37
>>169
pure javaじゃなくなるけどJava Cursesとか
>>170
windowsに限定してもエスケープシーケンスはcmdでは使えなかった気がする
173デフォルトの名無しさん:2006/11/25(土) 09:55:13
>>166-167
それは楽しみですね
174ぴゅあ:2006/11/25(土) 13:29:45
>>172
>cmdでは使えなかった気がする
ということをリンク先に書いてあるみたいですよ
でもそこに書いてあることが何処までできるのかは判らないけど
(起きてから簡単にやってみてはみたけどそれっぽくならない感じだし…
NT系ではシーケンスが変わったとか何処かで見たような気がする?のは
気の所為のような気もする。。。)
175JAVO: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;
}

'>
176JAVO:2006/11/25(土) 13:51:14
ボタンを押すことによって3つのテキストボックスにそれぞれ、
1、ボタンを押した回数。
2、ランダムナンバー1〜6のうち1が出た回数。
3、ランダムナンバー1〜6のうち6が出た回数。
が出るようにしたいのですがどうしてもうまく作動してくれません。
何が問題なのでしょうか?
問題だと思われる箇所を抜き出して載せてみました。
よろしくおねがいします。
177デフォルトの名無しさん:2006/11/25(土) 14:11:26
春ですね
178デフォルトの名無しさん:2006/11/25(土) 14:11:45
>>176
> が出るようにしたいのですがどうしてもうまく作動してくれません。 
> 何が問題なのでしょうか? 
「プログラムは思ったとおりに動かない、書いたとおりに動く」
初心にでも戻るんだね
179デフォルトの名無しさん:2006/11/25(土) 14:15:21
>>175
JavaScriptはスレ違い。ここはJavaスレなんで。
180デフォルトの名無しさん:2006/11/25(土) 15:13:59
サーブレットとBeansを連携させてるんですがコンパイルできません

1 Beansをコンパイルする
2 -classpath $TOMCAT_HOME/common/lib/servlet-api.jarをつけてサーブレットをコンパイルする

という順でしているのですが2をやろうとすると
シンボルが見つけられませんとメッセージが出ます
Beansを参照していないような気がします
どうすればいいのでしょうか?
ぐぐったのですが解決しませんでした
181デフォルトの名無しさん:2006/11/25(土) 15:18:03
>>180
-classpath $TOMCAT_HOME/common/lib/servlet-api.jar:$PATH_TO_BEANS とかやんないとダメ。

-classpath は、既存のクラスパスに追加するんじゃなくて上書きだから、
-classpath に指定されてない場所にあるクラスはコンパイル時に使用されない。
182JAVO: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が
存在しないと表示されます
どうしたもんでしょうか?
184デフォルトの名無しさん:2006/11/25(土) 16:07:33
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=28773
Ballクラスをいじって実行したらボールの描写が汚くなったのですが
ボールの動きが見えるようにするにはどうしたらいいですか?
むしろこれは宿題スレに行けですか?
185ぴゅあ:2006/11/25(土) 16:08:37
>>183
":"でセパレートされているところを見るとUNIX/Linux上だろうと思いますけど
$TOMCAT_HOME/common/lib/servlet-api.jarのパスが合ってないとか
$TOMCAT_HOMEが展開されていないとかいうのはないんですよね?
186184:2006/11/25(土) 16:17:12
いじったのは
HashSet<Ball> hs= new HashSet<Ball>();
を使うあたりです
187デフォルトの名無しさん:2006/11/25(土) 16:34:21
>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して使っています。
細かい機能についての質問で申し訳ないのですが、
階層に合わせてスペースを入れて位置を揃えてくれる機能はありませんでしょうか?
191ぴゅあじゃないけど:2006/11/25(土) 21:24:41
>>190
Control+Shift+F(コードの再フォーマット)でできませんか?
192デフォルトの名無しさん:2006/11/25(土) 21:35:55
>>191
できました!かなり便利になりました。
ありがとうございました!
193デフォルトの名無しさん:2006/11/25(土) 23:04:21
あっても無くてもいい引数を宣言する方法を教えてください。

public void AAA(String src, String src2, ....... )
と行きたいんですが。。

お願いします。
194デフォルトの名無しさん:2006/11/25(土) 23:25:22
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);
}
}
195デフォルトの名無しさん:2006/11/25(土) 23:25:31
可変引数でググれ
196デフォルトの名無しさん:2006/11/25(土) 23:28:49
>>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)
と書いたのと同様になります
198デフォルトの名無しさん:2006/11/25(土) 23:51:20
>>197
たのむから Java2 5.0 なんて書きかたしないでくれよ
199デフォルトの名無しさん:2006/11/26(日) 00:07:07
Java2 5.0 (笑)
200デフォルトの名無しさん:2006/11/26(日) 01:20:57
すみません。等差数列を計算するプログラムを書こうと思って、
とりあえずはかけたのですが(数値は適当です)
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");
}
}
この解を配列としてあつかうにはどう書き足したらいいか
分かりません。教えて頂きたいです・・・
201デフォルトの名無しさん:2006/11/26(日) 01:47:32
Math.random()とnextInt()の的確な使い分けかたってありますか?
あとnextIntにおけるseedとはどういう意味があるのでしょうか?
よろしければご教授ください。
お願いします。
202デフォルトの名無しさん:2006/11/26(日) 01:57:37
以前 JProgressBar を教わったものです。このクラスを使ってプログラムを書いていて、
(自分にとって)とても奇妙な事に遭遇しました。是非下のコードを(VisualEditorで書きました)
コピペして、このオブジェクト保持する main クラスを書いて実行ボタンを押してみて下さい。
ProgressBar の見た目が、test() メソッドの実行が終了するまで変化しません。
ところが、この test() メソッドを main クラスから実行すると、なんと動くのです。
いったいどうしてこんな動きをするのでしょうか?
また、実行ボタンから ProgressBar を正常に動かす方法があればどうか教えて下さい。
宜しくお願いします。
203202: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;
}
204202: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);
}
}
}
205デフォルトの名無しさん:2006/11/26(日) 02:11:23
>>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");
}
}
206デフォルトの名無しさん:2006/11/26(日) 02:36:55
>>202
たぶんJProgressBarのsetValueメソッドを呼ぶところを
SwingスレッドにinvokeLaterで渡してやるといいはず。
207202:2006/11/26(日) 02:50:01
>>206
レスして下さってありがとうございます。
でも何をどうして良いのか何にもわかりません・・・。
Swing スレッドが何で、何をどう渡すのでしょう・・・?
ごめんなさい、本当の初心者で。
宜しかったら詳しく教えてくれませんか?
何かを読め、と言われたら読みますのでどうか・・。
208デフォルトの名無しさん:2006/11/26(日) 02:58:56
>>207
>>206じゃないけどワープはいかんと思うよ。
いきなりGUI使おうって思っても正直凄く難しい。
自分も前いきなりGUIやろうと思ったけど全くわからなかった。
最近やっとAPIの読み方わかってきたし少しくらい考えて書けるようになってきた。
それでもまだGUIを作るのには何日も掛かるし考えも中々まとまらない。

悪いことは言わないから何か作りたいならやさしいJavaくらいは読んでおけ。
GUIが使いたいならSwingの本何かしら読んでおくといいと思う。
209206:2006/11/26(日) 03:11:57
>>202=207
Swingではイベントディスパッチスレッドというスレッドが裏で走ってて、
GUI上の見た目を変化させる処理はすべて
このスレッドから実行しないといけないことになってるんだ。
そのために使うメソッドがSwingUtilities.invokeLaterな。
引数で指定した処理をイベントディスパッチスレッドで実行してくれる。

だから jProgressBar.setValue(j)の代わりに
SwingUtilities.invokeLater(new Runnable() { jProgressBar.setValue(j); })
とかすればいいはず。
210202:2006/11/26(日) 03:12:08
>>208
確かに GUI は簡単にかじっただけなので難しいです・・。
言われた通り、足元をもっと踏み固めて進んだほうが良いですよね。
ほんとそう思います。せめて難しい事にチャレンジしながらでも基礎は固めようと思います。
208さんのように考えながら作れる頑張りたいですもんね。忠告ありがとう。

ところで今、ちょっとスレッドに付いて調べていました。そして Runnable ってインターフェースを
見つけたんですが、これを Test2 に実装すればいいのでしょうか?
足元も緩いのですが、今からチャレンジしてみます。
208さん重ねてですが本当にありがとう。頑張りますね!
211202:2006/11/26(日) 03:16:10
>>209
レスがニアミスしました。親切で丁寧ににありがとうございます!
Runnable はインナークラスなんですね!勉強したつもりでも自分の頭で思いつきませんでした・・。
でも良い所まで言っていたみたいで少しうれしいです。
早速やってみます。本当にありがとうございました!
212デフォルトの名無しさん:2006/11/26(日) 04:02:12
とりあえず目を瞑るから
スレッド越しについて色々調べてきてね
213202:2006/11/26(日) 04:25:03
またすみません。
自分であっぷした>>204の test() メソッドもちょっと間違ってるし、
Runnable() インナークラスも上手くいきませんでした。
run() メソッド内の jProgress.setValue(j); の引数 j がアウタークラス
の変数なので final しないと参照できないのです。それで、Runnable()
のクラス定義する部分を他のメソッドに置いて、そのメソッドに final
した j を渡して実行してみました。でも結果は同じでした。
やっぱり足元が緩い自分には荷が重いのかもしれません。残念です。
今日はもうダウンします。
お付き合い頂きありがとうございました。

>>212
スレッド越しですね。一応調べてみます。
214デフォルトの名無しさん:2006/11/26(日) 06:39:20
>>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 の答えを表示させるにはどうすればいいんですか?
分かりにくい文章かもしれませんがお願いします
216デフォルトの名無しさん:2006/11/26(日) 06:49:03
>>215
ボタンにaddActionListenerでActionListenerを実装したクラスを登録。
そのクラスのactionPerformedメソッドの中で、
txt1 + txt2の答をtxt3のsetTextメソッドで設定する。
217デフォルトの名無しさん:2006/11/26(日) 07:00:13
>>216
ありがとうです
218デフォルトの名無しさん:2006/11/26(日) 07:09:33
>>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);
}
}
219デフォルトの名無しさん:2006/11/26(日) 07:34:18
>>201
nextInt()というのはjava.util.Randomのメソッドのこと?
Math#random()に対応するのはRandom#nextDouble()
どちらも0〜1の範囲の乱数を返す。
Math#random()は1を含まないけど、Random#nextDouble()が1を含むかどうかは忘れた。
Math.random()は乱数の種をこちらから指定できないので、
検証その他の目的で同じ乱数列を何度も使いたいときには使えない。
その用途にはjava.util.Randomの方を選択。
もちろん乱数列を全て保存するのなら別だが。
乱数の種seedは擬似乱数を生成するときの初期値として使う。
220デフォルトの名無しさん:2006/11/26(日) 10:24:48
すいません。
アフォな事を質問します。

javaランタイム入ってないのに、なんでjavaアプレットが動作するのでしょうか?
javaアプレットはランタイム不要?
221デフォルトの名無しさん:2006/11/26(日) 10:40:08
>>220
以下のどれかだろう。

・実はこっそりとSun JREがプリインストールされている。IBMとかDellとかのPCにはプリインストールされてる。
・アプレット起動時にJREがインストールされたが、それに気づかなかった。
・Microsoft製のJRE(化石時代の古い代物)ががんばってる。Windows XP SP1(?)以前まではインストールされていた。
222デフォルトの名無しさん:2006/11/26(日) 10:43:11
・実はJavaアプレットではなくflashだった。
223デフォルトの名無しさん:2006/11/26(日) 10:54:52
・やっぱここは幻覚だろ

つか
> javaランタイム入ってないのに
はどうやって確信を得たんだ?
224デフォルトの名無しさん:2006/11/26(日) 11:29:40
>>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()の方が手軽に使えますね。

ありがとうございました。
225デフォルトの名無しさん:2006/11/26(日) 11:41:09
(´д`)
226デフォルトの名無しさん:2006/11/26(日) 12:21:44
すみません、質問なんですが
フリーの「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が一連の処理の中で占める割合は僅かなものになるでしょうから
"遅い"というようなことにはならないと思いますよ
228デフォルトの名無しさん:2006/11/26(日) 13:22:02
>>224
「疑似乱数として使わないのなら」てどういう意味?
229200:2006/11/26(日) 13:55:56
>>205
ありがとうございます。とても丁寧で分かりやすいです。
230デフォルトの名無しさん:2006/11/26(日) 14:24:55
>>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の値を使うということで。
232デフォルトの名無しさん:2006/11/26(日) 14:39:33
もうね、イベントループしてるスレッドにキューでも作って「プログレスバーの表示を〜にしてね♪」みたいなメッセージでも突っ込んでおけばいいんですよ
233デフォルトの名無しさん:2006/11/26(日) 14:44:14
あげちまった...
ついでに内部クラス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を使うとかいうのではなく)
とか思ってたりしてますけど。。。
236220: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
ありがとうございました。
237202:2006/11/27(月) 00:11:33
>>214>>218>>227>>232
イベントディスパッチスレッドはシングルスレッドだから固まるんですね。
(知ったように書いていますが実はまだ危ういです)
それだから actionPerformed(ActionEvent); でスレッドを作って test() をよびだすんだと
今やっと分かりました。(スレッド越しと言うのは、一つのスレッド実行中に新しい別の
スレッドを作ることを指すのでしょうか?)
SwingUtilities.invokeLater(...); が必要か、な議論はルールだから守らなきゃくらいしか
自分には分かりませんでしたが、Runnable を実装したクラスをイベントディスパッチ
スレッドに渡して(安全に?)スレッドを起こしてもらうためのものなんですかね?
でも、とりあえず使い方は分かりました。無事動きましたしほんとに助かりました。

また、余計な話ですが、内部クラスからローカル変数を参照するのに final が必要でも、
イスタンスフィールドならそのまま参照できるのを知って自分の素人さも痛感しました。
なぜそうなるのか、また自分で調べてみます。そして書き方もいろいろあるのが面白くて
楽しかった。深い人に教えてもらえて嬉しかったです。余裕ができたら SwingWorker も
知りたいですが、208さんが言った Swing 本も近々探して早く勉強したいです。
ありがとうございました。
238デフォルトの名無しさん:2006/11/27(月) 00:19:56
>>237
つ SwingWorker
239デフォルトの名無しさん:2006/11/27(月) 02:12:40
さぁさぁ!
スレが殺伐としてまいりました・・・!!!タタタタ・・
240デフォルトの名無しさん:2006/11/27(月) 11:25:04
同じパッケージ内にある別々のファイルのクラスにアクセスする方法は、
同じファイル内のクラスにアクセスするのと同じでしょうか?

sample1とsample2があってこの中でクラスを共有したいのですが、
参照しようとすると

Exception in thread "AWT-EventQueue-0

このようなエラーが出てきます。
241デフォルトの名無しさん:2006/11/27(月) 11:28:57
それはあなたが馬鹿だからです。
242デフォルトの名無しさん:2006/11/27(月) 12:05:50
そ?!そんなああああ!!!
243デフォルトの名無しさん:2006/11/27(月) 12:48:10
>>240
packageの概念についてもっと勉強した方が良い
244デフォルトの名無しさん:2006/11/27(月) 18:29:29
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で答えていただきましたが
ここに書き足すものが何か分からないです・・
245デフォルトの名無しさん:2006/11/27(月) 19:34:14
テーブル状に表すことが出来るデータを格納するとき、どんなデータ構造を使うのが適しているでしょうか?

LinkedHashMap<Integer,LinkedHashMap<Integer,String>> table;
今、こんなのを作って使っているのですが・・・
246デフォルトの名無しさん:2006/11/27(月) 20:21:35
>>245
二次元テーブルならArrayList<ArrayList<String>> table;でいいんでないかい?
スパースなのならメモリ効率悪いが
247デフォルトの名無しさん:2006/11/27(月) 21:33:20
>>245
独自クラス書いた方がよくないか?
縦で抽出したり、横で抽出したりするだろうから
>>246のArrayList入れ子を縦横と横縦で持つような。
248デフォルトの名無しさん:2006/11/27(月) 22:18:12
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 個

とエラーが出てしまうのですが何が原因か分からないです。。。
249デフォルトの名無しさん:2006/11/27(月) 22:23:17
>>248
FullnameクラスをTemp.javaファイルに保存しているのが敗因その1。
クラス名とファイル名は一致させること。
250デフォルトの名無しさん:2006/11/27(月) 22:26:31
>>249
すいません、直したやってみましたが駄目です。。
251デフォルトの名無しさん:2006/11/27(月) 22:47:18
p[0]=new Person("UDO","SUZUKI");
p[1]=new Person("TAKAAKI","ISHIBASHI");
ここはメソッドの中じゃないとまずいんじゃないか
252デフォルトの名無しさん:2006/11/27(月) 22:56:41
>>251
解決しました!メソッドの中じゃないと駄目なんすですか。。知らなかったです。ありがとうございました!
253デフォルトの名無しさん:2006/11/27(月) 22:59:43
都内で平日夜間か土日に通えるJAVAのスクールってどんなとこがあるかな?
リナックスアカデミーは開講日が合わず断念。
(次は二月〜らしい)
一応初心者レベルは脱したつもりだからちょいとレベル高めの講座とかあるといいんだが。
254デフォルトの名無しさん:2006/11/27(月) 23:21:51
>>253
高いレベルを目指すならプログラム書いて独学でしょ。
今時、Javaの情報なんてググればいくらでもでてくるし。

というか、スクールでプログラム言語を勉強するという感覚が未だに分からんです。はい。
学術的にということであれば、大学の講座を受講するという手もあるかも。
Javaって言語に特化した授業なんてあるかしらんけど。
255デフォルトの名無しさん:2006/11/27(月) 23:33:27
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
>>257
うす。どうもっす。
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
あい
262デフォルトの名無しさん:2006/11/28(火) 00:32:56
substring
263デフォルトの名無しさん:2006/11/28(火) 01:02:57
Javaで実行している環境のネットワークアドレスとブロードキャストアドレスを取得するにはどうすればよいでしょうか?
264デフォルトの名無しさん:2006/11/28(火) 01:05:51
>>260
new StringBuilder("11334567").insert(4,"あ").toString()
265260: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

が、省略されるような形で組みなおせば良いのでしょうか?
267デフォルトの名無しさん:2006/11/28(火) 05:12:59
UIコンポーネントの生成はUIスレッドで行う
268デフォルトの名無しさん:2006/11/28(火) 05:19:42
LinuxでXWindowSystemをインストールしていない状態で、swingのGUIを用いてるアプリケーションを動作しようとするとどうなるでしょうか?
269デフォルトの名無しさん:2006/11/28(火) 05:38:59
乱数で0.002以上0.003未満を生成するプログラムの書き方教えてください。
270デフォルトの名無しさん:2006/11/28(火) 05:43:33
>>269
Math.random()/1000+0.002
271デフォルトの名無しさん:2006/11/28(火) 05:46:30
>>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とは持つ意味が違うので
274デフォルトの名無しさん:2006/11/28(火) 12:29:09
>>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());
}
}
で取れそうだけど・・・・
275デフォルトの名無しさん:2006/11/28(火) 19:03:53
>>263
Mustangだといろいろ便利になってるんだが。
InterfaceAddress#getBroadcast()とか。
とりあえずブロードキャスト投げたかったら255.255.255.255を使うんじゃだめ?
276276: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;
}

↓続き
277276: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でやってみたり、
書き込んだサイズをカウントしておいて、
カウントしたサイズの配列にコピーしたりやってみたのですが、
速度が遅くなってしまいました。どなたか上手い書き方を教えていただけないでしょうか。
278デフォルトの名無しさん:2006/11/28(火) 20:26:37
>>277
まず、条件判定を全部して何バイト長になるか決定しておくというのは?
そして、書き込みのときは、
インデックスを変数にして i++ とかにしておく。
必要のない4バイトは飛ばされる。

もっとセンスのいい方法ありそうだけど。
279276: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;
.
.
.
という風にも書いてみたのですが、
わざわざサイズのインデックスを用意するのと、
その値の操作がスマートに書けなかったのです・・・。
これ位しか方法がないのならこう書くしかないのでしょうが・・・。
280デフォルトの名無しさん:2006/11/28(火) 21:07:04
class AutoIndexer{
private int idx;
public AutoIndexer(int c){
idx=c;
}
public int moveIndex(){
return idx++;
}
}

みたいなのを使っている。
英語は苦手。
281278: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が発生して困っています。
283デフォルトの名無しさん:2006/11/28(火) 23:54:15
interruptして自分で止まるのを待て。
InterruptedExceptionを無視するスレッドだったら安全に止める術はない。
284276:2006/11/29(水) 00:09:49
>>280
ターゲットが携帯電話(iアプリ)なもので、クラスを使わずにやってみたいのです・・・。

>>281
有難うございます。
事前に容量計算+これでいくことにします。
随分恥ずかしいコードを書いてしまいました。
プログラミング自体初心者なのがバレバレですね。

>サイズの計算なくすなら、まずは最大幅幅確保してからという手もありだ。
>byte[] result = new byte[index];
>System.arraycopy(data,0,result,0,index);
試しにこれもやってみたのですが、
arraycopyで遅くなってしまうようです。
285282: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
というより、まずやってみればいいわけですが
(トレースするためのコードもちゃんと書いて)
288デフォルトの名無しさん:2006/11/29(水) 21:17:46
リトルエンディアン方式で格納されたバイナリデータをint型変数に読み込みたいのですがどう書けばよいでしょうか。
たとえば0x04 0x03 0x02 0x01というデータを32bitの0x01020304というint型変数にしたいのですが。
DataInputStreamとreadByte()使うのはわかるんですが・・・
289デフォルトの名無しさん:2006/11/29(水) 21:19:08
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+"です。");
}}
290デフォルトの名無しさん:2006/11/29(水) 21:33:39
>>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]の値を変えているから
最大値最小値の求め方が異常だ
291デフォルトの名無しさん:2006/11/29(水) 21:38:23
>>290
この方法だと合計値は求められないんでしょうか?
292デフォルトの名無しさん:2006/11/29(水) 21:47:13
>>288
Integer.reverseBytes(int i)
293デフォルトの名無しさん:2006/11/29(水) 21:50:10
>>291
最大値最小値を求める部分をとっぱらっちゃえば求まる
sum=(a[0]+a[1]+a[2]+a[3]+a[4]);は明らかにおかしくない
最大値最小値の求め方について再考することを勧める
そんな複雑なことをする必要はないif(){...}の...に書く文はひとつでいいはず
294デフォルトの名無しさん:2006/11/29(水) 21:54:35
>>293
すいません。ほぼ独学で学んでいるもので、
他の最大値最小値の求め方を教えていただけないでしょうか?
295デフォルトの名無しさん:2006/11/29(水) 21:57:22
>>294
関数使え
296デフォルトの名無しさん:2006/11/29(水) 21:57:57
>>294
if(max<a[i]){
max = a[i];
}

if(min>a[i]){
min = a[i];
}

わざわざa[i]に代入して入力データを壊す意義が分からない
297デフォルトの名無しさん:2006/11/29(水) 21:59:29
ユーザーからの入力を記憶しているただ一つの配列、
更にこの先の計算に必要な配列の内容を書き換えるから
事故が起きる
298デフォルトの名無しさん:2006/11/29(水) 22:00:12
>>296
ありがとうございます。
今から書き直してみます。
299デフォルトの名無しさん:2006/11/29(水) 22:01:04
>>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次元配列に格納するプログラムを作りたいのですがどうすればいいのでしょう?
302デフォルトの名無しさん:2006/11/29(水) 22:40:08
ピクロス
303デフォルトの名無しさん:2006/11/29(水) 22:43:38
ピクロスじゃないんですけど
これだけ見ると確かにそんな感じに見えますね(・ω・;)
どなたかわかる方ヨロです
304デフォルトの名無しさん:2006/11/29(水) 22:47:14
String line;
この中に入っている文字列の1文字目から8文字目や
18文字目から26文字目を抽出する関数を教えてください。
305デフォルトの名無しさん:2006/11/29(水) 22:49:47
>>304
サブストリング
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();
307デフォルトの名無しさん:2006/11/29(水) 22:55:16
substring
308デフォルトの名無しさん:2006/11/29(水) 22:56:12
>>307
省略形は不可でしたか。すみません、ありがとうございます。
309デフォルトの名無しさん:2006/11/29(水) 23:05:00
C+みたいにJAVA+って出ないんですか
フォームとかいちいち作るの面倒くさいんですけど
310デフォルトの名無しさん:2006/11/29(水) 23:09:14
>>309
C+何だそれは?C++のパクリ言語か?
311デフォルトの名無しさん:2006/11/29(水) 23:10:36
>>300
HttpSessionListenerは、web.xmlに登録して、サーブレットコンテナに呼んでもらうもの。
ただ、多重ログイン防止用途だとHttpSessionListenerは使えなかった。
まえやったときは、HttpSessionListener#sessionDestroyed()でログアウト処理をさせようとしたら、
既にセッションが無効になっていて、セッション内のユーザ識別子が取得できなかった。
ただ、Servlet APIには
> Notification that a session is about to be invalidated.
とあるので、コンテナのバグかもしれない(Tomcat 4.1.31)。俺の解釈違いか?

代わりに採った方法は、ユーザ識別子を持たせたオブジェクトに、HttpSessionBindingListenerを実装させるというもの。
このインタフェースを実装したオブジェクトは、セッションへの登録と破棄時にAPI規定のメソッドが呼ばれる。
セッション自体の破棄の時も呼ばれるので、その時にログアウト処理を行うようにした。
312デフォルトの名無しさん:2006/11/29(水) 23:20:45
>>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+"です。");
}
}
313デフォルトの名無しさん:2006/11/29(水) 23:25:44
>>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; }
314デフォルトの名無しさん:2006/11/29(水) 23:29:05
>>312
maxとminにa[0]を入れるのが一番楽
315デフォルトの名無しさん:2006/11/29(水) 23:30:41
>>313
d おかげさまで宿題できました
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();
}
317デフォルトの名無しさん:2006/11/29(水) 23:59:54
>>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;
}
わかる方はお願いします。
319デフォルトの名無しさん:2006/11/30(木) 00:02:58
>>316
1文字目のインデックス番号は0
配列と一緒で1から始まるのではない
320デフォルトの名無しさん:2006/11/30(木) 00:05:59
>>319
↓このようなことでしょうか?
 これでも同じくエラーになります。
line2 = (line.substring(0,8)+line.substring(40,1));

すみません。教えてください。
321317: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];
322デフォルトの名無しさん:2006/11/30(木) 00:06:42
<!--* はじめ *-->
<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));
324デフォルトの名無しさん:2006/11/30(木) 00:10:51
>>320
substringの第2引数は長さではなく終了インデックス
注意点は、終了インデックスは取り出したい最後の文字ではなく、その次の文字のインデックス
325デフォルトの名無しさん:2006/11/30(木) 00:12:50
>>324
ありがとうございます。
326デフォルトの名無しさん:2006/11/30(木) 00:13:19
>>317
ありがとうございました。おかげ様でできました。
327デフォルトの名無しさん:2006/11/30(木) 00:16:33
>>322
javascript関係は板違いなので、こちらへどうぞ
http://pc8.2ch.net/hp/
328デフォルトの名無しさん:2006/11/30(木) 00:17:28
>>314
一応317さんのお陰でできましたが、
その方法でもやってみようと思います。
329317:2006/11/30(木) 00:18:02
>>326
混乱させて申し訳なかった
330322:2006/11/30(木) 00:19:35
>>327
ありがとうございます。板違いである事すらわかりませんでした。
みなさまお目汚しごめんなさい。
331デフォルトの名無しさん:2006/11/30(木) 00:22:44
>>328
気づいてると思うけど>>317でなく>>321の方ね
>>317の方はmaxを0で初期化するのとほとんど同じ結果になってしまう
332デフォルトの名無しさん:2006/11/30(木) 00:25:48
>>331
きちんと修正してます。
本当にありがとうございました。
333デフォルトの名無しさん:2006/11/30(木) 00:29:41
>>328
今見たら>>289のソースではちゃんと>>314の方法で初期化してるじゃないかw
道理で以前はうまくいくはずだ
ソースを書き換えた時に余計なバグを作りこんだね
334デフォルトの名無しさん:2006/11/30(木) 00:33:20
>>331
すいません。またまたお聞きしたいのですが、
>>314案の
max = a[0];
min = a[0];
は、どこに配置すればいいんでしょうか?
float max,min,sum,average; の直後に配置するとやはり、
入力値にマイナスの値を1つでも入れないと、最小値が初期値0になってしまうんですが。
335デフォルトの名無しさん:2006/11/30(木) 00:38:04
>>334
位置は>>289のソースを参照
336デフォルトの名無しさん:2006/11/30(木) 00:43:23
>>335
OKです。できました。ありがとうございました。
こちらのがシンプルなので、この方法で大学に提出したいと思います。
337デフォルトの名無しさん:2006/11/30(木) 01:01:54
>>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);
}
338336:2006/11/30(木) 01:16:23
あれっ?数値変えたらエラー出た。
まあ今日は寝よう。
協力してくれた皆さんどうも。
339デフォルトの名無しさん:2006/11/30(木) 01:16:47
エグゼキュータブルjarファイルをダブルクリックするだけでコマンドプロンプトが
立ち上あがるようにするにはどうすればよいでしょうか?そこから標準入出力させるようにしたいのですが、、、
340デフォルトの名無しさん:2006/11/30(木) 01:22:12
フィールドの初期化について質問です。

class Unko
{
 private int weight;

 Unko()
 {
  weight = 0;
 }
}

とするのと

class Unko
{
 private int weight = 0;

 Unko() { }
}

とするのは何が違うんでしょうか?
341デフォルトの名無しさん:2006/11/30(木) 01:25:03
>>340
複数コンストラクタがあるときは違ってくる可能性があるが
340の例だと何も違わない。
342デフォルトの名無しさん:2006/11/30(木) 01:51:38
>>340
そもそもフィールド値は初期化されるので
private int weight = 0; は無意味
private int weight; でおk (0以外の場合は値代入必要だけど・・・)
343340: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のコンストラクタを
呼び出した場合は何もしない,
ということを行いたい場合
★にはどのような処理が入りますでしょうか?
つまり呼び出す側のクラスの識別です.
345デフォルトの名無しさん:2006/11/30(木) 07:31:36
>>344
そういうのはちゃんと「私は〜です」って名乗る様にしないといけないのでは?

class A{
public A(Object obs){
if(obs instanceof B){
}else if(obs instanceof C){
}}}

みたいな
346デフォルトの名無しさん:2006/11/30(木) 07:45:37
路線バスってすれ違う時に挨拶するでしょ。
ハンドルから手を離して挨拶するって危険なんじゃないかって
思うんだ。しかし、運転士たちは危ないと思ってない。

ここに行って
http://hobby7.2ch.net/test/read.cgi/bus/1162901425

挙手してんじゃねえよ

って1レスでいいから教えてあげて。よろしくお願いしますね。
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が起動して、まず「ユーザーネーム」と「パスワード」を入力するダイアログが出てきます。
いつも、そこで「キャンセル」ボタンを押すと、デスクトップが表示(マイコンピュータとかゴミ箱とか)されて来るので、
そのままインターネット・エクスプローラーなどのアプリケーションソフトを使っているんですが・・・
349デフォルトの名無しさん:2006/11/30(木) 09:02:15
350デフォルトの名無しさん:2006/11/30(木) 12:13:42
>>348
いくら中古でも普通初期設定は最低でもアドミニストレーター権限持つぞ!
再インストールをおすすめする。どんなソフト入れられてるかわからんぞ!
351デフォルトの名無しさん:2006/11/30(木) 12:48:46
キーロガーとバックドア仕込んだ中古品だったら終了だな
352デフォルトの名無しさん:2006/11/30(木) 14:48:17
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との親和性の高いもの)があれば、情報を頂ければ幸いです。よろしくお願いします。
354デフォルトの名無しさん:2006/11/30(木) 16:28:08
Eclipse BRITとかどうよ?
ttp://journal.mycom.co.jp/column/yetanother/097/
Eclipse RCPスタンドアロンでここまでできるらしいよ。
355354:2006/11/30(木) 16:29:11
BRITじゃない、BIRTでした。スマソ
ついでに本家サイト
ttp://www.eclipse.org/birt/phoenix/
356デフォルトの名無しさん:2006/11/30(木) 17:13:03
ブリット 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);
}
}
360デフォルトの名無しさん:2006/11/30(木) 18:46:40
>>357
さっき別スレで質問してたやつだな。 俺がその回答者ですよ。
さっきの getContentPane() にはちゃんと意味がある。
JFrameにはいくつものレイヤがあり、そのどこに配置するか? を指定しなきゃいけない。
コンポーネントをContentPaneに配置するのだから、レイアウトもContentPaneに設定する必要がある。
frame.setLayout(f_layout);

frame.getContentPane().setLayout(f_layout);
だな。 詳細は↓
http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/javax/swing/JFrame.html
http://www.javadrive.jp/tutorial/jframe/index5.html

ちなみにこれはJDK1.4まで。
1.5からは、frame.add() 等はデフォルトでContentPaneを指定するように変更された。
サンプルは1.5用で、おまいが使っているのは1.4系だから起きる例外。
361デフォルトの名無しさん:2006/11/30(木) 18:47:06
>>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("当たり!");}}
363352:2006/11/30(木) 18:53:59
URLに泣く泣く;JSESSIONID=をつけて動作させることにしました。
お騒がせして申し訳ありませんでした。

>>357
1.5系使えばとりあえずは動きますが
364デフォルトの名無しさん:2006/11/30(木) 19:09:41
整数の演算でオーバフローを起こすことって
できないんでしょうか?
とても不便です。
365デフォルトの名無しさん:2006/11/30(木) 19:19:05
Integer.MAX_VALUE + 1 すればオーバーフローが起きるけど、

そーゆー事じゃなくて?
366364:2006/11/30(木) 19:27:17
>>365
オーバフローで例外が発生してほしいのです。
367デフォルトの名無しさん:2006/11/30(木) 19:38:37
無理。普通は BigInteger なり BigDecimal なりを使ってオーバーフローしないようにする。

ってか、オーバーフローで例外って何のために必要なんだろ?
368デフォルトの名無しさん:2006/11/30(木) 21:01:25
JAVAでテキストファイルを読み込んでラインソートを行いたいのですが、よいコマンドありましたら教えてください。

ソートキーは、頭から8桁と40桁目から10桁です。

イメージはこんな感じなんですが。。
sort dt(substring(0,8),substring(40,50));
369デフォルトの名無しさん:2006/11/30(木) 21:52:08
>>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
ありがとうございます。
やってみます。
371デフォルトの名無しさん:2006/11/30(木) 22:22:34
>>356は一体何を意味するのだろう
372デフォルトの名無しさん:2006/11/30(木) 22:22:34
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));
}
}
作ってみた
373デフォルトの名無しさん:2006/11/30(木) 22:23:11
おならか?
374デフォルトの名無しさん:2006/11/30(木) 22:23:30
誤爆
375デフォルトの名無しさん:2006/11/30(木) 22:23:44
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;
377353: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メソッドを呼び出す前に呼び出したとします。

こういう状況を例外クラスを投げたいんですが,
既存クラスにこういう状況の時に投げる例外クラスってありますかね?
380デフォルトの名無しさん:2006/11/30(木) 23:01:49
>>379
java.lang.IllegalStateException とか。
381デフォルトの名無しさん:2006/11/30(木) 23:03:41
>>379
java.lang.IllegalStateExceptionとかいいんじゃね?
RuntimeExceptionのサブクラスだし、try catch書かなくていい。
382デフォルトの名無しさん:2006/11/30(木) 23:32:26
379です

IllegalStateExceptionに2票入りましたね。いただきです
どーもでした
383ぴゅあ:2006/12/01(金) 00:24:09
>>348
恐らくネットワーク(ドメイン)に参加させて使っていたものなんでしょう
WinMeは殆ど使わなかったし殆ど覚えてないけど"管理者権限"とかなったかどうかは・・・
(調べてる時間はないし…)

パスワードファイルの削除,ネットワーク設定の確認とかすればいいだろうと思うけど
聞くならそれはまずWin関係の方で聞いた方がいいと思います

そのまま何とかして使うよりは>>350も言ってるOSの再インストールの方がいいと思いますけど
384tom: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です。
388デフォルトの名無しさん:2006/12/01(金) 00:54:25
>>387
原因はputの戻り値がnullだからだろう。
だがそのソースでputの戻り値をdに入れている意味がわからない。
なんかやりたいことと違ってないか。

参考。javadocより。
> 戻り値:
> 指定されたキーに関連した値。または、キーのマッピングがなかった場合は null。
> 戻り値 null は、HashMap が以前に null と指定されたキーを関連付けていたことを
> 示す場合もある
389デフォルトの名無しさん:2006/12/01(金) 01:22:52
>>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が表示されるかどうか確かめてみれば分かる。
390デフォルトの名無しさん:2006/12/01(金) 01:34:26
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重起動をチェックする方法はあるのでしょうか?
あれば教えてください。
宜しくお願いします。
393392:2006/12/01(金) 07:21:32
申し訳ありません。
ロックファイルを作成するということで解決することにしました。
394デフォルトの名無しさん:2006/12/01(金) 07:27:49
>WinMeでは、インストールできないんでしょうか?

その可能性は高い
395387: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

と出るのですが、どういう意味でしょうか??
どなたか回答お願い致します。
397デフォルトの名無しさん:2006/12/01(金) 11:35:59
>>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) {
 }
399396:2006/12/01(金) 14:18:22
>>397 >>398さん

わざわざお答え頂ありがとうございます。
これを参考にがんばります。
400デフォルトの名無しさん:2006/12/01(金) 23:03:19
二進数で
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);が使えるようなら有効に使いたいです。

これでは余りにもスマートとは言えない考え方です。
もっとスマートにできるやり方をご存知でしたらご教授いただきたいです。
よろしくお願いします。
401400: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がインストールできないとなると・・・困った;
403デフォルトの名無しさん:2006/12/01(金) 23:30:44
>>400
範囲を選択してNOT がしたいなら
反転したい範囲に 1 が立ってる数との XOR をとればいい。
404デフォルトの名無しさん:2006/12/01(金) 23:33:51
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
ツリーでノード名を取得するのはどうすればいいのでしょうか?
406404:2006/12/01(金) 23:41:44
すいません。解決しました。
Objectクラスを継承しているのを忘れていました。
407400:2006/12/01(金) 23:42:02
>>403
凄く参考になりますありがとうございます。
まだ良くわからないのでじっくり考えてみますね。

>>404
まだやっとJava構文がわかり始めたくらいなのでBitSetなんてクラス知りませんでした。
凄く参考になります。
BitSetの使用がどうなっているのか良くわかりませんが自分のやりたいことの場合だと
mask1、mask2の範囲を0<2047にしてやればランダムで入れ替える場所を
セットすることもできそうですね。
少しAPIとにらめっこしてきます。

二人とも本当にありがとうございました。
408406:2006/12/01(金) 23:43:09
誤爆。。。
上のは405です。
409デフォルトの名無しさん:2006/12/01(金) 23:47:47
プログラムの一部なので宿題スレでなくここでお願いしたいと思います。
6行目でクラスSuperのインスタンスsuper[100]を作っているのですが、
identifierがないと言われコンパイルエラーが出てしまいます。
どのように改善したら良いのでしょうか?

http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=28831
410デフォルトの名無しさん:2006/12/01(金) 23:50:20
superは予約語じゃん。じゃん。
411デフォルトの名無しさん:2006/12/01(金) 23:54:20
>>410
うは…全く知りませんでした^^;
新たに大量のエラーが出てきてしまいましたがとりあえずそこの関連部分のエラーは解消されました。
ありがとうございました。
412デフォルトの名無しさん:2006/12/01(金) 23:58:40
>>391
ホントにJava EE要るの?Java SEじゃなくて?
もしその違いが分からないなら、多分あなたにはJava EEは要らない。
それなら、「JDK 5.0 Update 10」ってのをダウンロードするといいよ。
リリースノート見ると、Java SE SDKならWindows Meに対応してる様子。
413デフォルトの名無しさん:2006/12/02(土) 00:00:14
てかJ2EEって参照実装でしょ?
JBoss使ってるときSunからEE落とした記憶が無い
414デフォルトの名無しさん:2006/12/02(土) 00:17:42
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したんです・・・でも、インストールできなくて
416400: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での配列の方がメモリは節約できますか?
もちろん軽く動作するって意味です。
それとも考えすぎかな?
417tom: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の確認もしました。

なにか間違ってるのですかね?
418デフォルトの名無しさん:2006/12/02(土) 01:21:42
一応boolean[]の高機能版と思えば間違いないよ。
BitSetの強力な使い方の一例に「フラグの立って(または降りている)インデックスを
イテレートする」というものがある。boolean[]と比べればわかるがかなり速度が違う。

メモリ云々についてはビット演算がどういう類のものか考えればわかるでしょ。
419デフォルトの名無しさん:2006/12/02(土) 01:22:50
>>417
ディレクトリ名と同じxmlを用意して、中にContextタグを書けば動くんじゃね。
420デフォルトの名無しさん:2006/12/02(土) 01:34:45
コンストラクタの引数は、最初にビットを何桁用意するかの指定です。
new BitSet(1024)なら、0〜1023(1024-1)桁は最初から使えます。
ただし、必要に応じて自動的に大きさは変わるのであまり気にしなくてよいです。
初期に指定しておけば、その範囲で使う限りは拡張処理の必要がないので、
性能的に得になるというだけです。

BitSetのtoString()は、{ 立ってる, ビットの, 桁, ... } という表記になります。
0桁めと2桁めが立っている4桁のBitSetなら { 0, 2 }
setしたならなんか出るはずですけど、出ませんか。
二進数のように表示するには、端から見ていって立ってれば1、立ってなければ
0を書き出すみたいに書く必要があると思います。
桁数はたぶん右から数えると思うので、逆順に出力しないといけないかも。

BitSetは内部的には、必要なビット数 ÷ 64の要素を持ったlong配列を持ってて
その該当ビットを立てたり下ろしたりしてるので、メモリ効率はbooleanと大差
ないと思います。
421デフォルトの名無しさん:2006/12/02(土) 01:35:23
>>419
コンテキストパスがディレクトリ名と同じ場合はコンテキスト設定ファイルは要らないはず。

>>417
WEB-INFの下にweb.xmlは置いた?
404は何が見つからないと言ってる?コンテキスト/アプリそのものが見つからない?
それともファイルが見つからないだけ?
Tomcatが正常に起動してるから、環境変数はOKだよ。
422デフォルトの名無しさん:2006/12/02(土) 01:42:55
BitSetは64ビット環境になれば更に性能が向上するんだろうな
423デフォルトの名無しさん:2006/12/02(土) 01:47:18
>>420
凄く丁寧に解説していただきとても感謝しております。
恐らくSystem.out.println(bit);だけで入力していたからだと思います。
bit.toString()としたら表示できるのでしょうね。

本当にありがとうございました。
424デフォルトの名無しさん:2006/12/02(土) 01:50:37
> その該当ビットを立てたり下ろしたりしてるので、メモリ効率はbooleanと大差
> ないと思います。

booleanは一人で4byte使ってる希ガス
425デフォルトの名無しさん:2006/12/02(土) 02:23:03
BitSetはゲームパッドを仮想するのに丁度よい。
426デフォルトの名無しさん:2006/12/02(土) 03:13:06
>>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;
のように桁を右に揃えたいのです。

428デフォルトの名無しさん:2006/12/02(土) 04:10:43
>>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さん
ありがとう
ございますます。
印刷をしたいので、左がはにスペースを加えて
文字列として取り出したいのです。
430デフォルトの名無しさん:2006/12/02(土) 04:26:24
>>429
ひどい混乱が見受けられる
431デフォルトの名無しさん:2006/12/02(土) 04:30:40
紙に印刷をしたいのです。
432デフォルトの名無しさん:2006/12/02(土) 04:34:30
000,012,300;
000,000,100;
はわかるのですが。
0ではなくスペースにしたいのです。
433デフォルトの名無しさん:2006/12/02(土) 04:35:33
>>432
> 000,012,300;
> 000,000,100;
これは↓になるのか?
   , 12,300;
   ,   ,100;
434デフォルトの名無しさん:2006/12/02(土) 04:45:47
>>433さん
にはなりません。
やりたい事は用紙の指定した位置に
右揃えで3桁ごとにカンマをつけて印刷をしたいのです。
435デフォルトの名無しさん:2006/12/02(土) 04:52:43

>>432
new DecimalFormat("000,000,000");
にしたときはなるよ、
436デフォルトの名無しさん:2006/12/02(土) 04:55:48
>>433
意図をくんでやれ。
437デフォルトの名無しさん:2006/12/02(土) 05:05:40
いやもう既に>>428で出来る
説明要求に正確に応えられないのはもう飽きたス

(´д`;)バージョンチガウ?javax.printとか使ってる?
       もう現状を包み隠さず申せ
438デフォルトの名無しさん:2006/12/02(土) 05:21:55
>>437さん
包み隠さず申し上げます。
印刷関係は
Jetbeeというオープンソースのライブラリを使っています。


g.drawString(kingakuFormat.format(kingaku1), 250, 316+ line2*12);

上のここに渡したいのです
kingakuFormat.format(kingaku1)
439デフォルトの名無しさん:2006/12/02(土) 06:38:20
>>438
String.format("%11s",kingakuFormat.format(kingaku1));
これで、だめかな?

440デフォルトの名無しさん:2006/12/02(土) 06:55:45
>>439さん
ありがとうございます。
それも、以前やってみたのですが、
正確に右詰ができなかったのです。
桁によって少し左にずれるみたいでした。
441デフォルトの名無しさん:2006/12/02(土) 06:59:20
442デフォルトの名無しさん:2006/12/02(土) 06:59:46
>>440
そうかカンマと数字でフォントの大きさが違うのかな。
ゴメン。
443デフォルトの名無しさん:2006/12/02(土) 07:06:36
>>441さん
ありがとうございます。
C,VB,Delphiだと右詰めは簡単なのですが.....


444デフォルトの名無しさん:2006/12/02(土) 07:16:51
>>443
ですが、どうした?
適用不可なのかな?
445デフォルトの名無しさん:2006/12/02(土) 07:21:36
>>444さん
自分の勉強不足を痛感したのです。
javaのことですので必ずできると思います。
みなさんありがとうございます。
446デフォルトの名無しさん:2006/12/02(土) 07:44:37
>>445
右詰で表示したい文字列の左端 = 右詰で表示したい文字列の右端 - g.getFontMetrics().getStringBounds(右詰で表示したい文字列, g).getWidth()
でも
右詰で表示したい文字列の左端 = 右詰で表示したい文字列の右端 - g.getFontMetrics().stringWidth(右詰で表示したい文字列)
でもどうぞ
パディングなんて無駄なことはいらない
447デフォルトの名無しさん:2006/12/02(土) 07:50:23
>>446さん
ありがとうございます。
こんなところ迄今の自分ではたどり着ける訳が
ありませんでした。
448デフォルトの名無しさん:2006/12/02(土) 07:56:36
素直に>>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);
450tom: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.
と出てきています。

どうすればいいんですかね?
451デフォルトの名無しさん:2006/12/02(土) 08:34:54
drawStringがオーバーライドされてるの?
なら、オーバーライド後のメソッドの仕様が分からないことには何とも言えんが、
drawString(String,int,int)の第3引数がオーバーライド後も文字列の左端の座標の指定なら
与えるべき座標は計算できるのでは?
452tom:2006/12/02(土) 08:51:51
450です。
ちなみに、コマンドプロンプトから、cdコマンドを使いentryディレクトリ
まではいけます。
助けてください・・・・お願いします。
453デフォルトの名無しさん:2006/12/02(土) 08:59:25
>>451さん
今まで経験した言語では例えば12文字の長さの文字列
を左の印刷開始位置を指定すれば文字列に空白やカンマが
含まれていても正確に右詰されて印刷できたもですから、
javaでも同じかと思いました。
また、同じ12文字を渡すのに毎回座標を計算しなければならないのは、
なんとも腑に落ちないものでしたので、私の理解が足らないと思い込んで
いました。必ず同じ長さで文字列を整形できるクラスのメッソドが
あるのではないかと。


454デフォルトの名無しさん:2006/12/02(土) 09:12:03
>>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というオープンソースのライブラリの問題なのかな、
そんな事はないとおもいますが。
その他は綺麗に印刷ができているので。
みなさんありがとうございました。
459デフォルトの名無しさん:2006/12/02(土) 10:10:47
460デフォルトの名無しさん:2006/12/02(土) 10:26:02
>>450
だから、/WEB-INF/web.xmlは置いたのか?って聞いてんだよ。
環境変数はOKだとも言ってんだろ?
同じこと何度も書くな。うざい。
461デフォルトの名無しさん:2006/12/02(土) 10:27:58
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です。
463デフォルトの名無しさん:2006/12/02(土) 10:31:06
>>450
マルチしね
464デフォルトの名無しさん:2006/12/02(土) 10:35:59
>>461さん
ありがとうございます。
そうですか、もう少し落ち着いて良く
調べてみます。
465デフォルトの名無しさん:2006/12/02(土) 10:50:29
>>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はおいていません。
467デフォルトの名無しさん:2006/12/02(土) 11:10:19
>>466
置けよ。必須なんだから。動くわけないだろ。
言われたこと全部確認せずに何度も同じことあちこちにコピペするなよ。
うざい。
468デフォルトの名無しさん:2006/12/02(土) 11:10:24
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
470デフォルトの名無しさん:2006/12/02(土) 11:36:42
せっかく細かく位置を調整できるってのに
右揃えするためにフォントを替えるなんてありえんだろ
カンマが幅広すぎて格好悪いことこの上ねえ
コンソールに出力するのとはわけが違う
471デフォルトの名無しさん:2006/12/02(土) 11:37:16
char data[] = {'Y','A','M','A','D','A'};が1文字ずつマウスのドラッグと共に表示されるプログラムです。
ボタンを押下すると色が変わったりフォントが変わったりするはずなのですが、
変化がありません。ボタンの配置はできているようなのですが・・・どこがおかしいのでしょうか?
javacコンパイラは一応通りました。

http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=28846
472471:2006/12/02(土) 11:39:13
すみません、アップロードに失敗したようですorz
以下URLでお願いします。

http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=28847
473デフォルトの名無しさん:2006/12/02(土) 11:42:01
>>471
その前の二つは?
474デフォルトの名無しさん:2006/12/02(土) 11:45:36
>>470さん
そうですね。
今回は大変収穫がありました。
細かく位置を調整する方法も教えていただき。

475デフォルトの名無しさん:2006/12/02(土) 11:50:32
>>471
俺アプレットってわからないんだけど再起動するとボタンが破綻するのは仕様?笑
俺の環境だと色やフォントが変わる以前にY A M A D Aの一文字すら表示されないぞ?
476471:2006/12/02(土) 12:08:51
>>473
それも失敗したやつです。
削除できたらいいのですがここは上げっぱなしのようで…orz

>>475
環境によるのかもしれません。。。
書いた仕様に対してどこがおかしいのか分かりますでしょうか?
下手にコンパイラが通ってしまうためここから進みませんorz
477デフォルトの名無しさん:2006/12/02(土) 12:16:07
>>476
とりあえず俺が思ったのはアプレットって大きなCanvasなの?
新しくextends Canvasでクラス作ってみたけどだめだったから
paint(Graphics g)のところが何かおかしいんじゃないかと…。
見えてないのかとsetVisible(true);なりやってみたけど出てこないからやっぱり書けてないんじゃないかな…。

俺携帯の開発しかまともにやったこと無いからJ2MEしかわからなくて力になれなくてすまん。
まぁ暇だから俺も一緒に考えてみるよ笑
478477:2006/12/02(土) 12:20:40
>>476
とりあえずひとつわかった事はxの座標がおかしくない?
200だから画面外に描画されてるっぽい。
479デフォルトの名無しさん:2006/12/02(土) 12:28:21
>>476
あと
class MyButtonAdapter implements ActionListener {

public void actionPerformed(ActionEvent e){
}
の最後にd.repaint();入れたらボタン押すごとに新しい文字が出るようにはなった。
やりたいのはこういうことじゃなかったらどうしようwwww

力不足ですまんねー。
480471:2006/12/02(土) 12:35:13
>アプレットって大きなCanvasなの?
>200だから画面外に描画されてるっぽい

すみません、学習が足りずCanvasの意味が分かりませんorz
私の環境ではアプレットは200より十分大きなサイズをhtmlファイル内で記述していました。

>d.repaint();入れたらボタン押すごとに新しい文字が出るようにはなった。
>やりたいのはこういうことじゃなかったらどうしようwwww

いえいえ、ボタンが反応しただけでも進歩しています。
あくまでマウスドラッグ時のmouseDragged()に反応して一定間隔で描画したいのですが、
ボタンが無反応なんですよねorz
481デフォルトの名無しさん:2006/12/02(土) 12:52:27
initメソッド内
×Button button1 = new Button("Black"); 
○button1 = new Button("Black"); 
482デフォルトの名無しさん:2006/12/02(土) 13:05:53
>>480
俺GUIに弱いから曖昧だけどCanvasクラスを利用して描画してるのだと捕らえている。
少なくとも携帯アプリではCanvasを使って描画だったから。

自分はブラウザじゃなくてアプレットビュワーですので画面外なんですねw
ボタンの方は恐らく条件判定が間違っているのだと思う。
if(e.equals(d.button1)) {}とか
if(e.getSource().equals(d.button1)) {}にしても無理だった。
誰かエロい人に聞いてくれ。
ちなみにif節を外したら一定の動作だけどちゃんと動いてくれたからな。

>>481さんの言うように新しいオブジェクトだから受けれて無いだけかも?
もっかい見てこよう。
483デフォルトの名無しさん:2006/12/02(土) 13:20:32
>>480
てか今気づいたけどできてるじゃん?wwwww
フォントのサイズを調整するのは一度フォントを変えてからしか適用ができないのな。
あってるかわからないけど初期でも文字サイズ変えれるようにFONTを設定しておいた。

マウスのドラッグについては左ボタンを長押ししながらマウスグリグリしたらちゃんとその位置に描画してくれるよ?
ドラッグの捉え方を間違えてたのか?
SPEED++とSPEED--の仕様が不明なのでどうもしてないけど。
余計かもしれないけど一応うp。

http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=28852
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進数として扱うのに非常に多いとか)
485デフォルトの名無しさん:2006/12/02(土) 14:27:41
ガンダム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"と表示されました。
何か、クラスパスの設定が間違っているのですかね?
489デフォルトの名無しさん:2006/12/02(土) 15:59:48
>>488
C:\
490デフォルトの名無しさん:2006/12/02(土) 16:06:38
488です。
>>489
C:¥にしてみてもダメでした・・・。
491デフォルトの名無しさん:2006/12/02(土) 16:09:25
何をC:¥にしたの?
492デフォルトの名無しさん:2006/12/02(土) 16:18:42
>>491
そうしました。
493デフォルトの名無しさん:2006/12/02(土) 16:26:09
>491
環境変数の値です。
494ぴゅあ:2006/12/02(土) 16:31:11
>>488
デフォルトならC:\TOMCAT5_5にインストールされるのではないんじゃないの?
495デフォルトの名無しさん:2006/12/02(土) 16:33:13
>>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
>>495
あ… そういうことか。。。(>>489-493)
498デフォルトの名無しさん:2006/12/02(土) 16:43:08
もともとのアドバイスは、
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に必要だったかどうかとか定かではないですが)
その消したのを消さないままで書けばたぶん解決するんだろうと思いますよ
502デフォルトの名無しさん:2006/12/02(土) 16:59:46
どうでもいい質問なんですけどぴゅあさんはプログラマをやってらっしゃるのですか?
いつも凄く為になる解説をしていただけるので気になっていました。
503ぴゅあ:2006/12/02(土) 17:43:09
>>502
ここ1,2ヶ月はずっと断り続けていたSE業を押しに負けて引き受けてしまったので
今のところプログラマではないですが(春には戻ってるだろうけど)
なので当面はたまに遊びだけ


どうでもいい質問とかいうのに引っ掛けて(?)どうでもいいような話も加えておけば

プログラマだからというわけでもないと思うけど
ただ、プログラマ(仕事)という意味合いでも解る人が増えてくれれば
仕事としての面では、会社も売上率が上がるだろうし
それに伴ってプログラマとかの給料とかももっと上がったりすることもあるんだろうし

それより、解る人がもっと増えてくれれば
自分自身にとっても仕事も楽になるし
更にもっと色んな仕事(プログラムを書くとか)にも触れることができるようになるだろうなぁ
ってとこ?

別に「凄く為になる解説」と言ってもその僅かな部分しか伝えられないし
仮にそれによってその相手が伸びてきたとしても
そうそう追いつけるものでもないだろうし(追いつかれるかどうかとかはどうでもいいことだけど)
もし追いつかれてしまうようなら、自分がもっと勉強すればいいだけのことですしね

それより、質問に答えようと(課題を消化しようとするようなもの?)考えることが
質問者側には単に答えているだけのように見えてそうで、自身の知り得ていないことを知る機会になるかも
と思っているのかも
504デフォルトの名無しさん:2006/12/02(土) 17:54:50
>502
どうでもいい質問は通りすがりの俺が答えましょう
ぴゅあさんは風水師です。
鬼門の方角にJAVA_HOMEを設定すると運気があがります。
505ぴゅあ:2006/12/02(土) 17:57:26
>>504
>ぴゅあさんは風水師です。
>鬼門の方角にJAVA_HOMEを設定すると運気があがります。

意味解らんし。。。(−−;

てか、マジでそんな話あったら
あちしには難し過ぎて理解できんかも
(かも…じゃなくて、できん(汗))
506デフォルトの名無しさん:2006/12/02(土) 18:04:42
ぴゅあタン(;´Д`)ハアハア
507デフォルトの名無しさん:2006/12/02(土) 18:19:50
ぴゅあってプログラムの知識はあるけど
文章を書く能力はそんなに無いよね
全体的に読みにくい
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>

510デフォルトの名無しさん:2006/12/02(土) 19:41:14
>>509
Servletはデフォルトパッケージで作るな。
511デフォルトの名無しさん:2006/12/02(土) 20:22:45

>>510
509です。どういうことでしょう?ちょっと分かりません。テキストを写して
書いただけなんで・・・。
そもそもweb.xmlは、自分でメモ帳などで書くのですか?どうやって作るもの
なのでしょうか?
512デフォルトの名無しさん:2006/12/02(土) 20:26:26
>>509
釣られてあげようではないか。
classesフォルダの直下にSample.classを置くと幸せになれるよ
Sample.classはいわゆるサーブレットってやつでつよ。
「サーブレット」がなんなのかびみょーなら
ぐぐると易しく解説してくれてるサイトがいぱーい引っかかりますよ。
513デフォルトの名無しさん:2006/12/02(土) 20:33:16
>>512
一応classesフォルダの直下においてあるんですけど。それでもダメです・・
514デフォルトの名無しさん:2006/12/02(土) 20:34:32
>>513
だから、デフォルトパッケージで作るなって。
パッケージを知らないのなら、
Servlet以前に入門書でJavaの基礎から勉強し直した方がよい。
515デフォルトの名無しさん:2006/12/02(土) 20:58:45
>>514
パケージ作りました。パッケージ文も追加してコンパイルいたのですが、やはり
ダメでした。
classes以下では、javaのパッケージの考え方が使われているのは知っていたのですが、
テキストなどには、すべて、デフォルトパッケージでサンプルなどがあるもので・・・。
516デフォルトの名無しさん:2006/12/02(土) 21:11:35
>>515
で、コンパイルされたclassファイルは
パッケージ階層と同じディレクトリ階層を作って、そこに入れた?
それから、web.xmlのクラス名の指定も完全限定名にしたの?
517デフォルトの名無しさん:2006/12/02(土) 21:37:48
>>516
別にデフォルトパッケージでも大丈夫だろ?なんでパッケージにこだわってんの?
第一、ここは初心者が質問しに来るところだぜ。第一、サーブレットの最初の方から
パッケージなんてそんなにでてこない。本によっては全部デフォルトパッケージで
サンプル作ってるやつだってある訳だし。質問見ると、とにかくブラウザに表示したい
訳だろし。パッケージパッケージ言ってないで質問の意図分かってやれよ。
518デフォルトの名無しさん:2006/12/02(土) 21:54:36
アプレットって過去の遺物なんでしょうか。
アプレットみたいなやつで最近はやりのやり方があったら教えてください。
519デフォルトの名無しさん:2006/12/02(土) 21:57:08
>>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
あんまり初心者いじめんなよ。あなたも最初からすぐに理解してできたわけじゃないでしょ?
自分が分からない立場だったらどうよ?混乱するだけだろ?
521デフォルトの名無しさん:2006/12/02(土) 21:58:28
>>515
またまた釣られてみました。
509で書かれたweb.xmlを見る限り、先頭に<web-app>が抜けてるよぉ。
できればSample.classのソースコードとweb.xmlの詳細を載せてもらえると、なんかわかるかも
522デフォルトの名無しさん:2006/12/02(土) 22:00:47
無名パッケージはあまり推奨されてないし、
特にJSPでは、Javaの仕様の関係で無名パッケージのクラスが使えないからね。
ま、サーブレット単体では動かなくなることはないんだけど。
実際Tomcat5.5付属のサンプルなんか無名パッケージに属してる。
523デフォルトの名無しさん:2006/12/02(土) 22:00:56
>>517
デフォルトパッケージで動かしてみてから言えよ。
524デフォルトの名無しさん:2006/12/02(土) 22:15:14
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
>>521
<?xml version="1.0" encoding="ISO-8859-1" ?>
- <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
- <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>
527デフォルトの名無しさん:2006/12/02(土) 22:39:45
- <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 よくわかりませんが"-"がついています。
コンテナ起動時にはとくに何もおきていないです。
コンテナ起動時に起きるエラーといとどういうものが考えられますか?
529デフォルトの名無しさん:2006/12/02(土) 22:58:42
>>527
IE6で開いたのをコピペしたんじゃないか?
530デフォルトの名無しさん:2006/12/02(土) 22:59:44
>>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)などとインスタンス生成すればできますよね。

しかし、ループのなかで変換をを行いたい場合、
インスタンス生成以外の方法で変換をかけることはできないでしょうか?
533デフォルトの名無しさん:2006/12/03(日) 00:23:17
> インスタンス生成以外の方法で変換をかけることはできないでしょうか?
基本的に無理。

ループまわす回数や数値の範囲によっては、
インスタンスプール使うって手もあるけど。
534532:2006/12/03(日) 01:05:46
>>533

回答ありがとうございます。

たとえば無茶ですが、以下のように生成したとしても
制御する方法があるということですか。

for(int i=0 : i<100 ; i++){
new Integer(a[i]);
}

インスタンスループについて調べてみましたが
なかなか難しい・・。
535デフォルトの名無しさん:2006/12/03(日) 01:10:04
>>534
Javaのバージョン何使ってる?
5.0使ってるならInteger#valueOf使いなさいな
内部で配列にキャッシュしてるから。

Stringの場合、Mapでキャッシュするのが一般的だが
生成される相手がIntegerならMap#getのコストやString#equalのコストのが高くつくかもね
536デフォルトの名無しさん:2006/12/03(日) 01:38:39
Java使ってる時点で何やっても高コストC言語で作りなさい
537デフォルトの名無しさん:2006/12/03(日) 01:48:25
フィッシングを謳うコンプレックスマンがまた登場しました
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>
----------------------------------^
541デフォルトの名無しさん:2006/12/03(日) 11:04:33
>>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
<?xml version="1.0" encoding="ISO-8859-1" ?>
- <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
<web-app>
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/HelloServlet</url-pattern>
</servlet-mapping>
</web-app>

こんなふうに書いたのですが、また、ダメでした・・・。どうしてですかね?
544デフォルトの名無しさん:2006/12/03(日) 11:36:09
一見して2行目の先頭がオカシイ。
545デフォルトの名無しさん:2006/12/03(日) 11:41:35
>>544
もしかして”-”ですか?なんかいつもついているんですよね?
546デフォルトの名無しさん:2006/12/03(日) 11:42:58
>>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で
見ることはできないのでしょうか?
548デフォルトの名無しさん:2006/12/03(日) 12:11:48
>>547
confのweb.xmlをコピーして編集するぐらいなら
Tomcatのwebappsディレクトリにあるサンプルから
コピーしてきて編集した方がいいかと。
言うとおり、すごーくたくさんあって大変だから。
まさか、confのweb.xmlは変更してないよね?

IEで見られないのは、書式が間違っている可能性が高いな。
正しく書いてあればIEで見られるはず。
549デフォルトの名無しさん:2006/12/03(日) 12:19:04
>>548
了解しました。アドバイスありがとうございます!
confのweb.xmlにはさすがにヤバイ気がして手をつけていません。
550デフォルトの名無しさん:2006/12/03(日) 12:36:07
http://gaia.kake.info.waseda.ac.jp/~zion/progb2006/index.php?plugin=attach&refer=11%B7%EE20%C6%FC&openfile=1120-3.zip
ボール同士が完全弾性衝突するように書き換えてください
551デフォルトの名無しさん:2006/12/03(日) 13:01:20
すいません、JARファイルを作成してるのですが
画像のパスが何故か絶対パスで取得しているみたいで
元の画像を元のフォルダから別のところに移すとJARファイルを実行しても画像が表示されなくなります

プログラム内の画像の指定は ./image/aaa.png
って感じで指定しているし画像もJARファイルに入っています
何ででしょうか
552デフォルトの名無しさん:2006/12/03(日) 14:36:22
>>503
ドン亀レスなんですがぴゅあさんは凄い方なのですね。
元々はプログラマに腰を据えていたらSEにって話が来たのですかね?
Javaメインのプログラマさんですかね?

もし自分がPGになるのならぴゅあさんみたいな方の下につきたいですね。(PGとしてもSEとしても。)
きっとこのままだと自分もPGになると思うのでその節はよろしくお願いしますね。


>それより、質問に答えようと(課題を消化しようとするようなもの?)考えることが
質問者側には単に答えているだけのように見えてそうで、自身の知り得ていないことを知る機会になるかも
と思っているのかも

というのには同意です。
自分も初心者にもかかわらず宿題スレを見て考えて見たりしていますので。


やっぱりぴゅあさんは凄い方ですね。
誉め過ぎですか?笑
553デフォルトの名無しさん:2006/12/03(日) 15:44:34
サーブレットでパッケージがあるときのコンパイルってどうすればいいのですか?

デフォルトパッケージの時のコンパイルは、自分の場合、ファイルを作ったディレクトリ
までcdコマンドで移動して、javac classpath・・(省略)・・クラス名.javaでコンパイルしています。
クラス名の前に何かつけるのですか?
554デフォルトの名無しさん:2006/12/03(日) 16:51:28
>>553
統合環境を導入するまでもないのならmakeツールを使えば楽ができるよ
個人的にはAntがおすすめ
555デフォルトの名無しさん:2006/12/03(日) 17:05:56
>>551
画像の取得の仕方を書いていないのではっきりとは言えないが、
画像をStringでファイル名として指定しているのならjarの中のリソースを見つけることはできない。
getResource等でリソースとして検索してそのURLを画像の取得に使う。
もし、そうしているのなら、リソース名の大文字小文字の違いをみてみる。
jarの中では大文字と小文字は区別されるので、
Windowsのようにこれを区別しないファイルシステムではうまくいっても、
jarに入れた途端うまく見つけられなくなる。
556ななし:2006/12/03(日) 17:08:52
初めまして。たとえばこのサイトでしたらどのようにして印刷できるようにできますでしょうか?
http://music.j-total.net/data/028fu/034_fumido/003.html
以前に教えてもらった事が有るのですが忘れてしまいまして。。。
アドレスの欄に何かを入れると聞いたような。。。よろしくお願いします。
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 なんちゃらとか)
560デフォルトの名無しさん:2006/12/03(日) 17:29:21
別にmakeツールでもいいよ、通じる通じる。
しかし、この業界、細かいことに拘って威圧するやつ多いから
無難な言葉に矯正できるならしとくべきか。
理系崩れとかは特に粘着だから気をつけるべし。
561ぴゅあ:2006/12/03(日) 17:30:40
>>558
methodメソッドを呼んでいるところで仮引数aに1を渡しているんだろうと思いますけど
それを色々変えてやってみればいいと思います

あと、"b=10"については
>b=a++;
のところを"b=++a;"にして結果を見てみて、何でかな?と思ってみるのがいいかも
562デフォルトの名無しさん:2006/12/03(日) 17:31:02
563ぴゅあ:2006/12/03(日) 17:34:23
>>560
確かに通じることは通じると思う

でも、特にJavaやってる人のとこに行くと、変にやたらと拘る人いるよねぇ。。。(−−;

ただ、まだ聞いたことない相手だし(>>557)
ちゃんと言っといてあげた方がいいんだろうと思うし
564デフォルトの名無しさん:2006/12/03(日) 17:36:49
>>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);
}
}
565デフォルトの名無しさん:2006/12/03(日) 17:45:49
ぴゅあって何で気持悪い書き方するんだ?
論文書いたこと無いのかよ
566ぴゅあ:2006/12/03(日) 17:48:14
>>565
ない( ̄^ ̄)
567デフォルトの名無しさん:2006/12/03(日) 18:17:05
557です。
>>559
そうです。コマンドラインからのコンパイル方法です。
javac -classpath〜クラス名.javaに何か追加するコマンドがあるのですか?
568デフォルトの名無しさん:2006/12/03(日) 18:36:40
>>559
「makeツール」って言葉は普通に使うぞ。
569ぴゅあ:2006/12/03(日) 18:42:46
>>567
javacでやっている代わりにAntを使ってみるのもひとつ
ということです

あ そっか
この流れ見てなかったけど
>ファイルを作ったディレクトリ
>までcdコマンドで移動して、javac classpath・・(省略)・・クラス名.javaでコンパイルしています。
をどうかしたいのでなくて、たぶん>>509辺りから(再び?)始まってるデフォルトパッケージの話の流れなんですね

サーブレット周りはもう長くやってないし殆ど覚えてないけど
話の流れで出てきているものがそれぞれ適切なことを言っているとして
現段階では無理せずデフォルトパッケージ云々は忘れておいていいってことじゃないでしょうか
JSPを使うようになると意識しないといけないということであるなら、そのときになってからで十分だと思うし
570デフォルトの名無しさん:2006/12/03(日) 18:44:16
>>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のツールリファレンスを読んでから質問すべきだな。
571デフォルトの名無しさん:2006/12/03(日) 18:50:20
>>566
納得
てか論文関係無しに変だぞ

例)〜けど〜けどの2重使用
572デフォルトの名無しさん:2006/12/03(日) 18:54:07
>>571
死ねばいいのに
573ぴゅあ:2006/12/03(日) 19:09:41
>>571
確かに書いてて変だと思ってるけど
めんどいのでそのままにしてる。。。(汗)
ここんとこ出掛けるのにあまり時間なかったりもしてたりするし…

それより話の中身の方がなんとか解って欲しいと思ってたりするし
574デフォルトの名無しさん:2006/12/03(日) 19:10:48
ぴゅあなんてこのスレで真っ先にNGワードになる対象だろ。
575デフォルトの名無しさん:2006/12/03(日) 19:13:32
殺伐としてきたのでこれ、置いておきますね






 ∧_∧       
 ( ・ω・)=つ≡つ   馴れ合い?ぽコぽコにしてやんよ
 (っ ≡つ=つ     
 ./   ) ババババ 
 ( / ̄∪     

   (…中略…)

    ∧_∧ 
    ((..;)ω;) ブワッ 
    (っ ≡つ 
    /  #) 
   ( / ̄∪ 
576デフォルトの名無しさん:2006/12/03(日) 19:38:38
>>570
コンパイルできません・・・・。
私の場合、classesディレクトリの下にpack01というパッケージを作ってっています。

577デフォルトの名無しさん:2006/12/03(日) 19:39:59
たしかにぴゅあの文章理解をできる能力は
他人のプログラムを読むための練習になるな
578デフォルトの名無しさん:2006/12/03(日) 20:11:11
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デフォルトの名無しさん:2006/12/03(日) 20:24:54
ぴゅあ不確かなことを想像だけで答えすぎ。
初心者を混乱させることもしばしば。
半分ぐらいはまともなレスつけてるんだから、
もう少し絞って答えればいいのに。
580デフォルトの名無しさん:2006/12/03(日) 20:30:05
>>579
不確かなことを想像だけで答えすぎ。 
初心者を混乱させることもしばしば。 
半分ぐらいはまともなレスつけてるんだから、 
もう少し絞って答えればいいのに。 
581デフォルトの名無しさん:2006/12/03(日) 21:17:51
>>578
自己レスができました。
// 文書を書き出す
XMLSerializer sr = new XMLSerializer(new FileOutputStream("result.xml"), new OutputFormat(doc));
sr.serialize(doc);
582デフォルトの名無しさん:2006/12/03(日) 23:28:07
SunのJava Studio Enterprise8を使っています。
35行目で「')'がありません」とのエラーが出てしまうのですが
全体の流れはこのままで単純にこのエラーを取り除くにはどう書けばいいのでしょうか?
プログラム自体はまだ全くの未完なので動作はしません。

http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=28864
583デフォルトの名無しさん:2006/12/03(日) 23:30:32
union[i].drawEverything(Graphics g);
584デフォルトの名無しさん:2006/12/03(日) 23:34:01
> union[i].drawEverything(Graphics g);
union[i].drawEverything(g);

i やら j がインスタンス変数だったり…… 凄いな、これ。
585582:2006/12/03(日) 23:34:12
>>583
直したいのは確かにその部分のエラーですが…
すみません、ご回答の意味を汲み取れませんorz
586デフォルトの名無しさん:2006/12/03(日) 23:37:25
>>585>>582へ。
>>583は無視していい。
>>584に答えが出てる。
587582: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();

ってな感じに実行しても一回しか音が鳴らないのですが
どうしたらよいのでしょう?
591デフォルトの名無しさん:2006/12/04(月) 00:19:07
>>590
それだけじゃ原因特定できない
592590:2006/12/04(月) 00:24:49
oubulic static void main(中略) {
SE.pico();
SE.pico();
}

としかやってませんが。
いちおうファイルがないとかではないですし。これだけでプログラム全部のせてます。
593デフォルトの名無しさん:2006/12/04(月) 00:30:21
>>590
お前のように人の話を聞けない人間は生きている価値は無い
http://pc8.2ch.net/test/read.cgi/tech/1161492130/997n
594590:2006/12/04(月) 00:44:38
ごめん。。そのレス気づいてたけど千いってたし。
よく理解できなかったからもう一回きいてみたんです。
すみませんでした。
595デフォルトの名無しさん:2006/12/04(月) 00:46:23
>>590
まぁアレだ、
きっと、「1回だけ音が鳴るメソッド」を
「2回呼び出している」ケド
「1回しか音が出ない」
と言いたいわけだな?

イヤ、違うのか。。。
596デフォルトの名無しさん:2006/12/04(月) 00:49:09
>>594
本当は閉じる処理とか必要だと思うが、
audioFormat = audioInputStream.getFormat();
をpico()のlineを開いてる辺りに入れただけで何回pico()を呼び出しても鳴るようになると思う。
基本的にストリームはデータを出し尽くしたらリセットするか開き直さない限りデータは出てこない。
この場合、1回目のpico()でデータを出し尽くしたので2回目のpico()は鳴らなくなった。
597デフォルトの名無しさん:2006/12/04(月) 00:58:02
わるい
audioFormat = audioInputStream.getFormat();
でなく
audioInputStream = AudioSystem.getAudioInputStream(soundFile);
の方だ
598デフォルトの名無しさん:2006/12/04(月) 01:02:42
>>594
lineを閉じている辺りにaudioInputStream.close();を入れておくとなおよい気がする
599590:2006/12/04(月) 01:28:27
>>>595-598
サンクスです。
ってじゃあ同じファイルをべつべつに同時再生ってjavaじゃむりなんですか?
600590:2006/12/04(月) 01:29:12
やってみたら鳴り終わってから同じファイルが再生されたんですが。
601デフォルトの名無しさん:2006/12/04(月) 02:01:27
>>600
そりゃそうだろ、そういうふうにプログラミングしてるんだから
本当に同時に同じものを再生したら1回鳴らせるのと同じじゃん
602デフォルトの名無しさん:2006/12/04(月) 02:05:20
>>600
Sound APIでミキシングするか、音が良くないがスレッド二つ使ってpicoを呼び出せ
603602:2006/12/04(月) 02:09:37
スレッド使うなら、audioInputStreamはstaticでなくてコンストラクタとpicoの中のローカル変数にすること
audioInputStreamをインスタンス変数にしてpicoをインスタンスメソッドにしてもいい
604デフォルトの名無しさん:2006/12/04(月) 02:15:29
MIDIをパンニングするにはどうしたらいいのでしょうか?
ミュートやソロなどしか見当たらないので困っています。
605デフォルトの名無しさん:2006/12/04(月) 15:41:15
質問があります。

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[]に代入するにはどうしたらいいでしょうか?
重み付けまでは自分で考えてみたのですがよくわからないのでお願いします。
606デフォルトの名無しさん:2006/12/04(月) 15:47:36
> 重み付け
って具体的な話じゃなくて抽象的、つまり話しをはぐらかしてる意味があるのって分かってる?
607605: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


よろしくお願いします。
608デフォルトの名無しさん:2006/12/04(月) 15:50:42
重みのテーブルから重みの総和のテーブルを作っておいてそれを使うのが
よいのでは?
609605: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までカーソルがいかないようにするにはどうすればいいでしょうか?
宜しくお願いします。
611デフォルトの名無しさん:2006/12/04(月) 16:35:17
>>610
JTextFieldでsetLayoutなんか使えるんですね。
私は面倒ですが、パネル上に別々に貼り付けるか、座標を指定して貼り付けてます。
612デフォルトの名無しさん:2006/12/04(月) 16:41:18
>611
パネルに貼るのは簡単なのですが、textFieldに張りラベル以外のところで入力を許したいのですが無理なのですかね
・・・
左寄せの場合はsetMarginを使えば先頭を余白にしてなんとかできるのですが、
右側にラベルを寄せてというのがどうしても出来なくて。もし分かる方がいらっしゃれば宜しくお願いします。
613デフォルトの名無しさん:2006/12/04(月) 16:43:29
finalを付けると、代入( = ) が使えないだけと言う認識でいたのですが、
他に何か特別が意味があるのでしょうか?

例えば、finalを付けるとインナークラス内でも参照可能になるのですが、
なぜ参照可能になるのか、理論がわかりません。

final Map map = new HashMap();

Map mapTest = new Map() {
public void clear() {
map.put("test", "1");
}
}
614デフォルトの名無しさん:2006/12/04(月) 16:48:19
>>613
この辺が参考になる。
ttp://javafaq.jp/S016.html#S016-14
615613:2006/12/04(月) 17:00:54
>>614
とても参考になりました。
インナークラスの中では、変数と言うよりも、
オブジェクトの参照そのものに置き換わる感じですかね。
参照に置き換わっているから、
インナークラスの外のローカル変数に寿命が来ても、ずっと参照可能になっていると。

早速のお返事ありがとうございました。これは勉強になりました。
616デフォルトの名無しさん:2006/12/04(月) 17:11:58
http://terai.xrea.jp/Swing/IconTextField.html
これはやってることは一緒なのかな。
setBoundsとかinsetsいじるとかしてるみたいだが。
617デフォルトの名無しさん:2006/12/04(月) 17:16:03
ものすごく初歩的なところでつまずいてるんですが、
ジャンケンを数回して勝ち負けを記録していくプログラムなんですけど、
相手がグーを三回連続でだしたらその後の自分の手はパーのみを出し続けるってどういうふうに作るんですか?
if文だけで作れるんでしょうか?
618613:2006/12/04(月) 17:44:19
>>610
>>616さんのサイトを見てみましたが、
どうやらJTextFieldsのレイアウトは座標指定みたいですね。
textField.setLayout(new BorderLayout()); は、ダメみたいです。
レイアウトを使わないで試したところ、右側にラベルを配置しても、うまく行きました。
619デフォルトの名無しさん:2006/12/04(月) 18:16:37
>>617
ざわざわ・・・
前回の相手の手と連続で出した回数を保存しておけばいいんじゃないか
で、3連続以上だったらフラグを立てる
ただ、それが強いとは思えん
620デフォルトの名無しさん:2006/12/04(月) 19:19:30
>>619
ざわざわってそういう意味かwwwwwww
621605:2006/12/04(月) 19:20:22
やっぱわかりにくかったので答えてもらえないでしょうか…。
重み付けではなく>>607のように"youso1[]の総和分のyouso1[i]の確率"
を利用して取捨選択したいです。

アドバイスよろしくお願いします。
622デフォルトの名無しさん:2006/12/04(月) 20:54:53
>>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;
}
}
}
623605:2006/12/04(月) 22:01:08
>>622
ありがとうございます。

これはsumは100になってrが0以下になる場合の[i]を出力って事ですかね?
つまりMath.random()が0.0の時に出力って事ですかね?
理解力低くてすみません。


自分がやりたいことを述べますと
1.全体の要素数がn個(int a[20])の場合その要素に入る数字は全て0〜1023を取ります。
2.その要素の中で次の配列(int b[20])に渡される為の確率を算出します。(下記URLの式参照)
 (1023に近ければ近いほど選ばれる確率が高くなります。)
3.その確率を元に次の配列(b[20])へ代入する為の要素を毎回2個選びます。 ←ここがわかりません。
4.選ばれた2個を演算し配列bへコピー、配列bがいっぱいになるまで3を繰り返します。

下記URLのルーレット式選択に代入してみると
fi = random.nextInt(1024);
n = 20(実際は任意で決めれるようにします)
その場合のpi(確率)を各要素に振り分けます。
その場合の確率を元に選ばれた2つの要素を演算し次の配列にコピーすることになります。

確率を算出するところまではわかるのですが、その確率piを元に次の配列へ渡す数を選ぶ部分がよくわかりません。
(次の配列がいっぱいになるまで"毎回"20個の中から2個、確率に基づいて選び出す部分)

説明が下手なので良くわからないかもしれませんが参考のURLも貼っておきましたのでよろしくお願いします。

こちらのルーレット式の選出方法です。
http://ja.wikipedia.org/wiki/%E9%81%BA%E4%BC%9D%E7%9A%84%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0#.E3.83.AB.E3.83.BC.E3.83.AC.E3.83.83.E3.83.88.E9.81.B8.E6.8A.9E

長くなってしまいすみません。
よろしくお願いします。
624デフォルトの名無しさん:2006/12/04(月) 22:05:20
つーかJavaに関係なくね?
625605:2006/12/04(月) 22:09:41
>>624
それは少し思いましたが…。

Javaで作ってるのですが考え方はわかるのですが、どう書いたら良いのかわからないので。
簡単に言うと 「確率を元に選出するにはどうしたらいいんですか?」 と言う事です。
説明がだらだら長くなってしまいすみませんでした。
626デフォルトの名無しさん:2006/12/04(月) 23:35:37
つーか>>622で答えでてんじゃね?
627605: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();
}

}
}
==============================================================================
629デフォルトの名無しさん:2006/12/05(火) 02:48:01
>>628
ttp://www.fileformat.info/info/unicode/char/dacf/index.htm
プログラム自体は問題ないと思う。
9B5Aならちゃんと魚と出力されるし。
630デフォルトの名無しさん:2006/12/05(火) 03:25:50
じゃあフォントが無いだけというオチ?
バイナリエディタで開いた結果は?
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

レス遅れて申し訳ありません。
まだ試していませんがやってみます。
ありがとうございました。
633デフォルトの名無しさん:2006/12/05(火) 11:19:33
GUIアプリを作る場合にNetBeansでコンポーネントを配置してEclipseで内容を書こうと考えてるのですが他にお勧めの方法はありますか?
補足として個人的にはSWTよりはSwingのが使いやすいかなと考えています。

JBuilderやJ++は論外ですかね?
634デフォルトの名無しさん:2006/12/05(火) 11:31:33
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();
}
636デフォルトの名無しさん:2006/12/05(火) 15:11:19
>>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(); }
637デフォルトの名無しさん:2006/12/05(火) 15:12:36
>>635
配列やコレクションクラスで何とか実現できるけど、基本的には専用の
classを作るべき。
638デフォルトの名無しさん:2006/12/05(火) 15:12:49
今java言語のプログラミングレッスン上で勉強してるんですが・・・
知り合いからやさしいjavaって言う入門書のほうが簡単と言われたんですが2ちゃんねるの住人の中でこの参考書を使用した方って居ませんか?


639デフォルトの名無しさん:2006/12/05(火) 16:26:32
すいません質問です。
ネット上に落ちていたソースなんですが、
実行して「読込」をやろうとしているのですが、
どの種類?のファイルを読み込む物なのかよく分かりません。。
どなたか分かる方教えて下さい。
お願いします。

ソースはこれです↓
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=28884
640デフォルトの名無しさん:2006/12/05(火) 16:35:03
>>639
210行あたりに
paper.load( InputStream )
があるので、Paperクラスに読み込み処理 Paper#load() が書いてあると思われる。
たぶん、描画情報のオブジェクトを配列かリストに入れて、シリアライズしたもんじゃねーの?
641デフォルトの名無しさん:2006/12/05(火) 16:42:05
最近テキスト見ながら勉強しています

今はデータベースソフト(MY SQL)をインストールして
アプリを作成しているのですが、
これってもし完成して別の環境で起動したい場合、
そこにデータベースソフトが入っていなければ作動しないのですか・・・?
簡単な仕組みまで教えていただきたいです
642デフォルトの名無しさん:2006/12/05(火) 16:55:14
データベースに接続しにいくタイミングで例外が発生すると思う
643デフォルトの名無しさん:2006/12/05(火) 16:55:41
>>640さん

教えて頂きありがとうございます。

>描画情報のオブジェクトを配列かリストに入れて、シリアライズしたもん

とは一体どういう事なのでしょうか??
644640:2006/12/05(火) 17:04:18
>>643
俺のてきとーなカンだ。 俺ならこう作る、って読みなんで、実際は違うかもな。

たぶん書道アプレットみたいなモンだと思うが、一筆(マウスボタンをプレス→離す)ごとのマウス移動の軌跡を
順番に保存するオブジェクトがあるんだろうと思われる。
んで、save/loadで書いたとおりに保存/再生できるっぽい。
saveは、マウス軌跡保存オブジェクトをシリアライズ(ググれ)してファイルに保存。
loadは、そのファイルからオブジェクトに戻して、保存された情報を元に描画、って感じか。

つかソース読めば分かることなんだが
645デフォルトの名無しさん:2006/12/05(火) 17:29:25
>>644さん
なるほど。
なんとなくつかめてきました!
とても参考になりました!あとは自分で何とかがんばります!
ありがとうございました!
646デフォルトの名無しさん:2006/12/05(火) 17:43:50
>>641
どこでも動く、をやりたいなら
Java で実装された組み込みデータベースを使用する手もあり。
HSQLDB や Derby が有名どころ。

ttp://www.hsqldb.org/
ttp://db.apache.org/derby/
647デフォルトの名無しさん:2006/12/05(火) 19:06:57
JLabelの特定の部分だけ背景色を変えることはできるのでしょうか?
648デフォルトの名無しさん:2006/12/05(火) 19:34:27
キー入力を確認するためだけの簡単なプログラムですが、どこが悪いのか全く動作しませんorz
MyKeyAdapterクラスを独立して作る点など、おおまかな部分を変えずに修正したいのですが
どこが悪かったのでしょうか?

http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=28885
649デフォルトの名無しさん:2006/12/05(火) 19:55:46
650デフォルトの名無しさん:2006/12/05(火) 19:57:25
>>648
イベント受け取った後、Draw を再描画せんといかんのでは?
651デフォルトの名無しさん:2006/12/05(火) 20:13:15
それにdataを初期化してないんじゃないか
652648:2006/12/05(火) 20:20:27
>>650
d.repaintをつけても同じでした。
というか配列にうまく入れられていないっぽいですorz

>>651
適当な初期化をしてみましたが変わりません。。。
どこかにもっと大きなミスがあるのでしょうか。
653デフォルトの名無しさん:2006/12/05(火) 21:12:55
>>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で動かしたいのですがどうすればいいのでしょうか?
655デフォルトの名無しさん:2006/12/05(火) 21:37:45
>>653
ありがとうございました!
フォーカスという概念は初めて知りました。
ググってみたところrequestFocus();とかいう関数なんかもあるんですね。
656デフォルトの名無しさん:2006/12/05(火) 21:55:20
現行のプログラムに下のような部分があるんだけど、これって正常に動作してるのでしょうか?

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);
}
}
657デフォルトの名無しさん:2006/12/05(火) 22:02:43
>>647
JLabelにセットする文字列の頭が<html> で始まってると、
その先はHTMLとして解釈される。

setText("<html><font color='red'>ほげ</font>")
とか。

個人的には大嫌いな仕様だが。
658デフォルトの名無しさん:2006/12/05(火) 22:11:23
>>656
「正常な動作」を定義してくれんと。
659デフォルトの名無しさん:2006/12/05(火) 22:30:13
えーい、やくたたずめっ
660654: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
始点座標(sx,sy)、終点座標(ex,ey)をunion[j]に入れるのに、
始点はコンストラクタでなんとかなりました。
終点はこのプログラムだとどう入れたらいいのでしょうか?
72〜73行目でそれを書いているのですが現在のプログラムだと
ex、eyが見つかりませんと言われコンパイルエラーですorz

http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=28891
663デフォルトの名無しさん:2006/12/06(水) 00:41:35
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クラスのインスタンスを保持する配列(入れ物)は確保していますけど
インスタンス化の処理は何処へ・・・
665662:2006/12/06(水) 08:32:32
>>663
とりあえずコンパイラが通るか練習用に、setEndPointメソッドと同じものを
別名で作って試したりしていました。しかし上手くいかなかったものでsetEndPointは保留にしていました。
SuperクラスにsetEndPointって名前であるからこそ使えるんですねorz

>>664
おっしゃっていることの意味が若干理解できていません私orz
48行目あたりの文でインスタンスを生成し、始点であるsx,syが
mousePressedで決定されたのでついでにコンストラクタで代入している。
のち49行目で配列に格納。というつもりで書いてます。。。
666デフォルトの名無しさん:2006/12/06(水) 09:53:27
sx,sy が sexy に見えたら入院
667デフォルトの名無しさん:2006/12/06(水) 10:44:54
>>424 の boolean のサイズが 4byte といった、
メモリサイズはどのようにして割り出せば良いのでしょうか。
例えば、int は何バイトで、String なら何文字の時に何 byte, と言ったような。
668667:2006/12/06(水) 10:50:56
すみません途中で送ってしまいました。処理系にも依存すると思いますが、
ttp://ufcpp.net/study/csharp/cmp_type.html
等を見ると、

int = 4byte
long = 8byte
String = char(2byte) * 文字数

などと考えても良いものなのでしょうか。
また、配列の場合は単純に掛け算すれば良いのでしょうか
(int[3] の場合 12byte といった)
669デフォルトの名無しさん:2006/12/06(水) 11:11:13
EventDispatchThreadってどういう時に出るメッセージなんでしょうか。
670デフォルトの名無しさん:2006/12/06(水) 11:24:43
>>669
メッセージ?
swing関係で例外出すのはこのへんだが
671デフォルトの名無しさん:2006/12/06(水) 12:01:15
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");
}
のように扱いたいときはどう記述すればいいのでしょうか?
673デフォルトの名無しさん:2006/12/06(水) 12:22:33
>>671
ファイル削除してから再度ディレクトリ削除するメソッド実装すればいいんじゃね。
674デフォルトの名無しさん:2006/12/06(水) 13:16:51
>>672
byte[][] data = new byte[ 10など #ここは必須# ][];
data[0] = readByte( *** );
〜〜〜

って感じだが、宣言時にサイズ指定しなければいけない。(new byte[] [] は無理)
数が不定なら、ArrayListでも使ってみたら?
675672: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 個
どのように直せばいいのか教えてください
677デフォルトの名無しさん:2006/12/06(水) 13:42:19
>>667
boolean が 4byte ってのはスタックに積まれてる時とかの話じゃないか?
VM仕様では boolean[] は byte[] 使う事になってるから 1byteだし。

あとはオブジェクトインスタンスには VM仕様では
特に何バイトと定義されてないオブジェクトヘッダが付くとか、
細かい事を考えればいっぱいある。

100万文字の String1個 なら、大体 2メガバイトぐらい使うだろう
みたいな大雑把な計算には使えるけど、
"a" と new byte[5] と int 各1個づつで何バイト使うか?
みたいのは、そのプログラムを実行する VMの実装を調べないとわからないよ。
678デフォルトの名無しさん:2006/12/06(水) 13:42:58
× public a(int a, int b) {
○ public void a(int a, int b){
679デフォルトの名無しさん:2006/12/06(水) 13:56:26
>>676
一番簡単な修正方法は
クラス名を Kadai7_0203 から a に変える
だが本当にそれでいいのか?
aって名前が多過ぎて自分で訳わかんなくなってないか?
68087のプログラム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のスレ主です・・・題名ミスりました
682デフォルトの名無しさん:2006/12/06(水) 14:15:56
ああプログラム全体貼ってたのか・・
じゃあ678のは間違いでした。スマソ。

Kadai7_0203.java ってファイルを a.java に変えて
679氏の策に従えばとりあえず動くかとは思う。
とは言え書くあなたはともかくとして、読む方は泣く。
(それだけ回答が得られにくくなる。)
課題なら採点者の心象もアレになる。
683質問1/2:2006/12/06(水) 14:17:24
すみません、初心者なので質問させてください

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";
  }
}
684質問2/2:2006/12/06(水) 14:17:57
上記のプログラムの実行結果が

aaa
aaabbb
------------------------
aaa
aaa

となります。
StringとStringBufferで2回目のoutputが違うのはなぜですか?
685デフォルトの名無しさん:2006/12/06(水) 14:25:27
void myMethod(String data) {
data = data + "bbb";

この部分は、"bbb"という文字列を加えた新しいオブジェクトを生成して
それをdataに代入してるかららしいよ。


ところで質問です。Webアプリケーションサーバはどれを使うのがいいでしょうか?
Sunのやつ、Tomcat?お勧めのものがあれば教えてください。
686685:2006/12/06(水) 14:30:22
PCサーバ一台で済んでしまうレベルの用途なので、
WebLogicやWebsphereのような高価なものはいりません。
687デフォルトの名無しさん:2006/12/06(水) 14:33:55
>>685
あー新たにオブジェクトを作ってしまうんですか・・・
回答ありがとうございます。


Tomcatで十分だと思います。
688685:2006/12/06(水) 14:39:00
>>687
>Tomcatで十分だと思います。
なるほどそうですか。どうもです。
689667: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 を計算の後に参照させたりもしてみたのですが、
特に、何故全く変わらない事があるのかよく分かりません(少しでも振れると思ったのですが)
690デフォルトの名無しさん:2006/12/06(水) 18:06:49
showConfirmDialogを用いて警告を表示するプログラムを組んでいます。
多重の警告を表示できるように,警告の契機の度にスレッドを作成し,
そのスレッド上でshowConfirmDialogを呼んでいるのですが、ダイアログは警告分表示されるものの
OKボタンを押せるのは最新のダイアログのみとなっています。

表示されたどのダイアログに関してもOKボタンを押せるという仕様にするにはどうすればよいでしょうか。
ご指導願います。
691デフォルトの名無しさん:2006/12/06(水) 18:58:17
>>690
> すべてのダイアログはモーダルです。各 showXxxDialog メソッドは、ユーザの対話が終了するまで現在のスレッドをブロックします。
リファレンスはちゃんと読もうね。
どうしても必要なら自分でモードレスなJDialogを構成して表示。
692690:2006/12/06(水) 19:07:49
返信どうもです。

マルチスレッドにすれば対応可能かな・・・と思ったんですが。
やはりモードレスなダイアログを作成するしかないようですね。
有難うございました。
693デフォルトの名無しさん:2006/12/06(水) 20:12:17
>>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個にするとかいうのもありそうだけど
それだと考えてた仕様から変わることになるよねぇ。。。
(自分で作らなきゃいけないだろうという点は同じか・・・)
697662:2006/12/06(水) 21:41:53
>>694
はい、単なる知識不足ですorz
あれから助言を元に色々調べまして、mousePressedとmouseReleasedで決定した始点と終点をもとに
ボタンで選択した図形を描画できるところまでいきました。
ここで疑問なのですが、73行目でrepaintをしてから74行目でjをインクリメントしているにも
関わらず(初めての描画の際はj = 0でrepaint文に入るはず)
42行目の条件文を突破してdrawEverythingメソッドが実行できている(アプレットで実際に動作確認)のはなぜなのでしょうか?

http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=28912
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

いかがでしょう?
699デフォルトの名無しさん:2006/12/06(水) 22:03:34
常に成り立つ単なる事実って現在形でよかったような記憶があるんですが、
isはダメなんですかね。

ぐぐってみると A#a must be called after A#b.で止めてる例が結構ありますね。
個人的にはYou cannot call A#a before A#b.と書きます。
700デフォルトの名無しさん:2006/12/06(水) 22:04:16
>>698
> after A#b was called

文法的には was じゃなくて is 。
701デフォルトの名無しさん:2006/12/06(水) 22:06:09
質問です。
エクリプスでjarファイルにしてパッケージ化し、ダブルクリックで実行できるようにしたのですが
コマンドプロンプトが表示されなくなってしまい困っています(dos窓に色々な情報を表示させているので)。

プログラムでコマンドプロンプトを表示させる方法はどのような文を追加すればよいのでしょうか?
702デフォルトの名無しさん:2006/12/06(水) 22:06:56
698です。

なるほど、A#a must be called after A#b.で止めても問題ないですね
そして文法の勉強もできました
ありがとうございました
703デフォルトの名無しさん:2006/12/06(水) 22:17:25
単にコマンド窓を出しても標準出力がその窓に向かないんじゃないかな。
.jarと同じディレクトリにバッチファイルを置く方法ではダメだろうか?
704701: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化しておきたいんです。
707デフォルトの名無しさん:2006/12/06(水) 23:06:17
先輩方、プログラムで躓いたので、質問させて下さい。
指定の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を起動すれば良いんじゃないかな?
709662:2006/12/06(水) 23:08:15
>>705
まずmousePressedとmouseReleasedを完成させて、
mouseReleasedで終点が決定した時点で描画するようにできました(697のプログラム)。
その後mouseDragged中にも描こうとしている図形が表示される仕様にしたいのですが、これが上手くいきません。
mouseDraggedメソッド内でsetEndPoint、repaintを入れてみましたが
dragg中に確かに激しく点滅はするのですが図形の描写はありません。
そしてpaintメソッドの条件の問題かと思って確認なんかをしていたら697の疑問に気付いたりとorz
いやしかし様々なアドバイスありがとうございます。
710デフォルトの名無しさん:2006/12/06(水) 23:12:09
>>707 まずレスポンスヘッダ。
711ぴゅあ:2006/12/06(水) 23:21:24
>>704
以前あったと思うんですけど見つけられない。。。
コマンドプロンプトに代わるビューを作って…とかいうのではない?
712ぴゅあ:2006/12/06(水) 23:27:34
>>709
いちお(若干気にならないでもないけど@自分の中で)
>(初めての描画の際はj = 0でrepaint文に入るはず)
というのは問題にならないんじゃないかと思うんですよ…

単に疑問として思ったのか、実際に何か問題が起こっているのを確認したのか
とかによると思いますけど

>dragg中に確かに激しく点滅はするのですが図形の描写はありません。
というのはたぶん>>697より後に作り込んで行ったコードですよね?
713707:2006/12/06(水) 23:31:32
SetResponseHeaderクラス?
このクラスに引数で指定した文字コードでエンコードするってことなのでしょうか?
714デフォルトの名無しさん:2006/12/06(水) 23:45:36
前に仕事で書いたやつの骨組みだけ。
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!"); }
}
}
715デフォルトの名無しさん:2006/12/06(水) 23:46:19
あ、>>711宛です。
716662: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宛てにどうぞ
718662:2006/12/07(木) 00:02:18
42行目の条件のjを5とか6にしてみるとmouseDragged中でも描画が確認されました。
ただし定数にしてしまったことでその5、6個の図形の描画しかなされない状態に当然なっています。
やはりj番目より1つ前までの図形の描画を行っていて、j番目であるマウス位置によって形の変わる
図形の描画はpaint文の条件にはねられてdrawされないということなのでしょうか。。。
それならmouseReleasedもなぜ表示されるのか不明ですし、混乱しますorz
719デフォルトの名無しさん:2006/12/07(木) 00:06:13
>>713
ちがう。向うからヘッダが返ってきてるからそこからcharsetを読み取る。
ヘッダに含まれていないときはhtmlならmetaタグ中のを読む。
でも、
>URL dairly_add = new URL(rss_add);
って変数名を見るに、RSS?
ならローカルファイルシステム上のXMLファイル扱う要領でok.
720デフォルトの名無しさん:2006/12/07(木) 00:09:34
>>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)
コードはあったような気もした。。。
722707:2006/12/07(木) 00:22:02
>>719

 RSSから対象アドレスを取得してるからrss_addなのです。
仰る意味も理屈も理解出来るんだけど、手段が出てこないですorz
XMLはDocumentクラスで解釈して各要素を取り出す程度しかやったことないですし……。

 レスポンスヘッダっていうのは、指定URLにアクセスした際に自動的に返って来るものですか?
そこに文字コード等が載ってるから、それを読み取るっていう認識でOK?
ちょいと自分で調べてみます。
723デフォルトの名無しさん:2006/12/07(木) 00:25:12
>>720

うはw
まさにやりたいのはこれ。ありがとう!!
724デフォルトの名無しさん:2006/12/07(木) 00:28:33
HTML化もいいけど、Apacheの静的キャッシュが有効になるように配置しないなら
ByteArrayOutputStream#writeToを使うのがオススメ、Velocityとも相性がいい
725デフォルトの名無しさん:2006/12/07(木) 00:33:10
>>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で工夫(後にでも?)


その後の実装が判らないのでちらつきというのがどういう風に見えているのかは判らないですけど
描画時のちらつきを除去にはどうするか(ダブルバッファリング)とか調べてみればいいのだろうかと

そういうちらつきであるとするなら、ちらつくというのはまだ放っておいていいんでしょう

>表示はさませんでした。
というのはドラッグ中の処理がうまく書けていないからかな?
727725:2006/12/07(木) 00:34:03
HTTPじゃなくてHTMLだろ... orz
728デフォルトの名無しさん:2006/12/07(木) 00:39:41
会社のソースに xxxBean という名前のクラスがあったので、
先輩にこれ何ですか?と聞いたら「setterとgetterだけのクラスを
Beanというんだ」と言われました。
それでググってみたのですが、Beanの正しい意味はわかりませんでした。
この先輩の説明はあっているのでしょうか?
729707:2006/12/07(木) 00:46:36
>>724-725

 親切な回答ありがとう。
俺の頭がアフォなせいで、理解してるのか怪しいけど、実際に弄りながら勉強していきます。
明日早いから今日は寝て、明日またやってみます。
730デフォルトの名無しさん:2006/12/07(木) 01:13:07
こんばんわ。初めて質問させていただきます。

今、JARファイルを作成しようと思い、色々とやっているのですが
インナクラスの扱い方がちょっとよく分かりません。
マニフェストファイルを作成し、普通のクラスをいくつかまとめてJARファイルにすることはできたのでるのです。
しかしそこにインナクラスがひとつでも絡むと
そのクラスについてのみ「●●.classというファイルまたはディレクトリはありません」
というメッセージがDOS窓に表示されてしまうのです。
で、その●●というインナクラスを持つ、△△クラスだけでJARファイルにしてみたのですが
そうすると今度はJARファイルにはなるのですが、それをダブルクリックしてもエラーメッセージが出るだけになってしまって・・・。

素人丸出しの質問で申し訳ないのですが、どうかよきアドバイスをよろしくお願い致します。
731デフォルトの名無しさん:2006/12/07(木) 01:32:17
>>728
Beanであるためには、プロパティにアクセスするためにsetXxx getXxx
というメソッドを使える必要があるが、逆にsetXxx getXxxでアクセスするものすべてをBeanと呼ぶわけではない。

さらにいえば、BeanだからといってxxxBeanと名付けなければいけないわけでもない。
732デフォルトの名無しさん:2006/12/07(木) 01:32:54
>>730
JAR にまとめる時はどうやってます?

△△.java をコンパイルすると △△.class 以外にも △△$1.class とか出来るはずだけど
出来上がった JAR にこれもきちんと含めてます?
733デフォルトの名無しさん:2006/12/07(木) 01:40:19
setter/getterだけのクラスは構造体名+Infoのが一般的な気もするが。
734デフォルトの名無しさん:2006/12/07(木) 01:42:57
>構造体名+Info
初めて聞く流儀ですが、例えばどこで使われてます?
735デフォルトの名無しさん:2006/12/07(木) 01:45:14
本という情報があればBookInfoとか、IBMとかのサイトでも良く見る
736デフォルトの名無しさん:2006/12/07(木) 01:47:53
あるソースをビルドしようとしたら、
for-each ループを使用可能にするには、-source 1.5 を試してください
というエラーがでてきました。

javaのバージョンは1.5.0_08なのですが、何かおかしいところがあるのでしょうか?
737デフォルトの名無しさん:2006/12/07(木) 01:50:32
コマンドラインで java -version が5.0と出ても
Eclipseが相変わらず1.42のJREを参照してればそうなるんじゃない?
738デフォルトの名無しさん:2006/12/07(木) 01:56:16
説明が足りませんでした。
antでビルドをしています。
MANIFEST.MFは以下の通りです。
Ant-Version: Apache Ant 1.6.5
Created-By: 1.5.0_08-b03 (Sun Microsystems Inc.)
739デフォルトの名無しさん:2006/12/07(木) 02:01:17
逆に-targetを1.4にしてるとか
てかjarはあんま関係ないのでは?
コンパイルに対する内容しだいなので。
740デフォルトの名無しさん:2006/12/07(木) 02:09:27
ビルドするときに、
[echo] Compiling with Java 1.5 from 1.4 source to 1.4 target,
と出るので、1.4であることは確実なのですが、
これを1.5にすることはant側で出来るのでしょうか?
741デフォルトの名無しさん:2006/12/07(木) 02:13:21
>>732
インナークラス含めてコンパイルしたらこんなものが出来るとすら知りませんでしたorz
仰るとおりに、△△$1.classも含め実行したら
ちゃんとJARになり、またダブルクリックした後の処理もきちんとされました。

どうもありがとうございました。
742デフォルトの名無しさん:2006/12/07(木) 02:18:10
>>740
build.xmlを晒しなさい。
743デフォルトの名無しさん:2006/12/07(木) 02:23:05
>>742
build.xmlで指定はしていなかったのですが、
build.propertiesにてversion変更したら無事実行できました。
相談させていただくことにより、一旦頭が冷えて解決することができました。
ありがとうございました。
744デフォルトの名無しさん:2006/12/07(木) 09:35:15
>>735
そりゃ、EJBのValue Objectの命名規則じゃないか?
EJBの場合、同じエンティティを表すクラスが複数現れる
(EJBObjectやHome/Remoteインタフェース、Value Objectなど)
ので、そういう面倒な命名規則が役に立つけど。
745デフォルトの名無しさん:2006/12/07(木) 12:09:47
画像をいろいろな角度に回転させたり傾けたりしたものを取得するプログラムを作っています。
回転させた画像についてはAffineTransformクラスを使って作成することができました。
では傾けた画像を得るにはどのようなクラスを用いればいいのでしょうか?
746デフォルトの名無しさん:2006/12/07(木) 12:16:23
>>745
AffineTransformクラス
747デフォルトの名無しさん:2006/12/07(木) 15:56:13
回転と傾けるってどう違うんだ?
2D軸と3D軸の話か?
748デフォルトの名無しさん:2006/12/07(木) 15:59:21
傾けるってのは長方形→平行四辺形みたいなことかと。
749デフォルトの名無しさん:2006/12/07(木) 16:04:38
質問があります。
それなりのプログラムを書こうとするときにいつも
クラス名、変数名、メソッド名で困ってしまいます。
クラス名はそんなに多くないからどうにかなりますが変数とメソッドは悩みます。

どういう基準で名前をつければ良いでしょうか?
思いつかない場合ですと int temp とか int kazu, kazu1とか日本語まで取り入れてしまう始末です。
メソッドでもpublic void setKazu(){]とかとか。

気がついたらグローバルとローカルで重複の変数になっていてちゃんと動作しなくて悩んだことも多々あります。

皆さんの基準などを教えていただけたらうれしいです。
アドバイスよろしくお願いします。
750デフォルトの名無しさん:2006/12/07(木) 16:13:31
フィールド:名詞、メソッド:動詞

kazu1はマズイ。こんなんするぐらいならいっそ日本語で
private int 生徒数;
public void 生徒数設定(int 生徒数){...

の方が分かり易い分マシだと思う
751デフォルトの名無しさん:2006/12/07(木) 16:40:33
それぞれの役割とスコープをちゃんと考えてりゃ、ネーミングに困る事は無い。
いくつか候補のうち、どれにしようか・・・ はあるけど、適当に付けるような事態にはならない。
適当に付けると後で困るからな。
752デフォルトの名無しさん:2006/12/07(木) 20:26:14
初心者です。
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=28928
このソースのどこを改善すれば実行できますか?
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
少なくとも、気づかずにフィールドの値を動かしていたというようなことは防げる。
756デフォルトの名無しさん:2006/12/07(木) 21:03:13
>>754
入れてはいけない値を入れるような無制約な書き換えの恐れが無くなるし
757デフォルトの名無しさん:2006/12/07(木) 21:13:57
758デフォルトの名無しさん:2006/12/07(木) 21:51:08
はじめまして。

同一プロセス内で複数の Java 仮想マシンが動作したため、エラーになりました

この問題を解決するにはどうすればよろしいのでしょうか。
再インストールはしましたが変わりません。
よろしくお願いします。
759デフォルトの名無しさん:2006/12/07(木) 21:53:35
>>754
変数がおかしな値になってる原因を調べるときにsetterブレークできる
リード、セットの頻度も調べられたりテスト時などに余計な処理をはさんだり出来る
760デフォルトの名無しさん:2006/12/07(木) 22:08:06
>>758
同一プロセス内で複数のJava仮想マシンが動作することはあり得ません。
使用したOS、Javaのバージョン、エラーが発生したJavaソフトウェアの名前、
エラー発生時の状況(ログ、標準出力など)
再インストールしたソフトと再インストール後の状況を添えて
もう一度書き込んでください。
761デフォルトの名無しさん:2006/12/07(木) 22:11:31
>>754
後からスレッドセーフにする必要が出た時などに
修正する箇所を減らすことが出来る。
762デフォルトの名無しさん:2006/12/07(木) 22:26:24
実行してるユーザーのユーザーディレクトリを取得する方法は、ないでしょうか?

windowsならc:/Document and Settings/XXXX
Linuxなら/home/XXXなどを取得したいのですが・・・。
763デフォルトの名無しさん:2006/12/07(木) 22:28:00
System.getProperty("user.home");
764デフォルトの名無しさん:2006/12/07(木) 22:30:18
ある項目ごとの時系列データをデータベースにして色々処理したいんですが
Javaで操作できるおすすめのデータベースとかって何かありますか?
765デフォルトの名無しさん:2006/12/07(木) 22:31:15
テキストファイル
766デフォルトの名無しさん:2006/12/07(木) 22:33:40
HSQLかな、Derbyは終了処理に癖がある(正常な例外で終わる)からちょっとキモイ。
767デフォルトの名無しさん:2006/12/07(木) 22:35:32
>763

ありがとうございます。
getPropertyでいろんな情報が、取れるのですね。勉強になりました。
768707: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ですが誰かお願いできませんか?
さっきから色々やっているのですができなくて困っています・・・
770デフォルトの名無しさん:2006/12/07(木) 23:15:47
>>769
冒頭のコメントにあるとおりのHTMLを作って開いたらそれっぽい
ベジェ曲線が表示されるのだが?

いったい何をやったのか書いてみたまい。
アプレットだってことはわかってる?
771デフォルトの名無しさん:2006/12/07(木) 23:23:40
>>764
766氏とかぶるが俺も HSQL を勧める。
772デフォルトの名無しさん:2006/12/07(木) 23:43:40
>>770さん
すいません。
今実行できました。ありがとうございます。
773デフォルトの名無しさん:2006/12/07(木) 23:50:43
>>768
Content-TypeもContent-LengthもInputStreamも全部
扱いどころが間違ってる。
774デフォルトの名無しさん:2006/12/07(木) 23:58:15
>>764じゃないけど>>766氏や>>771氏に質問。
H2はどうかな? まだ枯れてないから駄目?
775デフォルトの名無しさん:2006/12/07(木) 23:58:37
>>745
>>753
745,753です。
AffineTransformだと2次元の回転しかできません。
3次元だと
ttp://itpro.nikkeibp.co.jp/article/COLUMN/20060710/242865/?ST=newtech
のようにOpenGLを取ってくれば
3次元の回転も可能だとありますが,
OpenGLを用いずに既存のクラスで行うことはできませんでしょうか。
776707:2006/12/08(金) 00:03:00
>>773

 やっぱりそうですか…orz
色々探してるんだけど、なかなか参考になるサイトが無いです。
たぶん、どこのプロセスで文字化けが起こっているのか?ということと、ストリームの仕組みが分かってないせいだと思います。
InputStreamからデータを取り出す時に文字化けって起こってるのでしょうか?
777デフォルトの名無しさん:2006/12/08(金) 00:11:48
>>776 charset取得してもそれをストリームに指示しないと
だれもコード変換してくれない。適当な参考書でストリームについて
書いてあるページめくってみ。

ところでHTTPURLConnectionのデフォルトの状態でGETメソッド使ったとき
HTTP/1.0で接続するのって規格上保証されているんだっけ? データの終りを
ストリームの終端で判別するのあぶなくね? HTTP/1.1になってる実装系あったりしない?
778デフォルトの名無しさん:2006/12/08(金) 00:20:30
>>775
無理
java3Dという選択肢もあるがこれもjoglと同じで標準で入っているわけではないし
779デフォルトの名無しさん:2006/12/08(金) 01:58:42
メソッドの戻り値に複数のJavaBeanを返すことって可能なのでしょうか。
例えば、Hoge1とHoge2なJavaBeanがあったとします。Hoge1だけ返すなら↓のように簡単にできるのですが。。。
public Hoge hoge(){ return new Hoge(); }
780デフォルトの名無しさん:2006/12/08(金) 03:16:48
>>779
public Object[] hoge() {return new Object[]{new Hoge1(), new Hoge2()};}
781デフォルトの名無しさん:2006/12/08(金) 03:32:57
>>780
ありがとうございます。
戻り値がObject[]になってますがジェネリックスか何かを使って明示的に型指定できないのでしょうか?
Object<Hoge1,Hoge2>[]にすると Objectは総称ではありません。・・・パラメータ化できません。
となります。
782デフォルトの名無しさん:2006/12/08(金) 03:49:39
>>781
いや、そのジェネリクスの使い方は間違ってるよ。Object<T1,T2>なんてものはないので。

Hoge1とHoge2のスーパークラスを作って両者ともそれを継承するようにするか、
インタフェースを定義して両者それを実装するようにして、
SuperClass[]とかInterface[]とかみたいに返すようにすればObject[]を返すよりは限定できる。
783デフォルトの名無しさん:2006/12/08(金) 04:04:03
>>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でそれぞれのインスタンスを得る。
784デフォルトの名無しさん:2006/12/08(金) 04:12:48
あー、いや、
Hoge1とHoge2しか返さないことが分かってるなら、
無理にジェネリクスなんか使わずに、
Hoge1とHoge2を内部に保持するクラスを作って、
それを返すようにすれば<..,..>なんて面倒な書き方は不要になる。

なんにせよ、メソッドは一つのものしか返せないので、
戻り値で複数のものを受け取りたいときは、配列かクラスにまとめるしかない。
785デフォルトの名無しさん:2006/12/08(金) 04:24:59
>>782
>>783
別途クラスを作成しないといけないんですね、理解できました。
ありがとうございますm(__)m
786785:2006/12/08(金) 04:27:00
>>784
setter,getterからHoge1,Hoge2を取得するようにってことですね?!
ありがとうございますm(__)m
787デフォルトの名無しさん:2006/12/08(金) 04:36:08
>>786
setter,getterでも>>783みたくフィールドをpublicにする方法でもありと思う。
そのへんのアクセス制御の匙加減は場合によるので。
788デフォルトの名無しさん:2006/12/08(金) 05:20:46
アプレットで生成した画像(ブラウザ上、アプレットビューアー上の画像)
はwordには貼り付けられないのでしょうか?

もし知っている方いましたら教えてください。
789デフォルトの名無しさん:2006/12/08(金) 05:46:43
>>788
画面をキャプチャして画像のところだけ切り出してそれを貼ればいいんじゃね?
790デフォルトの名無しさん:2006/12/08(金) 06:48:28
>>789
できました!!!
朝早くからありがとうございました!!
791デフォルトの名無しさん:2006/12/08(金) 07:38:18
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でアクセスさせるなら、フィールドに入れられる値に条件(制限)を与えたり,仕様変更に応じてそれらを変えたりするのも楽ですよね
(スレッド間での事とか諸々)
そんな条件とか全くないということが明確ならフィールドでもいいと判断できるだろうし
793デフォルトの名無しさん:2006/12/08(金) 10:11:17
>>791
Applet上でIP使ってゴリっと通信できたら、そりゃ困る罠
794791:2006/12/08(金) 13:07:25
>>793
起動時はできています。
795デフォルトの名無しさん:2006/12/08(金) 14:06:32
質問なんですが こちらのサイトでjava勉強しています
http://www.smg.co.jp/seminar/java/J_lecture01.html
んでインストールしようの次の講義でjavac HelloWorld.javaと入れても
エラーが出て次にdirを入れてもクラスが表示できないのですがこのサイト
が違うのでしょうか?小一時間悩んでいるのですが分りません;
どうかご教授を
796デフォルトの名無しさん:2006/12/08(金) 14:15:34
「エラーが出て」るんなら、そのエラーを貼れ。
自分の言いたいことだけ言って、そのくせ何も判断材料をを出さなければ
答えようが無い。
797デフォルトの名無しさん:2006/12/08(金) 14:17:02
私のパソコンではそこに書いてある通りにやって実行できました
サイトは間違っていません
あなたが間違っています
以下796と同文
798795:2006/12/08(金) 14:26:40
すみません 言葉足らずでした
HelloWorld.java:7: ’}’がありません

エラー1個
とエラーが出ます
799デフォルトの名無しさん:2006/12/08(金) 14:33:39
>>798
7行目に’}’がない。
足りないのは言葉ではなく注意力かな。
800795:2006/12/08(金) 14:36:54
>>799 ありがとうございます 早速やってみます
801デフォルトの名無しさん:2006/12/08(金) 14:41:47
答えが書いてあっても読まないのって一体・・・
802795:2006/12/08(金) 15:02:36
さっきの者ですがやっぱりできませんでした;超初心者なんです;
原因を考えた結果最初変数等を入れるときにサイトが最新バージョンに対応して
いなかったので
変数名PATH
変数値C:\Program Files\Java\jdk1.5.0_10\bin
と入れました 間違っていないでしょうか?
803デフォルトの名無しさん:2006/12/08(金) 15:09:33
間違っているのはそこじゃない。 明らかにソース入力ミスだ。
もう面倒だから、そこからコピペしてコンパイルしてみろ。
コンパイルできたら、自分の書いたやつとどこが違うのか比べてみろ。
804795:2006/12/08(金) 15:14:47
ファイル名はサイトので
cd C:¥WORk
dir
javac HelloWorld.java
dir
です 何か違っているでしょうか?
805デフォルトの名無しさん:2006/12/08(金) 15:14:48
>>802
Javaの最新バージョンは6.0だ
806795:2006/12/08(金) 15:16:56
>>805 変数値直してやってみます
807795:2006/12/08(金) 15:21:02
やっぱダメです;
808デフォルトの名無しさん:2006/12/08(金) 15:22:09
>>807
>>803を百回読め
809795:2006/12/08(金) 15:24:58
コピペで入録も何度もしたんですけどね;
810デフォルトの名無しさん:2006/12/08(金) 15:27:12
pathが違ってたら>>1の中段みたいなエラーが出る
そこを通り越して>>798のエラーが出るなら
pathには問題が無かったんだよ
てかそんな見当違いのところをいじるな

>>798のエラーは
HelloWorld.javaファイルの7行目に } がない、といっている
で、実際そうなのか確かめてみたよな?
811795:2006/12/08(金) 15:33:13
HelloWo}rld.java ですか?
HelloWorld.java'}'とやってますた;
812デフォルトの名無しさん:2006/12/08(金) 15:34:44
問題のエラーは、カッコの対応関係上ここには } があるはずと
コンパイラには思えるのだがそうなっていなかったという意味ね。
その行自体ではなく、全体のカッコの対応関係を確認すべし。
813デフォルトの名無しさん:2006/12/08(金) 15:37:47
javaの前に日本語の勉強もしとけ
814デフォルトの名無しさん:2006/12/08(金) 15:38:28
>>811
それは7文字目だ。
修正してるファイル(やディレクトリ)とコンパイルしてるファイル(やディレクトリ)が違ってるのかとも思ったが、それは予想外だ。
public class HelloWorld
{
public static void main(String args[])
{
System.out.println("Hello Java World !");
}
}←ここが7行目(ここが抜けてる)
815デフォルトの名無しさん:2006/12/08(金) 15:38:55
JISAutoDetectで自動判別された文字コードは、
まだ取得できないんですかね?
EUCのファイルで試したところ、"JISAutoDetect"と返ってきました。
オープンソースであっても良さそうですが。
816デフォルトの名無しさん:2006/12/08(金) 15:42:21
>>815
1.4 以降なら java.nio.charset.CharsetDecoder#detectedCharset() で取れるよ。
817815: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だとわかるのかがわかりません。なんでですかね?
818デフォルトの名無しさん:2006/12/08(金) 16:41:41
JFCの実装は見てないけど、大抵 ↓みたいにやるよ。
http://washitake.com/cpp/kanji.php

javadocを見る限りでは、JISAutoDetectは判定結果を返さない場合があるのかも?
ヒマだったらソース読んで見る。
819795:2006/12/08(金) 16:42:59
>>814 どうもありがとうございます
今日はじめたばっかりなのでまたあほな事聞くと思いますが
気長に付き合ってください
820デフォルトの名無しさん:2006/12/08(金) 16:45:39
本物の厨房か消防っぽいな・・・
日本語も勉強しろ。 読み書き両方だ。
821デフォルトの名無しさん:2006/12/08(金) 16:56:52
初歩的な質問なんですが
○.java というソースファイルを作ってjavacでコンパイルする
所まではわかるのですが。
○○.javaなどのソースファイルが複数に及ぶ場合
○○1.java〜○○20.java と20個のファイルで一つのソフトだとした場合
それをひとまとめにする場合はどうすればよいのでしょうか?
822795:2006/12/08(金) 16:57:40
高校の頃の現国の成績ズタズタだったので 変わらない思います;
823815:2006/12/08(金) 16:58:00
>>818
ありがとうございます。参考になりました。
ちょっとソースも見てみます。
readLine()では手遅れだから、InputStreamReaderのコンストラクタで先読みしてるのかな??
824デフォルトの名無しさん:2006/12/08(金) 17:03:12
>>821
フォルダに入れてもいいし、jarアーカイブでまとめても良い。
jarにする場合は少し作業が必要だが、ダブルクリックで実行可能にすることができる。
825デフォルトの名無しさん:2006/12/08(金) 17:09:22
>>824
ありがとうございます。
○○1.java〜○○20.javaを○○フォルダに入れて
○○フォルダをjavacすればよいのでしょうか?
826デフォルトの名無しさん:2006/12/08(金) 17:14:06
>>825
「ひとまとめにする」じゃなくて「ひとまとめにコンパイルする」だろ?
日本語ははっきりと。
javac ○○*.java
827デフォルトの名無しさん:2006/12/08(金) 17:14:32
>>825
そんな気がしました。
javac *.java で、コンパイルできますよ。
クラスファイルは複数できます。これを1つにしたいのなら、jarにします。
828デフォルトの名無しさん:2006/12/08(金) 17:17:29
>>825
>>826-827で既に挙がってるけど、JDKのドキュメント読めば書いてある。
ttp://java.sun.com/j2se/1.5.0/ja/docs/ja/tooldocs/windows/javac.html#examples
困ったらドキュメント読む癖を付けるのが、初心者脱出の秘訣だ。
829795:2006/12/08(金) 17:23:23
ありがとうございます 見事できました
まさかソースファイルに原因があったとは(-_-;)自分でプログラム組む時
ソースファイル自分で組める気がしませんorz
830デフォルトの名無しさん:2006/12/08(金) 17:33:26
無能なPGが一人増えた瞬間
デスマーチを引き起こす原因が誕生した瞬間
に立ち会えた幸せ
831795:2006/12/08(金) 17:40:34
無能か有能かになるかはなってみないと分りませんよ?
無能になる確立80%ですが
832デフォルトの名無しさん:2006/12/08(金) 17:41:36
>>721
>「repaintは"なるべく早い時期に"paintを呼び出そうとする」というのがあって
>paintが呼び出されるのが続くj++より前になるか後になるかは判らないし

これってマウスイベント中にrepaintが書かれた事についてだよね。
repaintの次の行にj++が書かれていても、マウスイベント中なんだからpaintは呼び出されないんじゃないか。
それともマウスイベント中にpaintが呼び出される事ってあるの?
repaintってペイントイベントをキューに追加してるだけだと思ってたんだけど、俺勘違いしてる?
833デフォルトの名無しさん:2006/12/08(金) 17:44:00
’;’や’}’の付け忘れは、始めたての頃だと誰もが経験するよ。
そこで1時間も悩んだり、2chに聞いたりするかは人次第だが…

ま、それだけで自分を無能と決めつけなくてもいい。
これだけ悩めば、もう懲りて気をつけるようになるでしょ。
834デフォルトの名無しさん:2006/12/08(金) 17:50:41
>>826-828
大変参考になりました。ありがとうございます
正直ドキュメントを読んだことなかったのですが
これからじっくり読んでみたいとおもいます
835デフォルトの名無しさん:2006/12/08(金) 18:18:06
カメラを使ったiアプリを作りたいんですが、
バーコードリーダみたくカメラに現在映っている画像を
1秒間に何回か読み込ませて何かの処理に成功したらそこで止まる。
というようなプログラムを作成することは可能でしょうか?

例えば●に似た形を認識すればキャンバスに"発見!"と出力するような
プログラムです
836デフォルトの名無しさん:2006/12/08(金) 18:23:06
Swingアプレット上で、
入力した文字列が端まで来たときに、文字を折り返したいのですが
どのようにすれは良いのでしょうか。。
837デフォルトの名無しさん:2006/12/08(金) 18:29:25
>>835
作成する事が不可能、と断定するための条件は何もないと思います
838デフォルトの名無しさん:2006/12/08(金) 18:29:48
>>817
JDK 6.0 のソース、ちろっと見てみたけど
ファイル終端までくると CharsetDecoder#reset() 呼んでるんだわ。
で、 CharsetDecoder#reset() されると detectedCharset() の状態もリセットされるみたい。

そーいや、StreamDecoder のバグで CharsetDecoder#flush() 呼ぶべきところで
CharsetDecoder#reset() 呼ぶって奴があった記憶があるけど、これだったかも?
839デフォルトの名無しさん:2006/12/08(金) 18:30:06
ドキュメント読まずにどうやってプログラム書くんだ?
840デフォルトの名無しさん:2006/12/08(金) 18:46:51
windows なら
 javac ○○フォルダ\*.java
する
841ココ電球(∩T∀T)  ◆tIS/.aX84. :2006/12/08(金) 19:04:03
>>839
コピペ張り合わせ&クライアントに催眠術
842デフォルトの名無しさん:2006/12/08(金) 19:06:14
またゴミコテがきた
843デフォルトの名無しさん:2006/12/08(金) 19:21:05
>>835
可能か不可能と聞かれたら一応可能です。(ただし、iアプリに定められている容量では不足だと思う)
例で言うと、画像認識サービスGTAPなどがあります。
とは言え、画像認識はまだまだ研究途上なので専門知識のない方が、プログラム組めるほど
ライブラリはないですよ。
844817:2006/12/08(金) 19:36:01
>>838
JDK5で早速試してみたところ、whileで読み込んでいる時は"windows-31j"と取得でき、
ファイルを読み終えて取得するとエラー(正常動作)になりました。
大変勉強になりました。ありがとうございます!
845デフォルトの名無しさん:2006/12/08(金) 20:17:32
ドキュメントってサイトにアクセスして見るしかないでしょうか?
一括ダウンロードとかしてないのですかね?
もしくは書籍として販売とか。 
846デフォルトの名無しさん:2006/12/08(金) 20:25:27
>>845
ttp://java.sun.com/javase/downloads/index.jsp
ここの「J2SE 5.0 Documentation」
847デフォルトの名無しさん:2006/12/08(金) 20:26:06
>>845
公式でzipで配布してるジャマイカ
日本語訳はSE5.0までだけどな(6.0は英語のみ)
848847:2006/12/08(金) 20:26:59
リロードしろよ俺orz
849707:2006/12/08(金) 21:23:40
 遅ればせながら、昨晩文字化けで悩んでた件、解決しました。
InputStreamReaderに文字コードを指定してやればよかったんですねorz
ストリームの使い方が全然分かってなかったです。
アドバイスくれた方々、ありがとうございます。


 あと一つ確かめたい事があるんですが、readLine()で読み込んだ複数行を
1つの変数に文章として格納するのって可能ですか?
whileでreadLineを繰り返しながら、変数に格納していく方法を今適当に思いついたのですが
850707: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%ですが
まずこれを忘れてみとくことからだと思う。。。
853デフォルトの名無しさん:2006/12/09(土) 00:14:58
JAVAである程度テキストで勉強し、そこそこ掴めてきたのですが
作成したプログラムをコマンドプロンプトからではなく
実行ファイルから起動したいのですが、方法がわかりません
これはどうすればいいのでしょうか?
854デフォルトの名無しさん:2006/12/09(土) 00:37:34
激しく遅レスですが、>>764に答えてくれた人ありがとうございました
HSQLを色々弄ってみることにします
855749:2006/12/09(土) 00:46:19
亀レスすみません。

>>750
アドバイスありがとうございます。
やっぱり英語ができないと難しいですよね。
いくつか候補があると迷ったりしちゃいます。

変な名前の変わりに一応コメントを入れて動作はわかるようにしてありますね。

>>751
それができないのが初心者です。
例えばですけど変数をラベルで表示させたい場合はint num Label l_num とするようにはしていますが。
どうしても数が増えると辛いものを感じますね。
Labelなども再利用できる物であればLabel labelとか気軽につけれるものですが同時にいくつも表示したい場合とかだと困ります。


まだ基礎を覚えて少しプログラムを書き始めたあたりなので慣れてきますかね?
856デフォルトの名無しさん:2006/12/09(土) 00:52:15
>>855
数でもさ、「何の」数なのかってのがあるでしょ。
その「何の」の部分を名前にしないからわけがわからなくなるんだよ。
初心者はなぜか短い名前をつけがちだけど
冗長なぐらいの長い名前をつける方がいいよ。
857デフォルトの名無しさん:2006/12/09(土) 00:58:54
>>856
やはりそうですよね。
自分の考えとしては作っている途中で行き当たりばったりっていうのがあると思います。
最初に設計をしてから作るべきですかね?

簡単な仕様書の様なものを書いてクラス名、変数名、メソッド名の簡単な動作や用途をまとめて書いておくような。
少し肝に銘じて「何の」数かと意識してやってみます。
ありがとうございます。
858デフォルトの名無しさん:2006/12/09(土) 01:14:14
>>857
そこまでおおげさに考えなくても855で書いてる

>変な名前の変わりに一応コメントを入れて動作はわかるようにしてありますね。

をそのまま変数名にすればいい。
859デフォルトの名無しさん:2006/12/09(土) 01:58:07
>>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にデータどんどんたまってしまいますか?
862デフォルトの名無しさん:2006/12/09(土) 02:26:49
>>860
「同じこと」に期待される要件を列挙してみてくれ。

それと、コンパイルエラーになるような式を書かれても意味がわからんぞ。
863デフォルトの名無しさん:2006/12/09(土) 02:29:48
>>861
CNT が2未満なら二つ目の while で無限ループになる。
そうでなければ CNT の値によらず、Line は空。
864デフォルトの名無しさん:2006/12/09(土) 02:32:26
>>843
ありがとうございました。
画像に対して「決定」ボタンを押せば処理するという方向で行きたいと思います。

もひとつ質問お願いします。
DoJa 3.0を使っています。
自作のクラスが入ったjarをクラスパスに含めたいのですが、
どこのフォルダに含めればいいのでしょうか?
865デフォルトの名無しさん:2006/12/09(土) 02:33:22
>>861
CNTの初期値が2未満だと、内側のwhileが終了しないのでどんどん溜まる。

それはサテオキ、変数名を大文字で始めないこと。Javaの慣習です。
866ぴゅあ:2006/12/09(土) 02:38:40
>>859
>俺は「マウスイベント処理中にpaint処理が実行される事は絶対に無い」、と思ってるんだけど
ならば、それでいいと思う
867デフォルトの名無しさん:2006/12/09(土) 02:42:33
>>864
事故解決しました
jdkのいつものextの中でした。スマソ
868デフォルトの名無しさん:2006/12/09(土) 02:48:26
>>853
コンパイルしたファイル拡張子を.exeに変更
869デフォルトの名無しさん:2006/12/09(土) 04:44:24
Eclipseをインストールして、プロジェクトを作ろうとしたら、フリーズしてしまいます・・・
WinMeなんですが、原因不明です
どうすれば、使えるようになるのか分かる方いませんか?
870デフォルトの名無しさん:2006/12/09(土) 06:30:33
>>868
ドSめ。

>>853
*.jar形式にまとめる。
その際にManifestファイルを作り忘れるな。
俺余り詳しくないから調べたらわかると思う。
871デフォルトの名無しさん:2006/12/09(土) 10:28:24
>>864
開発環境でのみ使用するなら>>867でいいんジャマイカ
でも実機では動かないのはあたりまえ
872デフォルトの名無しさん:2006/12/09(土) 11:00:04
>>869
OS変えるのが一番早いんじゃないかな
873デフォルトの名無しさん:2006/12/09(土) 15:11:03
****************
をGraphicsとして表示させたいのですが
String sにn個の*を格納させたいとき
String s="";
for(int i=1;i<=n;i++)s+="*";
g.drawString(s,0,0);
これよりもっとスマートにsに*を格納させる方法はありませんか?
874デフォルトの名無しさん:2006/12/09(土) 15:25:15
>>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だとデフォルトの座標系のままでは画面に表示されない。
875デフォルトの名無しさん:2006/12/09(土) 15:28:26
複数のファイルをjarにまとめるやり方がわかりません。
どうすればよいのでしょうか?
876デフォルトの名無しさん:2006/12/09(土) 15:36:40
877デフォルトの名無しさん:2006/12/09(土) 15:38:58
String s="map m = collections.synchronizedmap(new hashmap(...));";
これをString[] moji=s.split("");
で1文字ずつmojiに格納していくと(や.や,や;まで格納させてしまうのですがアルファベットだけ格納させるにはsplitで可能でしょうか?
そうでなければStringTokenizerでの分割の仕方を教えてください
878デフォルトの名無しさん:2006/12/09(土) 15:42:50
>>876
やだ やさしく説明して
879java初心者:2006/12/09(土) 15:46:34
いつもソースファイル作ると\12288は不正な文字ですってエラーが出る
んですけど原因って主にどういうのですか?基本的なことですが
教えてください
880デフォルトの名無しさん:2006/12/09(土) 15:50:37
881デフォルトの名無しさん:2006/12/09(土) 15:54:03
>>877
そのようなStringから文字への切り分けとしてsplitが適切かどうかは置いておいて、
string.split("[^a-zA-Z]+|\\B")
882java初心者:2006/12/09(土) 15:55:05
>>880 素早いレスありがとうございます
883デフォルトの名無しさん:2006/12/09(土) 16:04:43
>>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 のような結果を得るにはどうしたらいいでしょうか?
886デフォルトの名無しさん:2006/12/09(土) 16:51:02
>>884
分割したそれぞれの処理を別スレッドで動作させれば、
並列動作を許すハード、OS上ならたぶん並列動作する。
別プロセスで処理させても同様。
887デフォルトの名無しさん:2006/12/09(土) 16:53:14
>>885
for (char c : "あいう".toCharArray()) System.out.printf("\\u%04x", (int)c);
888デフォルトの名無しさん:2006/12/09(土) 17:05:33
>>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の場合にのみ使用可能になります。
というコンパイルエラーになります。

どうしたらいいでしょう?・・・・
891デフォルトの名無しさん:2006/12/09(土) 17:23:26
import文とパッケージについて学ぶと良い
892デフォルトの名無しさん:2006/12/09(土) 17:29:22
>>888
訳あって、JDK1.4.2を使っています。
import java.util.logging.formatter;
だと見つかりませんになります。
java.util.logging.*;
入れてみましたが、ダメでした。
893デフォルトの名無しさん:2006/12/09(土) 17:30:31
>>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();
894デフォルトの名無しさん:2006/12/09(土) 17:32:53
int iをString stringに格納したいのですが
string=i.toString();だと間接参照できない、とエラーが出るのですがどうしたらstringに格納できますか?
895デフォルトの名無しさん:2006/12/09(土) 17:36:44
>>894
string = Integer.toString(i);
896デフォルトの名無しさん:2006/12/09(土) 17:44:11
>>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);
899デフォルトの名無しさん:2006/12/09(土) 18:02:17
Bufferedreader br;
line=br.readLine();
としていて例えば下のようなテキストがあったとき
fdak
fare

rewlkj
lkjfdsa

fsa
この空白の2行にはline=""何が入るのでしょうか?\nでも^でも$でもないようなのですが・・・
900デフォルトの名無しさん:2006/12/09(土) 18:15:18
>>898
タイムゾーンに:が入ってなければ書式指定中のTを'T'とするだけで
解析できるみたいなんだが、そのままだと上手くいかないな。
901java初心者:2006/12/09(土) 18:27:23
エラーでシンボルを見つけられませんと出て何時まで経っても問題解決
できません 原因として何が考えられるでしょうか?
902デフォルトの名無しさん:2006/12/09(土) 18:29:09
>>901
スペルミスとか、いろいろ。
903898:2006/12/09(土) 18:29:30
>>900
なるほど。Tの方は確認できました。ありがとうございます。
タイムゾーンの方は、GMT+09:00って、前にGMTが付いていれば動くんですけどねぇ。
デフォルトはGMTだって教えればいいのかな。調べてみます。
904デフォルトの名無しさん:2006/12/09(土) 18:30:48
>>899
空行なら "".equals(line) && (line.length() == 0) になるような文字列。

空白文字があるなら、空白文字の入った文字列。
905デフォルトの名無しさん:2006/12/09(土) 18:31:32
>>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のようにしたいなと思っています。
もう、私、わからなくなりました。。。
お助けください。
907デフォルトの名無しさん:2006/12/09(土) 18:38:12
ttp://pzxa85.hp.infoseek.co.jp/www/wwwjssm2.htm
ここの「「別ウィンドウに表示」を制御する」について質問です
縦フレームの左側にこのプログラムを組み、
チェックが外れている時は右フレームにリンクを表示させたいのですが
どこをどのように書き換えればできるでしょうか?
(ベースターゲットは右フレームに指定してあります)
初心者がいろいろいじってみたのですがさっぱり…
どうしてもチェックが外れている時は同フレームに表示されてしまいます。
指導よろしくおねがいします。
908java初心者:2006/12/09(土) 18:38:18
もう一つ質問なのですがエラーが出たときもしかして^で教えてくれてます?
909デフォルトの名無しさん:2006/12/09(土) 18:41:21
>>901
お前の無能さ
910java初心者:2006/12/09(土) 19:00:26
System.out.printIn("ようこそ");}}
この部分のドットがシンボルエラー言われるのですが何故ですか?
ちゃんと半角で入れています
911デフォルトの名無しさん:2006/12/09(土) 19:05:58
>>910
ギャグなのか・・・マジなのか・・・スペルミス
912java初心者:2006/12/09(土) 19:12:33
printIn思ってましたprintlnだったんですね^^;私は本当に無能の様です;
913java初心者:2006/12/09(土) 19:21:34
これからも聞く思いますが気長に付き合ってください
914デフォルトの名無しさん:2006/12/09(土) 19:46:18
だが、断る
915デフォルトの名無しさん:2006/12/09(土) 20:08:18
>>906
s = "2: "+"\u3042\u3044\u3046\u3048\u304a";
の中の"\u3042\u3044\u3046\u3048\u304a"は"あいうえお"を意味する文字列リテラル。
もし、文字列リテラルの中に\を入れたかったら>>893の"\\u"みたいに、
"\\"としないといけない。Stringクラスの内部では\は\で入っているけれど、
リテラルではエスケープしてやる必要がある。
916デフォルトの名無しさん:2006/12/09(土) 20:12:22
あ、逆か。2のようにしたいのなら、何でわざわざ"あいう"をユニコードエスケープしたの?
917デフォルトの名無しさん:2006/12/09(土) 20:17:00
ユニコードエスケープしたというよりユニコードエスケープした表現を文字列にしたのか、か。
"\\u3042\\u3044\\u3046\\u3048\\u304a"を"あいうえお"にしたいなら、
さっきの逆をやればいい。"\\u"を取って4桁の16進表記をcharに変換してやる。
918デフォルトの名無しさん:2006/12/09(土) 20:28:20
質問です。
GUIを使った場合に

public void paint(Graphics g) {
}

メソッド以外で描画させるにはどうしたらいいですか?
又は他のメソッドの戻り値を利用して描画をさせるとか。

動作が良くわかっていないんですけど一番最初にpaintが描画してしまうようなのでどうしたら良いのかわかりません。
よろしくお願いします。
919デフォルトの名無しさん:2006/12/09(土) 20:30:48
>>918
paint()やupdate()は何もしないようにオーバーライドして、
getGraphics()でGraphicsインスタンスを取ってきて描画して最後にdispose()する。
920デフォルトの名無しさん:2006/12/09(土) 20:33:37
アクティブレンダリングでぐぐってみ>>918
921デフォルトの名無しさん:2006/12/09(土) 20:37:06
>>918
まず、ボタンが押された時とかの好みのタイミングで、
その、他のメソッドの戻り値をインスタンス変数に入れる。
次に、paint()の中で、そのインスタンス変数を参照してそれに応じた描画を行う。
922デフォルトの名無しさん:2006/12/09(土) 20:42:29
>>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型にするには
どうしたらいいのでしょうか????
925デフォルトの名無しさん:2006/12/09(土) 21:16:20
>>924
普通に
BufferedReader br = new BufferedReader(new FileReader(filename));
String s;
while ((s = br.readLine()) != null) {
System.out.println(s);
}
とかで化ける? もしかして、Linuxとかを使ってる?
926デフォルトの名無しさん:2006/12/09(土) 21:22:55
ある文字セットでエンコードされているバイト配列を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?)とわかります。
928デフォルトの名無しさん:2006/12/09(土) 21:39:14
スクロールしないと全部見れないほどの項目があってそれぞれにGraphicsで棒グラフを作りたいのですが
FrameにCanvasを貼ってもCanvasはディスプレイの座標で打ち込むから画面下に隠れてる項目がスクロールできないのですが
Graphicsを使うって条件でスクロールが使える方法やクラスは何かないですか?
929デフォルトの名無しさん:2006/12/09(土) 21:41:17
AWTなのか。
ScrollPaneについて調べてみたらよいのでは?
930java初心者:2006/12/09(土) 21:43:01
すみませんが質問です実際ソースを組むときにリファレンスなどを見て組んで
良いのでしょうか?
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:???芦?
932デフォルトの名無しさん:2006/12/09(土) 21:46:23
new String(str.getBytes("UTF-16"), "MS932")
Javaのネイティブの文字エンコーディングはUTF-16なので
間違ってMS932の状態で入っているStringからUTF-16としてつまり無変換でバイトの配列として取り出し
改めてMS932でStringにする
933デフォルトの名無しさん:2006/12/09(土) 21:48:29
>>930
逆に問いたい。
リファレンスなどを見ずにどうやって組むのか。
934デフォルトの名無しさん:2006/12/09(土) 21:50:41
>>931
ms932_byteの文字セットはMS932なんだから当然UTF-16で復号化はできない
935java初心者:2006/12/09(土) 21:51:35
>>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です。
938デフォルトの名無しさん:2006/12/09(土) 22:02:31
>>924
> MS932で入っているString型をUTF16として入っているString型にするには
MS932 の String型なんかない。

String は全部 Unicode(UTF-16)
939デフォルトの名無しさん:2006/12/09(土) 22:13:34
>>936
ユニコードの文字列を UTF-16 のバイト列に変換して、
その UTF-16 のバイト列を MS932 のバイト列とみなして
ユニコードの文字列に変換しようとしてるんだから化けるのは当然。
ASCIIの範囲だったら辛うじて読めるかもしれんが、2バイト文字入ってたらダメ。

ちなみに、>>932 のも嘘だから信じないように。
昔の JDBC とかで setEncoding できなかった時に
new String(jdbcResult.getBytes("ISO8859_1"), "MS932") みたいなのはあったけど。
940デフォルトの名無しさん:2006/12/09(土) 22:28:51
>>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++をやっているので
>も読んでみて欲しかった。。。
は、段階踏んで書いたつもりだったけど、それが判らないものだったらしい
それは申し訳ない
944デフォルトの名無しさん:2006/12/10(日) 01:04:32
>>943
日本語でおk
945デフォルトの名無しさん:2006/12/10(日) 01:13:48
質問の答えになってないな
意味不明のエクスキューズとかキモイんですけど
946デフォルトの名無しさん:2006/12/10(日) 01:17:12
>>943
>>正しい事を知っておくのはプログラムをする上での基本だと思うから。
>そうなの?
そうだよ。間違った知識を元に書いたコードは正しい動作をするとは限らない。
自分の知識が正しいか、正しくないか、というのはコードを書く時にとても重要だ。

>「間違ってました。申し訳ない」とか、偉いとかバカとか格差を付けたいとかではなくて?
偉いとかバカとかって格差ってどういう事?
もし間違っていたなら間違っていたと言えばいいだけ。そこに格差なんて感じるの?
間違っているなら間違っている、正しいなら正しい、これだけだ。
何度も書くが自分の知識が正しいか、正しくないか、というのはコードを書く時にとても重要。

>「絶対であって疑いを持つ気は微塵もない」と言っていることを意味しているのですよね
違うよ。
「俺が間違っているならそう書いてくれ」って書いてるじゃん。
イベントドリブンの場合、1つのイベントが終わるまで次のイベントは処理されない。
もしrepaintがペイントイベントを発行するなら、現在処理中のマウスイベントが終了するまで次のペイントイベントは実行されない。
だからマウスイベントが処理中にペイントイベントは実行されない、という考え。
一個ずつ処理されるんだから最後のが前に来ることは絶対ないよね。
でももしrepaintがペイントイベントを発行せずpaintを直に実行する等の処理をするなら、マウスイベント処理中にpaintを実行する事はありえるという訳だ。

で、repaintはペイントイベントを発行するの?しないの?

>あちしには「絶対」なんて言葉はそうそう使えるもんぢゃないけど
どういう事?よく知らないで書いてるって事?
もしあやふやな知識しか持ってないなら、>>721の時点でそう書くべきだと思う。
>>716だけで無く、このスレを見ている全員に対して失礼だ。
947デフォルトの名無しさん:2006/12/10(日) 01:54:07
>>946
>イベントドリブンの場合、1つのイベントが終わるまで次のイベントは処理されない。
これが成立しなかったら、全てのイベントハンドラは、スレッドセーフに書かなきゃいけないな。
synchornized 宣言でいっぱいだ。
948デフォルトの名無しさん:2006/12/10(日) 02:08:07
ぴゅあ、不確かなことを憶測だけで書くのはいい加減やめておけ。

仕様化されていることはプログラマとしては「絶対」と言っていいと思うよ。
仕様通りに動作しなかったらそれは「バグ」だから。
一般概念の「絶対」まで話を大きくしたかったら、それはもう板違い。
哲学板へでも行け。
949デフォルトの名無しさん:2006/12/10(日) 02:32:41
便所の落書きにそこまで求めるのもどうかと思う
950デフォルトの名無しさん:2006/12/10(日) 02:37:48
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
マジに話しようとしているとして
>自分の知識が正しいか、正しくないか、というのはコードを書く時にとても重要だ。
はそうだけど、「絶対に」はあまり好ましくないような気がする
今正に正しいと思っていることは自分にとって正しいと思うことであり
それを元にコードを書く/書くことになるけど
自身に"疑問"も同時に持つから考えることができるんじゃないの?
「絶対に」は考えることを失わせることになるんじゃないかと思うけど

で、それ風のレスっていうのも、そういうところなんかな
とか思ってみたり
953デフォルトの名無しさん:2006/12/10(日) 02:59:06
>>952
>「絶対に」は考えることを失わせることになるんじゃないかと思うけど

だから哲学板行けって。

■この世界に[絶対]は存在するのか?■
http://academy4.2ch.net/test/read.cgi/philo/1125376718/l50
954デフォルトの名無しさん:2006/12/10(日) 05:54:52
>>951-952
>実際には>>721とは少しずれた部分で話をしてるような気もしていたりする(「絶対に」付きで)
俺はずっと純粋に技術的な質問をしてるよ。
「repaintはペイントイベントを発行するの?しないの?」という質問なんだけど。
で、javaのソースをダウンロードしてざっと調べてみた。repaintはペイントイベントを発行してるようだね。
>>721は間違いって事でいい?

>>可能性が高い
>とした部分は「です」としようと思ったが、全てのプラットホームで「です」と言えるか?と"疑問"を持ったので敢えて「可能性が高い」としたけど
どういう事?
結局これはよく知らないままに書いてたって事を言いたいの?

>自身に"疑問"も同時に持つから考えることができるんじゃないの?
俺が>>832を書いた時点で自身に"疑問"は抱かなかった?

>「絶対に」は考えることを失わせることになるんじゃないかと思うけど
「絶対」という言葉が気に入らないのかな?「可能性は高い」に対しての「絶対無い」なんだけどね。
どうしても気に入らないなら「可能性は無い」でいいよ。
それともマウスイベント処理中にpaint処理が実行される可能性があるって言いたいのかな?
もしそうなら根拠を示してきっちり反論すべきだよ。
それが正しいなら俺は受け入れる、正しくないなら受け入れない、それだけだよ。
955デフォルトの名無しさん:2006/12/10(日) 08:27:42
ぴゅあって宗教家みたいだな
956デフォルトの名無しさん:2006/12/10(日) 09:37:38
>>950
>文字化けするんだけど、これって単純に文字コードの問題でしょうか?

単純に文字コードの問題

>iso-2022-jpでコード変換も済んでるはずなのに……。

ここが間違ってるに100ペリカ
957デフォルトの名無しさん:2006/12/10(日) 11:26:38
実行可能形式の*.jarファイルを作る時の質問です

manifest.txtというファイルに
Main-Class: Main
<改行>
と入れる。
構造がhoge(フォルダ)\Main.classだった場合にはどうしたら良いでしょうか?

jar cfvm hogehoge.jar manifest.txt hoge.Main.class ではできたjarファイル形式ではちゃんと動作してくれませんでした。

どうしたらいいかアドバイスをいただけたら光栄です。
958デフォルトの名無しさん:2006/12/10(日) 11:30:28
携帯だとMANIFEST.MFなんだけど、他は違うんだね…
959デフォルトの名無しさん:2006/12/10(日) 11:36:24
>>958
jarの中に入るのはそうですけど自分がネットで調べた感じではファイル名は何でもよさそうでした。
クラス名.mani にしているところや 自分のように manifest.txt としているところもありましたね。
960デフォルトの名無しさん:2006/12/10(日) 11:37:08
String bun="fdsa";
g.drawString(bun,44,44);

g.drawString("fdsa",44,44);
だとエラーになってしまうのですがどうしたら第一引数にbunをもってこれますか?
961デフォルトの名無しさん:2006/12/10(日) 11:42:06
>>960
エラーログ晒せ
962デフォルトの名無しさん:2006/12/10(日) 12:25:58
>>957
FQCNで指定する。つまり
Main-Class: hoge.Main
963デフォルトの名無しさん:2006/12/10(日) 12:32:19
>>962
おうおうありがとう。
あとでやってみる。

一応同じフォルダに入れてやったときもできなかったから他に何か間違ってるのかもしれないし。
964デフォルトの名無しさん:2006/12/10(日) 12:33:57
>>958-959
jarファイルの中では必ずMETA-INF/MANIFEST.MFでなければならないが、
jar コマンドのmオプションでマニフェストファイルを明示的に指定すれば、元はどんな名前でもいい。
ただ、>>597のは引数の順番がマニュアルと違うな…
*.jarのファイルはjarファイルだと、jarコマンドが認識してくれるんだろうか。
965デフォルトの名無しさん:2006/12/10(日) 12:38:49
>>963
動かなかったと?なら、jarコマンドの使い方が間違いかもだぜ(なっち語)。
ここ見て正しい順番に直すといいよ。
ttp://java.sun.com/j2se/1.5.0/ja/docs/ja/tooldocs/windows/jar.html
966デフォルトの名無しさん:2006/12/10(日) 12:45:51
EJBを利用して

ユーザにuser/passwordを入力させて、もし正しければsessionIDを発行します。
次回からユーザはアクセスにこのsessionIDを利用して操作を継続させるような
サンプルはないのでしょうか?

967デフォルトの名無しさん:2006/12/10(日) 13:05:03
>>962
まて。hogeがパッケージ名とは書いてないぞ。
単に hoge/Main.class という名前で格納しているだけかもしれん。

考えすぎだろうけど、パッケージ名ならそう書け。>>957
968デフォルトの名無しさん:2006/12/10(日) 13:07:58
もしhogeが本当にパッケージ名でないのなら、

Main-Class: Main
Class-Path: hoge

で行けたと思う。
969デフォルトの名無しさん:2006/12/10(日) 13:20:58
swingの画面で最大化をするとタスクバーにIMEの
アイコンが現れ、作成時の画面にするとIMEのアイコンが
消える。
漢字入力はできる。
必ずこの現象がでるわけではない。
同じ画面ではでるが。
IMEの操作はプログラムの中で何もしていないのに。
970デフォルトの名無しさん:2006/12/10(日) 14:05:04
Windowsではよくあること
971デフォルトの名無しさん:2006/12/10(日) 14:40:43
>>969
Editできない設定かVisbleできない
Swingコンポーネントにフォーカスを移動する
部分がないですか。
そのあたりをしっかりプログラムすれば。


972950:2006/12/10(日) 14:59:44
>>956

 文字化けはメールの一部だけなのですが、それでも文字コードが原因ですか?
Charset iso = Charset.forName("ISO2022JP")
という型で指定しているのですが。
973デフォルトの名無しさん:2006/12/10(日) 15:40:05
>>972
情報小出しするんなら解決は来年になるな。よいお年を(^-^)/~
974デフォルトの名無しさん:2006/12/10(日) 16:15:50
質問
javax.media.Player.getVisualComponent()で取得したComponentを
JFrameのContentPaneにaddしたところ
動画はJFrameの上で問題なく再生されましたが
JFrameのJMenuBarよりも上に描画されているためメニューの項目が見えなくなってしまいました。
ただ、メニュー自体は有効で、メニューに対してショートカットキーからの動作は問題なく動いています。
メニューの項目をPlayer.getVisualComponent()より上に描画させるにはどのようにしたらよいか御教授願います。
975デフォルトの名無しさん:2006/12/10(日) 16:16:26
>>971
設計時の画面ではIMEのアイコンがタスクバーに
表示されませんが最大化してコンポーネントを移動すると
IMEのアイコンがタスクバーに表示されます。
漢字入力はできるのですが「A」や「あ」がタスクバーに
表示できません。
何でなんだろう?
CARDLayoutで表示をしています(関係ないかもしれないけど)
976デフォルトの名無しさん:2006/12/10(日) 16:22:34
>>974
JPopupMenu.setDefaultLightWeightPopupEnabled(false); でどうか?

977デフォルトの名無しさん:2006/12/10(日) 16:53:22
>>976
回答ありがとうございます。
JFrame.setJMenuBarでのメニューで実現したいと考えております。

今のところ下記サンプルを参考とした
ttp://otjwave.itbdns.com/~okamura/java/javaPage001.html
Component.setVisible(false)で描画を停止してからメニューを表示する方法で実現すべきか悩んでおります。
978デフォルトの名無しさん:2006/12/10(日) 16:53:42
教示
979デフォルトの名無しさん:2006/12/10(日) 17:06:33
980デフォルトの名無しさん:2006/12/10(日) 17:15:23
>>976
すいません、やっと仰っている意味がわかりました。
無事解決できました。
ありがとうございました。
981デフォルトの名無しさん:2006/12/10(日) 17:39:16
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("異なるページ") を実行させることができますか?
983デフォルトの名無しさん:2006/12/10(日) 18:52:02
>>982
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc5.2ch.net/hp/
984デフォルトの名無しさん:2006/12/10(日) 21:59:22
Javaにデストラクタがないのは何故ですか?
finallyよりもRAIIの方が便利です
985デフォルトの名無しさん:2006/12/10(日) 22:03:51
Javaのオブジェクトがスタックと密接してないから。
D言語はscope属性を加えるとRAIIになるみたいだから期待しろ。
986デフォルトの名無しさん:2006/12/10(日) 22:24:05
>>984
普通に考えて、GCの実装の自由度あげるためじゃないか?
987デフォルトの名無しさん:2006/12/10(日) 22:25:12
質問です。
Sun Java Studio CreatorでJSFを駆使して作ったアプリケーションを
Tomcat5.0 + J2SE1.5環境にそのままデプロイして動作させることはできますか?
988デフォルトの名無しさん:2006/12/10(日) 22:32:35
>>987
必要なライブラリがアプリケーションのWEB-INF/libに入っているかどうかだな。
989デフォルトの名無しさん:2006/12/10(日) 23:14:30
サンクス、調べます
990デフォルトの名無しさん:2006/12/11(月) 04:39:14
というか、Java Creatorでwarにして、webappに突っ込むだけでは?
991デフォルトの名無しさん:2006/12/11(月) 11:01:43
地名をローマ字で入力すると、「Welcome to 地名」と画面に出力する(例えば、Ubeと入力すると
Welcome to Ubeと画面に出力する)そして空うち(空行入力)で終了するプログラムを作成せよ。

といった問題です。どうかといてみてください
992デフォルトの名無しさん:2006/12/11(月) 11:06:34
>>991
やだ
993デフォルトの名無しさん:2006/12/11(月) 12:44:05
宿題スレ行け
994デフォルトの名無しさん:2006/12/11(月) 12:46:51
宿題スレに池という奴が一杯いるな
995デフォルトの名無しさん:2006/12/11(月) 13:30:00
 javaで「凸四角形を矩形に変換する」といったプログラムを
作ることは可能ですか??
 射影変換を使って作ろうと思ったのですが、計算の過程がう
まくいかないらしく、プログラムが思うように動いてくれませ
ん;;
996デフォルトの名無しさん:2006/12/11(月) 14:07:10
java関係なくないか? プログラムのミスだろ

【初心者】Java質問・相談スレッド95【大歓迎】
http://pc8.2ch.net/test/read.cgi/tech/1165813252/
997デフォルトの名無しさん:2006/12/11(月) 17:55:01
>>991 は三箇所にマルチしてるクズなので無視
http://pc8.2ch.net/test/read.cgi/tech/1165167516/215 宿題スレ
http://pc8.2ch.net/test/read.cgi/tech/1165571435/65 ここ
http://pc8.2ch.net/test/read.cgi/tech/1164057114/991 サイザー専用Javaスレ
998977:2006/12/11(月) 17:58:07
こことサイザー専用Javaスレ のURL逆だったorz
999デフォルトの名無しさん:2006/12/11(月) 17:58:52
埋め梅産め膿め績め
1000デフォルトの名無しさん:2006/12/11(月) 18:03:27
じゃう゛ぁ
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。