【初心者】Java質問・相談スレッド94【大歓迎】
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/11/21(火) 06:11:54質問をする前に、貴方が見なければならないサイトについての情報は、
下の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あたりで。
0002デフォルトの名無しさん
2006/11/21(火) 06:12:3200031
2006/11/21(火) 06:14:35前スレのリンク間違った。
前スレッド
【初心者】Java質問・相談スレッド93【大歓迎】
http://pc8.2ch.net/test/read.cgi/tech/1161492130/
0004デフォルトの名無しさん
2006/11/21(火) 13:41:220005デフォルトの名無しさん
2006/11/21(火) 15:30:48例えばid属性とか(´・ω・`)
0006デフォルトの名無しさん
2006/11/21(火) 15:34:17スレ違いスマソ(´・ω・`)
0007デフォルトの名無しさん
2006/11/21(火) 15:35:02Error: no `server' JVM at ......
と表示された.
Server VM というのは別にインストールする必要があるんでしょうか?
0008デフォルトの名無しさん
2006/11/21(火) 15:44:47sunのvmの場合は、ドキュメントを見る限りどちらも同じvmだが、初期パラメータが違うだけっぽい。
特殊なアーキテクチャ・vmなら、そいつはなにか追加インストールが必要かもしらんが
sunのvm + windows なら不要。
0009デフォルトの名無しさん
2006/11/21(火) 15:48:39そのエラーメッセージの後に表示されたファイルを探して、
それがもしないのなら、java -serverで呼び出しているjavaの実行環境にはserver VMはない。
もし、JDKをインストールしているなら、
JDKをインストールしているディレクトリ下にjre/bin/serverというディレクトリがあることを確認して、
JDKインストールディレクトリの下のbinディレクトリにあるjava実行ファイルを直接フルパスで指定して、
-serverオプションをつけて実行してみて。
00108
2006/11/21(火) 15:50:21すまん。 今書いた内容に嘘が混じっていた。 心から恥じる。
server/clientは別のvmを使っている。
win版なら、jre/bin/{server|client} に別々のjvm.dllが入っている。
かと言って別にインストールする必要は無いが。
0011デフォルトの名無しさん
2006/11/21(火) 15:53:270012デフォルトの名無しさん
2006/11/21(火) 16:05:44Windowsの場合、JDKインストールディレクトリの下のbinへのパスよりも、
Windowsのシステムディレクトリやその下のsystem32へのパスが優先されていると、
そちらにあるjavaが使うJREはclient VMしかインストールしないので-serverが利かないみたい。
JDKの方にあるJREにはserverとclientの両方がインストールされているので、
直接そちらのjavaを指定して使うか、パスの順番を変更するか、どちらかで対応。
00137
2006/11/21(火) 18:21:20アドバイスありがとうございます
環境はSunVM+Winでした
>>12
パスの順番を変更したら解決しました
ありがとうございます
0014デフォルトの名無しさん
2006/11/21(火) 23:09:31プログラムからJavaのソースを作りたいんですけど、
何か上手い方法とかあるでしょうか?
普通にFileWriterとかでせこせこ書いてるのかな?
0015デフォルトの名無しさん
2006/11/21(火) 23:16:33MyMouseAdapterクラス(34行目〜)内でいじっている変数aを使用したいのですが、
今のままでは動かないようです。どう改変したらいいのでしょうか?
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=28745
0016デフォルトの名無しさん
2006/11/21(火) 23:42:301つの絵柄が高さ100ピクセル幅150ピクセルでそれが縦に21個連なったリールを回っているように見せるために
画像をスライドする方法を探しています。
画像を上から下へと一定のスピードでスライドさせるにはどうすればいいのでしょうか?
0017デフォルトの名無しさん
2006/11/21(火) 23:50:13又基本的なこと質問させてください
ここで学んでいるのはジャヴァアプリーケーションとのことですが
実際のアプリ(業務ソフトウェアなど)を作る場合Windowsの部品を(コマンドボタンなど)
つかうと思うんですが、皆さんはどういう(ソフト?)風に作っているのですか?
よくわからないのですがエクリプス?に、そういう部品をつくる環境があり
それで作るのでしょうか?
(vbなんかはvbのソフトで作りますよね)
なんか外れた質問とは思いますが
for文 do文などわかりますがそういう根本的なことがわかりません
御先輩方よろしくお願いいたします
0018ぴゅあ
2006/11/22(水) 00:06:40デバッグの手法とかは習ってなかったりするんだろうけど
身に付けた方がいいと思いますよ
闇雲にコードいじりまくっても、なかなか思い通りにならないし
まぐれでできてしまっただけになったりです
>今のままでは動かないようです。
その原因が何処にあるかを探し出すこと
>変数aを使用したいのですが
と言っているところから変数aがうまく扱えていないと考えているんだろうと思いますが
(扱い自身と思っているのか、変数a絡みの何かだろう程度なのかとかは読み取れませんが)
変数aが期待通りになっているかどうかからまず調べることですし
その前に「コードは書いた 動きません」ではなくて
何処がどうなって欲しいのに、どうなってしまってうまく行かないと思っているのか
何処がおかしいと思っているのか等、
質問するなら頭の中にあることをもっと明確に示して欲しいところですけど
それ以前にこのコードでコンパイル通りますか?
0019デフォルトの名無しさん
2006/11/22(水) 00:12:02Eclipse + VEでやってる。
ただ、JavaのGUIアプリ開発はAWTとSwingを理解してないと辛い。
VBみたいなポトペタを期待してたらがっかりするだろう。
それでも、Web一辺倒だった同僚が「Eclipse + VEでヴィジュアルプログラミング〜」
みたいなタイトルの本で勉強して、それなりにGUIアプリのコードさわれるようになったので、
やればなんとかなるだろう。
0020ぴゅあ
2006/11/22(水) 00:13:03あちしの場合はEclipse上で
JFrame等諸々を組み合わせたコードをそのまま書いてますが
(いちおそれで十分と思ってコード書いているので)
ちゃんと見てないのでよく判らないですけど
VE(Visual Editor)とかいうプラグインとかが
そのVBの…とか言っているのに相当したりするのかなぁ?
と思っていたりしますけど
使い勝手とかは判らないけど、"Eclipse VE"とかでググれば
色々情報がある筈ですよ
直接コードを書くつもりなら
取り敢えず"JFrame"とかでググッておけばいいと思うけど
0021デフォルトの名無しさん
2006/11/22(水) 00:16:140022デフォルトの名無しさん
2006/11/22(水) 00:24:01シングルトンのmapにユーザID詰め込んで、
それをgetしてsynchronized(map.get(key))みたいにしたら
きちんとユーザID単位でロックされますでしょうか?
それともmap.get(key)ではインスタンスのコピーがgetされるだけで
ロックには使えないのでしょうか?
0023デフォルトの名無しさん
2006/11/22(水) 00:26:46ご丁寧にありがとうございます
VEですかふむふむ
前スレのお勧めで独習ジャヴァ買ったんですけど
初めてのジャヴァと書いてる内容が似てて隊靴で・・・
JFrame初耳ですググッテみます^^b
0024デフォルトの名無しさん
2006/11/22(水) 00:28:42ざっと見たが、絶対に通らないとおもうぞ。
12行目でTurnOverを渡しているが、受け取り元がMyMouseAdapterだからな・・・
0025デフォルトの名無しさん
2006/11/22(水) 00:36:59独習Javaの内容はマスターしたという前提で勧めると、この辺かな。
http://www.amazon.co.jp/gp/product/4798011401/
応用編は、とりあえず今は読まなくていい。
0026ぴゅあ
2006/11/22(水) 00:38:33>初めてのジャヴァと書いてる内容が似てて隊靴で・・・
更に先に進んでも"独習ジャヴァ"と共にたまには読み直してやってください(何度も)
前に読んでよく解らなかったことも何時の間にか解ってることに気付いたりとか
新たな理解もあったりする筈です
>>24
でしょ
0027デフォルトの名無しさん
2006/11/22(水) 00:43:37ども独習もうちっとよんでそっち健闘します
でわ^^ノシ
Zzzz
0028デフォルトの名無しさん
2006/11/22(水) 05:07:12VBみたいな感覚でGUIアプリケーションを作りたいなら,
Eclipse+VE よりも NetBeans がお勧め。
http://ja.netbeans.org/downloads/55/index.html
動作はちょっと重めだけど,VBみたいに,マウスでコンポーネントを貼り付けて,
それをダブルクリックしてイベントハンドラを書いたり,といったことができるよ。
Hello, World みたいなコンソールアプリケーションとは違って,
派手な GUI アプリが簡単に作れるから,勉強のモチベーションも湧きやすいと思う。
ただし,ちゃんとしたアプリケーションを作るには,
結局 JFrame など Swing の仕組みをきちんと理解してないといけないから,
Swing の仕組みはしっかり勉強した方がいいよ。
そのためにはクラスとかインターフェースとか継承とかはきちんと理解しとくべき。
独習Javaをしっかり読んで,基礎の理解をしっかりとやりつつ,
GUIプログラミングも楽しんでください。
0029デフォルトの名無しさん
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/
0030デフォルトの名無しさん
2006/11/22(水) 08:13:25Adapter 使わずに Listener 使えば?
Adapter って匿名クラス作る時とかに、
空のメソッド作る手間省くためにあるだけだし。
0031デフォルトの名無しさん
2006/11/22(水) 08:13:51GUIを使って電卓のようなものを作りたいと思っています。
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の様にするように作りたいです。
どこの部分が間違えているでしょうか?
よろしければご教授ください。
003230
2006/11/22(水) 08:16:56う、後出しになってしまって申し訳ありません。
学校の宿題の一部として考えているのですが、
アダプタの継承が必須なためそこを変えることができません。
0033デフォルトの名無しさん
2006/11/22(水) 08:17:210034デフォルトの名無しさん
2006/11/22(水) 08:22:05宿題は宿題スレへ。
ってか、>>29 じゃ何を困ってるのか良く分からんぞ。
003530
2006/11/22(水) 08:26:59だと思ったのですが宿題というだけで
困っていて聞きたいのが一部分だったのでここかと思いました…
分からないのはアダプターを継承したクラス間での変数操作の実装になります。
説明が下手だったら申し訳ないorz
0036ぴゅあ
2006/11/22(水) 08:39:29>>15のようであるけど、端折りすぎてよく解らんものになってしまってるし
>>29で聞いているのも複数のことが混じってて考えがよくまとまってないような気もします
>トリガー
>mainが2つある
>変数をやり取り
>mainが2つある
と言っているのはよく解らないけど
>変数をやり取り
は、そのよく解らないコードで解決できていないんでしょうか?
>トリガー
と言っているところから推測すると
>変数main.varAなんかを
が変更されたとき
>Aのアダプターを継承したクラスの関数の呼び出しをトリガーとして
がイベントとして
>Bのアダプターを継承したクラスの関数を呼び出すなど
がリスナとして応答する作りが必要になるんではないだろうかと
思えたりしますけど
A,Bにそういう実装(イベント/リスナの仕組みそのもの)が必要
ということではないのかな?
003730
2006/11/22(水) 08:53:48お付き合いいただきありがとうございます。
今UPしたプログラムですと「メインクラス main;」が2つあるためコンパイルエラーになります。
こう書けば同じmain.varAを操作できるのではと思いましたがやっぱりだめでした。
片方をmainでなく違ったものにすればコンパイルは通りますが、
オリジナルアダプタークラスAで使えるmain.varAは
オリジナルアダプタークラスBではやはり使えず困っています。
イベントはマウス操作やキーボード操作で、
例えばオリジナルアダプタークラスAの関数にはmouseClicked()があって
マウスがクリックされるとそれをトリガーとしてキーボードが入力可能状態になる。
再びクリックされるとキーボードの入力ができなくなる。
というのを2つの派生クラスで行いたいのですが、
トリガーとなる変数の受け渡しができずに困っている状態です。
UPしたプログラムのように、単にif(main.varA ==1) のように使用できたら・・・と思います。
現実はオリジナルアダプタークラスAでインスタンスmainを宣言しているため
main.varAはオリジナルアダプタークラスBでは使用できません。
0038ぴゅあ
2006/11/22(水) 09:26:41>今UPしたプログラムですと「メインクラス main;」が2つあるためコンパイルエラーになります。
あぁそういうことか
"「メインクラス main;」が2つある"という理解は変じゃないかと思うけど
まず>>29に書いたようなものの通りにコードを書いてあるんであればコンパイルは通るんじゃんないでしょうか
またトリガという言葉を使われていますが
>マウスがクリックされるとそれをトリガーとしてキーボードが入力可能状態になる。
・オリジナルアダプタークラスAでは状態(main.varA)を変更しているだけ
・オリジナルアダプタークラスBでは状態(main.varA)を見て動作を変えるだけ
トリガという言葉は不適切なような気もします
言われている範囲だけならmain.varAについての同期(synchronized)はなくても大丈夫かな
0039デフォルトの名無しさん
2006/11/22(水) 10:53:570を押した時。と1を押した時。が全く同じ文面だが1を押した時。に関しては別に問題ないと思う
クリアを押した時。はそれだと 123→クリアを押す→120 になるけど
やりたいことは 123→クリア→12 って事?
それなら123を10で割る(小数点切捨て)だけでいいが…
> 1を押したら11、2を押したら22、
レスの部分だけでは発生しないので予想としては
key=0の時、1を押す→(どこかでkey=1にしてしまう)→更に『1を押した時。』を実行(既にkey=1なので11になる)
とか
0040ぴゅあ
2006/11/22(水) 11:23:54>1を押したら11、2を押したら22
に関しては挙げられたところに問題があるんではなくて
それらのコードを実装しているところに問題があるんではないでしょうか
それらの処理が"1"とかを押したときのイベントで2回呼び出される実装になってしまっている
ということのようにも思えます
(つまり挙げるならその部分のコードが必要ということ)
些細なことですけど(なので組み方はどっちでもいい)
また学んでいる段階として、以下はまだ考える必要はないのかも知れないですけど
それらのコードに至るまでのところって、押されたキーに対してそのまま文字"1","2"が来てるだろうと思うのですけど
そのままStringとして処理したのでもいいんじゃないかと
>GUIを使って電卓のようなものを
ということなので、"+"とか"-"とかに対して計算を行う際にIntegerなりにして演算してやるとか
コードもスッキリするかも
また"if(key!=0)"は要らないんじゃないかと
示されたコードの+1とか+2とかやっているところは変数に入れて渡すという手がありますよね
(「0を押した時」「1を押した時」とか個別にコードを書く必要がなくなる)
>クリアを押した時。
の動きは>>39に指摘もあるけど
電卓の"→"キーみたいなもののつもりなんでしょうか
クリアと言っているところから"AC","CE"キーのつもりかな?とも
思えたりしますけど
("if(key!=0)"としているところが、また解り難くしているのか?)
004131
2006/11/22(水) 11:51:06先に結果から言うとインスタンス変数とパラメータが両方ともint keyになっていた
為に発生していた模様です。
thisを使い使い分けるか変数名を変えるということで変数名を変えたら解決しまし
た。
>>39
0と1が同じなのは打ち間違いでした。
クリアについては非常に参考になりましたありがとうございます。
>>40
最近よくレスをいただいています。
ありがとうございます。
Stringでの処理とは受け取った引数をそのまま表示ということですか?
if(key!=0)は不必要だと気づきましたのでクリアに関しては削除しました。
その後のイベント処理はpublic void setKey(int param) というメソッドを作り、
押されたボタンを判断して変数で処理するようにいたしました。
現状では未だオブジェクト指向指向としてプログラムを書けないので今後もお世話に
なると思います。
そのときはまたよろしくお願いします。
0042ぴゅあ
2006/11/22(水) 12:15:06>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;でも同じことになるでしょ?
いちおまだこの辺はオブジェクト指向とか関係ないところになるでしょう
0043ぴゅあ
2006/11/22(水) 12:18:13今のままでもいいと思いますよ
0044デフォルトの名無しさん
2006/11/22(水) 14:27:42メソッドの意味がいまだにわかりません
誰か低脳な俺にもわかるように説明してください
0045デフォルトの名無しさん
2006/11/22(水) 14:38:130046デフォルトの名無しさん
2006/11/22(水) 14:42:27オブジェクトファイル形式とバイトコードの読み方が知りたいです。
00478
2006/11/22(水) 14:48:47>オブジェクトファイル形式とバイトコードの読み方
ってのが何を指しているのかよくわからんが、逆アセなら javap で可能。
ニーモックの意味はsunのどっかにVM仕様ドキュメントがあったような。
そんな小難しい命令体系ではないので、少しアセンブラ知ってればなんとなく分かる。
0048ぴゅあ
2006/11/22(水) 15:44:03さすがっ!
そのレスの仕方は思い浮かばなくなってしまってました。。。
0049デフォルトの名無しさん
2006/11/22(水) 16:26:11ttp://java.sun.com/docs/books/vmspec/2nd-edition/html/VMSpecTOC.doc.html
クラスファイル形式は4章、命令セットについては6章あたりかな?
そこだけに限定せず、VM仕様全体にざっと目を通しておくと役に立つこともある。
0050デフォルトの名無しさん
2006/11/22(水) 16:36:44丁寧にどうもありがとうです。
0051デフォルトの名無しさん
2006/11/22(水) 16:42:15ざっくり言えば、
コンピュータに何かをやらせたい時に呼ぶのがメソッド。
どうやらせたいか、その方法(method)を書いてあるのでメソッドという。
0052デフォルトの名無しさん
2006/11/22(水) 17:34:21どういう意味ですか?
BCDがとうこう〜とも言われたような気がします。
0053デフォルトの名無しさん
2006/11/22(水) 17:51:59言語に関係なく、コンピュータが2進数で浮動小数点数を計算する以上避けられない問題
http://javafaq.jp/S029.html
http://www.kyoto-su.ac.jp/~yamada/programming/float.html
0054デフォルトの名無しさん
2006/11/22(水) 20:02:26Appletの中で、値をメソッドにあてるときに
A.B();
という形で間にピリオドを入れますが
これって値が二つのときは使えますか?
0055デフォルトの名無しさん
2006/11/22(水) 20:12:230056デフォルトの名無しさん
2006/11/22(水) 20:44:53ピリオド⇒.
セミコロン⇒;
0057デフォルトの名無しさん
2006/11/22(水) 23:01:26index番目にobjを追加するメソッドを作るにはどう
すれば良いんでしょうか?
自力で調べたいんですが調べてもでてこなくて・・
できれば調べ方などを教えていただけると助かります。
よろしくお願いします。
0058デフォルトの名無しさん
2006/11/22(水) 23:09:350059デフォルトの名無しさん
2006/11/22(水) 23:53:24http://www.mpi-sb.mpg.de/~shin/RA/SCCP2001/ex2/linkedlist.html
0060デフォルトの名無しさん
2006/11/22(水) 23:57:17ttp://www.sm.rim.or.jp/~shishido/list1.html
0061デフォルトの名無しさん
2006/11/23(木) 00:09:31線形リスト
単方向リスト
0062デフォルトの名無しさん
2006/11/23(木) 01:43:47例題だからいくらでもあると思うが。
実装によっては再帰の学習にもなる。
0063デフォルトの名無しさん
2006/11/23(木) 02:34:47Data dt = new Data(a,b,c);
とあったとして、dtをdt_Aray[0]内の文字列に変更したいです。
0064デフォルトの名無しさん
2006/11/23(木) 03:25:30Data dt = new Data(a, b, c)
という前提で
dt = dt_aray[0]としたいと言うことなら、無理。
インスタンスを代入できるのは、インスタンスの属するクラスか、
そのクラスの先祖クラスの変数に対してのみ。(あとインターフェイス)
DataでなくObject dtなら可能。
0065ぴゅあ
2006/11/23(木) 03:38:17いや… それらの文章がどう説明間違いしているのか
色々受け取れて推測し難いんですよね。。。
前者と後者で全然別のことを言っているようにも受け取れるし
もうちょっと考えて
詳しく書き直してみて欲しいです
0066デフォルトの名無しさん
2006/11/23(木) 04:10:51dt = 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さんの仰った通り無理ということでしたら、
回避策として何かありましたら教えてもらえないでしょうか。
0067デフォルトの名無しさん
2006/11/23(木) 04:48:43これ、どういうエラーよ?
すげえ急いでるからダッシュで教えてくれ!
マジで大至急!(;´Д`)困ってる
エラー内容:
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]
0068デフォルトの名無しさん
2006/11/23(木) 04:56:51どういうプログラムでどういう状況でエラーが出たか
ずっと動いてるプログラムが急にエラー吐いたのか開発段階でのバグとりなのか
とりあえず臭い所にtrycatch噛ませてログとれ
0069デフォルトの名無しさん
2006/11/23(木) 04:57:42�@64ビット環境なのに、32ビット専用のDLLを読み込もうとしているので、
インポートやクラスパス設定ミス。
�AJVMがAMD製の64ビットCPUをサポートしてないので、
AMD製のCPUに対して命令できない。つまり動かない。
0070デフォルトの名無しさん
2006/11/23(木) 05:00:260071デフォルトの名無しさん
2006/11/23(木) 05:08:290072デフォルトの名無しさん
2006/11/23(木) 05:11:430073デフォルトの名無しさん
2006/11/23(木) 05:16:51ttp://strangeworld-honten.com/cgi-bin/bbs.cgi
0074デフォルトの名無しさん
2006/11/23(木) 05:21:220075デフォルトの名無しさん
2006/11/23(木) 06:16:08とりあえず、起動する時に
-d32 オプションで上げてみるとかだな
0076デフォルトの名無しさん
2006/11/23(木) 06:25:02> 投稿者: 投稿日:2006/11/23(木)06時21分13秒 ■ ★ ◆
> > あのときはゲスッとアブナイからだな
> 両者とも跡形もなく消えたな 笑
ゲスッはiRCになっただろ
参考:2006/11/23(木)06時02分03秒
0077デフォルトの名無しさん
2006/11/23(木) 06:30:41投稿者: 投稿日:2006/11/23(木)06時29分39秒 ■ ★
なあ、ゲスッってiRCになったのか?
0078デフォルトの名無しさん
2006/11/23(木) 08:27:10threadのwhileループ内で、Socketオブジェクトをnewしては(connectした後)
closeするのを繰り返してるんだけど、長時間経つと非ヒープ領域がリークして
いきます。close後にnullはしているんだけどリークしていきます。
0079デフォルトの名無しさん
2006/11/23(木) 08:28:33public 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;
}
}
}
0080デフォルトの名無しさん
2006/11/23(木) 08:29:13何度も同じオブジェクトのnewとnullを繰り返してるコーディング自体が
java的にはあんまりよくねーとか、コーディングの問題もあるんでないの?
とかも思います。
(nullせずに、addressとかのプロパティ上書きして再connectするか、
thread自体抜けて起こしなおすとか・・newの前のSocketオブジェクト宣言
自体がwhile内で何度も呼ばれてるのも気になるが。)
こういうコーディングってそれ自体問題があるとはただちに言えないんでしょうか。
ちなみにおんなじthreadが100個ぐらい並列で起きていています。
0081デフォルトの名無しさん
2006/11/23(木) 12:36:08周りからみるとちっともおもしろくない
それに気付けないところが痛いんだよな
なんか実生活でもういてそうな感じ
0082デフォルトの名無しさん
2006/11/23(木) 12:36:520083デフォルトの名無しさん
2006/11/23(木) 12:40:120084デフォルトの名無しさん
2006/11/23(木) 12:42:260085デフォルトの名無しさん
2006/11/23(木) 12:43:590086デフォルトの名無しさん
2006/11/23(木) 12:44:400087デフォルトの名無しさん
2006/11/23(木) 12:49:30synchronized( 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;
}
}
}
0088ぴゅあ
2006/11/23(木) 12:52:57なるほど
>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部分と置き換えることが出来たとして
後に続くコードでその変数名をどう扱うつもりだったのかも判らないけど…)
同様に
テキストファイルにある並びに対する順序性についても
重要ではないだろうと思うので問題ないんでしょう
ということでどうですか?
0089デフォルトの名無しさん
2006/11/23(木) 12:56:19暫定でも子供扱いされておもちゃにされて(;´Д`)本店でも子供扱いされて・・・なんか憐れだ
0090デフォルトの名無しさん
2006/11/23(木) 13:05:47コラム:iRCはゲスッに吸収されたのか
最近本店で、iRCがゲスッになったというまことしやかなデマが流れた。
ここでゲスッについて振り返っておきたい。
ゲスッが誕生したのは1996年、あやしいが県人会に引っ越してくる前である。
当初単なるアングラ掲示板であったゲスッ掲示板は、
あやしいから追い出された一部の過激派メンバーによって掲示板荒らしグループへと変貌した。
そして翌97年、組織的に掲示板を荒らす初のグループとして誕生したのである。
その後ゲスッは98年のありがとう黒マグロ事件を経て徐々に規模を縮小、
99年のゲスッメモリアル閉鎖にともない歴史上から姿を消した。
しかし2004年、突如として彼らはiRCに出現したのだ。
ゲスッがiRCを吸収したのではない。iRCがゲスッを吸収したのである。
これによりiRC幹部だったVVSおじたんがゲスッ幹部に移籍するなどの事件が発生したが、
ゲスッ統括の権限はすべてiRCに委譲されたのだ。
以後ゲスッによる様々な掲示板へのiRC宣伝などが行われ、
iRCといえば荒らし、といった現在の体制が構築されたのである。
0091デフォルトの名無しさん
2006/11/23(木) 13:16:44俺を新人扱いすんな。セガBBS古参なめんな。2CHの歴史なんざまだ6年ほどだろ確か。
確かに見るようになったのはネバダ事件以降だがアングラ常連のわびさびぐらい心得てる。
アングラ常連の分際で吼えるな。
0092デフォルトの名無しさん
2006/11/23(木) 13:17:45http://book3.2ch.net/test/read.cgi/poem/1164122962/
0093デフォルトの名無しさん
2006/11/23(木) 13:18:40おちょくり派の心の闇は深いね。
俺トリップを使わない。2ちゃんねるのわびさびが殺がれるしな。
余裕を持てボケ
0094高等遊民
2006/11/23(木) 13:18:470095デフォルトの名無しさん
2006/11/23(木) 13:19:580096ザンコロ
2006/11/23(木) 13:22:520097デフォルトの名無しさん
2006/11/23(木) 13:25:22特上頼まないと勿体無いだろ
0098高等遊民
2006/11/23(木) 13:26:050099デフォルトの名無しさん
2006/11/23(木) 13:28:10おまんこ教への祈りをヽ(´ー`)ノ
0100デフォルトの名無しさん
2006/11/23(木) 13:33:030101デフォルトの名無しさん
2006/11/23(木) 13:38:060102デフォルトの名無しさん
2006/11/23(木) 13:39:160103デフォルトの名無しさん
2006/11/23(木) 14:04:54あまり詳しくありませんが、こんなのを発見。
使い古されたThreadがThreadGroupに登録されてたままになっていたりはしませんか?
http://www.aerith.net/java/thread-memory-leak-j.html
0104ぴゅあ
2006/11/23(木) 14:33:41>>79のrunメソッドの中でのwhileループでの話とされているところと
>>80のおんなじthreadが100個ぐらいとの関わりも…
>>78のリークとは具体的に何を指しているのか。。。
bindしていたりするところの絡みとか
暫くやってないので検証してみないと…ではあるけど
立て続けに(無闇矢鱈と)connect/disconnect(close)を繰り返しているのは
ソケットとしても好ましくないような気がしたりですけど。。。
010566
2006/11/23(木) 14:44:2688さんの仰るとおり、続くコードでその変数はインスタンスするときに使うだけで
特にファイル名から指定する必要はありませんでした。
変数名は確かに勝手に変えられると困ることが分かりました。
これからHashMapを実装して試してみようと思います。
とても丁寧に答えてくださりありがとうございました。
0106ぴゅあ
2006/11/23(木) 14:58:22>続くコードでその変数はインスタンスするときに使うだけで
>特にファイル名から指定する必要はありませんでした。
("ファイル名"="テキストファイルの中身name"のことかな?と思ったりしますけど)
ということから、ちょっと気になったので補足したいと思いますけど
テキストファイルの中のnameが変数名として区別するつもりのものであったとするなら
List(ArrayListとか)でnew Data(a,b,c)を格納すればいいでしょう
この場合にはテキストファイルの各行の並びが(保証もされて)インデックス0〜n-1として扱えます
Listで済ませられるものなら、Mapよりコストも下げられます
0107デフォルトの名無しさん
2006/11/23(木) 15:00:26あー、同じ人なんです。
行数制限あったので3分割してみました。
ここID出ないんだね・・。
リークは非ヒープ領域がリークします。
jconsoleの表示でいうと右下の縦棒グラフの一番右側。
0108デフォルトの名無しさん
2006/11/23(木) 15:34:14教えていただいたURLの情報で、リークする部分が非ヒープ領域か
どうなのか確認する必要はありますが、もしこの例がビンゴだとした場合
ThreadGroupからの参照を外そうとすると、thread自体は一度潰して
参照の後始末がされるように仕向ける必要があるということになりますね。
(ちなみに環境はJDK1.5、RHEL3 u6です。)
となると、常駐するthread(生存期間が長いthread)でオブジェクトの生成・廃棄
を繰り返す設計自体がそもそもアホなんでしょうか・・。
その辺の塩梅が開発(つーかクラス設計?)やらないんでよく分からんのですが。
。
0109ぴゅあ
2006/11/23(木) 15:34:18(そうそう時間も開いてるし>>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の言っているようなところだろうと思いますけど
「右下の縦棒グラフの一番右側」を見てリークと判断したところとかは
オブジェクトが未使用になっても直ぐにメモリ上から開放されるわけではないという仕組み(ガベージコレクション)から
リークしていると思ってしまったとかということはないですか?
0111ぴゅあ
2006/11/23(木) 15:40:36>運用SE
ということなので、周りに開発メンバー居たりします?と思ったりしますけど
もし居るなら、話を投げてみるのが早いでしょう
>ThreadGroupからの参照を外そうとすると
例えばこの辺とか読んでみると参考になったりするかも?
http://www.aerith.net/java/thread-memory-leak-j.html
0112ぴゅあ
2006/11/23(木) 15:43:12そこんところはそうだろうと読み取れました(笑)
0113デフォルトの名無しさん
2006/11/23(木) 15:57:2880でし。スレ汚しすんません。
実況板以外では初書込みなんで不慣れでスンマセン。
実は開発は他社(つーか顧客!)さんで、そこにOS売った販売元のSEつーか
運用・製品サポートしてる部隊の雇われなんです。
JVMなんだから開発側で調べろよボケ!で突き返そうとしたら上に止められました。
何でもJVMのバグじゃねぇ?という質問に見解なり、答えなきゃいけないそうで・・。
0114ぴゅあ
2006/11/23(木) 16:11:49そうなんですか
でも飽くまで
>運用・製品サポート
という立ち場なら開発元と連携とって
販売先とを繋ぐのがサポートの役目だと思ったりしますけどね
どうなんだろう。。。(>上に止められました。)
その製品自身を(jconsoleとかで分析できるものなら)分析するくらいまでは
サポートとしての範疇であるかも…としても
ややその範疇を越えてきているような気も…?
(開発元から完全に引き取ってしまったものとかなら
自力で(無理なら解る人を募るとか)なんとかするしかないですが)
0115デフォルトの名無しさん
2006/11/23(木) 16:15:36たびたびスレ汚しすんません。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(実装部分?)のソースコード公開すると発表してましたが・・
0116ぴゅあ
2006/11/23(木) 16:50:53そう見ればいいのか・・・
でも
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/management/jconsole.html
にはNon-Heapが3本あって2つしか説明ないのはなんでだろう…
コードキャッシュということならHotSpot JVMに疑い濃厚っぽいですよね
突き詰めるにはかなり困難そう。。。
>今月Sunがそのうちjava(実装部分?)のソースコード公開すると発表してましたが・・
発表記事は見てないけど、そんな話をしているのは見掛けました
プラットホーム毎のネイティブコード部分が含まれてくるんだろうか?とか
01171/2
2006/11/23(木) 17:07:12と言う事を Findbugs の指摘や Effective Java の項目 18 で見ました。
例えば、単に内部メソッド間の受け渡しにしか利用しないデータクラスを
定義するとすると、それを static にした方が良いと言うことでしょうか?
01182/3
2006/11/23(木) 17:08:29泥臭く書くと以下のようなケースです。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;
}
}
}
01193/3
2006/11/23(木) 17:09:11ある Foo インスタンス foo1 の Bar と、
他の Foo インスタンス foo2 の Bar が別インスタンスになるかどうか、
と言うことです。なんとなく、static とつけると共用されてしまいそうな
気がしてしまうのですが、そうではないと言うことなのでしょうか?
0120デフォルトの名無しさん
2006/11/23(木) 17:14:42csvファイルから','区切りでデータを読み込んで、配列に入れたいのですが上手く動作しません。
何がいけないのでしょうか?
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("入出力エラーです");
}
}
0121デフォルトの名無しさん
2006/11/23(木) 17:24:04BufferedReader使うと行単位で読み取りできて簡単だよ。readLine()ってのがある。
あとは行ごとにString#split(String)してカンマ区切りで配列にすれば一丁上がり。
0122デフォルトの名無しさん
2006/11/23(木) 17:43:24BufferedReaderを使って、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);
}
という具合でよろしいのでしょうか?
0123デフォルトの名無しさん
2006/11/23(木) 18:00:24BufferedReader 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)で検索ぐらいしてもいいんじゃないか?
0124デフォルトの名無しさん
2006/11/23(木) 18:26:11読み込んだファイルを1つのセル毎に配列に入れることって可能ですか?
0125デフォルトの名無しさん
2006/11/23(木) 18:27:34> ある Foo インスタンス foo1 の Bar と、
> 他の Foo インスタンス foo2 の Bar が別インスタンスになるかどうか、
別。
他の言語でもよくあるけど、予約語を増やさないために、
一つの予約語に複数の意味を持たせる事がある。
0126デフォルトの名無しさん
2006/11/23(木) 18:31:01ありがとうございます。安心しました。
しかしこのあたりの違いは間違いを起こしやすそうですね…
0127ぴゅあ
2006/11/23(木) 18:35:09>Findbugs の指摘や Effective Java の項目 18
にどういうことが書かれているか判らないあちしとしては
それに習って>>117が考えたコードも並べてくれると
どういうことを言っているのか判りやすいし
仮に知っていたとしても、或いは他の人にも
それがあると>>117がどう解釈しているかも
判ったりするんじゃないだろうかと思ったりします
「static class」ググッてみた結果として
http://wisdom.sakura.ne.jp/programming/java/java46.html
のような話ではないだろうかと思ってみたりしますけど
(内容の判断はし切れないところもあるけど)読んでみるとよいのかも
>なんとなく、static とつけると共用されてしまいそうな
>気がしてしまうのですが、そうではないと言うことなのでしょうか?
恐らく
>class Bar {
を
>static class Bar {
とするようなことを言われているんだろうと思いますが
そこまでコードが書けているのなら、簡単な検証コードを書いてみて
実際に自分の目で確認してみるのがいいんじゃないかと
0128デフォルトの名無しさん
2006/11/23(木) 19:22:12前から思ってたけど無駄に長いよねお前
0129デフォルトの名無しさん
2006/11/23(木) 19:45:04やりたいことはこう?
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に格納される。
0130デフォルトの名無しさん
2006/11/23(木) 21:53:27static宣言されていないクラスは「エンクロージングインスタンス」に対して
暗黙の参照をもつためクラスの依存関係ができてしまうため良くないってこと。
エンクロージングクラスのprivate宣言されている部分に対してアクセスしない場合は
staticのほうがいいよ。
書籍「Java Puzzlers」にもそのことはのってるよ。
あとエンクロージングクラスについてここが一番分かりやすかった。
[jfriends-ml 10128] Re: Effective Java 第 1 回議事録
ttp://61.196.224.14/~ttakahashi/bof/logs/2002/msg00144.html
0131デフォルトの名無しさん
2006/11/23(木) 22:19:280132デフォルトの名無しさん
2006/11/23(木) 22:32:03何のOSだよ
0133デフォルトの名無しさん
2006/11/23(木) 22:32:350134デフォルトの名無しさん
2006/11/23(木) 22:39:28サービスに登録すればいいんじゃね
0135デフォルトの名無しさん
2006/11/23(木) 23:06:050136デフォルトの名無しさん
2006/11/23(木) 23:27:34Windowsのどのバージョンかに依っても対処法が違ってくる
更にいえばPPC版やAlpha版とかの可能性もあるから
「windows」なんて横着せずにちゃんと書いて貰いたい
0137デフォルトの名無しさん
2006/11/23(木) 23:47:54ありがとうございます。
しかし教えて頂いた方法だと、エラーがでてしまうのですが。
0138デフォルトの名無しさん
2006/11/23(木) 23:48:43すまぬ
windowsXP SP2です。
どうしても起動時にVMを常駐しろとの要望があってさ・・・
(いらねぇと俺は思うんだけどね)
0139デフォルトの名無しさん
2006/11/23(木) 23:54:25エラーが出るじゃワカランよ。そのエラーを書いたら?
0140デフォルトの名無しさん
2006/11/24(金) 00:09:58そうですよね。すいません。
エラー内容は「'(' または '[' がありません。」
ArrayList<String> list = new ArrayList<String>();
と出てしまいます。ソース全文は
'(' または '[' がありません。
ArrayList<String> list = new ArrayList<String>();
0141デフォルトの名無しさん
2006/11/24(金) 00:13:57ソースは、
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]);
}
}
です.何度もすみません。
0142デフォルトの名無しさん
2006/11/24(金) 00:20:25>>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()][]);
と書くといいよ。
0143デフォルトの名無しさん
2006/11/24(金) 00:26:30コンパイルできました!!どうやら古いverでした。
本当に助かりました。ありがとうございます!!
0144デフォルトの名無しさん
2006/11/24(金) 01:52:47103で書き込んだ者です。
jconsoleや、code cacheは今回初めて名前を知ったのですが、
あなたのコードを試しに動作させたところ、確かにcode cashが
増えていくようです。
今度は全てのコードを取り去った空のwhile文だけを動かして
jconsoleで測定してみましたが、やはりcode cascheは同じように
増えていきます。なのでSocketは無関係ではないでしょうか?
また、-XX:ReservedCodeCacheSize=500k などと小さな値を指定して
動作させてみたところ今度は特に増える様子はありませんでした。
逆にこの値を増やすと、動作時のメモリも増えていきます。
疑問なのですが、これはバグと言えるのでしょうか。
何をもってバグであると相手は主張しているのでしょうか。
(OutOfMemoryErrorが発生しているのでしょうか?)
動作させた環境はJava HotSpot(TM) Client VM バージョン 1.5.0_09-b03です。
0145デフォルトの名無しさん
2006/11/24(金) 03:04:42できないものはできないとはっきり言え
0146デフォルトの名無しさん
2006/11/24(金) 03:14:40何をもってバグであると相手は主張しているのかそれを知っているのはその相手だけ
0147デフォルトの名無しさん
2006/11/24(金) 06:11:50そんなメモリリークがらみのバグが三社ともにスルーされてるとは思えないし。
0148ぴゅあ
2006/11/24(金) 07:43:21>>144が調べてくれたことを読んで、ふと思ったんですけど
もしかして販売先のお客様で障害が発生してというのではなくて
(或いは全く違う原因かも知れない障害が発生してのことかも知れませんが)
jconsoleで見てみたらcode cacheが増えていっていた
ということではないですよね?
或いはお客様からそういう指摘があったとか
また、キャッシュということですから
満杯なるまで使われることもあるし
適当なところで古いキャッシュを捨てて再利用する筈ですが
それが溢れて(溢れているようなタイミングで)異常終了をしているように見えた
とかいうところから追求していたんだろうか
と、今更ながら思えたんですけど
0149デフォルトの名無しさん
2006/11/24(金) 12:20:04class 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にならないのはなぜ???
}
}
0150デフォルトの名無しさん
2006/11/24(金) 12:30:28Stringは変更のほとんどない文字列用のクラス。
頻繁な変更での性能を求めるなら、バージョンにも依るけど、
StringBufferかStringBuilderクラスを利用する。
0151デフォルトの名無しさん
2006/11/24(金) 12:37:11>Stringは変更のほとんどない文字列用のクラス。
なるほど。
Stringのconcat()のドキュメントにはこうありました。
>String オブジェクトによって表される文字列と引数文字列によって表される文字列とを
>連結したものを表す新しい String オブジェクトが生成されます。
(1) s2 = s2.concat("e"); //新たに生成されたオブジェクトのリファレンスをs2に代入
(2) s2.concat("e"); //新たに生成されたオブジェクトは破棄されちゃう
(3) s2 = s2 + 'e'; //(1)とまったく同じ動作。
こうなるみたいですね。どうも勘違いしてました。
0152デフォルトの名無しさん
2006/11/24(金) 18:28:020153デフォルトの名無しさん
2006/11/24(金) 18:53:040154デフォルトの名無しさん
2006/11/24(金) 19:02:260155デフォルトの名無しさん
2006/11/24(金) 19:26:03どうやるの?
0156デフォルトの名無しさん
2006/11/24(金) 19:58:59} catch (...) {
}
を使う。
じゃなくてほんとは、文字列をプログラム断片として評価する方法をしりたいんじゃないのか?
0157デフォルトの名無しさん
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が必要とあり、試したのですが効果ないようです
正しい形式で送信するには、まだ不足があるのでしょうか?
0158デフォルトの名無しさん
2006/11/24(金) 20:08:25現在JPanel上にJTable とその他多数のコンポーネントが配置されています。
TableCellRendererインターフェースを使ってテーブルのレンダラーを自作で書いていたんですが、
他のコンポーネントがフォーカスを掛けられない状態のときはJTableもフォーカスを掛けられない状態でも
ちゃんと望んだデータを表示するのですが、どこか他のコンポーネントにかかっているとデータを変えても、
JTable上をクリックしないと表示がされません。TableCellRendererを明示的にコールする方法があれば教えてください。
クリックをしなくてもレンダラーをコールする方法を教えてください。
0159158
2006/11/24(金) 20:17:020160デフォルトの名無しさん
2006/11/24(金) 22:11:40javaで、ある特定のフォルダ内にあるファイル名だけを全部取得する
というようなことはできるのでしょうか?
0161デフォルトの名無しさん
2006/11/24(金) 22:14:16File[] files = new File("特定のフォルダ").listFiles()
0162デフォルトの名無しさん
2006/11/24(金) 22:27:22ありがとう!!
0163デフォルトの名無しさん
2006/11/24(金) 22:35:39//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;
}
}
0164163の続き
2006/11/24(金) 22:37:06try{
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!\");");
}
}
0165デフォルトの名無しさん
2006/11/24(金) 23:11:11カスタムドックレットを作っています。
DocletAPIって
javadocコメントやタグ以外の
ソース本体を参照することってできないのですか?
特定のリテラルやクラスの参照があるかどうか
チェックしたいんですが。
0166デフォルトの名無しさん
2006/11/24(金) 23:48:030167デフォルトの名無しさん
2006/11/25(土) 00:13:291.5以前では標準ライブラリに含まれてないけど、
BeanScriptingFramework とかもあるよ。
まぁ、スクリプト言語と違って、コンテキスト渡そうとすると
凄く面倒だからスクリプト言語と同じ感覚で使うのは無理かもだけど。
0168157
2006/11/25(土) 01:16:53結論から言うと、そもそもデータが送れていなかったようです
値を渡したいだけの場合でもインプット側のストリームも開かないと通信してくれなかったらしく
それを追加したら問題なく動作してくれました
0169デフォルトの名無しさん
2006/11/25(土) 02:23:22実行中に状況に応じて変更することは可能なのだろうか。
0170ぴゅあ
2006/11/25(土) 03:32:04いちお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らしく使えるんじゃないかと思うけど。。。
0171デフォルトの名無しさん
2006/11/25(土) 03:54:14「書き込むと、文字列をスタイル付きでそのTextPaneにappendする」
という働きをするOutputStreamが得られるものを作ったことがあるんだが、
どこかに埋もれてるorz
System.setOutとかに設定してやればそのままprintlnとか出来た。
0172デフォルトの名無しさん
2006/11/25(土) 05:47:37pure javaじゃなくなるけどJava Cursesとか
>>170
windowsに限定してもエスケープシーケンスはcmdでは使えなかった気がする
0173デフォルトの名無しさん
2006/11/25(土) 09:55:13それは楽しみですね
0174ぴゅあ
2006/11/25(土) 13:29:45>cmdでは使えなかった気がする
ということをリンク先に書いてあるみたいですよ
でもそこに書いてあることが何処までできるのかは判らないけど
(起きてから簡単にやってみてはみたけどそれっぽくならない感じだし…
NT系ではシーケンスが変わったとか何処かで見たような気がする?のは
気の所為のような気もする。。。)
0175JAVO
2006/11/25(土) 13:49:44<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;
}
'>
0176JAVO
2006/11/25(土) 13:51:141、ボタンを押した回数。
2、ランダムナンバー1〜6のうち1が出た回数。
3、ランダムナンバー1〜6のうち6が出た回数。
が出るようにしたいのですがどうしてもうまく作動してくれません。
何が問題なのでしょうか?
問題だと思われる箇所を抜き出して載せてみました。
よろしくおねがいします。
0177デフォルトの名無しさん
2006/11/25(土) 14:11:260178デフォルトの名無しさん
2006/11/25(土) 14:11:45> が出るようにしたいのですがどうしてもうまく作動してくれません。
> 何が問題なのでしょうか?
「プログラムは思ったとおりに動かない、書いたとおりに動く」
初心にでも戻るんだね
0179デフォルトの名無しさん
2006/11/25(土) 14:15:21JavaScriptはスレ違い。ここはJavaスレなんで。
0180デフォルトの名無しさん
2006/11/25(土) 15:13:591 Beansをコンパイルする
2 -classpath $TOMCAT_HOME/common/lib/servlet-api.jarをつけてサーブレットをコンパイルする
という順でしているのですが2をやろうとすると
シンボルが見つけられませんとメッセージが出ます
Beansを参照していないような気がします
どうすればいいのでしょうか?
ぐぐったのですが解決しませんでした
0181デフォルトの名無しさん
2006/11/25(土) 15:18:03-classpath $TOMCAT_HOME/common/lib/servlet-api.jar:$PATH_TO_BEANS とかやんないとダメ。
-classpath は、既存のクラスパスに追加するんじゃなくて上書きだから、
-classpath に指定されてない場所にあるクラスはコンパイル時に使用されない。
0182JAVO
2006/11/25(土) 15:31:26ども。解決しました。
variable,text nameに数記号使えないなんて知らなかったもんで。
スレ違いということすらわからない初心者なもんで、、失礼しました。
0183デフォルトの名無しさん
2006/11/25(土) 15:39:04さっそくのレスありがとうございます
Beanが同じフォルダにある場合、
-classpath .:$TOMCAT_HOME/common/lib/servlet-api.jar
でもいいのでしょうか?
ちなみにこれをやると
Beanのクラスは参照してるが、今度はjavax.servletやjavax.servlet.httpが
存在しないと表示されます
どうしたもんでしょうか?
0184デフォルトの名無しさん
2006/11/25(土) 16:07:33Ballクラスをいじって実行したらボールの描写が汚くなったのですが
ボールの動きが見えるようにするにはどうしたらいいですか?
むしろこれは宿題スレに行けですか?
0185ぴゅあ
2006/11/25(土) 16:08:37":"でセパレートされているところを見るとUNIX/Linux上だろうと思いますけど
$TOMCAT_HOME/common/lib/servlet-api.jarのパスが合ってないとか
$TOMCAT_HOMEが展開されていないとかいうのはないんですよね?
0186184
2006/11/25(土) 16:17:12HashSet<Ball> hs= new HashSet<Ball>();
を使うあたりです
0187デフォルトの名無しさん
2006/11/25(土) 16:34:21基本的なことだけど、
Beansとのつなぎ、データの出し入れはJSPのプロパティを利用する。
すなはちServlet-JSP-<jsp:useBean・・・-Beansと繋ぐ(MVCの基本だけど)
また、EJBに関しても直接ServletやJSPとつなげないから、JSPのJavaBeans経由(JSPのJavaBeansプロパティ経由)でつなぐ。
他にやり方があるのかどうかは知らないけれど、こういう基本的なことだったら、
ttp://www.amazon.co.jp/gp/product/4774114111
が良く整理されてて分かりやすいよ。蛇足だったらスマソ。
0188ぴゅあ
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は移動量のつもりだろうと思うけど、その間を繋ぐ描画がなさそうなところとかが
>汚くなった
ということになっていたりなんでしょうか
0189ぴゅあ
2006/11/25(土) 17:03:49Mainクラスの
>(引数を書かなければ,ボールは1個だけとなる。)
はそうなってないんでは?
またmainメソッド内のfor文
>i!=n;
とかは、ちょっとだけ気になったりします。。。
0190デフォルトの名無しさん
2006/11/25(土) 20:54:24細かい機能についての質問で申し訳ないのですが、
階層に合わせてスペースを入れて位置を揃えてくれる機能はありませんでしょうか?
0192デフォルトの名無しさん
2006/11/25(土) 21:35:55できました!かなり便利になりました。
ありがとうございました!
0193デフォルトの名無しさん
2006/11/25(土) 23:04:21public void AAA(String src, String src2, ....... )
と行きたいんですが。。
お願いします。
0194デフォルトの名無しさん
2006/11/25(土) 23:25:22AAA("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);
}
}
0195デフォルトの名無しさん
2006/11/25(土) 23:25:310196デフォルトの名無しさん
2006/11/25(土) 23:28:49解決しました、ありがとうございました。
0197ぴゅあ
2006/11/25(土) 23:36:24Java2 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)
と書いたのと同様になります
0198デフォルトの名無しさん
2006/11/25(土) 23:51:20たのむから Java2 5.0 なんて書きかたしないでくれよ
0199デフォルトの名無しさん
2006/11/26(日) 00:07:070200デフォルトの名無しさん
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");
}
}
この解を配列としてあつかうにはどう書き足したらいいか
分かりません。教えて頂きたいです・・・
0201デフォルトの名無しさん
2006/11/26(日) 01:47:32あとnextIntにおけるseedとはどういう意味があるのでしょうか?
よろしければご教授ください。
お願いします。
0202デフォルトの名無しさん
2006/11/26(日) 01:57:37(自分にとって)とても奇妙な事に遭遇しました。是非下のコードを(VisualEditorで書きました)
コピペして、このオブジェクト保持する main クラスを書いて実行ボタンを押してみて下さい。
ProgressBar の見た目が、test() メソッドの実行が終了するまで変化しません。
ところが、この test() メソッドを main クラスから実行すると、なんと動くのです。
いったいどうしてこんな動きをするのでしょうか?
また、実行ボタンから ProgressBar を正常に動かす方法があればどうか教えて下さい。
宜しくお願いします。
0203202
2006/11/26(日) 01:58:33import 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;
}
0204202
2006/11/26(日) 01:59:05if (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);
}
}
}
0205デフォルトの名無しさん
2006/11/26(日) 02:11:23double 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");
}
}
0206デフォルトの名無しさん
2006/11/26(日) 02:36:55たぶんJProgressBarのsetValueメソッドを呼ぶところを
SwingスレッドにinvokeLaterで渡してやるといいはず。
0207202
2006/11/26(日) 02:50:01レスして下さってありがとうございます。
でも何をどうして良いのか何にもわかりません・・・。
Swing スレッドが何で、何をどう渡すのでしょう・・・?
ごめんなさい、本当の初心者で。
宜しかったら詳しく教えてくれませんか?
何かを読め、と言われたら読みますのでどうか・・。
0208デフォルトの名無しさん
2006/11/26(日) 02:58:56俺>>206じゃないけどワープはいかんと思うよ。
いきなりGUI使おうって思っても正直凄く難しい。
自分も前いきなりGUIやろうと思ったけど全くわからなかった。
最近やっとAPIの読み方わかってきたし少しくらい考えて書けるようになってきた。
それでもまだGUIを作るのには何日も掛かるし考えも中々まとまらない。
悪いことは言わないから何か作りたいならやさしいJavaくらいは読んでおけ。
GUIが使いたいならSwingの本何かしら読んでおくといいと思う。
0209206
2006/11/26(日) 03:11:57Swingではイベントディスパッチスレッドというスレッドが裏で走ってて、
GUI上の見た目を変化させる処理はすべて
このスレッドから実行しないといけないことになってるんだ。
そのために使うメソッドがSwingUtilities.invokeLaterな。
引数で指定した処理をイベントディスパッチスレッドで実行してくれる。
だから jProgressBar.setValue(j)の代わりに
SwingUtilities.invokeLater(new Runnable() { jProgressBar.setValue(j); })
とかすればいいはず。
0210202
2006/11/26(日) 03:12:08確かに GUI は簡単にかじっただけなので難しいです・・。
言われた通り、足元をもっと踏み固めて進んだほうが良いですよね。
ほんとそう思います。せめて難しい事にチャレンジしながらでも基礎は固めようと思います。
208さんのように考えながら作れる頑張りたいですもんね。忠告ありがとう。
ところで今、ちょっとスレッドに付いて調べていました。そして Runnable ってインターフェースを
見つけたんですが、これを Test2 に実装すればいいのでしょうか?
足元も緩いのですが、今からチャレンジしてみます。
208さん重ねてですが本当にありがとう。頑張りますね!
0211202
2006/11/26(日) 03:16:10レスがニアミスしました。親切で丁寧ににありがとうございます!
Runnable はインナークラスなんですね!勉強したつもりでも自分の頭で思いつきませんでした・・。
でも良い所まで言っていたみたいで少しうれしいです。
早速やってみます。本当にありがとうございました!
0212デフォルトの名無しさん
2006/11/26(日) 04:02:12スレッド越しについて色々調べてきてね
0213202
2006/11/26(日) 04:25:03自分であっぷした>>204の test() メソッドもちょっと間違ってるし、
Runnable() インナークラスも上手くいきませんでした。
run() メソッド内の jProgress.setValue(j); の引数 j がアウタークラス
の変数なので final しないと参照できないのです。それで、Runnable()
のクラス定義する部分を他のメソッドに置いて、そのメソッドに final
した j を渡して実行してみました。でも結果は同じでした。
やっぱり足元が緩い自分には荷が重いのかもしれません。残念です。
今日はもうダウンします。
お付き合い頂きありがとうございました。
>>212
スレッド越しですね。一応調べてみます。
0214デフォルトの名無しさん
2006/11/26(日) 06:39:20jButton.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に食わせてやるべきだろうね
0215デフォルトの名無しさん
2006/11/26(日) 06:40:37簡単な計算(足し算)ソフトを作ってるんですが
ボタン、テキストフィールド3つ(txt1 txt2 txt3) を表示させることが出来たんですが
ボタンをおせばtxt3のところに txt1 + txt2 の答えを表示させるにはどうすればいいんですか?
分かりにくい文章かもしれませんがお願いします
0216デフォルトの名無しさん
2006/11/26(日) 06:49:03ボタンにaddActionListenerでActionListenerを実装したクラスを登録。
そのクラスのactionPerformedメソッドの中で、
txt1 + txt2の答をtxt3のsetTextメソッドで設定する。
0217デフォルトの名無しさん
2006/11/26(日) 07:00:13ありがとうです
0218デフォルトの名無しさん
2006/11/26(日) 07:09:33jがローカル変数なので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);
}
}
0219デフォルトの名無しさん
2006/11/26(日) 07:34:18nextInt()というのはjava.util.Randomのメソッドのこと?
Math#random()に対応するのはRandom#nextDouble()
どちらも0〜1の範囲の乱数を返す。
Math#random()は1を含まないけど、Random#nextDouble()が1を含むかどうかは忘れた。
Math.random()は乱数の種をこちらから指定できないので、
検証その他の目的で同じ乱数列を何度も使いたいときには使えない。
その用途にはjava.util.Randomの方を選択。
もちろん乱数列を全て保存するのなら別だが。
乱数の種seedは擬似乱数を生成するときの初期値として使う。
0220デフォルトの名無しさん
2006/11/26(日) 10:24:48アフォな事を質問します。
javaランタイム入ってないのに、なんでjavaアプレットが動作するのでしょうか?
javaアプレットはランタイム不要?
0221デフォルトの名無しさん
2006/11/26(日) 10:40:08以下のどれかだろう。
・実はこっそりとSun JREがプリインストールされている。IBMとかDellとかのPCにはプリインストールされてる。
・アプレット起動時にJREがインストールされたが、それに気づかなかった。
・Microsoft製のJRE(化石時代の古い代物)ががんばってる。Windows XP SP1(?)以前まではインストールされていた。
0222デフォルトの名無しさん
2006/11/26(日) 10:43:110223デフォルトの名無しさん
2006/11/26(日) 10:54:52つか
> javaランタイム入ってないのに
はどうやって確信を得たんだ?
0224デフォルトの名無しさん
2006/11/26(日) 11:29:40java.util.Randomの事です。エスパーありがとうございます。
Random.nextDouble()の方も1.0は含まないと思います。
Rando.nextInt(5)としても0〜4までしか生成されませんので。
普段使いでは(int)(Math.random()*5);のように使っているのですがJ2MEだと
Math.random()は使えずにRandom.nextInt()のみだったので気になりました。
両者比べても大して違いは見られないようなので擬似乱数として
使わないのならimportしない分Math.random()の方が手軽に使えますね。
ありがとうございました。
0225デフォルトの名無しさん
2006/11/26(日) 11:41:090226デフォルトの名無しさん
2006/11/26(日) 12:21:44フリーの「SUN ONE STUDIO 4」を ttp://www.sun.co.jp 上で探したんですが
指定された該当ページにいくと404になっいて、いくら探索しても見つかりません
どこにあるか教えていただけませんか?
0227ぴゅあ
2006/11/26(日) 12:54:58イベントが起こった中で長い処理(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が一連の処理の中で占める割合は僅かなものになるでしょうから
"遅い"というようなことにはならないと思いますよ
0228デフォルトの名無しさん
2006/11/26(日) 13:22:02「疑似乱数として使わないのなら」てどういう意味?
0230デフォルトの名無しさん
2006/11/26(日) 14:24:55java.lang.Math#random()もjava.util.Randomクラスのメソッドが返すものも
放射性物質とか熱雑音とか使って乱数を生成するような実装になっていない限りは
生成されるのは普通は擬似乱数
てか少なくともjava.util.Randomの方はseedを指定できる点で真の乱数ではない
そしてMath#random()はjava.util.Randomを呼んでるし両者は同じものと考えていい
使い勝手が違うだけ
0231デフォルトの名無しさん
2006/11/26(日) 14:30:35あの処理であのサイズの進捗バーの表示を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の値を使うということで。
0232デフォルトの名無しさん
2006/11/26(日) 14:39:330233デフォルトの名無しさん
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?
0234ぴゅあ
2006/11/26(日) 15:49:18最近のチュートリアルにはSwingWorkerが出てきているみたいですけど
最新はまだ触ってないので代わったわけとか見れてないけど
触るならEventQueue#invokeLaterとかなのかなとも思えたりもするけど
深く追えてはないし(ついさっき例が出てきて触ってみてるだけだし)
今のところはまだ微妙な気もしていたりするけど…
0235ぴゅあ
2006/11/26(日) 16:01:42(5.0のソースコードで)その先のfirePropertyChangeメソッドで
イベントキューに溜めて処理してるんじゃないかと思ってて
JProgressBar#setValue自身がスレッドセーフかというのは
別途JProgressBar#setValueを扱う側で考えるのかな…
(SwingUtilities#invokeLaterを使うとかいうのではなく)
とか思ってたりしてますけど。。。
0236220
2006/11/26(日) 21:58:41>>222
>>223
レス有難うございます。
まず223の回答から
>> > javaランタイム入ってないのに
>> はどうやって確信を得たんだ?
プログラムの追加と削除からIBM-Java Runtime 32bit〜削除。
そしてOSはXP_SP2の為、Microsoft VMも無いこと確認。
222の回答
>>・実はJavaアプレットではなくflashだった。
Javaアプレットでした。
となると221の
アプレット起動時、javaのロゴが表示されて、
何かダウンロード中みたいだったのがJREのインストールだったのかな?
>> ・アプレット起動時にJREがインストールされたが、それに気づかなかった。
が正解な感じがします。
>>221
>>222
>>223
ありがとうございました。
0237202
2006/11/27(月) 00:11:33イベントディスパッチスレッドはシングルスレッドだから固まるんですね。
(知ったように書いていますが実はまだ危ういです)
それだから actionPerformed(ActionEvent); でスレッドを作って test() をよびだすんだと
今やっと分かりました。(スレッド越しと言うのは、一つのスレッド実行中に新しい別の
スレッドを作ることを指すのでしょうか?)
SwingUtilities.invokeLater(...); が必要か、な議論はルールだから守らなきゃくらいしか
自分には分かりませんでしたが、Runnable を実装したクラスをイベントディスパッチ
スレッドに渡して(安全に?)スレッドを起こしてもらうためのものなんですかね?
でも、とりあえず使い方は分かりました。無事動きましたしほんとに助かりました。
また、余計な話ですが、内部クラスからローカル変数を参照するのに final が必要でも、
イスタンスフィールドならそのまま参照できるのを知って自分の素人さも痛感しました。
なぜそうなるのか、また自分で調べてみます。そして書き方もいろいろあるのが面白くて
楽しかった。深い人に教えてもらえて嬉しかったです。余裕ができたら SwingWorker も
知りたいですが、208さんが言った Swing 本も近々探して早く勉強したいです。
ありがとうございました。
0238デフォルトの名無しさん
2006/11/27(月) 00:19:56つ SwingWorker
0239デフォルトの名無しさん
2006/11/27(月) 02:12:40スレが殺伐としてまいりました・・・!!!タタタタ・・
0240デフォルトの名無しさん
2006/11/27(月) 11:25:04同じファイル内のクラスにアクセスするのと同じでしょうか?
sample1とsample2があってこの中でクラスを共有したいのですが、
参照しようとすると
Exception in thread "AWT-EventQueue-0
このようなエラーが出てきます。
0241デフォルトの名無しさん
2006/11/27(月) 11:28:570242デフォルトの名無しさん
2006/11/27(月) 12:05:500243デフォルトの名無しさん
2006/11/27(月) 12:48:10packageの概念についてもっと勉強した方が良い
0244デフォルトの名無しさん
2006/11/27(月) 18:29:29public 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で答えていただきましたが
ここに書き足すものが何か分からないです・・
0245デフォルトの名無しさん
2006/11/27(月) 19:34:14LinkedHashMap<Integer,LinkedHashMap<Integer,String>> table;
今、こんなのを作って使っているのですが・・・
0246デフォルトの名無しさん
2006/11/27(月) 20:21:35二次元テーブルならArrayList<ArrayList<String>> table;でいいんでないかい?
スパースなのならメモリ効率悪いが
0247デフォルトの名無しさん
2006/11/27(月) 21:33:20独自クラス書いた方がよくないか?
縦で抽出したり、横で抽出したりするだろうから
>>246のArrayList入れ子を縦横と横縦で持つような。
0248デフォルトの名無しさん
2006/11/27(月) 22:18:12Person[] 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 個
とエラーが出てしまうのですが何が原因か分からないです。。。
0249デフォルトの名無しさん
2006/11/27(月) 22:23:17FullnameクラスをTemp.javaファイルに保存しているのが敗因その1。
クラス名とファイル名は一致させること。
0250デフォルトの名無しさん
2006/11/27(月) 22:26:31すいません、直したやってみましたが駄目です。。
0251デフォルトの名無しさん
2006/11/27(月) 22:47:18p[1]=new Person("TAKAAKI","ISHIBASHI");
ここはメソッドの中じゃないとまずいんじゃないか
0252デフォルトの名無しさん
2006/11/27(月) 22:56:41解決しました!メソッドの中じゃないと駄目なんすですか。。知らなかったです。ありがとうございました!
0253デフォルトの名無しさん
2006/11/27(月) 22:59:43リナックスアカデミーは開講日が合わず断念。
(次は二月〜らしい)
一応初心者レベルは脱したつもりだからちょいとレベル高めの講座とかあるといいんだが。
0254デフォルトの名無しさん
2006/11/27(月) 23:21:51高いレベルを目指すならプログラム書いて独学でしょ。
今時、Javaの情報なんてググればいくらでもでてくるし。
というか、スクールでプログラム言語を勉強するという感覚が未だに分からんです。はい。
学術的にということであれば、大学の講座を受講するという手もあるかも。
Javaって言語に特化した授業なんてあるかしらんけど。
0255デフォルトの名無しさん
2006/11/27(月) 23:33:27http://suned.sun.co.jp/JPN/catalog/java.html
0256デフォルトの名無しさん
2006/11/27(月) 23:39:25クラスの中にstatic{}という構文があったんだけど
これって何ですか?
いつ実行されるんですかね?
static{
〜
〜
}
staticでググッてもstatic修飾子の話しかでてこないっす
0257デフォルトの名無しさん
2006/11/27(月) 23:44:49static イニシャライザ、ですね。
クラスのロード時に実行されます。
0258デフォルトの名無しさん
2006/11/27(月) 23:50:28うす。どうもっす。
0259デフォルトの名無しさん
2006/11/28(火) 00:00:54J2SDK1.4.13、JRE1.4.13 のlib およびjre\libの中には入っていませんでした。
知ってる方教えてください。
0260デフォルトの名無しさん
2006/11/28(火) 00:16:0811334567→1133あ4567
0261デフォルトの名無しさん
2006/11/28(火) 00:17:050262デフォルトの名無しさん
2006/11/28(火) 00:32:560263デフォルトの名無しさん
2006/11/28(火) 01:02:570264デフォルトの名無しさん
2006/11/28(火) 01:05:51new StringBuilder("11334567").insert(4,"あ").toString()
0265260
2006/11/28(火) 01:10:150266前スレ897
2006/11/28(火) 01:53:401週間、課題の方をやってみましたがどうも掴めません。
質問があるのですが、アウトプット部分の
I: i=0
R2: a[0]=20
R1: min=20 a[0]=20
R: min=20
が、省略されるような形で組みなおせば良いのでしょうか?
0267デフォルトの名無しさん
2006/11/28(火) 05:12:590268デフォルトの名無しさん
2006/11/28(火) 05:19:420269デフォルトの名無しさん
2006/11/28(火) 05:38:590270デフォルトの名無しさん
2006/11/28(火) 05:43:33Math.random()/1000+0.002
0271デフォルトの名無しさん
2006/11/28(火) 05:46:30まずやってみてから、その動作が理解できない場合に、動作の詳細を添えて質問することを勧める。
0272ぴゅあ
2006/11/28(火) 07:33:28mainメソッド内のarrayMin()メソッドの呼び出しのところから
iの値と流れ(if(i>0)による分岐,arrayMin()の再帰呼び出し,return)に注目して
流れを書き出してみれば判ると思いますよ
(ロジックを目で追ってみる)
答えは"if(i>0)"をどうするかにあるんですけどね
適当にやったら"やったらできた"のようになりかねないので
ちゃんと目でロジックを追ってみるのがいいと思います
>組みなおせば良いのでしょうか?
組みなおす必要はないです
iの値とif文(iの値に対して)でどう分岐させるかだけ
答えが出れば、「それだけのことか」みたいなものかも知れませんけど
0273ぴゅあ
2006/11/28(火) 08:12:14あとarrayMin()メソッドの冒頭で
int n = i - 1;
とかして
>int min = arrayMin(a, i - 1);
はそのままでいいけど
"a[i - 1])"やif文の中のiはnに置き換えて考えてみるのもいいかも
単純なことに思えるかも知れないけど
iとnとは持つ意味が違うので
0274デフォルトの名無しさん
2006/11/28(火) 12:29:09そういやブロードキャストアドレスてどうすんだろう・・・
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());
}
}
で取れそうだけど・・・・
0275デフォルトの名無しさん
2006/11/28(火) 19:03:53Mustangだといろいろ便利になってるんだが。
InterfaceAddress#getBroadcast()とか。
とりあえずブロードキャスト投げたかったら255.255.255.255を使うんじゃだめ?
0276276
2006/11/28(火) 20:12:55Javaだけの話じゃなくなってしまうかもしれませんが、現在以下のようなコードを書いています。
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;
}
↓続き
0277276
2006/11/28(火) 20:13:464バイトで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でやってみたり、
書き込んだサイズをカウントしておいて、
カウントしたサイズの配列にコピーしたりやってみたのですが、
速度が遅くなってしまいました。どなたか上手い書き方を教えていただけないでしょうか。
0278デフォルトの名無しさん
2006/11/28(火) 20:26:37まず、条件判定を全部して何バイト長になるか決定しておくというのは?
そして、書き込みのときは、
インデックスを変数にして i++ とかにしておく。
必要のない4バイトは飛ばされる。
もっとセンスのいい方法ありそうだけど。
0279276
2006/11/28(火) 20:37:42int 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;
.
.
.
という風にも書いてみたのですが、
わざわざサイズのインデックスを用意するのと、
その値の操作がスマートに書けなかったのです・・・。
これ位しか方法がないのならこう書くしかないのでしょうが・・・。
0280デフォルトの名無しさん
2006/11/28(火) 21:07:04private int idx;
public AutoIndexer(int c){
idx=c;
}
public int moveIndex(){
return idx++;
}
}
みたいなのを使っている。
英語は苦手。
0281278
2006/11/28(火) 22:30:11if(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配列のメモリは余計に使うけど。
0282デフォルトの名無しさん
2006/11/28(火) 23:52:39stop()を使っているのですが、時々ThreadDeathが発生して困っています。
0283デフォルトの名無しさん
2006/11/28(火) 23:54:15InterruptedExceptionを無視するスレッドだったら安全に止める術はない。
0284276
2006/11/29(水) 00:09:49ターゲットが携帯電話(iアプリ)なもので、クラスを使わずにやってみたいのです・・・。
>>281
有難うございます。
事前に容量計算+これでいくことにします。
随分恥ずかしいコードを書いてしまいました。
プログラミング自体初心者なのがバレバレですね。
>サイズの計算なくすなら、まずは最大幅幅確保してからという手もありだ。
>byte[] result = new byte[index];
>System.arraycopy(data,0,result,0,index);
試しにこれもやってみたのですが、
arraycopyで遅くなってしまうようです。
0285282
2006/11/29(水) 00:14:24・・・
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()が実行されることはないのでしょうか?
0286ぴゅあ
2006/11/29(水) 01:01:30まずThread#stop()はDeprecatedですよね
>sleep中のスレッドを
と条件を限定して言っているので問題ないでしょう
0287ぴゅあ
2006/11/29(水) 01:04:25(トレースするためのコードもちゃんと書いて)
0288デフォルトの名無しさん
2006/11/29(水) 21:17:46たとえば0x04 0x03 0x02 0x01というデータを32bitの0x01020304というint型変数にしたいのですが。
DataInputStreamとreadByte()使うのはわかるんですが・・・
0289デフォルトの名無しさん
2006/11/29(水) 21:19:08自分なりに考えた結果、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+"です。");
}}
0290デフォルトの名無しさん
2006/11/29(水) 21:33:39max = 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]の値を変えているから
最大値最小値の求め方が異常だ
0291デフォルトの名無しさん
2006/11/29(水) 21:38:23この方法だと合計値は求められないんでしょうか?
0292デフォルトの名無しさん
2006/11/29(水) 21:47:13Integer.reverseBytes(int i)
0293デフォルトの名無しさん
2006/11/29(水) 21:50:10最大値最小値を求める部分をとっぱらっちゃえば求まる
sum=(a[0]+a[1]+a[2]+a[3]+a[4]);は明らかにおかしくない
最大値最小値の求め方について再考することを勧める
そんな複雑なことをする必要はないif(){...}の...に書く文はひとつでいいはず
0294デフォルトの名無しさん
2006/11/29(水) 21:54:35すいません。ほぼ独学で学んでいるもので、
他の最大値最小値の求め方を教えていただけないでしょうか?
0295デフォルトの名無しさん
2006/11/29(水) 21:57:22関数使え
0296デフォルトの名無しさん
2006/11/29(水) 21:57:57if(max<a[i]){
max = a[i];
}
if(min>a[i]){
min = a[i];
}
わざわざa[i]に代入して入力データを壊す意義が分からない
0297デフォルトの名無しさん
2006/11/29(水) 21:59:29更にこの先の計算に必要な配列の内容を書き換えるから
事故が起きる
0298デフォルトの名無しさん
2006/11/29(水) 22:00:12ありがとうございます。
今から書き直してみます。
0299デフォルトの名無しさん
2006/11/29(水) 22:01:04ありがとうございます。できました。
byte[]に読み込んでByteBuffer使う方法考えてたんですがこんなに簡単にできるんですね。
0300デフォルトの名無しさん
2006/11/29(水) 22:29:58StrutsでWebアプリケーションを作成しているのですが、
多重ログインをさせたくない場合はどのように処理をさせればいいのでしょうか?
ログアウト時必ずDBのフラグを倒すと言う処理をしたいのですが。
セッション解放時+タイムアウト時の処理方法を教えてください。
XMLにsession-timeout設定+HttpSessionListenerを実装するクラスの作成
までは何とかわかりましたが、その他のXMLの設定やstruts-configの設定、
アクションクラスと別にHttpSessionListenerを実装するクラスを作らないと
ダメでしょうか?
HttpSessionListenerを実装するクラスの呼び出し方法が判りません。
わかる方詳しく教えてください。また、参考になるサイトはありませんか?
宜しくお願い致します。
0301デフォルトの名無しさん
2006/11/29(水) 22:32:39111000
110011
っていう二次元配列があったら1の数にあわせて
2 1
3
2 2
っていうのを1次元配列に格納するプログラムを作りたいのですがどうすればいいのでしょう?
0302デフォルトの名無しさん
2006/11/29(水) 22:40:080303デフォルトの名無しさん
2006/11/29(水) 22:43:38これだけ見ると確かにそんな感じに見えますね(・ω・;)
どなたかわかる方ヨロです
0304デフォルトの名無しさん
2006/11/29(水) 22:47:14この中に入っている文字列の1文字目から8文字目や
18文字目から26文字目を抽出する関数を教えてください。
0305デフォルトの名無しさん
2006/11/29(水) 22:49:47サブストリング
0306デフォルトの名無しさん
2006/11/29(水) 22:52:21そう思って以下のコーディングを行ったのですが、
シンボルを解決できないといわれます。
シンボル: メソッド 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();
0307デフォルトの名無しさん
2006/11/29(水) 22:55:160308デフォルトの名無しさん
2006/11/29(水) 22:56:12省略形は不可でしたか。すみません、ありがとうございます。
0309デフォルトの名無しさん
2006/11/29(水) 23:05:00フォームとかいちいち作るの面倒くさいんですけど
0310デフォルトの名無しさん
2006/11/29(水) 23:09:14C+何だそれは?C++のパクリ言語か?
0311デフォルトの名無しさん
2006/11/29(水) 23:10:36HttpSessionListenerは、web.xmlに登録して、サーブレットコンテナに呼んでもらうもの。
ただ、多重ログイン防止用途だとHttpSessionListenerは使えなかった。
まえやったときは、HttpSessionListener#sessionDestroyed()でログアウト処理をさせようとしたら、
既にセッションが無効になっていて、セッション内のユーザ識別子が取得できなかった。
ただ、Servlet APIには
> Notification that a session is about to be invalidated.
とあるので、コンテナのバグかもしれない(Tomcat 4.1.31)。俺の解釈違いか?
代わりに採った方法は、ユーザ識別子を持たせたオブジェクトに、HttpSessionBindingListenerを実装させるというもの。
このインタフェースを実装したオブジェクトは、セッションへの登録と破棄時にAPI規定のメソッドが呼ばれる。
セッション自体の破棄の時も呼ばれるので、その時にログアウト処理を行うようにした。
0312デフォルトの名無しさん
2006/11/29(水) 23:20:45改善策お願いします。
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+"です。");
}
}
0313デフォルトの名無しさん
2006/11/29(水) 23:25:44改行おかしいのは行数制限のせいだから気にするな
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; }
0314デフォルトの名無しさん
2006/11/29(水) 23:29:05maxとminにa[0]を入れるのが一番楽
0315デフォルトの名無しさん
2006/11/29(水) 23:30:41�d おかげさまで宿題できました
0316デフォルトの名無しさん
2006/11/29(水) 23:59:50Exception 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();
}
0317デフォルトの名無しさん
2006/11/29(水) 23:59:54あー、初期化のとこまで見てなかったよ
float max = Float.MIN_VALUE,min = Float.MAX_VALUE,sum,average;
Scannerで配列にデータを読み込む前にmin,maxを初期化するのならこうかな
0318デフォルトの名無しさん
2006/11/30(木) 00:02:10test1,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;
}
わかる方はお願いします。
0319デフォルトの名無しさん
2006/11/30(木) 00:02:581文字目のインデックス番号は0
配列と一緒で1から始まるのではない
0320デフォルトの名無しさん
2006/11/30(木) 00:05:59↓このようなことでしょうか?
これでも同じくエラーになります。
line2 = (line.substring(0,8)+line.substring(40,1));
すみません。教えてください。
0321317
2006/11/30(木) 00:06:41すまん。>>317は間違い
float max = -Float.MAX_VALUE,min = Float.MAX_VALUE,sum,average;
もしくは、 >>314のいうように、Scannerで読んだあとで
max = min = a[0];
0322デフォルトの名無しさん
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>
<!--* おわり *-->
このソースで右側のテーブルでマウスオーバーで色を変えるだけで
リンクはジャンプしないようにするにはどうしたらいいのでしょうか。
0323デフォルトの名無しさん
2006/11/30(木) 00:08:29これでエラーがなくなりました。
引数2が引数1からの桁数だと思っていたことが原因のようです。
line2 = (line.substring(0,8)+line.substring(40,41));
0324デフォルトの名無しさん
2006/11/30(木) 00:10:51substringの第2引数は長さではなく終了インデックス
注意点は、終了インデックスは取り出したい最後の文字ではなく、その次の文字のインデックス
0325デフォルトの名無しさん
2006/11/30(木) 00:12:50ありがとうございます。
0326デフォルトの名無しさん
2006/11/30(木) 00:13:19ありがとうございました。おかげ様でできました。
0327デフォルトの名無しさん
2006/11/30(木) 00:16:33javascript関係は板違いなので、こちらへどうぞ
http://pc8.2ch.net/hp/
0328デフォルトの名無しさん
2006/11/30(木) 00:17:28一応317さんのお陰でできましたが、
その方法でもやってみようと思います。
0331デフォルトの名無しさん
2006/11/30(木) 00:22:44気づいてると思うけど>>317でなく>>321の方ね
>>317の方はmaxを0で初期化するのとほとんど同じ結果になってしまう
0332デフォルトの名無しさん
2006/11/30(木) 00:25:48きちんと修正してます。
本当にありがとうございました。
0333デフォルトの名無しさん
2006/11/30(木) 00:29:41今見たら>>289のソースではちゃんと>>314の方法で初期化してるじゃないかw
道理で以前はうまくいくはずだ
ソースを書き換えた時に余計なバグを作りこんだね
0334デフォルトの名無しさん
2006/11/30(木) 00:33:20すいません。またまたお聞きしたいのですが、
>>314案の
max = a[0];
min = a[0];
は、どこに配置すればいいんでしょうか?
float max,min,sum,average; の直後に配置するとやはり、
入力値にマイナスの値を1つでも入れないと、最小値が初期値0になってしまうんですが。
0335デフォルトの名無しさん
2006/11/30(木) 00:38:04位置は>>289のソースを参照
0336デフォルトの名無しさん
2006/11/30(木) 00:43:23OKです。できました。ありがとうございました。
こちらのがシンプルなので、この方法で大学に提出したいと思います。
0337デフォルトの名無しさん
2006/11/30(木) 01:01:54int[][] 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);
}
0338336
2006/11/30(木) 01:16:23まあ今日は寝よう。
協力してくれた皆さんどうも。
0339デフォルトの名無しさん
2006/11/30(木) 01:16:47立ち上あがるようにするにはどうすればよいでしょうか?そこから標準入出力させるようにしたいのですが、、、
0340デフォルトの名無しさん
2006/11/30(木) 01:22:12class Unko
{
private int weight;
Unko()
{
weight = 0;
}
}
とするのと
class Unko
{
private int weight = 0;
Unko() { }
}
とするのは何が違うんでしょうか?
0341デフォルトの名無しさん
2006/11/30(木) 01:25:03複数コンストラクタがあるときは違ってくる可能性があるが
340の例だと何も違わない。
0342デフォルトの名無しさん
2006/11/30(木) 01:51:38そもそもフィールド値は初期化されるので
private int weight = 0; は無意味
private int weight; でおk (0以外の場合は値代入必要だけど・・・)
0343340
2006/11/30(木) 02:11:39ありがとうございます。
たしかに複数コンストラクタがある場合は考えなくていけないですね。
それとフィールドはc++と違って勝手に初期化してくれるのを忘れてました。
javaって親切ですよね。
念のためコンパイルしてバイトコードを比べてみたんですが、
生成された中間コードは同一でした。賢いな〜
0344デフォルトの名無しさん
2006/11/30(木) 07:15:14private int a = 0;
A(){
// ★
}
}
このクラスを使うとして,
クラスBからAのコンストラクタを
呼び出した場合変数aを1プラスする,
クラスCからAのコンストラクタを
呼び出した場合は何もしない,
ということを行いたい場合
★にはどのような処理が入りますでしょうか?
つまり呼び出す側のクラスの識別です.
0345デフォルトの名無しさん
2006/11/30(木) 07:31:36そういうのはちゃんと「私は〜です」って名乗る様にしないといけないのでは?
class A{
public A(Object obs){
if(obs instanceof B){
}else if(obs instanceof C){
}}}
みたいな
0346デフォルトの名無しさん
2006/11/30(木) 07:45:37ハンドルから手を離して挨拶するって危険なんじゃないかって
思うんだ。しかし、運転士たちは危ないと思ってない。
ここに行って
http://hobby7.2ch.net/test/read.cgi/bus/1162901425
挙手してんじゃねえよ
って1レスでいいから教えてあげて。よろしくお願いしますね。
0347ぴゅあ
2006/11/30(木) 08:07:42>「私は〜です」って名乗る様にしないといけないのでは?
と言っているのが前に続く話なのか・・・見れてないけど
クラスAが新たに作ろうとしているクラスなら
呼び出す側で明示的に+1するかどうかを示すのがいいんじゃないかと思うけど
既に作りあげられたものの中でクラスAが呼ばれている状況を調べたいということだったりするのなら
例えばクラスAのコンストラクタの中で例外を起こしてcatchし
スタックトレースを取って何処から呼ばれたのか解析してみるとか
もっと楽な方法あるのかなぁ?
0348デフォルトの名無しさん
2006/11/30(木) 08:33:25「管理者権限のないアカウントでログインしているので、インストールできません」っていう
ダイアログが出てきて、インストールできなかったんですが、どうすれば管理者権限のあるアカウントで
ログインできるんでしょうか?
自分は中古のPCを買ってきて、最初の設定のまま使っているんですが、電源を入れてBIOSの画面が出た後に
WinMeが起動して、まず「ユーザーネーム」と「パスワード」を入力するダイアログが出てきます。
いつも、そこで「キャンセル」ボタンを押すと、デスクトップが表示(マイコンピュータとかゴミ箱とか)されて来るので、
そのままインターネット・エクスプローラーなどのアプリケーションソフトを使っているんですが・・・
0349デフォルトの名無しさん
2006/11/30(木) 09:02:15http://www.drive.co.jp/asp/faq/faq_sanka.asp?q_id=32718&genre=WindowsMe
0350デフォルトの名無しさん
2006/11/30(木) 12:13:42いくら中古でも普通初期設定は最低でもアドミニストレーター権限持つぞ!
再インストールをおすすめする。どんなソフト入れられてるかわからんぞ!
0351デフォルトの名無しさん
2006/11/30(木) 12:48:460352デフォルトの名無しさん
2006/11/30(木) 14:48:17htmlからappletを <applet>タグ にて呼び出し
appletから getAppletContext().showDocument( java.net.URL ) でservletに移動しています。
servletからappletの呼び出しはまったく問題ないのですが、
appletからservletを呼び出す際にsessionが切れてしまいます。
(showDocument(URL)で移動すると cookieを登録できないので JSESSIONID:〜の情報が渡せない)
appletから別ページに遷移する際にcookie情報を渡してあげる方法はありませんでしょうか?
ヒントだけでもかまいませんのでお願いいたします。
0353デフォルトの名無しさん
2006/11/30(木) 16:08:50ちなみに作成しようとしているのは
(1)レーダーチャート(最低5角形)
(2)折れ線グラフ
(3)関数曲線
てなトコロです。(3)は「上下する6点をつなぐ自然な曲線が欲しい」という漠然とした要求しかないので、サイン波を六個くっつけてでっち上げようと思っています(苦笑)
こーゆーアルゴリズム(つーかクラス)、誰か作ってそうなんですけど検索できませんでした(^^;
3.0からはSWTからでもSwing(=JFreeChart)が使えるらしいのですが、他にグラフ作図ライブラリ(特にSWTとの親和性の高いもの)があれば、情報を頂ければ幸いです。よろしくお願いします。
0354デフォルトの名無しさん
2006/11/30(木) 16:28:08ttp://journal.mycom.co.jp/column/yetanother/097/
Eclipse RCPスタンドアロンでここまでできるらしいよ。
0355354
2006/11/30(木) 16:29:11ついでに本家サイト
ttp://www.eclipse.org/birt/phoenix/
0356デフォルトの名無しさん
2006/11/30(木) 17:13:030357デフォルトの名無しさん
2006/11/30(木) 18:13:00Do 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)
というエラーがでてしまいます。ソースコードを下に書くので
どうかご指導お願いします。
0358デフォルトの名無しさん
2006/11/30(木) 18:14:28import 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("ボタンです。");
0359続き
2006/11/30(木) 18:15:14JLabel 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);
}
}
0360デフォルトの名無しさん
2006/11/30(木) 18:46:40さっき別スレで質問してたやつだな。 俺がその回答者ですよ。
さっきの 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系だから起きる例外。
0361デフォルトの名無しさん
2006/11/30(木) 18:47:06> Do not use javax.swing.JFrame.setLatout() use
> javax.swing.JFrame.getContentPane().setLayout() instead
このエラーメッセージの通りだぜ。
0362名無し
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("当たり!");}}
0363352
2006/11/30(木) 18:53:59お騒がせして申し訳ありませんでした。
>>357
1.5系使えばとりあえずは動きますが
0364デフォルトの名無しさん
2006/11/30(木) 19:09:41できないんでしょうか?
とても不便です。
0365デフォルトの名無しさん
2006/11/30(木) 19:19:05そーゆー事じゃなくて?
0366364
2006/11/30(木) 19:27:17オーバフローで例外が発生してほしいのです。
0367デフォルトの名無しさん
2006/11/30(木) 19:38:37ってか、オーバーフローで例外って何のために必要なんだろ?
0368デフォルトの名無しさん
2006/11/30(木) 21:01:25ソートキーは、頭から8桁と40桁目から10桁です。
イメージはこんな感じなんですが。。
sort dt(substring(0,8),substring(40,50));
0369デフォルトの名無しさん
2006/11/30(木) 21:52:08行単位で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キーか知らないが、
自分の思うような順序付けを返すように実装する。
0370デフォルトの名無しさん
2006/11/30(木) 22:08:15ありがとうございます。
やってみます。
0371デフォルトの名無しさん
2006/11/30(木) 22:22:340372デフォルトの名無しさん
2006/11/30(木) 22:22:34import 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));
}
}
作ってみた
0373デフォルトの名無しさん
2006/11/30(木) 22:23:110374デフォルトの名無しさん
2006/11/30(木) 22:23:300375デフォルトの名無しさん
2006/11/30(木) 22:23:44import 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);
}
}
0376・w・
2006/11/30(木) 22:42:36一様gooで検索してみたんですがどれだかわからなかったので情報ください;w;
0377353
2006/11/30(木) 22:43:58>>355
どもっす。作表や印刷まで一体になってるのは使いやすそうですね。
縦横の棒グラフや折れ線グラフをパパっと出すには便利そう。
曲線やレーダーチャートが出来るかな……?
ちょっと調べてみますね。
0378デフォルトの名無しさん
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
0379デフォルトの名無しさん
2006/11/30(木) 22:58:06BメソッドをAメソッドを呼び出す前に呼び出したとします。
こういう状況を例外クラスを投げたいんですが,
既存クラスにこういう状況の時に投げる例外クラスってありますかね?
0380デフォルトの名無しさん
2006/11/30(木) 23:01:49java.lang.IllegalStateException とか。
0381デフォルトの名無しさん
2006/11/30(木) 23:03:41java.lang.IllegalStateExceptionとかいいんじゃね?
RuntimeExceptionのサブクラスだし、try catch書かなくていい。
0382デフォルトの名無しさん
2006/11/30(木) 23:32:26IllegalStateExceptionに2票入りましたね。いただきです
どーもでした
0383ぴゅあ
2006/12/01(金) 00:24:09恐らくネットワーク(ドメイン)に参加させて使っていたものなんでしょう
WinMeは殆ど使わなかったし殆ど覚えてないけど"管理者権限"とかなったかどうかは・・・
(調べてる時間はないし…)
パスワードファイルの削除,ネットワーク設定の確認とかすればいいだろうと思うけど
聞くならそれはまずWin関係の方で聞いた方がいいと思います
そのまま何とかして使うよりは>>350も言ってるOSの再インストールの方がいいと思いますけど
0384tom
2006/12/01(金) 00:27:29まず、環境変数、pathの設定はしてlocalhost:8080を指定したらとりあえず、tomocatの
画面はでたんだが、そこから一体なにをすればいいのか・・・。
0385ぴゅあ
2006/12/01(金) 00:29:36ごめん
その更に先まで読んでなかった。。。
0386ぴゅあ
2006/12/01(金) 00:44:55>そこから一体なにをすればいいのか・・・。
とかいうことを勉強するためにインストールしたんじゃ…?
0387デフォルトの名無しさん
2006/12/01(金) 00:45:30import 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です。
0388デフォルトの名無しさん
2006/12/01(金) 00:54:25原因はputの戻り値がnullだからだろう。
だがそのソースでputの戻り値をdに入れている意味がわからない。
なんかやりたいことと違ってないか。
参考。javadocより。
> 戻り値:
> 指定されたキーに関連した値。または、キーのマッピングがなかった場合は null。
> 戻り値 null は、HashMap が以前に null と指定されたキーを関連付けていたことを
> 示す場合もある
0389デフォルトの名無しさん
2006/12/01(金) 01:22:52hashmapに入れたものをすぐに取り出そうとしているのだろうが、
そのコードではそれは実現しない。
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が表示されるかどうか確かめてみれば分かる。
0390デフォルトの名無しさん
2006/12/01(金) 01:34:26自作しようにも、個人で規格書取り寄せようとすると5万円かかるらしくて。
0391デフォルトの名無しさん
2006/12/01(金) 02:03:41「Java_ee_sdk-5-windowsが原因でMSVCRT.DLLにエラーが発生しました。
Java_ee_sdk-5-windowsは終了します。問題が解決しない場合はコンピュータを再起動してください。」
っていうメッセージが出てきて、インストールできませんでした・・・
MSVCRT.DLLっていうダイナミックリンクライブラリが何なのか分からなかったので、ググって見たんですが、
どうやら、Visual C で書かれたプログラムを実行するのに必要な、ランタイムライブラリらしいですね
WinMeでは、インストールできないんでしょうか?
0392デフォルトの名無しさん
2006/12/01(金) 06:47:42あれば教えてください。
宜しくお願いします。
0393392
2006/12/01(金) 07:21:32ロックファイルを作成するということで解決することにしました。
0394デフォルトの名無しさん
2006/12/01(金) 07:27:49その可能性は高い
0395387
2006/12/01(金) 10:40:43HashMap.put()の戻り値は、代入前の値になるのですね。
プログラムは書き換えて動くようになりました。
有難うございます。
0396デフォルトの名無しさん
2006/12/01(金) 11:27:37ファイルをコンパイルし、実行しようとすると
Exception in thread "main" java.lang NoSuchMethodError: main
と出るのですが、どういう意味でしょうか??
どなたか回答お願い致します。
0397デフォルトの名無しさん
2006/12/01(金) 11:35:59「そんなメソッドはないよ」と怒られてる
0398デフォルトの名無しさん
2006/12/01(金) 12:07:04Q. 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) {
}
0400デフォルトの名無しさん
2006/12/01(金) 23:03:1900100111011
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);が使えるようなら有効に使いたいです。
これでは余りにもスマートとは言えない考え方です。
もっとスマートにできるやり方をご存知でしたらご教授いただきたいです。
よろしくお願いします。
0401400
2006/12/01(金) 23:20:34for(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;
}
のような感じです。
よろしくお願いします。
0402デフォルトの名無しさん
2006/12/01(金) 23:25:33MeでJAVAの開発環境っていいものありませんか?
JDKがインストールできないとなると・・・困った;
0403デフォルトの名無しさん
2006/12/01(金) 23:30:44範囲を選択してNOT がしたいなら
反転したい範囲に 1 が立ってる数との XOR をとればいい。
0404デフォルトの名無しさん
2006/12/01(金) 23:33:51途中だけ入れ替えるには、
入れ替えたい桁を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を直接ビット演算してもいい。
0405デフォルトの名無しさん
2006/12/01(金) 23:38:330406404
2006/12/01(金) 23:41:44Objectクラスを継承しているのを忘れていました。
0407400
2006/12/01(金) 23:42:02凄く参考になりますありがとうございます。
まだ良くわからないのでじっくり考えてみますね。
>>404
まだやっとJava構文がわかり始めたくらいなのでBitSetなんてクラス知りませんでした。
凄く参考になります。
BitSetの使用がどうなっているのか良くわかりませんが自分のやりたいことの場合だと
mask1、mask2の範囲を0<2047にしてやればランダムで入れ替える場所を
セットすることもできそうですね。
少しAPIとにらめっこしてきます。
二人とも本当にありがとうございました。
0408406
2006/12/01(金) 23:43:09上のは405です。
0409デフォルトの名無しさん
2006/12/01(金) 23:47:476行目でクラスSuperのインスタンスsuper[100]を作っているのですが、
identifierがないと言われコンパイルエラーが出てしまいます。
どのように改善したら良いのでしょうか?
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=28831
0410デフォルトの名無しさん
2006/12/01(金) 23:50:200411デフォルトの名無しさん
2006/12/01(金) 23:54:20うは…全く知りませんでした^^;
新たに大量のエラーが出てきてしまいましたがとりあえずそこの関連部分のエラーは解消されました。
ありがとうございました。
0412デフォルトの名無しさん
2006/12/01(金) 23:58:40ホントにJava EE要るの?Java SEじゃなくて?
もしその違いが分からないなら、多分あなたにはJava EEは要らない。
それなら、「JDK 5.0 Update 10」ってのをダウンロードするといいよ。
リリースノート見ると、Java SE SDKならWindows Meに対応してる様子。
0413デフォルトの名無しさん
2006/12/02(土) 00:00:14JBoss使ってるときSunからEE落とした記憶が無い
0414デフォルトの名無しさん
2006/12/02(土) 00:17:42Java EE SDK は、参照実装でもあり、Sunの製品でもある、
Project Glassfishで作られたOSSライセンスのソフトウェア。
今はServlet2.5に対応しているコンテナが事実上Glassfishしか無いから、
Java EE5の機能をフルに使いたい場合は
SunのJava EE SDK(Glassfish)しか選択肢がないことになる。
Tomcat6やそれを含むJBossはまだベータ版だしね。
あ、OracleやSAPがJava EEフル対応の製品だしてたっけ?
0415デフォルトの名無しさん
2006/12/02(土) 00:47:36>Java SE SDKならWindows Meに対応してる
最初、JAVA SE をDLしたんですが、ダメだったんですよ
それで、EEならUpdate9なんで、Meに対応しているかもって、他のスレで言われたので
DLしたんです・・・でも、インストールできなくて
0416400
2006/12/02(土) 01:10:25BitSetの使い方がいまいちわかりません…。
BitSet bit = new BitSet(int nbits);←のnbits-1がインデックスの数とは
配列の数と考えたら言いのでしょうか?
初期値がfalseという事なので適当な値を入れてbit.set(int bitIndex);をしてtrueにしたつもりが
System.out.println(bit);しただけじゃ{}としか表示されませんでした。
表示のさせ方が間違ってるのかな?
あと違う話ですけど結局扱うのは0か1なのでbooleanでの配列の方がメモリは節約できますか?
もちろん軽く動作するって意味です。
それとも考えすぎかな?
0417tom
2006/12/02(土) 01:16:45にはなりました。次に、webappsディレクトリの下にentryというディレクトリを自分なりに
つくり、その下にWEB-INFディレクトリを作りました。そして、ブラウザから、localhost:8080/entry/
とやると、HTTPステータス404のエラー画面になってしまいます。どうしてでしょうか?
環境変数はCATALINA_HOMEでPATHは;%CATALINA_HOME%binとしました。
コンソールでもset pahコマンドでpathの確認もしました。
なにか間違ってるのですかね?
0418デフォルトの名無しさん
2006/12/02(土) 01:21:42BitSetの強力な使い方の一例に「フラグの立って(または降りている)インデックスを
イテレートする」というものがある。boolean[]と比べればわかるがかなり速度が違う。
メモリ云々についてはビット演算がどういう類のものか考えればわかるでしょ。
0419デフォルトの名無しさん
2006/12/02(土) 01:22:50ディレクトリ名と同じxmlを用意して、中にContextタグを書けば動くんじゃね。
0420デフォルトの名無しさん
2006/12/02(土) 01:34:45new BitSet(1024)なら、0〜1023(1024-1)桁は最初から使えます。
ただし、必要に応じて自動的に大きさは変わるのであまり気にしなくてよいです。
初期に指定しておけば、その範囲で使う限りは拡張処理の必要がないので、
性能的に得になるというだけです。
BitSetのtoString()は、{ 立ってる, ビットの, 桁, ... } という表記になります。
0桁めと2桁めが立っている4桁のBitSetなら { 0, 2 }
setしたならなんか出るはずですけど、出ませんか。
二進数のように表示するには、端から見ていって立ってれば1、立ってなければ
0を書き出すみたいに書く必要があると思います。
桁数はたぶん右から数えると思うので、逆順に出力しないといけないかも。
BitSetは内部的には、必要なビット数 ÷ 64の要素を持ったlong配列を持ってて
その該当ビットを立てたり下ろしたりしてるので、メモリ効率はbooleanと大差
ないと思います。
0421デフォルトの名無しさん
2006/12/02(土) 01:35:23コンテキストパスがディレクトリ名と同じ場合はコンテキスト設定ファイルは要らないはず。
>>417
WEB-INFの下にweb.xmlは置いた?
404は何が見つからないと言ってる?コンテキスト/アプリそのものが見つからない?
それともファイルが見つからないだけ?
Tomcatが正常に起動してるから、環境変数はOKだよ。
0422デフォルトの名無しさん
2006/12/02(土) 01:42:550423デフォルトの名無しさん
2006/12/02(土) 01:47:18凄く丁寧に解説していただきとても感謝しております。
恐らくSystem.out.println(bit);だけで入力していたからだと思います。
bit.toString()としたら表示できるのでしょうね。
本当にありがとうございました。
0424デフォルトの名無しさん
2006/12/02(土) 01:50:37> ないと思います。
booleanは一人で4byte使ってる希ガス
0425デフォルトの名無しさん
2006/12/02(土) 02:23:030426デフォルトの名無しさん
2006/12/02(土) 03:13:06あれぇ、PrintStream#println(Object obj)は内部でString.valueOf(obj)を
使う、で、それはobj.toString()の結果を使うので明示的にtoString()を
付けても付けなくても出力は変わらないはずだが。
0427デフォルトの名無しさん
2006/12/02(土) 03:48:13DecimalFormat kingakuFormat new DecimalFormat("###,###,###");
Integer kingaku1,kingaku2;
kingaku1 = 12300;
kingaku2 = 100;
kingakuFormat.format(kingaku1);
kingakuFormat.format(kingaku2);
結果
12,300;
100;
これを、
12,300;
100;
のように桁を右に揃えたいのです。
0428デフォルトの名無しさん
2006/12/02(土) 04:10:43よくわかんないんだけど、コンソールに出力するときに右揃えなればいいのかな?
printf関数使ったらどうでしょ。
System.out.printf("%12s\n", kingakuFormat.format(kingaku1));
System.out.printf("%12s\n", kingakuFormat.format(kingaku2));
みたいな
0429デフォルトの名無しさん
2006/12/02(土) 04:18:19ありがとう
ございますます。
印刷をしたいので、左がはにスペースを加えて
文字列として取り出したいのです。
0430デフォルトの名無しさん
2006/12/02(土) 04:26:24ひどい混乱が見受けられる
0431デフォルトの名無しさん
2006/12/02(土) 04:30:400432デフォルトの名無しさん
2006/12/02(土) 04:34:30000,000,100;
はわかるのですが。
0ではなくスペースにしたいのです。
0433デフォルトの名無しさん
2006/12/02(土) 04:35:33> 000,012,300;
> 000,000,100;
これは↓になるのか?
, 12,300;
, ,100;
0434デフォルトの名無しさん
2006/12/02(土) 04:45:47にはなりません。
やりたい事は用紙の指定した位置に
右揃えで3桁ごとにカンマをつけて印刷をしたいのです。
0435デフォルトの名無しさん
2006/12/02(土) 04:52:43>>432
new DecimalFormat("000,000,000");
にしたときはなるよ、
0436デフォルトの名無しさん
2006/12/02(土) 04:55:48意図をくんでやれ。
0437デフォルトの名無しさん
2006/12/02(土) 05:05:40説明要求に正確に応えられないのはもう飽きたス
(´д`;)バージョンチガウ?javax.printとか使ってる?
もう現状を包み隠さず申せ
0438デフォルトの名無しさん
2006/12/02(土) 05:21:55包み隠さず申し上げます。
印刷関係は
Jetbeeというオープンソースのライブラリを使っています。
g.drawString(kingakuFormat.format(kingaku1), 250, 316+ line2*12);
上のここに渡したいのです
kingakuFormat.format(kingaku1)
0439デフォルトの名無しさん
2006/12/02(土) 06:38:20String.format("%11s",kingakuFormat.format(kingaku1));
これで、だめかな?
0440デフォルトの名無しさん
2006/12/02(土) 06:55:45ありがとうございます。
それも、以前やってみたのですが、
正確に右詰ができなかったのです。
桁によって少し左にずれるみたいでした。
0441デフォルトの名無しさん
2006/12/02(土) 06:59:200442デフォルトの名無しさん
2006/12/02(土) 06:59:46そうかカンマと数字でフォントの大きさが違うのかな。
ゴメン。
0443デフォルトの名無しさん
2006/12/02(土) 07:06:36ありがとうございます。
C,VB,Delphiだと右詰めは簡単なのですが.....
0444デフォルトの名無しさん
2006/12/02(土) 07:16:51ですが、どうした?
適用不可なのかな?
0445デフォルトの名無しさん
2006/12/02(土) 07:21:36自分の勉強不足を痛感したのです。
javaのことですので必ずできると思います。
みなさんありがとうございます。
0446デフォルトの名無しさん
2006/12/02(土) 07:44:37右詰で表示したい文字列の左端 = 右詰で表示したい文字列の右端 - g.getFontMetrics().getStringBounds(右詰で表示したい文字列, g).getWidth()
でも
右詰で表示したい文字列の左端 = 右詰で表示したい文字列の右端 - g.getFontMetrics().stringWidth(右詰で表示したい文字列)
でもどうぞ
パディングなんて無駄なことはいらない
0447デフォルトの名無しさん
2006/12/02(土) 07:50:23ありがとうございます。
こんなところ迄今の自分ではたどり着ける訳が
ありませんでした。
0448デフォルトの名無しさん
2006/12/02(土) 07:56:36って質問すればすぐ回答が得られたと思うよ
0449デフォルトの名無しさん
2006/12/02(土) 08:25:38このg.drawString(kingakuFormat.format(kingaku1), 250, 316+ line2*12);
は、Jetbeeでオーバライドされています。
ですから、同じ長さの文字列を渡したいのです。
g.drawString(kingakuFormat.format(kingaku1), 250, 316+ line2*12);
0450tom
2006/12/02(土) 08:28:17tomcatをインストールしました。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.
と出てきています。
どうすればいいんですかね?
0451デフォルトの名無しさん
2006/12/02(土) 08:34:54なら、オーバーライド後のメソッドの仕様が分からないことには何とも言えんが、
drawString(String,int,int)の第3引数がオーバーライド後も文字列の左端の座標の指定なら
与えるべき座標は計算できるのでは?
0452tom
2006/12/02(土) 08:51:51ちなみに、コマンドプロンプトから、cdコマンドを使いentryディレクトリ
まではいけます。
助けてください・・・・お願いします。
0453デフォルトの名無しさん
2006/12/02(土) 08:59:25今まで経験した言語では例えば12文字の長さの文字列
を左の印刷開始位置を指定すれば文字列に空白やカンマが
含まれていても正確に右詰されて印刷できたもですから、
javaでも同じかと思いました。
また、同じ12文字を渡すのに毎回座標を計算しなければならないのは、
なんとも腑に落ちないものでしたので、私の理解が足らないと思い込んで
いました。必ず同じ長さで文字列を整形できるクラスのメッソドが
あるのではないかと。
0454デフォルトの名無しさん
2006/12/02(土) 09:12:03GraphicsのdrawStringは抽象メソッドだからオーバーライドされているのは当然
>>453
単に等幅のフォントしか使ってなかっただけじゃないのか
0455デフォルトの名無しさん
2006/12/02(土) 09:27:54そのようですね。
javaで等幅のフォントを指定する事はできますでしょうか?
0456デフォルトの名無しさん
2006/12/02(土) 09:43:33javaで等幅のフォントを指定する事はできますでしょうか?
調べました。
Font theFont = new Font("MSP明朝 ", Font.PLAIN, 10)にしてありました。
もう少し調べてみます。
0457デフォルトの名無しさん
2006/12/02(土) 09:50:52Font theFont2 = new Font("Courier", Font.PLAIN, 10);
g.setFont(theFont2);
Courierは等幅のフォントですがだめでした。
0458デフォルトの名無しさん
2006/12/02(土) 10:05:47コンソールでは綺麗に右詰で右に整列しているのですが、
Jetbeeというオープンソースのライブラリの問題なのかな、
そんな事はないとおもいますが。
その他は綺麗に印刷ができているので。
みなさんありがとうございました。
0459デフォルトの名無しさん
2006/12/02(土) 10:10:47このケースでは?
ttp://support.microsoft.com/kb/895959/ja
0460デフォルトの名無しさん
2006/12/02(土) 10:26:02だから、/WEB-INF/web.xmlは置いたのか?って聞いてんだよ。
環境変数はOKだとも言ってんだろ?
同じこと何度も書くな。うざい。
0461デフォルトの名無しさん
2006/12/02(土) 10:27:58if (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();
}
印刷したけど右に揃ってるぜ
ライブラリが悪いんじゃなくてお前の使い方が悪いだけだ
0462デフォルトの名無しさん
2006/12/02(土) 10:28:46に教えてもらった
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です。
0463デフォルトの名無しさん
2006/12/02(土) 10:31:06マルチしね
0464デフォルトの名無しさん
2006/12/02(土) 10:35:59ありがとうございます。
そうですか、もう少し落ち着いて良く
調べてみます。
0465デフォルトの名無しさん
2006/12/02(土) 10:50:29そのソース見るとそのライブラリはGraphics2Dの実装返すみたいだから、
drawString(String s, int x, int y)を使うよりも、
drawString(String s, float x, float y)を使った方がさらに正確かも。
0466デフォルトの名無しさん
2006/12/02(土) 11:00:56>>460
WEB-INFディレクトリにweb.xmlはおいていません。
0467デフォルトの名無しさん
2006/12/02(土) 11:10:19置けよ。必須なんだから。動くわけないだろ。
言われたこと全部確認せずに何度も同じことあちこちにコピペするなよ。
うざい。
0468デフォルトの名無しさん
2006/12/02(土) 11:10:240469デフォルトの名無しさん
2006/12/02(土) 11:24:19ありがとうございます。
おかげさまで希望通りいきました。
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
0470デフォルトの名無しさん
2006/12/02(土) 11:36:42右揃えするためにフォントを替えるなんてありえんだろ
カンマが幅広すぎて格好悪いことこの上ねえ
コンソールに出力するのとはわけが違う
0471デフォルトの名無しさん
2006/12/02(土) 11:37:16ボタンを押下すると色が変わったりフォントが変わったりするはずなのですが、
変化がありません。ボタンの配置はできているようなのですが・・・どこがおかしいのでしょうか?
javacコンパイラは一応通りました。
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=28846
0472471
2006/12/02(土) 11:39:13以下URLでお願いします。
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=28847
0473デフォルトの名無しさん
2006/12/02(土) 11:42:01その前の二つは?
0474デフォルトの名無しさん
2006/12/02(土) 11:45:36そうですね。
今回は大変収穫がありました。
細かく位置を調整する方法も教えていただき。
0475デフォルトの名無しさん
2006/12/02(土) 11:50:32俺アプレットってわからないんだけど再起動するとボタンが破綻するのは仕様?笑
俺の環境だと色やフォントが変わる以前にY A M A D Aの一文字すら表示されないぞ?
0476471
2006/12/02(土) 12:08:51それも失敗したやつです。
削除できたらいいのですがここは上げっぱなしのようで…orz
>>475
環境によるのかもしれません。。。
書いた仕様に対してどこがおかしいのか分かりますでしょうか?
下手にコンパイラが通ってしまうためここから進みませんorz
0477デフォルトの名無しさん
2006/12/02(土) 12:16:07とりあえず俺が思ったのはアプレットって大きなCanvasなの?
新しくextends Canvasでクラス作ってみたけどだめだったから
paint(Graphics g)のところが何かおかしいんじゃないかと…。
見えてないのかとsetVisible(true);なりやってみたけど出てこないからやっぱり書けてないんじゃないかな…。
俺携帯の開発しかまともにやったこと無いからJ2MEしかわからなくて力になれなくてすまん。
まぁ暇だから俺も一緒に考えてみるよ笑
0479デフォルトの名無しさん
2006/12/02(土) 12:28:21あと
class MyButtonAdapter implements ActionListener {
の
public void actionPerformed(ActionEvent e){
}
の最後にd.repaint();入れたらボタン押すごとに新しい文字が出るようにはなった。
やりたいのはこういうことじゃなかったらどうしようwwww
力不足ですまんねー。
0480471
2006/12/02(土) 12:35:13>200だから画面外に描画されてるっぽい
すみません、学習が足りずCanvasの意味が分かりませんorz
私の環境ではアプレットは200より十分大きなサイズをhtmlファイル内で記述していました。
>d.repaint();入れたらボタン押すごとに新しい文字が出るようにはなった。
>やりたいのはこういうことじゃなかったらどうしようwwww
いえいえ、ボタンが反応しただけでも進歩しています。
あくまでマウスドラッグ時のmouseDragged()に反応して一定間隔で描画したいのですが、
ボタンが無反応なんですよねorz
0481デフォルトの名無しさん
2006/12/02(土) 12:52:27×Button button1 = new Button("Black");
○button1 = new Button("Black");
0482デフォルトの名無しさん
2006/12/02(土) 13:05:53俺GUIに弱いから曖昧だけどCanvasクラスを利用して描画してるのだと捕らえている。
少なくとも携帯アプリではCanvasを使って描画だったから。
自分はブラウザじゃなくてアプレットビュワーですので画面外なんですねw
ボタンの方は恐らく条件判定が間違っているのだと思う。
if(e.equals(d.button1)) {}とか
if(e.getSource().equals(d.button1)) {}にしても無理だった。
誰かエロい人に聞いてくれ。
ちなみにif節を外したら一定の動作だけどちゃんと動いてくれたからな。
>>481さんの言うように新しいオブジェクトだから受けれて無いだけかも?
もっかい見てこよう。
0483デフォルトの名無しさん
2006/12/02(土) 13:20:32てか今気づいたけどできてるじゃん?wwwww
フォントのサイズを調整するのは一度フォントを変えてからしか適用ができないのな。
あってるかわからないけど初期でも文字サイズ変えれるようにFONTを設定しておいた。
マウスのドラッグについては左ボタンを長押ししながらマウスグリグリしたらちゃんとその位置に描画してくれるよ?
ドラッグの捉え方を間違えてたのか?
SPEED++とSPEED--の仕様が不明なのでどうもしてないけど。
余計かもしれないけど一応うp。
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=28852
0484ぴゅあ
2006/12/02(土) 14:15:27BitSetの扱うものが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進数として扱うのに非常に多いとか)
0485デフォルトの名無しさん
2006/12/02(土) 14:27:410486ぴゅあ
2006/12/02(土) 15:05:48まとめにしかならないけど
button1フィールドを宣言しているのにinitメソッドでローカル変数button1に格納している(>>481)
(MyButtonAdapter等で見ているのはフィールド)
MyButtonAdapter#actionPerformedでイベントを受け取る(またイベントからの判断)のはやったけど
paint(repaint)が必要であることをAppletに伝えられてない(>>479)
あと、先の話になるのでもあるでしょうけど
(ブラウザだと問題ないのだろうと思うけど)
Applet#initメソッドでaddしたものをApplet#destroyメソッドでremoveしたりするといいのかも
0487ぴゅあ
2006/12/02(土) 15:12:46言うまでもないことだろうけど
>下手にコンパイラが通ってしまう
コンパイラは構文とか足りないものくらいまでは面倒見てくれるけど
書いたロジックまでは見てくれないから仕方ない
ロジックは自分で考えなきゃ
そこ、ぼやいても仕様がない
0488デフォルトの名無しさん
2006/12/02(土) 15:54:40エラーがでてきます。クラスパスをコンソールから調べたところ、
CLASSPATH="C:TOMCAT5_5\common\lib\servlet-api.jar"と表示されました。
何か、クラスパスの設定が間違っているのですかね?
0489デフォルトの名無しさん
2006/12/02(土) 15:59:48C:\
0490デフォルトの名無しさん
2006/12/02(土) 16:06:38>>489
C:¥にしてみてもダメでした・・・。
0491デフォルトの名無しさん
2006/12/02(土) 16:09:250492デフォルトの名無しさん
2006/12/02(土) 16:18:42そうしました。
0493デフォルトの名無しさん
2006/12/02(土) 16:26:09環境変数の値です。
0494ぴゅあ
2006/12/02(土) 16:31:11デフォルトならC:\TOMCAT5_5にインストールされるのではないんじゃないの?
0495デフォルトの名無しさん
2006/12/02(土) 16:33:13\(^o^)/ オワタ
C:\>set (enter)
COMPUTERNAME=C:¥
ComSpec=C:¥
HOMEDRIVE=C:¥
HOMEPATH=C:¥
LOGONSERVER=C:¥
Path=C:¥
PATHEXT=C:¥
...
\(^o^)/ ナンテ コッタイ
0496ぴゅあ
2006/12/02(土) 16:35:54で、>>490の後でもエラーの内容も変わらず?
それらのエラーメッセージ挙げてみてもいいのかも?
>クラスパスをコンソールから調べたところ
のところもレスするには微妙に自信なかったりしますけど…
0498デフォルトの名無しさん
2006/12/02(土) 16:43:08CLASSPATH=C:TOMCAT...
を
CLASSPATH=C:¥TOMCAT...
にしろ、という話だったと思うのだが、まさか
CLASSPATH=C:¥
にしちゃったの?
0499デフォルトの名無しさん
2006/12/02(土) 16:48:26エラーメッセージは、シンボルが解決できませんと表示されています。エラーは全部で6個です。
HttpServletRequestやHttpServletResponseのところに^がでています。
インストール先はC:\Program Files\Apache Software Foundation\Tomcat 5.5になっていたので
インストールするときにProgram Files\Apache Software Foundation\をけしました。
0500デフォルトの名無しさん
2006/12/02(土) 16:52:24CLASSPATH=C:\TOMCAT にちゃんとしましたよ。さすがにC:\だけにはしていません。
私の書き方が悪かったです。すみません。
0501ぴゅあ
2006/12/02(土) 16:53:01(ここんとこ触ってないのでCLASSPATHに必要だったかどうかとか定かではないですが)
その消したのを消さないままで書けばたぶん解決するんだろうと思いますよ
0502デフォルトの名無しさん
2006/12/02(土) 16:59:46いつも凄く為になる解説をしていただけるので気になっていました。
0503ぴゅあ
2006/12/02(土) 17:43:09ここ1,2ヶ月はずっと断り続けていたSE業を押しに負けて引き受けてしまったので
今のところプログラマではないですが(春には戻ってるだろうけど)
なので当面はたまに遊びだけ
どうでもいい質問とかいうのに引っ掛けて(?)どうでもいいような話も加えておけば
プログラマだからというわけでもないと思うけど
ただ、プログラマ(仕事)という意味合いでも解る人が増えてくれれば
仕事としての面では、会社も売上率が上がるだろうし
それに伴ってプログラマとかの給料とかももっと上がったりすることもあるんだろうし
それより、解る人がもっと増えてくれれば
自分自身にとっても仕事も楽になるし
更にもっと色んな仕事(プログラムを書くとか)にも触れることができるようになるだろうなぁ
ってとこ?
別に「凄く為になる解説」と言ってもその僅かな部分しか伝えられないし
仮にそれによってその相手が伸びてきたとしても
そうそう追いつけるものでもないだろうし(追いつかれるかどうかとかはどうでもいいことだけど)
もし追いつかれてしまうようなら、自分がもっと勉強すればいいだけのことですしね
それより、質問に答えようと(課題を消化しようとするようなもの?)考えることが
質問者側には単に答えているだけのように見えてそうで、自身の知り得ていないことを知る機会になるかも
と思っているのかも
0504デフォルトの名無しさん
2006/12/02(土) 17:54:50どうでもいい質問は通りすがりの俺が答えましょう
ぴゅあさんは風水師です。
鬼門の方角にJAVA_HOMEを設定すると運気があがります。
0505ぴゅあ
2006/12/02(土) 17:57:26>ぴゅあさんは風水師です。
>鬼門の方角にJAVA_HOMEを設定すると運気があがります。
意味解らんし。。。(−−;
てか、マジでそんな話あったら
あちしには難し過ぎて理解できんかも
(かも…じゃなくて、できん(汗))
0506デフォルトの名無しさん
2006/12/02(土) 18:04:420507デフォルトの名無しさん
2006/12/02(土) 18:19:50文章を書く能力はそんなに無いよね
全体的に読みにくい
0508デフォルトの名無しさん
2006/12/02(土) 18:21:59classpath解決できましたよ!!ありがとうございました!!コンパイルも無事できました!!
本当にありがとうございました!!
0509デフォルトの名無しさん
2006/12/02(土) 19:24:05私の場合、ディレクトリは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>
0510デフォルトの名無しさん
2006/12/02(土) 19:41:14Servletはデフォルトパッケージで作るな。
0511デフォルトの名無しさん
2006/12/02(土) 20:22:45>>510
509です。どういうことでしょう?ちょっと分かりません。テキストを写して
書いただけなんで・・・。
そもそもweb.xmlは、自分でメモ帳などで書くのですか?どうやって作るもの
なのでしょうか?
0512デフォルトの名無しさん
2006/12/02(土) 20:26:26釣られてあげようではないか。
classesフォルダの直下にSample.classを置くと幸せになれるよ
Sample.classはいわゆるサーブレットってやつでつよ。
「サーブレット」がなんなのかびみょーなら
ぐぐると易しく解説してくれてるサイトがいぱーい引っかかりますよ。
0513デフォルトの名無しさん
2006/12/02(土) 20:33:16一応classesフォルダの直下においてあるんですけど。それでもダメです・・
0514デフォルトの名無しさん
2006/12/02(土) 20:34:32だから、デフォルトパッケージで作るなって。
パッケージを知らないのなら、
Servlet以前に入門書でJavaの基礎から勉強し直した方がよい。
0515デフォルトの名無しさん
2006/12/02(土) 20:58:45パケージ作りました。パッケージ文も追加してコンパイルいたのですが、やはり
ダメでした。
classes以下では、javaのパッケージの考え方が使われているのは知っていたのですが、
テキストなどには、すべて、デフォルトパッケージでサンプルなどがあるもので・・・。
0516デフォルトの名無しさん
2006/12/02(土) 21:11:35で、コンパイルされたclassファイルは
パッケージ階層と同じディレクトリ階層を作って、そこに入れた?
それから、web.xmlのクラス名の指定も完全限定名にしたの?
0517デフォルトの名無しさん
2006/12/02(土) 21:37:48別にデフォルトパッケージでも大丈夫だろ?なんでパッケージにこだわってんの?
第一、ここは初心者が質問しに来るところだぜ。第一、サーブレットの最初の方から
パッケージなんてそんなにでてこない。本によっては全部デフォルトパッケージで
サンプル作ってるやつだってある訳だし。質問見ると、とにかくブラウザに表示したい
訳だろし。パッケージパッケージ言ってないで質問の意図分かってやれよ。
0518デフォルトの名無しさん
2006/12/02(土) 21:54:36アプレットみたいなやつで最近はやりのやり方があったら教えてください。
0519デフォルトの名無しさん
2006/12/02(土) 21:57:08そのままだと、コンテキストのデプロイに失敗しているのかそれ以外か判断付かないね。
webapps/chapter03-3/hoge.html を作成し、適当なHTMLを記述してみて。
http://localhost:8080/chapter03-3/hoge.html をブラウザで表示できないなら、
コンテキストのデプロイに失敗している。logs フォルダに何かログがあるはずなので、そこを見てみよう。
hoge.htmlが見えたなら、他の原因かな。ちょっと思いつかない。
とりあえずログ見てみよう。
0520デフォルトの名無しさん
2006/12/02(土) 21:57:39俺から見ると別に問題はなさそうなんだが・・・。単純にブラウザから
の指定の仕方、例えば、スペルミスとかじゃないのかな?
>>516
あんまり初心者いじめんなよ。あなたも最初からすぐに理解してできたわけじゃないでしょ?
自分が分からない立場だったらどうよ?混乱するだけだろ?
0521デフォルトの名無しさん
2006/12/02(土) 21:58:28またまた釣られてみました。
509で書かれたweb.xmlを見る限り、先頭に<web-app>が抜けてるよぉ。
できればSample.classのソースコードとweb.xmlの詳細を載せてもらえると、なんかわかるかも
0522デフォルトの名無しさん
2006/12/02(土) 22:00:47特にJSPでは、Javaの仕様の関係で無名パッケージのクラスが使えないからね。
ま、サーブレット単体では動かなくなることはないんだけど。
実際Tomcat5.5付属のサンプルなんか無名パッケージに属してる。
0523デフォルトの名無しさん
2006/12/02(土) 22:00:56デフォルトパッケージで動かしてみてから言えよ。
0524デフォルトの名無しさん
2006/12/02(土) 22:15:140525デフォルトの名無しさん
2006/12/02(土) 22:29:53import 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>" );
}
}
0526デフォルトの名無しさん
2006/12/02(土) 22:30:42<?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>
0527デフォルトの名無しさん
2006/12/02(土) 22:39:45- <servlet> とか
- <servlet-mapping> とか。
先頭に"-"がなぜ付いている?
コンテナ起動時に何かエラーが出てないかい?
> res.setContentType( "text/html; charset=Shift_JIS" );
相当古い本を使っているか、サンプルがマズい本を使っているね。
Windows環境なら
res.setContentType( "text/html; charset=Windows-31J" );
がおすすめ。
0528デフォルトの名無しさん
2006/12/02(土) 22:48:02サンプルがまずいんですか・・・
-<web-app よくわかりませんが"-"がついています。
コンテナ起動時にはとくに何もおきていないです。
コンテナ起動時に起きるエラーといとどういうものが考えられますか?
0529デフォルトの名無しさん
2006/12/02(土) 22:58:42IE6で開いたのをコピペしたんじゃないか?
0530デフォルトの名無しさん
2006/12/02(土) 22:59:44要素の前に付いている"-"は全部取ろう。
>コンテナ起動時に起きるエラーといとどういうものが考えられますか?
parse error とか出てない?
"-"なんて付いているから、web.xmlの読み込みに失敗しそう。
0531デフォルトの名無しさん
2006/12/02(土) 23:26:52parse error というものは出ていないです。"-"は消します。
web.xmlというのはメモ帳で自分で作成するのですか?
それとも、どっかからコピーしてきて少しだけ直すもんなんですか?
とりあえず、今日はもうテキスト読んで考えてみます。
色々とアドバイスありがとうございました。またよろしくお願いします。
0532デフォルトの名無しさん
2006/12/03(日) 00:19:47String型やint型をInteger型に変換したいのですが、
new Integer(String a)などとインスタンス生成すればできますよね。
しかし、ループのなかで変換をを行いたい場合、
インスタンス生成以外の方法で変換をかけることはできないでしょうか?
0533デフォルトの名無しさん
2006/12/03(日) 00:23:17基本的に無理。
ループまわす回数や数値の範囲によっては、
インスタンスプール使うって手もあるけど。
0534532
2006/12/03(日) 01:05:46回答ありがとうございます。
たとえば無茶ですが、以下のように生成したとしても
制御する方法があるということですか。
for(int i=0 : i<100 ; i++){
new Integer(a[i]);
}
インスタンスループについて調べてみましたが
なかなか難しい・・。
0535デフォルトの名無しさん
2006/12/03(日) 01:10:04Javaのバージョン何使ってる?
5.0使ってるならInteger#valueOf使いなさいな
内部で配列にキャッシュしてるから。
Stringの場合、Mapでキャッシュするのが一般的だが
生成される相手がIntegerならMap#getのコストやString#equalのコストのが高くつくかもね
0536デフォルトの名無しさん
2006/12/03(日) 01:38:390537デフォルトの名無しさん
2006/12/03(日) 01:48:250538ぴゅあ
2006/12/03(日) 04:37:34何故そうしたいと思ったのかが判らないところですけど
書くコードとしては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としては見えなくなるのは嫌だったりしないのか?とか思ったりもするけど
無駄な努力をしようとしているようにも思えてしまったりですけど
もっと違うことを求めていたりするんでしょうか
0539デフォルトの名無しさん
2006/12/03(日) 10:29:27今、web.xmlのことで悩んでいるのですが、メモ帳で中身を書いたら、中身が消えていました。
そもそもweb.xmlというものは0から自分で書くものなのですか?それとも、コピーして書き換える
程度なのですか?書き換える(編集)する場合は、どうすればよいのでしょう?
0540デフォルトの名無しさん
2006/12/03(日) 10:31:53web.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>
----------------------------------^
0541デフォルトの名無しさん
2006/12/03(日) 11:04:33>そもそもweb.xmlというものは0から自分で書くものなのですか?それとも、コピーして書き換える程度なのですか?
どちらでもお好きなように。最終的に正しい書式になっていればOKです。
メモ帳でも、他のテキストエディタでもお好きなのを使ってください。
で、消えちゃったと言っているのは、消えたのではなく
内容が間違っているのでIEで表示できていないだけでしょう。
「<url-pattern>/HellohtmlServlet</servlet-name>」
じゃなくて
「<url-pattern>/HellohtmlServlet</url-pattern>」
じゃないの?
XMLの書式は(HTMLも基本的に同じ)開始と終了の要素名が一致していないとダメ。
0542デフォルトの名無しさん
2006/12/03(日) 11:12:40ありがとうございます。もう一度書いてみます。
0543デフォルトの名無しさん
2006/12/03(日) 11:19:49- <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>
こんなふうに書いたのですが、また、ダメでした・・・。どうしてですかね?
0544デフォルトの名無しさん
2006/12/03(日) 11:36:090545デフォルトの名無しさん
2006/12/03(日) 11:41:35もしかして”-”ですか?なんかいつもついているんですよね?
0546デフォルトの名無しさん
2006/12/03(日) 11:42:58それは、あなたがいつも付けているから。
IEで開くのはやめよう。
いつもメモ帳やテキストエディタで開こう。
0547デフォルトの名無しさん
2006/12/03(日) 11:55:47”-”消してみました。でもダメでした・・・。
web.xmlを書くときはまず最初にconfディレクトリにある大元のweb.xmlをメモ帳
などで開き、必要なところだけコピーして直せばいいんですよね?そんで、WEB-INF
の中においておけば。大元を開くと、なんかすご〜くいっぱい書いてあるので、どれを
コピーしたらいいのか・・・・。
後、web.xmlをWEB-INFの中に作って、web.xmlをダブルクリックで開くと、いつも先ほど
の(540)記述した画面になっているのですが、confにある大元のweb.xml以外はIEで
見ることはできないのでしょうか?
0548デフォルトの名無しさん
2006/12/03(日) 12:11:48confのweb.xmlをコピーして編集するぐらいなら
Tomcatのwebappsディレクトリにあるサンプルから
コピーしてきて編集した方がいいかと。
言うとおり、すごーくたくさんあって大変だから。
まさか、confのweb.xmlは変更してないよね?
IEで見られないのは、書式が間違っている可能性が高いな。
正しく書いてあればIEで見られるはず。
0549デフォルトの名無しさん
2006/12/03(日) 12:19:04了解しました。アドバイスありがとうございます!
confのweb.xmlにはさすがにヤバイ気がして手をつけていません。
0550デフォルトの名無しさん
2006/12/03(日) 12:36:07ボール同士が完全弾性衝突するように書き換えてください
0551デフォルトの名無しさん
2006/12/03(日) 13:01:20画像のパスが何故か絶対パスで取得しているみたいで
元の画像を元のフォルダから別のところに移すとJARファイルを実行しても画像が表示されなくなります
プログラム内の画像の指定は ./image/aaa.png
って感じで指定しているし画像もJARファイルに入っています
何ででしょうか
0552デフォルトの名無しさん
2006/12/03(日) 14:36:22ドン亀レスなんですがぴゅあさんは凄い方なのですね。
元々はプログラマに腰を据えていたらSEにって話が来たのですかね?
Javaメインのプログラマさんですかね?
もし自分がPGになるのならぴゅあさんみたいな方の下につきたいですね。(PGとしてもSEとしても。)
きっとこのままだと自分もPGになると思うのでその節はよろしくお願いしますね。
>それより、質問に答えようと(課題を消化しようとするようなもの?)考えることが
質問者側には単に答えているだけのように見えてそうで、自身の知り得ていないことを知る機会になるかも
と思っているのかも
というのには同意です。
自分も初心者にもかかわらず宿題スレを見て考えて見たりしていますので。
やっぱりぴゅあさんは凄い方ですね。
誉め過ぎですか?笑
0553デフォルトの名無しさん
2006/12/03(日) 15:44:34デフォルトパッケージの時のコンパイルは、自分の場合、ファイルを作ったディレクトリ
までcdコマンドで移動して、javac classpath・・(省略)・・クラス名.javaでコンパイルしています。
クラス名の前に何かつけるのですか?
0554デフォルトの名無しさん
2006/12/03(日) 16:51:28統合環境を導入するまでもないのならmakeツールを使えば楽ができるよ
個人的にはAntがおすすめ
0555デフォルトの名無しさん
2006/12/03(日) 17:05:56画像の取得の仕方を書いていないのではっきりとは言えないが、
画像をStringでファイル名として指定しているのならjarの中のリソースを見つけることはできない。
getResource等でリソースとして検索してそのURLを画像の取得に使う。
もし、そうしているのなら、リソース名の大文字小文字の違いをみてみる。
jarの中では大文字と小文字は区別されるので、
Windowsのようにこれを区別しないファイルシステムではうまくいっても、
jarに入れた途端うまく見つけられなくなる。
0556ななし
2006/12/03(日) 17:08:52http://music.j-total.net/data/028fu/034_fumido/003.html
以前に教えてもらった事が有るのですが忘れてしまいまして。。。
アドレスの欄に何かを入れると聞いたような。。。よろしくお願いします。
0557デフォルトの名無しさん
2006/12/03(日) 17:13:03どういうことでしょう?makeツールというものは初めて聞きました。
ま〜楽にコンパイルできなくてもいいんで、クラス名の前に何か追加する
ような方法でもいいです。とりあえず、コンパイルできれば。
0558デフォルトの名無しさん
2006/12/03(日) 17:18:27void 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のことですか?
0559ぴゅあ
2006/12/03(日) 17:25:47>もし自分がPGになるのならぴゅあさんみたいな方の下につきたいですね。
それがいいかことなのかどうかは判らんですけどね。。。(あと略)
ああ あと別にJavaメインというわけではないです
多い感があるのは単に時代の流れ?(Javaはなるべく避けて通っているけど…(汗))
>>554
別に突っ込みいれるほどのことでもないと思うけど
この世界でmakeツールとはあまり言わないような気もするけど…
どうなのかな
>>557
ビルドツールと言えば聞いたことは・・・ないかもですけど
取り敢えずは触れそうなものかどうか、>>554の言っているAntについて調べてみては?
>クラス名の前に何か追加する
>ような方法でもいいです。
て、よく判らんけどコマンドラインのこと?(javac なんちゃらとか)
0560デフォルトの名無しさん
2006/12/03(日) 17:29:21しかし、この業界、細かいことに拘って威圧するやつ多いから
無難な言葉に矯正できるならしとくべきか。
理系崩れとかは特に粘着だから気をつけるべし。
0561ぴゅあ
2006/12/03(日) 17:30:40methodメソッドを呼んでいるところで仮引数aに1を渡しているんだろうと思いますけど
それを色々変えてやってみればいいと思います
あと、"b=10"については
>b=a++;
のところを"b=++a;"にして結果を見てみて、何でかな?と思ってみるのがいいかも
0562デフォルトの名無しさん
2006/12/03(日) 17:31:02ttp://www.nextindex.net/java/ope.html
0563ぴゅあ
2006/12/03(日) 17:34:23確かに通じることは通じると思う
でも、特にJavaやってる人のとこに行くと、変にやたらと拘る人いるよねぇ。。。(−−;
ただ、まだ聞いたことない相手だし(>>557)
ちゃんと言っといてあげた方がいいんだろうと思うし
0564デフォルトの名無しさん
2006/12/03(日) 17:36:49次のように書いた場合の 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);
}
}
0565デフォルトの名無しさん
2006/12/03(日) 17:45:49論文書いたこと無いのかよ
0566ぴゅあ
2006/12/03(日) 17:48:14ない( ̄^ ̄)
0567デフォルトの名無しさん
2006/12/03(日) 18:17:05>>559
そうです。コマンドラインからのコンパイル方法です。
javac -classpath〜クラス名.javaに何か追加するコマンドがあるのですか?
0568デフォルトの名無しさん
2006/12/03(日) 18:36:40「makeツール」って言葉は普通に使うぞ。
0569ぴゅあ
2006/12/03(日) 18:42:46javacでやっている代わりにAntを使ってみるのもひとつ
ということです
あ そっか
この流れ見てなかったけど
>ファイルを作ったディレクトリ
>までcdコマンドで移動して、javac classpath・・(省略)・・クラス名.javaでコンパイルしています。
をどうかしたいのでなくて、たぶん>>509辺りから(再び?)始まってるデフォルトパッケージの話の流れなんですね
サーブレット周りはもう長くやってないし殆ど覚えてないけど
話の流れで出てきているものがそれぞれ適切なことを言っているとして
現段階では無理せずデフォルトパッケージ云々は忘れておいていいってことじゃないでしょうか
JSPを使うようになると意識しないといけないということであるなら、そのときになってからで十分だと思うし
0570デフォルトの名無しさん
2006/12/03(日) 18:44:16cdでいちいち移動しても別に構わないけれど、
パッケージが複数あった時に、それぞれのディレクトリまでいちいち移動するのは面倒だろう。
例えば、
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のツールリファレンスを読んでから質問すべきだな。
0571デフォルトの名無しさん
2006/12/03(日) 18:50:20納得
てか論文関係無しに変だぞ
例)〜けど〜けどの2重使用
0572デフォルトの名無しさん
2006/12/03(日) 18:54:07死ねばいいのに
0573ぴゅあ
2006/12/03(日) 19:09:41確かに書いてて変だと思ってるけど
めんどいのでそのままにしてる。。。(汗)
ここんとこ出掛けるのにあまり時間なかったりもしてたりするし…
それより話の中身の方がなんとか解って欲しいと思ってたりするし
0574デフォルトの名無しさん
2006/12/03(日) 19:10:480575デフォルトの名無しさん
2006/12/03(日) 19:13:32∧_∧
( ・ω・)=つ≡つ 馴れ合い?ぽコぽコにしてやんよ
(っ ≡つ=つ
./ ) ババババ
( / ̄∪
(…中略…)
∧_∧
((..;)ω;) ブワッ
(っ ≡つ
/ #)
( / ̄∪
0576デフォルトの名無しさん
2006/12/03(日) 19:38:38コンパイルできません・・・・。
私の場合、classesディレクトリの下にpack01というパッケージを作ってっています。
0577デフォルトの名無しさん
2006/12/03(日) 19:39:59他人のプログラムを読むための練習になるな
0578デフォルトの名無しさん
2006/12/03(日) 20:11:11Document doc;
XmlDocument xdoc = (XmlDocument) doc;
BufferedWriter bw = new BufferedWriter(new FileWriter("result.xml"));
xdoc.write(bw, "Shift_JIS");
となってますが、J2SE5.0にはXmlDocumentというクラスがありません。Documentをファイルに出力するには一般的にどのように書くのでしょうか?
0579デフォルトの名無しさん
2006/12/03(日) 20:24:54初心者を混乱させることもしばしば。
半分ぐらいはまともなレスつけてるんだから、
もう少し絞って答えればいいのに。
0580デフォルトの名無しさん
2006/12/03(日) 20:30:05不確かなことを想像だけで答えすぎ。
初心者を混乱させることもしばしば。
半分ぐらいはまともなレスつけてるんだから、
もう少し絞って答えればいいのに。
0581デフォルトの名無しさん
2006/12/03(日) 21:17:51自己レスができました。
// 文書を書き出す
XMLSerializer sr = new XMLSerializer(new FileOutputStream("result.xml"), new OutputFormat(doc));
sr.serialize(doc);
0582デフォルトの名無しさん
2006/12/03(日) 23:28:0735行目で「')'がありません」とのエラーが出てしまうのですが
全体の流れはこのままで単純にこのエラーを取り除くにはどう書けばいいのでしょうか?
プログラム自体はまだ全くの未完なので動作はしません。
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=28864
0583デフォルトの名無しさん
2006/12/03(日) 23:30:320584デフォルトの名無しさん
2006/12/03(日) 23:34:01union[i].drawEverything(g);
i やら j がインスタンス変数だったり…… 凄いな、これ。
0586デフォルトの名無しさん
2006/12/03(日) 23:37:25>>583は無視していい。
>>584に答えが出てる。
0587582
2006/12/03(日) 23:37:33それで直りました。ありがとうございました。そういや型名は不要でしたかorz
とりあえずここまで一気に作って1回目にコンパイルして出たエラーなので
だいぶおかしなところもあると思います。というかJava自体習いたてなのでその辺は見逃してください^^;
0588デフォルトの名無しさん
2006/12/04(月) 00:11:56public 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){
}
}
0589デフォルトの名無しさん
2006/12/04(月) 00:12:46public 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);}
}
}
0590デフォルトの名無しさん
2006/12/04(月) 00:14:47SE.pico();
SE.pico();
ってな感じに実行しても一回しか音が鳴らないのですが
どうしたらよいのでしょう?
0591デフォルトの名無しさん
2006/12/04(月) 00:19:07それだけじゃ原因特定できない
0592590
2006/12/04(月) 00:24:49SE.pico();
SE.pico();
}
としかやってませんが。
いちおうファイルがないとかではないですし。これだけでプログラム全部のせてます。
0593デフォルトの名無しさん
2006/12/04(月) 00:30:21お前のように人の話を聞けない人間は生きている価値は無い
http://pc8.2ch.net/test/read.cgi/tech/1161492130/997n
0594590
2006/12/04(月) 00:44:38よく理解できなかったからもう一回きいてみたんです。
すみませんでした。
0595デフォルトの名無しさん
2006/12/04(月) 00:46:23まぁアレだ、
きっと、「1回だけ音が鳴るメソッド」を
「2回呼び出している」ケド
「1回しか音が出ない」
と言いたいわけだな?
イヤ、違うのか。。。
0596デフォルトの名無しさん
2006/12/04(月) 00:49:09本当は閉じる処理とか必要だと思うが、
audioFormat = audioInputStream.getFormat();
をpico()のlineを開いてる辺りに入れただけで何回pico()を呼び出しても鳴るようになると思う。
基本的にストリームはデータを出し尽くしたらリセットするか開き直さない限りデータは出てこない。
この場合、1回目のpico()でデータを出し尽くしたので2回目のpico()は鳴らなくなった。
0597デフォルトの名無しさん
2006/12/04(月) 00:58:02audioFormat = audioInputStream.getFormat();
でなく
audioInputStream = AudioSystem.getAudioInputStream(soundFile);
の方だ
0598デフォルトの名無しさん
2006/12/04(月) 01:02:42lineを閉じている辺りにaudioInputStream.close();を入れておくとなおよい気がする
0600590
2006/12/04(月) 01:29:120601デフォルトの名無しさん
2006/12/04(月) 02:01:27そりゃそうだろ、そういうふうにプログラミングしてるんだから
本当に同時に同じものを再生したら1回鳴らせるのと同じじゃん
0602デフォルトの名無しさん
2006/12/04(月) 02:05:20Sound APIでミキシングするか、音が良くないがスレッド二つ使ってpicoを呼び出せ
0603602
2006/12/04(月) 02:09:37audioInputStreamをインスタンス変数にしてpicoをインスタンスメソッドにしてもいい
0604デフォルトの名無しさん
2006/12/04(月) 02:15:29ミュートやソロなどしか見当たらないので困っています。
0605デフォルトの名無しさん
2006/12/04(月) 15:41:15int 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[]に代入するにはどうしたらいいでしょうか?
重み付けまでは自分で考えてみたのですがよくわからないのでお願いします。
0606デフォルトの名無しさん
2006/12/04(月) 15:47:36って具体的な話じゃなくて抽象的、つまり話しをはぐらかしてる意味があるのって分かってる?
0607605
2006/12/04(月) 15:47:45○kakuritu[i] = youso1[i]/temp;
の間違いです。
よろしくお願いします。
わかりにくいかもしれませんので補足説明しますが
youso1[]の総和分のyouso1[i]が確率になります。
ずれていませんように。
fi
pi=----
n
Σ fk
k=0
よろしくお願いします。
0608デフォルトの名無しさん
2006/12/04(月) 15:50:42よいのでは?
0609605
2006/12/04(月) 15:56:00もしかしたら重み付けって意味を取り違えてたかもしれません。
1 2 3 4 5 があったら上から0.4 0.25 0.2 0.1 0.5 の様な確率を決めて置く事いうんですか?
数学が苦手な為にすみません。
>>608
重み付けの意味を履き違えていたようです。
piの実数を使って選択をしたいです。
重み付けも後で使うので参考にさせていただきます。
0610デフォルトの名無しさん
2006/12/04(月) 16:25:33いいでしょう?
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までカーソルがいかないようにするにはどうすればいいでしょうか?
宜しくお願いします。
0611デフォルトの名無しさん
2006/12/04(月) 16:35:17JTextFieldでsetLayoutなんか使えるんですね。
私は面倒ですが、パネル上に別々に貼り付けるか、座標を指定して貼り付けてます。
0612デフォルトの名無しさん
2006/12/04(月) 16:41:18パネルに貼るのは簡単なのですが、textFieldに張りラベル以外のところで入力を許したいのですが無理なのですかね
・・・
左寄せの場合はsetMarginを使えば先頭を余白にしてなんとかできるのですが、
右側にラベルを寄せてというのがどうしても出来なくて。もし分かる方がいらっしゃれば宜しくお願いします。
0613デフォルトの名無しさん
2006/12/04(月) 16:43:29他に何か特別が意味があるのでしょうか?
例えば、finalを付けるとインナークラス内でも参照可能になるのですが、
なぜ参照可能になるのか、理論がわかりません。
final Map map = new HashMap();
Map mapTest = new Map() {
public void clear() {
map.put("test", "1");
}
}
0614デフォルトの名無しさん
2006/12/04(月) 16:48:19この辺が参考になる。
ttp://javafaq.jp/S016.html#S016-14
0615613
2006/12/04(月) 17:00:54とても参考になりました。
インナークラスの中では、変数と言うよりも、
オブジェクトの参照そのものに置き換わる感じですかね。
参照に置き換わっているから、
インナークラスの外のローカル変数に寿命が来ても、ずっと参照可能になっていると。
早速のお返事ありがとうございました。これは勉強になりました。
0616デフォルトの名無しさん
2006/12/04(月) 17:11:58これはやってることは一緒なのかな。
setBoundsとかinsetsいじるとかしてるみたいだが。
0617デフォルトの名無しさん
2006/12/04(月) 17:16:03ジャンケンを数回して勝ち負けを記録していくプログラムなんですけど、
相手がグーを三回連続でだしたらその後の自分の手はパーのみを出し続けるってどういうふうに作るんですか?
if文だけで作れるんでしょうか?
0618613
2006/12/04(月) 17:44:19>>616さんのサイトを見てみましたが、
どうやらJTextFieldsのレイアウトは座標指定みたいですね。
textField.setLayout(new BorderLayout()); は、ダメみたいです。
レイアウトを使わないで試したところ、右側にラベルを配置しても、うまく行きました。
0619デフォルトの名無しさん
2006/12/04(月) 18:16:37ざわざわ・・・
前回の相手の手と連続で出した回数を保存しておけばいいんじゃないか
で、3連続以上だったらフラグを立てる
ただ、それが強いとは思えん
0620デフォルトの名無しさん
2006/12/04(月) 19:19:30ざわざわってそういう意味かwwwwwww
0621605
2006/12/04(月) 19:20:22重み付けではなく>>607のように"youso1[]の総和分のyouso1[i]の確率"
を利用して取捨選択したいです。
アドバイスよろしくお願いします。
0622デフォルトの名無しさん
2006/12/04(月) 20:54:53int 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;
}
}
}
0623605
2006/12/04(月) 22:01:08ありがとうございます。
これは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
長くなってしまいすみません。
よろしくお願いします。
0624デフォルトの名無しさん
2006/12/04(月) 22:05:200625605
2006/12/04(月) 22:09:41それは少し思いましたが…。
Javaで作ってるのですが考え方はわかるのですが、どう書いたら良いのかわからないので。
簡単に言うと 「確率を元に選出するにはどうしたらいいんですか?」 と言う事です。
説明がだらだら長くなってしまいすみませんでした。
0626デフォルトの名無しさん
2006/12/04(月) 23:35:370627605
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さんのものを参考にもう少し自分で考えてみてわからなかったらまたきます。
失礼いたしました。
0628デフォルトの名無しさん
2006/12/05(火) 02:03:01うまくいかずに悩んでいます。
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();
}
}
}
==============================================================================
0629デフォルトの名無しさん
2006/12/05(火) 02:48:01ttp://www.fileformat.info/info/unicode/char/dacf/index.htm
プログラム自体は問題ないと思う。
9B5Aならちゃんと魚と出力されるし。
0630デフォルトの名無しさん
2006/12/05(火) 03:25:50バイナリエディタで開いた結果は?
0631デフォルトの名無しさん
2006/12/05(火) 05:17:42レスありがとうございました。
すみません、当方の確認ミスでした。
「DACF」の値ですが、文字コードがUTF-8ではなくGB2312(SHIFT_JISの中国版?)
とのことで、エディターで指定しなおしたところ、表示されました。
java以前の話だったようで、切り分けが出来てなくて申し訳ありませんでした。
お陰で手持ちの課題が全て解決しました。謝謝!
0632デフォルトの名無しさん
2006/12/05(火) 05:40:00>616
>618
レス遅れて申し訳ありません。
まだ試していませんがやってみます。
ありがとうございました。
0633デフォルトの名無しさん
2006/12/05(火) 11:19:33補足として個人的にはSWTよりはSwingのが使いやすいかなと考えています。
JBuilderやJ++は論外ですかね?
0634デフォルトの名無しさん
2006/12/05(火) 11:31:33J#ってのはあるが、だったら C# で書けと。
(C#もJ#もスレ違いなのでここではこれ以上言わない。)
他には Eclipse のプロジェクトで VisualEditor(VE) ってのがある。
VE と NB と JBuilder で簡単なアプリ作ってみて
とっつき易いと感じたものを選べば、それがあなたにとってのベストなはず。
Swing で行くと決めたなら、Swing スレを眺めて見るのも良いかと。
VE も NB もそれぞれ利点・難点があって好みの問題って感じになってる。
(JBuilder派はSwingスレではほとんど見ない。)
0635デフォルトの名無しさん
2006/12/05(火) 15:04:40C言語で以下のような処理をJavaで行いたいです。
void syori(int *xy,long *dis)
{
*xy += testX();
*dis += testDis();
}
0636デフォルトの名無しさん
2006/12/05(火) 15:11:19無理。
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(); }
0637デフォルトの名無しさん
2006/12/05(火) 15:12:36配列やコレクションクラスで何とか実現できるけど、基本的には専用の
classを作るべき。
0638デフォルトの名無しさん
2006/12/05(火) 15:12:49知り合いからやさしいjavaって言う入門書のほうが簡単と言われたんですが2ちゃんねるの住人の中でこの参考書を使用した方って居ませんか?
0639デフォルトの名無しさん
2006/12/05(火) 16:26:32ネット上に落ちていたソースなんですが、
実行して「読込」をやろうとしているのですが、
どの種類?のファイルを読み込む物なのかよく分かりません。。
どなたか分かる方教えて下さい。
お願いします。
ソースはこれです↓
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=28884
0640デフォルトの名無しさん
2006/12/05(火) 16:35:03210行あたりに
paper.load( InputStream )
があるので、Paperクラスに読み込み処理 Paper#load() が書いてあると思われる。
たぶん、描画情報のオブジェクトを配列かリストに入れて、シリアライズしたもんじゃねーの?
0641デフォルトの名無しさん
2006/12/05(火) 16:42:05今はデータベースソフト(MY SQL)をインストールして
アプリを作成しているのですが、
これってもし完成して別の環境で起動したい場合、
そこにデータベースソフトが入っていなければ作動しないのですか・・・?
簡単な仕組みまで教えていただきたいです
0642デフォルトの名無しさん
2006/12/05(火) 16:55:140643デフォルトの名無しさん
2006/12/05(火) 16:55:41教えて頂きありがとうございます。
>描画情報のオブジェクトを配列かリストに入れて、シリアライズしたもん
とは一体どういう事なのでしょうか??
0644640
2006/12/05(火) 17:04:18俺のてきとーなカンだ。 俺ならこう作る、って読みなんで、実際は違うかもな。
たぶん書道アプレットみたいなモンだと思うが、一筆(マウスボタンをプレス→離す)ごとのマウス移動の軌跡を
順番に保存するオブジェクトがあるんだろうと思われる。
んで、save/loadで書いたとおりに保存/再生できるっぽい。
saveは、マウス軌跡保存オブジェクトをシリアライズ(ググれ)してファイルに保存。
loadは、そのファイルからオブジェクトに戻して、保存された情報を元に描画、って感じか。
つかソース読めば分かることなんだが
0645デフォルトの名無しさん
2006/12/05(火) 17:29:25なるほど。
なんとなくつかめてきました!
とても参考になりました!あとは自分で何とかがんばります!
ありがとうございました!
0646デフォルトの名無しさん
2006/12/05(火) 17:43:50どこでも動く、をやりたいなら
Java で実装された組み込みデータベースを使用する手もあり。
HSQLDB や Derby が有名どころ。
ttp://www.hsqldb.org/
ttp://db.apache.org/derby/
0647デフォルトの名無しさん
2006/12/05(火) 19:06:570648デフォルトの名無しさん
2006/12/05(火) 19:34:27MyKeyAdapterクラスを独立して作る点など、おおまかな部分を変えずに修正したいのですが
どこが悪かったのでしょうか?
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=28885
0649デフォルトの名無しさん
2006/12/05(火) 19:55:460650デフォルトの名無しさん
2006/12/05(火) 19:57:25イベント受け取った後、Draw を再描画せんといかんのでは?
0651デフォルトの名無しさん
2006/12/05(火) 20:13:150652648
2006/12/05(火) 20:20:27d.repaintをつけても同じでした。
というか配列にうまく入れられていないっぽいですorz
>>651
適当な初期化をしてみましたが変わりません。。。
どこかにもっと大きなミスがあるのでしょうか。
0653デフォルトの名無しさん
2006/12/05(火) 21:12:55public 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){
}
}
それから、最初はフォーカスが得られてないだろうから、クリックするなりなんなりフォーカスを与えてやること。
0654デフォルトの名無しさん
2006/12/05(火) 21:22:46書いたソースのアプレットをhtmlで動かしたいのですがどうすればいいのでしょうか?
0655デフォルトの名無しさん
2006/12/05(火) 21:37:45ありがとうございました!
フォーカスという概念は初めて知りました。
ググってみたところrequestFocus();とかいう関数なんかもあるんですね。
0656デフォルトの名無しさん
2006/12/05(火) 21:55:20class 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);
}
}
0657デフォルトの名無しさん
2006/12/05(火) 22:02:43JLabelにセットする文字列の頭が<html> で始まってると、
その先はHTMLとして解釈される。
setText("<html><font color='red'>ほげ</font>")
とか。
個人的には大嫌いな仕様だが。
0658デフォルトの名無しさん
2006/12/05(火) 22:11:23「正常な動作」を定義してくれんと。
0659デフォルトの名無しさん
2006/12/05(火) 22:30:130660654
2006/12/05(火) 23:36:05専用スレがあればいいんですが。。。
0661ぴゅあ
2006/12/06(水) 00:04:37>SunのJava Studio Enterprise8を使っています。
と前置きしているところで微妙に判らないような気もしますけど
(申し訳ないけどJava Studio Enterprise8とやらは使ってないです)
>アプレットをhtmlで動かしたい
アプレットの勉強を始めるとたぶん普通に初っ端からでてきたりするんだろうと思うようなところではない?
SunのJava Studio Enterprise8に対して何かしたいのか
http://www.hellohiro.com/applet.htm
に説明されているようなことなのか(適当にググッた)
よく判らんのですが。。。
後者なんかは「そんなんわかっとるわい」とかなりそうだし?
0662デフォルトの名無しさん
2006/12/06(水) 00:24:40始点はコンストラクタでなんとかなりました。
終点はこのプログラムだとどう入れたらいいのでしょうか?
72〜73行目でそれを書いているのですが現在のプログラムだと
ex、eyが見つかりませんと言われコンパイルエラーですorz
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=28891
0663デフォルトの名無しさん
2006/12/06(水) 00:41:35Super クラスのサブクラスのフィールド ex,ey の存在なんて知らない
だからアクセスできない
setStartPoint と setEndPoint メソッドはソースの肥やしか?
ご丁寧にスーパークラスに用意されてるんだから
ちゃんとサブクラスで実装して使え
0664ぴゅあ
2006/12/06(水) 00:48:30"Super union[]"ですよね
"union[j].ex"とかしたときex(或いはまたey)あります? Superクラスの中
あと目に付いたのは…
まだ書き忘れているだろうと思いますけど
>Super union[] = new Super[100];
でSuperクラスのインスタンスを保持する配列(入れ物)は確保していますけど
インスタンス化の処理は何処へ・・・
0665662
2006/12/06(水) 08:32:32とりあえずコンパイラが通るか練習用に、setEndPointメソッドと同じものを
別名で作って試したりしていました。しかし上手くいかなかったものでsetEndPointは保留にしていました。
SuperクラスにsetEndPointって名前であるからこそ使えるんですねorz
>>664
おっしゃっていることの意味が若干理解できていません私orz
48行目あたりの文でインスタンスを生成し、始点であるsx,syが
mousePressedで決定されたのでついでにコンストラクタで代入している。
のち49行目で配列に格納。というつもりで書いてます。。。
0666デフォルトの名無しさん
2006/12/06(水) 09:53:270667デフォルトの名無しさん
2006/12/06(水) 10:44:54メモリサイズはどのようにして割り出せば良いのでしょうか。
例えば、int は何バイトで、String なら何文字の時に何 byte, と言ったような。
0668667
2006/12/06(水) 10:50:56ttp://ufcpp.net/study/csharp/cmp_type.html
等を見ると、
int = 4byte
long = 8byte
String = char(2byte) * 文字数
などと考えても良いものなのでしょうか。
また、配列の場合は単純に掛け算すれば良いのでしょうか
(int[3] の場合 12byte といった)
0669デフォルトの名無しさん
2006/12/06(水) 11:11:130670デフォルトの名無しさん
2006/12/06(水) 11:24:43メッセージ?
swing関係で例外出すのはこのへんだが
0671デフォルトの名無しさん
2006/12/06(水) 12:01:15フォルダの中にデータやフォルダがあると削除できない仕様になっています
これを指定したフォルダ以下のデータを纏めて削除するにはどうすればよいでしょうか?
0672デフォルトの名無しさん
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");
}
のように扱いたいときはどう記述すればいいのでしょうか?
0673デフォルトの名無しさん
2006/12/06(水) 12:22:33ファイル削除してから再度ディレクトリ削除するメソッド実装すればいいんじゃね。
0674デフォルトの名無しさん
2006/12/06(水) 13:16:51byte[][] data = new byte[ 10など #ここは必須# ][];
data[0] = readByte( *** );
〜〜〜
って感じだが、宣言時にサイズ指定しなければいけない。(new byte[] [] は無理)
数が不定なら、ArrayListでも使ってみたら?
0675672
2006/12/06(水) 13:27:52ありがとうございます
>byte[][] data = new byte[ 10など #ここは必須# ][];
>data[0] = readByte( *** );
これでOKなんですね
[]の数が2つなら使うときも2つじゃないとダメかと勘違いしていました
サイズ指定するのはやむをえないのでしょうね。
>数が不定なら、ArrayListでも使ってみたら?
実はiアプリなので使えないです。。
0676デフォルトの名無しさん
2006/12/06(水) 13:30:48private 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 個
どのように直せばいいのか教えてください
0677デフォルトの名無しさん
2006/12/06(水) 13:42:19boolean が 4byte ってのはスタックに積まれてる時とかの話じゃないか?
VM仕様では boolean[] は byte[] 使う事になってるから 1byteだし。
あとはオブジェクトインスタンスには VM仕様では
特に何バイトと定義されてないオブジェクトヘッダが付くとか、
細かい事を考えればいっぱいある。
100万文字の String1個 なら、大体 2メガバイトぐらい使うだろう
みたいな大雑把な計算には使えるけど、
"a" と new byte[5] と int 各1個づつで何バイト使うか?
みたいのは、そのプログラムを実行する VMの実装を調べないとわからないよ。
0678デフォルトの名無しさん
2006/12/06(水) 13:42:58○ public void a(int a, int b){
0679デフォルトの名無しさん
2006/12/06(水) 13:56:26一番簡単な修正方法は
クラス名を Kadai7_0203 から a に変える
だが本当にそれでいいのか?
aって名前が多過ぎて自分で訳わかんなくなってないか?
068087のプログラムwo
2006/12/06(水) 14:02:21シンボル: クラス 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にしたんです^^;;
0681↑ミスりました・・・本当は676のスレ主です
2006/12/06(水) 14:06:23680のスレ主です・・・題名ミスりました
0682デフォルトの名無しさん
2006/12/06(水) 14:15:56じゃあ678のは間違いでした。スマソ。
Kadai7_0203.java ってファイルを a.java に変えて
679氏の策に従えばとりあえず動くかとは思う。
とは言え書くあなたはともかくとして、読む方は泣く。
(それだけ回答が得られにくくなる。)
課題なら採点者の心象もアレになる。
0683質問1/2
2006/12/06(水) 14:17:24public 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";
}
}
0684質問2/2
2006/12/06(水) 14:17:57aaa
aaabbb
------------------------
aaa
aaa
となります。
StringとStringBufferで2回目のoutputが違うのはなぜですか?
0685デフォルトの名無しさん
2006/12/06(水) 14:25:27data = data + "bbb";
この部分は、"bbb"という文字列を加えた新しいオブジェクトを生成して
それをdataに代入してるかららしいよ。
ところで質問です。Webアプリケーションサーバはどれを使うのがいいでしょうか?
Sunのやつ、Tomcat?お勧めのものがあれば教えてください。
0686685
2006/12/06(水) 14:30:22WebLogicやWebsphereのような高価なものはいりません。
0687デフォルトの名無しさん
2006/12/06(水) 14:33:55あー新たにオブジェクトを作ってしまうんですか・・・
回答ありがとうございます。
Tomcatで十分だと思います。
0689667
2006/12/06(水) 17:57:40ありがとうございます。ううむ、そうですか。
では目方を変えて、その大ざっぱな計算の仕方と言いますか、
あるオブジェクトが何個あったらこれ位、と言った計算をするための
材料を集めるにはどのようなことを調べればいいでしょう?
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 を計算の後に参照させたりもしてみたのですが、
特に、何故全く変わらない事があるのかよく分かりません(少しでも振れると思ったのですが)
0690デフォルトの名無しさん
2006/12/06(水) 18:06:49多重の警告を表示できるように,警告の契機の度にスレッドを作成し,
そのスレッド上でshowConfirmDialogを呼んでいるのですが、ダイアログは警告分表示されるものの
OKボタンを押せるのは最新のダイアログのみとなっています。
表示されたどのダイアログに関してもOKボタンを押せるという仕様にするにはどうすればよいでしょうか。
ご指導願います。
0691デフォルトの名無しさん
2006/12/06(水) 18:58:17> すべてのダイアログはモーダルです。各 showXxxDialog メソッドは、ユーザの対話が終了するまで現在のスレッドをブロックします。
リファレンスはちゃんと読もうね。
どうしても必要なら自分でモードレスなJDialogを構成して表示。
0692690
2006/12/06(水) 19:07:49マルチスレッドにすれば対応可能かな・・・と思ったんですが。
やはりモードレスなダイアログを作成するしかないようですね。
有難うございました。
0693デフォルトの名無しさん
2006/12/06(水) 20:12:17呼び出すスレッドを別のものにしても、
グラフィックスの処理自体はEDTで一元的に処理されてるから。
0694ぴゅあ
2006/12/06(水) 21:23:43何処が解らなかったのかが判らないけど(いちお2つのことを書いてるし)
>>663の前半の話についても調べてみれば?
そこには全く触れてないみたいだし
0695ココ電球(∩T∀T) ◆tIS/.aX84.
2006/12/06(水) 21:27:53マルチスレッドじゃだめね
マルチプロセスならおけ
0696ぴゅあ
2006/12/06(水) 21:30:28スレッドを使ったというのはそのダイアログを出したいがためだけ?
そのダイアログにあたるものを1個にするとかいうのもありそうだけど
それだと考えてた仕様から変わることになるよねぇ。。。
(自分で作らなきゃいけないだろうという点は同じか・・・)
0697662
2006/12/06(水) 21:41:53はい、単なる知識不足ですorz
あれから助言を元に色々調べまして、mousePressedとmouseReleasedで決定した始点と終点をもとに
ボタンで選択した図形を描画できるところまでいきました。
ここで疑問なのですが、73行目でrepaintをしてから74行目でjをインクリメントしているにも
関わらず(初めての描画の際はj = 0でrepaint文に入るはず)
42行目の条件文を突破してdrawEverythingメソッドが実行できている(アプレットで実際に動作確認)のはなぜなのでしょうか?
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=28912
0698デフォルトの名無しさん
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
いかがでしょう?
0699デフォルトの名無しさん
2006/12/06(水) 22:03:34isはダメなんですかね。
ぐぐってみると A#a must be called after A#b.で止めてる例が結構ありますね。
個人的にはYou cannot call A#a before A#b.と書きます。
0700デフォルトの名無しさん
2006/12/06(水) 22:04:16> after A#b was called
文法的には was じゃなくて is 。
0701デフォルトの名無しさん
2006/12/06(水) 22:06:09エクリプスでjarファイルにしてパッケージ化し、ダブルクリックで実行できるようにしたのですが
コマンドプロンプトが表示されなくなってしまい困っています(dos窓に色々な情報を表示させているので)。
プログラムでコマンドプロンプトを表示させる方法はどのような文を追加すればよいのでしょうか?
0702デフォルトの名無しさん
2006/12/06(水) 22:06:56なるほど、A#a must be called after A#b.で止めても問題ないですね
そして文法の勉強もできました
ありがとうございました
0703デフォルトの名無しさん
2006/12/06(水) 22:17:25.jarと同じディレクトリにバッチファイルを置く方法ではダメだろうか?
0704701
2006/12/06(水) 22:38:04ありがとうございます。
バッチファイルでコマンドプロンプトは出たのですが、
その窓にはプログラム中のSystem.out.printが効かないようです。
もう少し調べてみます
0705ぴゅあ
2006/12/06(水) 22:53:53イベントに(何の対処もなしに)順序性を求めるのはあまりよくないのかも
と思ったりしますけど…
実際にどのようにして、どんな問題が出てます?
(若干作りとして気になるところもあるけどそれは関係はない筈
"フィールドでjを初期化しててinitやstartメソッドではやってないけど、それはunion[]も同じなので"
まぁ気になるようなところはいっぱいあるので… それは追々見ていってください)
0706デフォルトの名無しさん
2006/12/06(水) 22:54:44JSP実行には、どのクラスのどの関数をCALLすれば良いですか?(サーバーサイドで実行されていることをクライアントで実行したい)
目的としては、サーバーに負荷をかけたくないので、よくアクセスされるものに関しては、HTML化しておきたいんです。
0707デフォルトの名無しさん
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で大丈夫かと思ったのですが、無理でした。
ご教示お願いします。
0708デフォルトの名無しさん
2006/12/06(水) 23:06:47.batファイルからjavaを起動すれば良いんじゃないかな?
0709662
2006/12/06(水) 23:08:15まずmousePressedとmouseReleasedを完成させて、
mouseReleasedで終点が決定した時点で描画するようにできました(697のプログラム)。
その後mouseDragged中にも描こうとしている図形が表示される仕様にしたいのですが、これが上手くいきません。
mouseDraggedメソッド内でsetEndPoint、repaintを入れてみましたが
dragg中に確かに激しく点滅はするのですが図形の描写はありません。
そしてpaintメソッドの条件の問題かと思って確認なんかをしていたら697の疑問に気付いたりとorz
いやしかし様々なアドバイスありがとうございます。
0710デフォルトの名無しさん
2006/12/06(水) 23:12:090711ぴゅあ
2006/12/06(水) 23:21:24以前あったと思うんですけど見つけられない。。。
コマンドプロンプトに代わるビューを作って…とかいうのではない?
0712ぴゅあ
2006/12/06(水) 23:27:34いちお(若干気にならないでもないけど@自分の中で)
>(初めての描画の際はj = 0でrepaint文に入るはず)
というのは問題にならないんじゃないかと思うんですよ…
単に疑問として思ったのか、実際に何か問題が起こっているのを確認したのか
とかによると思いますけど
>dragg中に確かに激しく点滅はするのですが図形の描写はありません。
というのはたぶん>>697より後に作り込んで行ったコードですよね?
0713707
2006/12/06(水) 23:31:32このクラスに引数で指定した文字コードでエンコードするってことなのでしょうか?
0714デフォルトの名無しさん
2006/12/06(水) 23:45:36import 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!"); }
}
}
0715デフォルトの名無しさん
2006/12/06(水) 23:46:190716662
2006/12/06(水) 23:47:25実際問題との関連としては、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でうまく表示させるのに必要な手順だと思いました。
0717ぴゅあ
2006/12/06(水) 23:58:26わざわざありがとう
いや、前にこのスレッド(たぶん2つ前くらい前までの間)で
その手の話が挙がったような気がしたんですけどね
見つけられなかった…ということです
(コードまでは挙げられてなかったと思うけど)
>>704宛てにどうぞ
0718662
2006/12/07(木) 00:02:18ただし定数にしてしまったことでその5、6個の図形の描画しかなされない状態に当然なっています。
やはりj番目より1つ前までの図形の描画を行っていて、j番目であるマウス位置によって形の変わる
図形の描画はpaint文の条件にはねられてdrawされないということなのでしょうか。。。
それならmouseReleasedもなぜ表示されるのか不明ですし、混乱しますorz
0719デフォルトの名無しさん
2006/12/07(木) 00:06:13ちがう。向うからヘッダが返ってきてるからそこからcharsetを読み取る。
ヘッダに含まれていないときはhtmlならmetaタグ中のを読む。
でも、
>URL dairly_add = new URL(rss_add);
って変数名を見るに、RSS?
ならローカルファイルシステム上のXMLファイル扱う要領でok.
0720デフォルトの名無しさん
2006/12/07(木) 00:09:34JSPで生成されるJavaのコード見てないからわからないけど、
レスポンスに直接出力されてた気がする。
ベロシティー使えば確実にできるよ。JSPじゃないけど。
サーブレットの後ろにフィルター置けば、HTML取れるのかな?取れる?
0721ぴゅあ
2006/12/07(木) 00:10:58>しかしよくよく見たらmouseReleasedもjのインクリメントはrepaintの後に行っていて
やはりそんな風に考えていたんですね
(でも実際にjの値がどうなっているのかまでは確認してないのですよね)
いちお言われているところによく判らないところもあるから書かずに置いておいたところですけど
「repaintは"なるべく早い時期に"paintを呼び出そうとする」というのがあって
paintが呼び出されるのが続くj++より前になるか後になるかは判らないし
それだけ(repaintに対してpaintが何時呼び出されるか…だけ等)に依存するコードとするのはよくないだろうと思います
加えてマウスイベント処理内でrepaint,j++をやっているので
paintはそのイベント処理(mouseReleased)が終わった後まで待たされる可能性が高い(その直後かどうかは保証がない)
と考えていいと思います
つまり、j=0なんだからdrawEverythingが呼ばれるのはおかしいというのではなく
実際にはj=0でない状態にあるからdrawEverythingが呼ばれていた可能性がある
と考えられると思います
(それを確認するためには「実際にjの値がどうなっているのか」を確認してみることです)
ついでに訂正(>>717)
コードはあったような気もした。。。
0722707
2006/12/07(木) 00:22:02RSSから対象アドレスを取得してるからrss_addなのです。
仰る意味も理屈も理解出来るんだけど、手段が出てこないですorz
XMLはDocumentクラスで解釈して各要素を取り出す程度しかやったことないですし……。
レスポンスヘッダっていうのは、指定URLにアクセスした際に自動的に返って来るものですか?
そこに文字コード等が載ってるから、それを読み取るっていう認識でOK?
ちょいと自分で調べてみます。
0723デフォルトの名無しさん
2006/12/07(木) 00:25:12うはw
まさにやりたいのはこれ。ありがとう!!
0724デフォルトの名無しさん
2006/12/07(木) 00:28:33ByteArrayOutputStream#writeToを使うのがオススメ、Velocityとも相性がいい
0725デフォルトの名無しさん
2006/12/07(木) 00:33:10URLConnection#getContentType()
サーバー側で付けてくれてなければあとは
HTTP4.01のW3C勧告を参考にしてクライアント側で頑張る。
0726ぴゅあ
2006/12/07(木) 00:33:39>たぶん>>697より後に作り込んで行ったコードですよね?
を前提として話してますが
(そういったコードは実装されてなさそうだし、実際にそうならないし)
考えるのに適当かどうかはなんとも言えないところですけど、気になった部分のひとつ
mouseReleasedメソッドでやっているj++をunion[]を何個使ったかという意味合いにして
mousePressedメソッドで
>union[j] = ...;
の後ででもやってやるというのはどうでしょう
(このjugde[]の使い方も気になるところですが…)
彼方此方jの扱いをちゃんと見直す必要とかも出てきてしまうので
どうか…とも思いはしますが。。。
(mousePressedの後には必ずmouseReleasedが呼ばれることになるので
union[]が必ず1個使われることになるのでもあり考え方としても問題ない)
>union[j].setEndPoint(e.getX(), e.getY());
がまだ呼ばれていないときがあるじゃないかというのはdrawEverythingで工夫(後にでも?)
その後の実装が判らないのでちらつきというのがどういう風に見えているのかは判らないですけど
描画時のちらつきを除去にはどうするか(ダブルバッファリング)とか調べてみればいいのだろうかと
そういうちらつきであるとするなら、ちらつくというのはまだ放っておいていいんでしょう
>表示はさませんでした。
というのはドラッグ中の処理がうまく書けていないからかな?
0727725
2006/12/07(木) 00:34:030728デフォルトの名無しさん
2006/12/07(木) 00:39:41先輩にこれ何ですか?と聞いたら「setterとgetterだけのクラスを
Beanというんだ」と言われました。
それでググってみたのですが、Beanの正しい意味はわかりませんでした。
この先輩の説明はあっているのでしょうか?
0729707
2006/12/07(木) 00:46:36親切な回答ありがとう。
俺の頭がアフォなせいで、理解してるのか怪しいけど、実際に弄りながら勉強していきます。
明日早いから今日は寝て、明日またやってみます。
0730デフォルトの名無しさん
2006/12/07(木) 01:13:07今、JARファイルを作成しようと思い、色々とやっているのですが
インナクラスの扱い方がちょっとよく分かりません。
マニフェストファイルを作成し、普通のクラスをいくつかまとめてJARファイルにすることはできたのでるのです。
しかしそこにインナクラスがひとつでも絡むと
そのクラスについてのみ「●●.classというファイルまたはディレクトリはありません」
というメッセージがDOS窓に表示されてしまうのです。
で、その●●というインナクラスを持つ、△△クラスだけでJARファイルにしてみたのですが
そうすると今度はJARファイルにはなるのですが、それをダブルクリックしてもエラーメッセージが出るだけになってしまって・・・。
素人丸出しの質問で申し訳ないのですが、どうかよきアドバイスをよろしくお願い致します。
0731デフォルトの名無しさん
2006/12/07(木) 01:32:17Beanであるためには、プロパティにアクセスするためにsetXxx getXxx
というメソッドを使える必要があるが、逆にsetXxx getXxxでアクセスするものすべてをBeanと呼ぶわけではない。
さらにいえば、BeanだからといってxxxBeanと名付けなければいけないわけでもない。
0732デフォルトの名無しさん
2006/12/07(木) 01:32:54JAR にまとめる時はどうやってます?
△△.java をコンパイルすると △△.class 以外にも △△$1.class とか出来るはずだけど
出来上がった JAR にこれもきちんと含めてます?
0733デフォルトの名無しさん
2006/12/07(木) 01:40:190734デフォルトの名無しさん
2006/12/07(木) 01:42:57初めて聞く流儀ですが、例えばどこで使われてます?
0735デフォルトの名無しさん
2006/12/07(木) 01:45:140736デフォルトの名無しさん
2006/12/07(木) 01:47:53for-each ループを使用可能にするには、-source 1.5 を試してください
というエラーがでてきました。
javaのバージョンは1.5.0_08なのですが、何かおかしいところがあるのでしょうか?
0737デフォルトの名無しさん
2006/12/07(木) 01:50:32Eclipseが相変わらず1.42のJREを参照してればそうなるんじゃない?
0738デフォルトの名無しさん
2006/12/07(木) 01:56:16antでビルドをしています。
MANIFEST.MFは以下の通りです。
Ant-Version: Apache Ant 1.6.5
Created-By: 1.5.0_08-b03 (Sun Microsystems Inc.)
0739デフォルトの名無しさん
2006/12/07(木) 02:01:17てかjarはあんま関係ないのでは?
コンパイルに対する内容しだいなので。
0740デフォルトの名無しさん
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側で出来るのでしょうか?
0741デフォルトの名無しさん
2006/12/07(木) 02:13:21インナークラス含めてコンパイルしたらこんなものが出来るとすら知りませんでしたorz
仰るとおりに、△△$1.classも含め実行したら
ちゃんとJARになり、またダブルクリックした後の処理もきちんとされました。
どうもありがとうございました。
0742デフォルトの名無しさん
2006/12/07(木) 02:18:10build.xmlを晒しなさい。
0743デフォルトの名無しさん
2006/12/07(木) 02:23:05build.xmlで指定はしていなかったのですが、
build.propertiesにてversion変更したら無事実行できました。
相談させていただくことにより、一旦頭が冷えて解決することができました。
ありがとうございました。
0744デフォルトの名無しさん
2006/12/07(木) 09:35:15そりゃ、EJBのValue Objectの命名規則じゃないか?
EJBの場合、同じエンティティを表すクラスが複数現れる
(EJBObjectやHome/Remoteインタフェース、Value Objectなど)
ので、そういう面倒な命名規則が役に立つけど。
0745デフォルトの名無しさん
2006/12/07(木) 12:09:47回転させた画像についてはAffineTransformクラスを使って作成することができました。
では傾けた画像を得るにはどのようなクラスを用いればいいのでしょうか?
0746デフォルトの名無しさん
2006/12/07(木) 12:16:23AffineTransformクラス
0747デフォルトの名無しさん
2006/12/07(木) 15:56:132D軸と3D軸の話か?
0748デフォルトの名無しさん
2006/12/07(木) 15:59:210749デフォルトの名無しさん
2006/12/07(木) 16:04:38それなりのプログラムを書こうとするときにいつも
クラス名、変数名、メソッド名で困ってしまいます。
クラス名はそんなに多くないからどうにかなりますが変数とメソッドは悩みます。
どういう基準で名前をつければ良いでしょうか?
思いつかない場合ですと int temp とか int kazu, kazu1とか日本語まで取り入れてしまう始末です。
メソッドでもpublic void setKazu(){]とかとか。
気がついたらグローバルとローカルで重複の変数になっていてちゃんと動作しなくて悩んだことも多々あります。
皆さんの基準などを教えていただけたらうれしいです。
アドバイスよろしくお願いします。
0750デフォルトの名無しさん
2006/12/07(木) 16:13:31kazu1はマズイ。こんなんするぐらいならいっそ日本語で
private int 生徒数;
public void 生徒数設定(int 生徒数){...
の方が分かり易い分マシだと思う
0751デフォルトの名無しさん
2006/12/07(木) 16:40:33いくつか候補のうち、どれにしようか・・・ はあるけど、適当に付けるような事態にはならない。
適当に付けると後で困るからな。
0752デフォルトの名無しさん
2006/12/07(木) 20:26:14http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=28928
このソースのどこを改善すれば実行できますか?
0753デフォルトの名無しさん
2006/12/07(木) 20:47:11>>748
2D軸と3D軸の話で,
傾けるってのは長方形→平行四辺形みたいなことでゴザイマス。
日本語下手でスマソ
0754デフォルトの名無しさん
2006/12/07(木) 20:53:00Javaの話に限定したわけじゃないですが、
クラスの中にフィールドをいっぱい入れて、
それぞれにsetterとgetterを入れたりしたら、
結局フィールドをprivateにしてる意味があるのでしょうか。
0755デフォルトの名無しさん
2006/12/07(木) 20:56:38少なくとも、気づかずにフィールドの値を動かしていたというようなことは防げる。
0756デフォルトの名無しさん
2006/12/07(木) 21:03:13入れてはいけない値を入れるような無制約な書き換えの恐れが無くなるし
0757デフォルトの名無しさん
2006/12/07(木) 21:13:57>>746
0758デフォルトの名無しさん
2006/12/07(木) 21:51:08同一プロセス内で複数の Java 仮想マシンが動作したため、エラーになりました
この問題を解決するにはどうすればよろしいのでしょうか。
再インストールはしましたが変わりません。
よろしくお願いします。
0759デフォルトの名無しさん
2006/12/07(木) 21:53:35変数がおかしな値になってる原因を調べるときにsetterブレークできる
リード、セットの頻度も調べられたりテスト時などに余計な処理をはさんだり出来る
0760デフォルトの名無しさん
2006/12/07(木) 22:08:06同一プロセス内で複数のJava仮想マシンが動作することはあり得ません。
使用したOS、Javaのバージョン、エラーが発生したJavaソフトウェアの名前、
エラー発生時の状況(ログ、標準出力など)
再インストールしたソフトと再インストール後の状況を添えて
もう一度書き込んでください。
0761デフォルトの名無しさん
2006/12/07(木) 22:11:31後からスレッドセーフにする必要が出た時などに
修正する箇所を減らすことが出来る。
0762デフォルトの名無しさん
2006/12/07(木) 22:26:24windowsならc:/Document and Settings/XXXX
Linuxなら/home/XXXなどを取得したいのですが・・・。
0763デフォルトの名無しさん
2006/12/07(木) 22:28:000764デフォルトの名無しさん
2006/12/07(木) 22:30:18Javaで操作できるおすすめのデータベースとかって何かありますか?
0765デフォルトの名無しさん
2006/12/07(木) 22:31:150766デフォルトの名無しさん
2006/12/07(木) 22:33:400767デフォルトの名無しさん
2006/12/07(木) 22:35:32ありがとうございます。
getPropertyでいろんな情報が、取れるのですね。勉強になりました。
0768707
2006/12/07(木) 22:40:56getContent-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を使っています。
0769デフォルトの名無しさん
2006/12/07(木) 23:05:54さっきから色々やっているのですができなくて困っています・・・
0770デフォルトの名無しさん
2006/12/07(木) 23:15:47冒頭のコメントにあるとおりのHTMLを作って開いたらそれっぽい
ベジェ曲線が表示されるのだが?
いったい何をやったのか書いてみたまい。
アプレットだってことはわかってる?
0771デフォルトの名無しさん
2006/12/07(木) 23:23:40766氏とかぶるが俺も HSQL を勧める。
0772デフォルトの名無しさん
2006/12/07(木) 23:43:40すいません。
今実行できました。ありがとうございます。
0773デフォルトの名無しさん
2006/12/07(木) 23:50:43Content-TypeもContent-LengthもInputStreamも全部
扱いどころが間違ってる。
0774デフォルトの名無しさん
2006/12/07(木) 23:58:15H2はどうかな? まだ枯れてないから駄目?
0775デフォルトの名無しさん
2006/12/07(木) 23:58:37>>753
745,753です。
AffineTransformだと2次元の回転しかできません。
3次元だと
ttp://itpro.nikkeibp.co.jp/article/COLUMN/20060710/242865/?ST=newtech
のようにOpenGLを取ってくれば
3次元の回転も可能だとありますが,
OpenGLを用いずに既存のクラスで行うことはできませんでしょうか。
0776707
2006/12/08(金) 00:03:00やっぱりそうですか…orz
色々探してるんだけど、なかなか参考になるサイトが無いです。
たぶん、どこのプロセスで文字化けが起こっているのか?ということと、ストリームの仕組みが分かってないせいだと思います。
InputStreamからデータを取り出す時に文字化けって起こってるのでしょうか?
0777デフォルトの名無しさん
2006/12/08(金) 00:11:48だれもコード変換してくれない。適当な参考書でストリームについて
書いてあるページめくってみ。
ところでHTTPURLConnectionのデフォルトの状態でGETメソッド使ったとき
HTTP/1.0で接続するのって規格上保証されているんだっけ? データの終りを
ストリームの終端で判別するのあぶなくね? HTTP/1.1になってる実装系あったりしない?
0778デフォルトの名無しさん
2006/12/08(金) 00:20:30無理
java3Dという選択肢もあるがこれもjoglと同じで標準で入っているわけではないし
0779デフォルトの名無しさん
2006/12/08(金) 01:58:42例えば、Hoge1とHoge2なJavaBeanがあったとします。Hoge1だけ返すなら↓のように簡単にできるのですが。。。
public Hoge hoge(){ return new Hoge(); }
0780デフォルトの名無しさん
2006/12/08(金) 03:16:48public Object[] hoge() {return new Object[]{new Hoge1(), new Hoge2()};}
0781デフォルトの名無しさん
2006/12/08(金) 03:32:57ありがとうございます。
戻り値がObject[]になってますがジェネリックスか何かを使って明示的に型指定できないのでしょうか?
Object<Hoge1,Hoge2>[]にすると Objectは総称ではありません。・・・パラメータ化できません。
となります。
0782デフォルトの名無しさん
2006/12/08(金) 03:49:39いや、そのジェネリクスの使い方は間違ってるよ。Object<T1,T2>なんてものはないので。
Hoge1とHoge2のスーパークラスを作って両者ともそれを継承するようにするか、
インタフェースを定義して両者それを実装するようにして、
SuperClass[]とかInterface[]とかみたいに返すようにすればObject[]を返すよりは限定できる。
0783デフォルトの名無しさん
2006/12/08(金) 04:04:03hoge()はこんな感じで、
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でそれぞれのインスタンスを得る。
0784デフォルトの名無しさん
2006/12/08(金) 04:12:48Hoge1とHoge2しか返さないことが分かってるなら、
無理にジェネリクスなんか使わずに、
Hoge1とHoge2を内部に保持するクラスを作って、
それを返すようにすれば<..,..>なんて面倒な書き方は不要になる。
なんにせよ、メソッドは一つのものしか返せないので、
戻り値で複数のものを受け取りたいときは、配列かクラスにまとめるしかない。
0785デフォルトの名無しさん
2006/12/08(金) 04:24:59>>783
別途クラスを作成しないといけないんですね、理解できました。
ありがとうございますm(__)m
0787デフォルトの名無しさん
2006/12/08(金) 04:36:08setter,getterでも>>783みたくフィールドをpublicにする方法でもありと思う。
そのへんのアクセス制御の匙加減は場合によるので。
0788デフォルトの名無しさん
2006/12/08(金) 05:20:46はwordには貼り付けられないのでしょうか?
もし知っている方いましたら教えてください。
0789デフォルトの名無しさん
2006/12/08(金) 05:46:43画面をキャプチャして画像のところだけ切り出してそれを貼ればいいんじゃね?
0790デフォルトの名無しさん
2006/12/08(金) 06:48:28できました!!!
朝早くからありがとうございました!!
0791デフォルトの名無しさん
2006/12/08(金) 07:38:18【やりたいこと】
・別ウインドウを開かず、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)
解決方法を教えてください。
0792ぴゅあ
2006/12/08(金) 08:08:17>フィールドをprivateにしてる意味があるのでしょうか。
と考えるのではなく
まずクラス内にあるもの全てprivateととし、外から勝手に触らせない
外から触らせてもよい/触らせるものは何かを考えて制限を緩めていく
というような見方をしてみるとかもいいのかも
それはフィールド丸まま触らせていいと思えばフィールドでもいいし、setter/getterでもいいけど
setter/getterでアクセスさせるなら、フィールドに入れられる値に条件(制限)を与えたり,仕様変更に応じてそれらを変えたりするのも楽ですよね
(スレッド間での事とか諸々)
そんな条件とか全くないということが明確ならフィールドでもいいと判断できるだろうし
0793デフォルトの名無しさん
2006/12/08(金) 10:11:17Applet上でIP使ってゴリっと通信できたら、そりゃ困る罠
0795デフォルトの名無しさん
2006/12/08(金) 14:06:32http://www.smg.co.jp/seminar/java/J_lecture01.html
んでインストールしようの次の講義でjavac HelloWorld.javaと入れても
エラーが出て次にdirを入れてもクラスが表示できないのですがこのサイト
が違うのでしょうか?小一時間悩んでいるのですが分りません;
どうかご教授を
0796デフォルトの名無しさん
2006/12/08(金) 14:15:34自分の言いたいことだけ言って、そのくせ何も判断材料をを出さなければ
答えようが無い。
0797デフォルトの名無しさん
2006/12/08(金) 14:17:02サイトは間違っていません
あなたが間違っています
以下796と同文
0798795
2006/12/08(金) 14:26:40HelloWorld.java:7: ’}’がありません
エラー1個
とエラーが出ます
0799デフォルトの名無しさん
2006/12/08(金) 14:33:397行目に’}’がない。
足りないのは言葉ではなく注意力かな。
0800795
2006/12/08(金) 14:36:540801デフォルトの名無しさん
2006/12/08(金) 14:41:470802795
2006/12/08(金) 15:02:36原因を考えた結果最初変数等を入れるときにサイトが最新バージョンに対応して
いなかったので
変数名PATH
変数値C:\Program Files\Java\jdk1.5.0_10\bin
と入れました 間違っていないでしょうか?
0803デフォルトの名無しさん
2006/12/08(金) 15:09:33もう面倒だから、そこからコピペしてコンパイルしてみろ。
コンパイルできたら、自分の書いたやつとどこが違うのか比べてみろ。
0804795
2006/12/08(金) 15:14:47cd C:¥WORk
dir
javac HelloWorld.java
dir
です 何か違っているでしょうか?
0805デフォルトの名無しさん
2006/12/08(金) 15:14:48Javaの最新バージョンは6.0だ
0806795
2006/12/08(金) 15:16:560807795
2006/12/08(金) 15:21:020808デフォルトの名無しさん
2006/12/08(金) 15:22:09>>803を百回読め
0809795
2006/12/08(金) 15:24:580810デフォルトの名無しさん
2006/12/08(金) 15:27:12そこを通り越して>>798のエラーが出るなら
pathには問題が無かったんだよ
てかそんな見当違いのところをいじるな
>>798のエラーは
HelloWorld.javaファイルの7行目に } がない、といっている
で、実際そうなのか確かめてみたよな?
0811795
2006/12/08(金) 15:33:13HelloWorld.java'}'とやってますた;
0812デフォルトの名無しさん
2006/12/08(金) 15:34:44コンパイラには思えるのだがそうなっていなかったという意味ね。
その行自体ではなく、全体のカッコの対応関係を確認すべし。
0813デフォルトの名無しさん
2006/12/08(金) 15:37:470814デフォルトの名無しさん
2006/12/08(金) 15:38:28それは7文字目だ。
修正してるファイル(やディレクトリ)とコンパイルしてるファイル(やディレクトリ)が違ってるのかとも思ったが、それは予想外だ。
public class HelloWorld
{
public static void main(String args[])
{
System.out.println("Hello Java World !");
}
}←ここが7行目(ここが抜けてる)
0815デフォルトの名無しさん
2006/12/08(金) 15:38:55まだ取得できないんですかね?
EUCのファイルで試したところ、"JISAutoDetect"と返ってきました。
オープンソースであっても良さそうですが。
0816デフォルトの名無しさん
2006/12/08(金) 15:42:211.4 以降なら java.nio.charset.CharsetDecoder#detectedCharset() で取れるよ。
0817815
2006/12/08(金) 16:28:16以下のソースで試してみました。
----------------------------------------------------------
//ファイルオープン
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だとわかるのかがわかりません。なんでですかね?
0818デフォルトの名無しさん
2006/12/08(金) 16:41:41http://washitake.com/cpp/kanji.php
javadocを見る限りでは、JISAutoDetectは判定結果を返さない場合があるのかも?
ヒマだったらソース読んで見る。
0819795
2006/12/08(金) 16:42:59今日はじめたばっかりなのでまたあほな事聞くと思いますが
気長に付き合ってください
0820デフォルトの名無しさん
2006/12/08(金) 16:45:39日本語も勉強しろ。 読み書き両方だ。
0821デフォルトの名無しさん
2006/12/08(金) 16:56:52○.java というソースファイルを作ってjavacでコンパイルする
所まではわかるのですが。
○○.javaなどのソースファイルが複数に及ぶ場合
○○1.java〜○○20.java と20個のファイルで一つのソフトだとした場合
それをひとまとめにする場合はどうすればよいのでしょうか?
0822795
2006/12/08(金) 16:57:400823815
2006/12/08(金) 16:58:00ありがとうございます。参考になりました。
ちょっとソースも見てみます。
readLine()では手遅れだから、InputStreamReaderのコンストラクタで先読みしてるのかな??
0824デフォルトの名無しさん
2006/12/08(金) 17:03:12フォルダに入れてもいいし、jarアーカイブでまとめても良い。
jarにする場合は少し作業が必要だが、ダブルクリックで実行可能にすることができる。
0825デフォルトの名無しさん
2006/12/08(金) 17:09:22ありがとうございます。
○○1.java〜○○20.javaを○○フォルダに入れて
○○フォルダをjavacすればよいのでしょうか?
0826デフォルトの名無しさん
2006/12/08(金) 17:14:06「ひとまとめにする」じゃなくて「ひとまとめにコンパイルする」だろ?
日本語ははっきりと。
javac ○○*.java
0827デフォルトの名無しさん
2006/12/08(金) 17:14:32そんな気がしました。
javac *.java で、コンパイルできますよ。
クラスファイルは複数できます。これを1つにしたいのなら、jarにします。
0828デフォルトの名無しさん
2006/12/08(金) 17:17:29>>826-827で既に挙がってるけど、JDKのドキュメント読めば書いてある。
ttp://java.sun.com/j2se/1.5.0/ja/docs/ja/tooldocs/windows/javac.html#examples
困ったらドキュメント読む癖を付けるのが、初心者脱出の秘訣だ。
0829795
2006/12/08(金) 17:23:23まさかソースファイルに原因があったとは(-_-;)自分でプログラム組む時
ソースファイル自分で組める気がしませんorz
0830デフォルトの名無しさん
2006/12/08(金) 17:33:26デスマーチを引き起こす原因が誕生した瞬間
に立ち会えた幸せ
0831795
2006/12/08(金) 17:40:34無能になる確立80%ですが
0832デフォルトの名無しさん
2006/12/08(金) 17:41:36>「repaintは"なるべく早い時期に"paintを呼び出そうとする」というのがあって
>paintが呼び出されるのが続くj++より前になるか後になるかは判らないし
これってマウスイベント中にrepaintが書かれた事についてだよね。
repaintの次の行にj++が書かれていても、マウスイベント中なんだからpaintは呼び出されないんじゃないか。
それともマウスイベント中にpaintが呼び出される事ってあるの?
repaintってペイントイベントをキューに追加してるだけだと思ってたんだけど、俺勘違いしてる?
0833デフォルトの名無しさん
2006/12/08(金) 17:44:00そこで1時間も悩んだり、2chに聞いたりするかは人次第だが…
ま、それだけで自分を無能と決めつけなくてもいい。
これだけ悩めば、もう懲りて気をつけるようになるでしょ。
0834デフォルトの名無しさん
2006/12/08(金) 17:50:41大変参考になりました。ありがとうございます
正直ドキュメントを読んだことなかったのですが
これからじっくり読んでみたいとおもいます
0835デフォルトの名無しさん
2006/12/08(金) 18:18:06バーコードリーダみたくカメラに現在映っている画像を
1秒間に何回か読み込ませて何かの処理に成功したらそこで止まる。
というようなプログラムを作成することは可能でしょうか?
例えば●に似た形を認識すればキャンバスに"発見!"と出力するような
プログラムです
0836デフォルトの名無しさん
2006/12/08(金) 18:23:06入力した文字列が端まで来たときに、文字を折り返したいのですが
どのようにすれは良いのでしょうか。。
0837デフォルトの名無しさん
2006/12/08(金) 18:29:25作成する事が不可能、と断定するための条件は何もないと思います
0838デフォルトの名無しさん
2006/12/08(金) 18:29:48JDK 6.0 のソース、ちろっと見てみたけど
ファイル終端までくると CharsetDecoder#reset() 呼んでるんだわ。
で、 CharsetDecoder#reset() されると detectedCharset() の状態もリセットされるみたい。
そーいや、StreamDecoder のバグで CharsetDecoder#flush() 呼ぶべきところで
CharsetDecoder#reset() 呼ぶって奴があった記憶があるけど、これだったかも?
0839デフォルトの名無しさん
2006/12/08(金) 18:30:060840デフォルトの名無しさん
2006/12/08(金) 18:46:51javac ○○フォルダ\*.java
する
0841ココ電球(∩T∀T) ◆tIS/.aX84.
2006/12/08(金) 19:04:03コピペ張り合わせ&クライアントに催眠術
0842デフォルトの名無しさん
2006/12/08(金) 19:06:140843デフォルトの名無しさん
2006/12/08(金) 19:21:05可能か不可能と聞かれたら一応可能です。(ただし、iアプリに定められている容量では不足だと思う)
例で言うと、画像認識サービスGTAPなどがあります。
とは言え、画像認識はまだまだ研究途上なので専門知識のない方が、プログラム組めるほど
ライブラリはないですよ。
0844817
2006/12/08(金) 19:36:01JDK5で早速試してみたところ、whileで読み込んでいる時は"windows-31j"と取得でき、
ファイルを読み終えて取得するとエラー(正常動作)になりました。
大変勉強になりました。ありがとうございます!
0845デフォルトの名無しさん
2006/12/08(金) 20:17:32一括ダウンロードとかしてないのですかね?
もしくは書籍として販売とか。
0846デフォルトの名無しさん
2006/12/08(金) 20:25:27ttp://java.sun.com/javase/downloads/index.jsp
ここの「J2SE 5.0 Documentation」
0847デフォルトの名無しさん
2006/12/08(金) 20:26:06公式でzipで配布してるジャマイカ
日本語訳はSE5.0までだけどな(6.0は英語のみ)
0848847
2006/12/08(金) 20:26:590849707
2006/12/08(金) 21:23:40InputStreamReaderに文字コードを指定してやればよかったんですねorz
ストリームの使い方が全然分かってなかったです。
アドバイスくれた方々、ありがとうございます。
あと一つ確かめたい事があるんですが、readLine()で読み込んだ複数行を
1つの変数に文章として格納するのって可能ですか?
whileでreadLineを繰り返しながら、変数に格納していく方法を今適当に思いついたのですが
0850707
2006/12/08(金) 21:55:35a = a + bのwhileで1つの変数に1行で入りました。
Java初心者だけど、手探りでやって成功すると楽しい!
0851ぴゅあ
2006/12/08(金) 23:32:50>加えてマウスイベント処理内でrepaint,j++をやっているので
も読んでみて欲しかった。。。
0852ぴゅあ
2006/12/08(金) 23:36:47>無能になる確立80%ですが
まずこれを忘れてみとくことからだと思う。。。
0853デフォルトの名無しさん
2006/12/09(土) 00:14:58作成したプログラムをコマンドプロンプトからではなく
実行ファイルから起動したいのですが、方法がわかりません
これはどうすればいいのでしょうか?
0854デフォルトの名無しさん
2006/12/09(土) 00:37:34HSQLを色々弄ってみることにします
0855749
2006/12/09(土) 00:46:19>>750
アドバイスありがとうございます。
やっぱり英語ができないと難しいですよね。
いくつか候補があると迷ったりしちゃいます。
変な名前の変わりに一応コメントを入れて動作はわかるようにしてありますね。
>>751
それができないのが初心者です。
例えばですけど変数をラベルで表示させたい場合はint num Label l_num とするようにはしていますが。
どうしても数が増えると辛いものを感じますね。
Labelなども再利用できる物であればLabel labelとか気軽につけれるものですが同時にいくつも表示したい場合とかだと困ります。
まだ基礎を覚えて少しプログラムを書き始めたあたりなので慣れてきますかね?
0856デフォルトの名無しさん
2006/12/09(土) 00:52:15数でもさ、「何の」数なのかってのがあるでしょ。
その「何の」の部分を名前にしないからわけがわからなくなるんだよ。
初心者はなぜか短い名前をつけがちだけど
冗長なぐらいの長い名前をつける方がいいよ。
0857デフォルトの名無しさん
2006/12/09(土) 00:58:54やはりそうですよね。
自分の考えとしては作っている途中で行き当たりばったりっていうのがあると思います。
最初に設計をしてから作るべきですかね?
簡単な仕様書の様なものを書いてクラス名、変数名、メソッド名の簡単な動作や用途をまとめて書いておくような。
少し肝に銘じて「何の」数かと意識してやってみます。
ありがとうございます。
0858デフォルトの名無しさん
2006/12/09(土) 01:14:14そこまでおおげさに考えなくても855で書いてる
>変な名前の変わりに一応コメントを入れて動作はわかるようにしてありますね。
をそのまま変数名にすればいい。
0859デフォルトの名無しさん
2006/12/09(土) 01:58:07そこは既に読んだよ。同じ事言ってると思ったからわざわざ書かなかっただけ。
>加えてマウスイベント処理内でrepaint,j++をやっているので
>paintはそのイベント処理(mouseReleased)が終わった後まで待たされる可能性が高い(その直後かどうかは保証がない)
「可能性が高い」って事は「イベント処理中にpaintが実行される可能性が少なからずある」って事だよね。
じゃ無くて「1必ずイベント処理が終わってからpaintが実行される」と思うんだけど。
>「repaintは"なるべく早い時期に"paintを呼び出そうとする」というのがあって
>paintが呼び出されるのが続くj++より前になるか後になるかは判らないし
こっちも同じ事言ってるよね。
俺は「マウスイベント処理中にpaint処理が実行される事は絶対に無い」、と思ってるんだけど、
>851は「paintが実行されるのはいつかわからない」→「イベント処理中もありえる」って事なんだよね。
それとも何か勘違いしてる?マウスイベント処理中にpaint処理が実行される事ってあるの?
0860デフォルトの名無しさん
2006/12/09(土) 02:19:23ArrayListについてですが、
ArrayList List = new ArrayList;
と
List.clear()
では同じことにはならないんでしょうか?
0861デフォルトの名無しさん
2006/12/09(土) 02:26:17Line = new ArrayList();
while(CNT < 10){
Line.clear();
while (CNT < 2){
Line.add("1");
}
CNT++;
}
ではArrayListにデータどんどんたまってしまいますか?
0862デフォルトの名無しさん
2006/12/09(土) 02:26:49「同じこと」に期待される要件を列挙してみてくれ。
それと、コンパイルエラーになるような式を書かれても意味がわからんぞ。
0863デフォルトの名無しさん
2006/12/09(土) 02:29:48CNT が2未満なら二つ目の while で無限ループになる。
そうでなければ CNT の値によらず、Line は空。
0864デフォルトの名無しさん
2006/12/09(土) 02:32:26ありがとうございました。
画像に対して「決定」ボタンを押せば処理するという方向で行きたいと思います。
もひとつ質問お願いします。
DoJa 3.0を使っています。
自作のクラスが入ったjarをクラスパスに含めたいのですが、
どこのフォルダに含めればいいのでしょうか?
0865デフォルトの名無しさん
2006/12/09(土) 02:33:22CNTの初期値が2未満だと、内側のwhileが終了しないのでどんどん溜まる。
それはサテオキ、変数名を大文字で始めないこと。Javaの慣習です。
0866ぴゅあ
2006/12/09(土) 02:38:40>俺は「マウスイベント処理中にpaint処理が実行される事は絶対に無い」、と思ってるんだけど
ならば、それでいいと思う
0867デフォルトの名無しさん
2006/12/09(土) 02:42:33事故解決しました
jdkのいつものextの中でした。スマソ
0868デフォルトの名無しさん
2006/12/09(土) 02:48:26コンパイルしたファイル拡張子を.exeに変更
0869デフォルトの名無しさん
2006/12/09(土) 04:44:24WinMeなんですが、原因不明です
どうすれば、使えるようになるのか分かる方いませんか?
0870デフォルトの名無しさん
2006/12/09(土) 06:30:33ドSめ。
>>853
*.jar形式にまとめる。
その際にManifestファイルを作り忘れるな。
俺余り詳しくないから調べたらわかると思う。
0871デフォルトの名無しさん
2006/12/09(土) 10:28:24開発環境でのみ使用するなら>>867でいいんジャマイカ
でも実機では動かないのはあたりまえ
0872デフォルトの名無しさん
2006/12/09(土) 11:00:04OS変えるのが一番早いんじゃないかな
0873デフォルトの名無しさん
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に*を格納させる方法はありませんか?
0874デフォルトの名無しさん
2006/12/09(土) 15:25:15スマートかどうかは分からんが、nが大きいなら、こういう手も。
char[] cs = new char[n];
java.util.Arrays.fill(cs, '*');
g.drawChars(cs, 0, n, 0, 20);
せめて、Stringの加算でなく、StringBuilderかStringBufferを使った方がいいかも。
あと、drawStringのy座標が0だとデフォルトの座標系のままでは画面に表示されない。
0875デフォルトの名無しさん
2006/12/09(土) 15:28:26どうすればよいのでしょうか?
0876デフォルトの名無しさん
2006/12/09(土) 15:36:40読め。
ttp://java.sun.com/j2se/1.5.0/ja/docs/ja/tooldocs/windows/jar.html#examples
0877デフォルトの名無しさん
2006/12/09(土) 15:38:58これをString[] moji=s.split("");
で1文字ずつmojiに格納していくと(や.や,や;まで格納させてしまうのですがアルファベットだけ格納させるにはsplitで可能でしょうか?
そうでなければStringTokenizerでの分割の仕方を教えてください
0878デフォルトの名無しさん
2006/12/09(土) 15:42:50やだ やさしく説明して
0879java初心者
2006/12/09(土) 15:46:34んですけど原因って主にどういうのですか?基本的なことですが
教えてください
0880デフォルトの名無しさん
2006/12/09(土) 15:50:37http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rls=GGLJ,GGLJ:2006-32,GGLJ:ja&q=%5c12288%e3%81%af%e4%b8%8d%e6%ad%a3%e3%81%aa%e6%96%87%e5%ad%97%e3%81%a7%e3%81%99
0881デフォルトの名無しさん
2006/12/09(土) 15:54:03そのようなStringから文字への切り分けとしてsplitが適切かどうかは置いておいて、
string.split("[^a-zA-Z]+|\\B")
0883デフォルトの名無しさん
2006/12/09(土) 16:04:43プログラムを書くときに、いわゆる全角スペースを視覚化できるエディタを使った方がいいよ。
0884デフォルトの名無しさん
2006/12/09(土) 16:30:19並列に処理するにはどのようにしたらいいですか?
0885デフォルトの名無しさん
2006/12/09(土) 16:35:41import 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 のような結果を得るにはどうしたらいいでしょうか?
0886デフォルトの名無しさん
2006/12/09(土) 16:51:02分割したそれぞれの処理を別スレッドで動作させれば、
並列動作を許すハード、OS上ならたぶん並列動作する。
別プロセスで処理させても同様。
0887デフォルトの名無しさん
2006/12/09(土) 16:53:14for (char c : "あいう".toCharArray()) System.out.printf("\\u%04x", (int)c);
0888デフォルトの名無しさん
2006/12/09(土) 17:05:33Stringに結果が欲しいなら
Formatter f = new Formatter();
for (char c : "あいう".toCharArray()) f.format("\\u%04x", (int)c);
String s = f.toString();
0889デフォルトの名無しさん
2006/12/09(土) 17:07:13ありがとうございます。
最終的にString型の中に入れるにはどうしたらいいのでしょうか?
0890デフォルトの名無しさん
2006/12/09(土) 17:15:23聞こうと思った事を応えてくれてありがとうございます。
初心者の為、コピペすると
Formatter型が解決できません &
for each ソースステートメントはソースレベルが5.0の場合にのみ使用可能になります。
というコンパイルエラーになります。
どうしたらいいでしょう?・・・・
0891デフォルトの名無しさん
2006/12/09(土) 17:23:260892デフォルトの名無しさん
2006/12/09(土) 17:29:22訳あって、JDK1.4.2を使っています。
import java.util.logging.formatter;
だと見つかりませんになります。
java.util.logging.*;
入れてみましたが、ダメでした。
0893デフォルトの名無しさん
2006/12/09(土) 17:30:311.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();
0894デフォルトの名無しさん
2006/12/09(土) 17:32:53string=i.toString();だと間接参照できない、とエラーが出るのですがどうしたらstringに格納できますか?
0895デフォルトの名無しさん
2006/12/09(土) 17:36:44string = Integer.toString(i);
0896デフォルトの名無しさん
2006/12/09(土) 17:44:11rss_addなんてコーディングスタイルがいかにもC言語厨みたいだな
0897デフォルトの名無しさん
2006/12/09(土) 17:46:37すごい!できました。
こういう関数って何か標準であるのかと思っていました。
確かに面倒ですね。
ありがとうございました。
0898デフォルトの名無しさん
2006/12/09(土) 18:02:07「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);
0899デフォルトの名無しさん
2006/12/09(土) 18:02:17line=br.readLine();
としていて例えば下のようなテキストがあったとき
fdak
fare
rewlkj
lkjfdsa
fsa
この空白の2行にはline=""何が入るのでしょうか?\nでも^でも$でもないようなのですが・・・
0900デフォルトの名無しさん
2006/12/09(土) 18:15:18タイムゾーンに:が入ってなければ書式指定中のTを'T'とするだけで
解析できるみたいなんだが、そのままだと上手くいかないな。
0901java初心者
2006/12/09(土) 18:27:23できません 原因として何が考えられるでしょうか?
0902デフォルトの名無しさん
2006/12/09(土) 18:29:09スペルミスとか、いろいろ。
0903898
2006/12/09(土) 18:29:30なるほど。Tの方は確認できました。ありがとうございます。
タイムゾーンの方は、GMT+09:00って、前にGMTが付いていれば動くんですけどねぇ。
デフォルトはGMTだって教えればいいのかな。調べてみます。
0904デフォルトの名無しさん
2006/12/09(土) 18:30:48空行なら "".equals(line) && (line.length() == 0) になるような文字列。
空白文字があるなら、空白文字の入った文字列。
0905デフォルトの名無しさん
2006/12/09(土) 18:31:32line=""って答を自分で書いているじゃないか
>>901
コンパイラが識別子が何か分からないって言っているんだから
宣言してない変数を使ってるとか
どこにあるか分からないクラスを使っているかだ
タイプミスの可能性もある
0906デフォルトの名無しさん
2006/12/09(土) 18:34:52問題無いと思っていたのですが・・・
まだ・・・ダメでした。
:{省略}
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のようにしたいなと思っています。
もう、私、わからなくなりました。。。
お助けください。
0907デフォルトの名無しさん
2006/12/09(土) 18:38:12ここの「「別ウィンドウに表示」を制御する」について質問です
縦フレームの左側にこのプログラムを組み、
チェックが外れている時は右フレームにリンクを表示させたいのですが
どこをどのように書き換えればできるでしょうか?
(ベースターゲットは右フレームに指定してあります)
初心者がいろいろいじってみたのですがさっぱり…
どうしてもチェックが外れている時は同フレームに表示されてしまいます。
指導よろしくおねがいします。
0908java初心者
2006/12/09(土) 18:38:180909デフォルトの名無しさん
2006/12/09(土) 18:41:21お前の無能さ
0910java初心者
2006/12/09(土) 19:00:26この部分のドットがシンボルエラー言われるのですが何故ですか?
ちゃんと半角で入れています
0911デフォルトの名無しさん
2006/12/09(土) 19:05:58ギャグなのか・・・マジなのか・・・スペルミス
0912java初心者
2006/12/09(土) 19:12:330913java初心者
2006/12/09(土) 19:21:340914デフォルトの名無しさん
2006/12/09(土) 19:46:180915デフォルトの名無しさん
2006/12/09(土) 20:08:18s = "2: "+"\u3042\u3044\u3046\u3048\u304a";
の中の"\u3042\u3044\u3046\u3048\u304a"は"あいうえお"を意味する文字列リテラル。
もし、文字列リテラルの中に\を入れたかったら>>893の"\\u"みたいに、
"\\"としないといけない。Stringクラスの内部では\は\で入っているけれど、
リテラルではエスケープしてやる必要がある。
0916デフォルトの名無しさん
2006/12/09(土) 20:12:220917デフォルトの名無しさん
2006/12/09(土) 20:17:00"\\u3042\\u3044\\u3046\\u3048\\u304a"を"あいうえお"にしたいなら、
さっきの逆をやればいい。"\\u"を取って4桁の16進表記をcharに変換してやる。
0918デフォルトの名無しさん
2006/12/09(土) 20:28:20GUIを使った場合に
public void paint(Graphics g) {
}
メソッド以外で描画させるにはどうしたらいいですか?
又は他のメソッドの戻り値を利用して描画をさせるとか。
動作が良くわかっていないんですけど一番最初にpaintが描画してしまうようなのでどうしたら良いのかわかりません。
よろしくお願いします。
0919デフォルトの名無しさん
2006/12/09(土) 20:30:48paint()やupdate()は何もしないようにオーバーライドして、
getGraphics()でGraphicsインスタンスを取ってきて描画して最後にdispose()する。
0920デフォルトの名無しさん
2006/12/09(土) 20:33:370921デフォルトの名無しさん
2006/12/09(土) 20:37:06まず、ボタンが押された時とかの好みのタイミングで、
その、他のメソッドの戻り値をインスタンス変数に入れる。
次に、paint()の中で、そのインスタンス変数を参照してそれに応じた描画を行う。
0922デフォルトの名無しさん
2006/12/09(土) 20:42:29凄く漠然とですがわかりました。
少し勉強してみますね。
>>921
こちらの場合は元々paint()内に例えば
drawString("s", 0, 0);
とか入れておいて外でsの値を変更してrepaint()という意味ですかね?
参考になりましたありがとうございます。
0923デフォルトの名無しさん
2006/12/09(土) 20:45:56その青い部分を開くとpanelが現れたりするにはどうすればいいのですか?
青くするのは文字列の文字を青くすればいいですよね。
リンクみたいのを晴れたりしないのですか?文字列の部分の座標がクリック
されたのを感知したらパネルが現れるようにすればいいのですか?
そのほかにも方法はありますか?
0924デフォルトの名無しさん
2006/12/09(土) 21:07:44>>917
もともとは、テキストファイルの中に入っていたMS932文字が化けたのが発端です。
その元々のテキストファイルの中を
"\u3042\u3044\u3046\u3048\u304a"として入れておいてあげると化けなかったので
UTF16にするといいんだわと思いました。
テキストファイルの中身は触らずに、取り込んできたアプリケーションで"\u3042"
の形にしてあげる事ができれば・・・とがんばっていました。
単純に sb.append("\\u"); をはずしてみたら、結果は
1: 3042304430463048304a
2: あいうえお
になりました。
MS932で入っているString型をUTF16として入っているString型にするには
どうしたらいいのでしょうか????
0925デフォルトの名無しさん
2006/12/09(土) 21:16:20普通に
BufferedReader br = new BufferedReader(new FileReader(filename));
String s;
while ((s = br.readLine()) != null) {
System.out.println(s);
}
とかで化ける? もしかして、Linuxとかを使ってる?
0926デフォルトの名無しさん
2006/12/09(土) 21:22:55String(byte[] bytes, String charsetName)ってコンストラクタがある。
0927デフォルトの名無しさん
2006/12/09(土) 21:29:45すいません。ファイルを読み込んでいる部分はソースが無いのでわかりません。
ソース上で値が入っているString型の変数名しかわかりません。
でも・・・
今思えば・・・テストで作った
String str = "あいう";
System.out.println("元の値:"+str);
のprintlnは化けてないので、同じ状態じゃないのかもしれません。
でも、本体の方も
1: \u3042\u3044\u3046\u3048\u304a
と一応同じコードに変換しました。全然違うものでは無くて、
もともとが「あいうえお」と入っているString型(MS932?)とわかります。
0928デフォルトの名無しさん
2006/12/09(土) 21:39:14FrameにCanvasを貼ってもCanvasはディスプレイの座標で打ち込むから画面下に隠れてる項目がスクロールできないのですが
Graphicsを使うって条件でスクロールが使える方法やクラスは何かないですか?
0929デフォルトの名無しさん
2006/12/09(土) 21:41:17ScrollPaneについて調べてみたらよいのでは?
0930java初心者
2006/12/09(土) 21:43:01良いのでしょうか?
0931デフォルトの名無しさん
2006/12/09(土) 21:43:41今、あるサイトを参考に以下みたいのをやってみました。
String str = "あいうえお";
byte[] ms932_byte = str.getBytes("MS932");
String utf16_str = new String(ms932_byte, "UTF-16");
System.out.println("3:"+utf16_str);
でも、結果は以下のように?になりました。
3:???芦?
0932デフォルトの名無しさん
2006/12/09(土) 21:46:23Javaのネイティブの文字エンコーディングはUTF-16なので
間違ってMS932の状態で入っているStringからUTF-16としてつまり無変換でバイトの配列として取り出し
改めてMS932でStringにする
0933デフォルトの名無しさん
2006/12/09(土) 21:48:29逆に問いたい。
リファレンスなどを見ずにどうやって組むのか。
0934デフォルトの名無しさん
2006/12/09(土) 21:50:41ms932_byteの文字セットはMS932なんだから当然UTF-16で復号化はできない
0936デフォルトの名無しさん
2006/12/09(土) 21:53:47あれ?私のやったのと逆ですね?一応、やってみました。
String str = "あいうえお";
String ms932_str = new String(str.getBytes("UTF-16"), "MS932");
System.out.println("4:"+ms932_str);
結果・・・こうなりました。
4:??0B0D0F0H0J
何か根本的に私は勘違いしているのかしら・・・
0937デフォルトの名無しさん
2006/12/09(土) 22:01:30クライアントマシンの何処にできるんですかね?
C:\Documents and Settings\ユーザー名\
の配下だと思ってたんだけど・・・
OSはWindowsXPです。
0938デフォルトの名無しさん
2006/12/09(土) 22:02:31> MS932で入っているString型をUTF16として入っているString型にするには
MS932 の String型なんかない。
String は全部 Unicode(UTF-16)
0939デフォルトの名無しさん
2006/12/09(土) 22:13:34ユニコードの文字列を UTF-16 のバイト列に変換して、
その UTF-16 のバイト列を MS932 のバイト列とみなして
ユニコードの文字列に変換しようとしてるんだから化けるのは当然。
ASCIIの範囲だったら辛うじて読めるかもしれんが、2バイト文字入ってたらダメ。
ちなみに、>>932 のも嘘だから信じないように。
昔の JDBC とかで setEncoding できなかった時に
new String(jdbcResult.getBytes("ISO8859_1"), "MS932") みたいなのはあったけど。
0940デフォルトの名無しさん
2006/12/09(土) 22:28:51>ならば、それでいいと思う
ごめん。意味がわからない。これは>>721で書いたのは間違ってるっていう解釈でいいのかな。
>paintが呼び出されるのが続くj++より前になるか後になるかは判らないし
721でこう書いたのは何か根拠があっての事なんだと思うんだけど、その根拠が知りたい。
俺が間違ってるなら間違ってる、ってはっきり書いてくれ。書いた上でその根拠をを示してくれ。
正しい事を知っておくのはプログラムをする上での基本だと思うから。
0941デフォルトの名無しさん
2006/12/09(土) 22:50:30ありがとう、939さん
教えてもらったやり方で、私の今までテストしていたものは?????となりましたが、
本来適用してもらった方では化けませんでした。
答えてくれた皆さんにも感謝してます。勉強になりました。
みんな、まいしてる。(○´3`)チュ
0942デフォルトの名無しさん
2006/12/09(土) 22:53:45こう書きたかったです↓
教えてもらったやり方で、私の今までテストしていたものは?????となったけど、
本来適用したかった方では化けませんでした。
(*^。^*)テヘヘ
0943ぴゅあ
2006/12/10(日) 00:30:42>正しい事を知っておくのはプログラムをする上での基本だと思うから。
そうなの?
「間違ってました。申し訳ない」とか、偉いとかバカとか格差を付けたいとかではなくて?
最近何故か要らんのは減ってるみたいでもあるけど ま 2chだ 判らんけど
しかし、この手のレスが付くと便乗してくる人たちが大量に発生しそうなのに…
なんとかって機能使ってたりするってことなのかな
それはそれで楽ってことでもあるだろうけど
>俺は「マウスイベント処理中にpaint処理が実行される事は絶対に無い」、と思ってるんだけど
「絶対であって疑いを持つ気は微塵もない」と言っていることを意味しているのですよね
ならば、それでいいと思う
あちしには「絶対」なんて言葉はそうそう使えるもんぢゃないけど
あと付け加えておけば
>>加えてマウスイベント処理内でrepaint,j++をやっているので
>も読んでみて欲しかった。。。
は、段階踏んで書いたつもりだったけど、それが判らないものだったらしい
それは申し訳ない
0944デフォルトの名無しさん
2006/12/10(日) 01:04:32日本語でおk
0945デフォルトの名無しさん
2006/12/10(日) 01:13:48意味不明のエクスキューズとかキモイんですけど
0946デフォルトの名無しさん
2006/12/10(日) 01:17:12>>正しい事を知っておくのはプログラムをする上での基本だと思うから。
>そうなの?
そうだよ。間違った知識を元に書いたコードは正しい動作をするとは限らない。
自分の知識が正しいか、正しくないか、というのはコードを書く時にとても重要だ。
>「間違ってました。申し訳ない」とか、偉いとかバカとか格差を付けたいとかではなくて?
偉いとかバカとかって格差ってどういう事?
もし間違っていたなら間違っていたと言えばいいだけ。そこに格差なんて感じるの?
間違っているなら間違っている、正しいなら正しい、これだけだ。
何度も書くが自分の知識が正しいか、正しくないか、というのはコードを書く時にとても重要。
>「絶対であって疑いを持つ気は微塵もない」と言っていることを意味しているのですよね
違うよ。
「俺が間違っているならそう書いてくれ」って書いてるじゃん。
イベントドリブンの場合、1つのイベントが終わるまで次のイベントは処理されない。
もしrepaintがペイントイベントを発行するなら、現在処理中のマウスイベントが終了するまで次のペイントイベントは実行されない。
だからマウスイベントが処理中にペイントイベントは実行されない、という考え。
一個ずつ処理されるんだから最後のが前に来ることは絶対ないよね。
でももしrepaintがペイントイベントを発行せずpaintを直に実行する等の処理をするなら、マウスイベント処理中にpaintを実行する事はありえるという訳だ。
で、repaintはペイントイベントを発行するの?しないの?
>あちしには「絶対」なんて言葉はそうそう使えるもんぢゃないけど
どういう事?よく知らないで書いてるって事?
もしあやふやな知識しか持ってないなら、>>721の時点でそう書くべきだと思う。
>>716だけで無く、このスレを見ている全員に対して失礼だ。
0947デフォルトの名無しさん
2006/12/10(日) 01:54:07>イベントドリブンの場合、1つのイベントが終わるまで次のイベントは処理されない。
これが成立しなかったら、全てのイベントハンドラは、スレッドセーフに書かなきゃいけないな。
synchornized 宣言でいっぱいだ。
0948デフォルトの名無しさん
2006/12/10(日) 02:08:07仕様化されていることはプログラマとしては「絶対」と言っていいと思うよ。
仕様通りに動作しなかったらそれは「バグ」だから。
一般概念の「絶対」まで話を大きくしたかったら、それはもう板違い。
哲学板へでも行け。
0949デフォルトの名無しさん
2006/12/10(日) 02:32:410950デフォルトの名無しさん
2006/12/10(日) 02:37:48文字化けするんだけど、これって単純に文字コードの問題でしょうか?
String変数の中身を渡す仕組みなんですが。
ちなみにprintlnでその変数指定やると文字化けなく表示されてます。
iso-2022-jpでコード変換も済んでるはずなのに……。
0951ぴゅあ
2006/12/10(日) 02:44:57それなりにやってきているんだろうと思うし
その中で「絶対」という考え方を身に付けたということは、時間の無駄であるような気もしてるけど・・・
逆に「絶対」とは何処から?とも聞いてみたいとしてみるか?というようなところでもあるけど
まず、>>721に対して間違っているんじゃないかと言っているんですよね?
また、読んだとはされているけど、同じことを言っているということは同じに扱ったということだろうし
まずrepaint,j++,paintの関係
次に
>加えてマウスイベント処理内で
でマウスイベント処理内での話
を書いたつもりだけど、「書いてることが判らん」か「同じことを言っている」(解っている)ということだろうと思うけど
(この話の前には
>イベントに(何の対処もなしに)順序性を求めるのはあまりよくないのかも
の前置きもある)
ただ
>可能性が高い
とした部分は「です」としようと思ったが、全てのプラットホームで「です」と言えるか?と"疑問"を持ったので敢えて「可能性が高い」としたけど
(>>716(他、読んだ相手に)「絶対」という考え方を持たせたくないし)
で、間違っているんじゃないかというこの話の流れよね?
実際には>>721とは少しずれた部分で話をしてるような気もしていたりする(「絶対に」付きで)
違うかな
0952ぴゅあ
2006/12/10(日) 02:46:22マジに話しようとしているとして
>自分の知識が正しいか、正しくないか、というのはコードを書く時にとても重要だ。
はそうだけど、「絶対に」はあまり好ましくないような気がする
今正に正しいと思っていることは自分にとって正しいと思うことであり
それを元にコードを書く/書くことになるけど
自身に"疑問"も同時に持つから考えることができるんじゃないの?
「絶対に」は考えることを失わせることになるんじゃないかと思うけど
で、それ風のレスっていうのも、そういうところなんかな
とか思ってみたり
0953デフォルトの名無しさん
2006/12/10(日) 02:59:06>「絶対に」は考えることを失わせることになるんじゃないかと思うけど
だから哲学板行けって。
■この世界に[絶対]は存在するのか?■
http://academy4.2ch.net/test/read.cgi/philo/1125376718/l50
0954デフォルトの名無しさん
2006/12/10(日) 05:54:52>実際には>>721とは少しずれた部分で話をしてるような気もしていたりする(「絶対に」付きで)
俺はずっと純粋に技術的な質問をしてるよ。
「repaintはペイントイベントを発行するの?しないの?」という質問なんだけど。
で、javaのソースをダウンロードしてざっと調べてみた。repaintはペイントイベントを発行してるようだね。
>>721は間違いって事でいい?
>>可能性が高い
>とした部分は「です」としようと思ったが、全てのプラットホームで「です」と言えるか?と"疑問"を持ったので敢えて「可能性が高い」としたけど
どういう事?
結局これはよく知らないままに書いてたって事を言いたいの?
>自身に"疑問"も同時に持つから考えることができるんじゃないの?
俺が>>832を書いた時点で自身に"疑問"は抱かなかった?
>「絶対に」は考えることを失わせることになるんじゃないかと思うけど
「絶対」という言葉が気に入らないのかな?「可能性は高い」に対しての「絶対無い」なんだけどね。
どうしても気に入らないなら「可能性は無い」でいいよ。
それともマウスイベント処理中にpaint処理が実行される可能性があるって言いたいのかな?
もしそうなら根拠を示してきっちり反論すべきだよ。
それが正しいなら俺は受け入れる、正しくないなら受け入れない、それだけだよ。
0955デフォルトの名無しさん
2006/12/10(日) 08:27:420956デフォルトの名無しさん
2006/12/10(日) 09:37:38>文字化けするんだけど、これって単純に文字コードの問題でしょうか?
単純に文字コードの問題
>iso-2022-jpでコード変換も済んでるはずなのに……。
ここが間違ってるに100ペリカ
0957デフォルトの名無しさん
2006/12/10(日) 11:26:38manifest.txtというファイルに
Main-Class: Main
<改行>
と入れる。
構造がhoge(フォルダ)\Main.classだった場合にはどうしたら良いでしょうか?
jar cfvm hogehoge.jar manifest.txt hoge.Main.class ではできたjarファイル形式ではちゃんと動作してくれませんでした。
どうしたらいいかアドバイスをいただけたら光栄です。
0958デフォルトの名無しさん
2006/12/10(日) 11:30:280959デフォルトの名無しさん
2006/12/10(日) 11:36:24jarの中に入るのはそうですけど自分がネットで調べた感じではファイル名は何でもよさそうでした。
クラス名.mani にしているところや 自分のように manifest.txt としているところもありましたね。
0960デフォルトの名無しさん
2006/12/10(日) 11:37:08g.drawString(bun,44,44);
や
g.drawString("fdsa",44,44);
だとエラーになってしまうのですがどうしたら第一引数にbunをもってこれますか?
0961デフォルトの名無しさん
2006/12/10(日) 11:42:06エラーログ晒せ
0962デフォルトの名無しさん
2006/12/10(日) 12:25:58FQCNで指定する。つまり
Main-Class: hoge.Main
0963デフォルトの名無しさん
2006/12/10(日) 12:32:19おうおうありがとう。
あとでやってみる。
一応同じフォルダに入れてやったときもできなかったから他に何か間違ってるのかもしれないし。
0964デフォルトの名無しさん
2006/12/10(日) 12:33:57jarファイルの中では必ずMETA-INF/MANIFEST.MFでなければならないが、
jar コマンドのmオプションでマニフェストファイルを明示的に指定すれば、元はどんな名前でもいい。
ただ、>>597のは引数の順番がマニュアルと違うな…
*.jarのファイルはjarファイルだと、jarコマンドが認識してくれるんだろうか。
0965デフォルトの名無しさん
2006/12/10(日) 12:38:49動かなかったと?なら、jarコマンドの使い方が間違いかもだぜ(なっち語)。
ここ見て正しい順番に直すといいよ。
ttp://java.sun.com/j2se/1.5.0/ja/docs/ja/tooldocs/windows/jar.html
0966デフォルトの名無しさん
2006/12/10(日) 12:45:51ユーザにuser/passwordを入力させて、もし正しければsessionIDを発行します。
次回からユーザはアクセスにこのsessionIDを利用して操作を継続させるような
サンプルはないのでしょうか?
0967デフォルトの名無しさん
2006/12/10(日) 13:05:03まて。hogeがパッケージ名とは書いてないぞ。
単に hoge/Main.class という名前で格納しているだけかもしれん。
考えすぎだろうけど、パッケージ名ならそう書け。>>957
0968デフォルトの名無しさん
2006/12/10(日) 13:07:58Main-Class: Main
Class-Path: hoge
で行けたと思う。
0969デフォルトの名無しさん
2006/12/10(日) 13:20:58アイコンが現れ、作成時の画面にするとIMEのアイコンが
消える。
漢字入力はできる。
必ずこの現象がでるわけではない。
同じ画面ではでるが。
IMEの操作はプログラムの中で何もしていないのに。
0970デフォルトの名無しさん
2006/12/10(日) 14:05:040971デフォルトの名無しさん
2006/12/10(日) 14:40:43Editできない設定かVisbleできない
Swingコンポーネントにフォーカスを移動する
部分がないですか。
そのあたりをしっかりプログラムすれば。
0972950
2006/12/10(日) 14:59:44文字化けはメールの一部だけなのですが、それでも文字コードが原因ですか?
Charset iso = Charset.forName("ISO2022JP")
という型で指定しているのですが。
0973デフォルトの名無しさん
2006/12/10(日) 15:40:05情報小出しするんなら解決は来年になるな。よいお年を(^-^)/~
0974デフォルトの名無しさん
2006/12/10(日) 16:15:50javax.media.Player.getVisualComponent()で取得したComponentを
JFrameのContentPaneにaddしたところ
動画はJFrameの上で問題なく再生されましたが
JFrameのJMenuBarよりも上に描画されているためメニューの項目が見えなくなってしまいました。
ただ、メニュー自体は有効で、メニューに対してショートカットキーからの動作は問題なく動いています。
メニューの項目をPlayer.getVisualComponent()より上に描画させるにはどのようにしたらよいか御教授願います。
0975デフォルトの名無しさん
2006/12/10(日) 16:16:26設計時の画面ではIMEのアイコンがタスクバーに
表示されませんが最大化してコンポーネントを移動すると
IMEのアイコンがタスクバーに表示されます。
漢字入力はできるのですが「A」や「あ」がタスクバーに
表示できません。
何でなんだろう?
CARDLayoutで表示をしています(関係ないかもしれないけど)
0976デフォルトの名無しさん
2006/12/10(日) 16:22:34JPopupMenu.setDefaultLightWeightPopupEnabled(false); でどうか?
0977デフォルトの名無しさん
2006/12/10(日) 16:53:22回答ありがとうございます。
JFrame.setJMenuBarでのメニューで実現したいと考えております。
今のところ下記サンプルを参考とした
ttp://otjwave.itbdns.com/~okamura/java/javaPage001.html
Component.setVisible(false)で描画を停止してからメニューを表示する方法で実現すべきか悩んでおります。
0978デフォルトの名無しさん
2006/12/10(日) 16:53:420979デフォルトの名無しさん
2006/12/10(日) 17:06:330980デフォルトの名無しさん
2006/12/10(日) 17:15:23すいません、やっと仰っている意味がわかりました。
無事解決できました。
ありがとうございました。
0981デフォルトの名無しさん
2006/12/10(日) 17:39:16SwingのJTreeやJTableを学びたいんだけど、
他に良いサイトありませんか?
0982デフォルトの名無しさん
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("異なるページ") を実行させることができますか?
0983デフォルトの名無しさん
2006/12/10(日) 18:52:02JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc5.2ch.net/hp/
0984デフォルトの名無しさん
2006/12/10(日) 21:59:22finallyよりもRAIIの方が便利です
0985デフォルトの名無しさん
2006/12/10(日) 22:03:51D言語はscope属性を加えるとRAIIになるみたいだから期待しろ。
0986デフォルトの名無しさん
2006/12/10(日) 22:24:05普通に考えて、GCの実装の自由度あげるためじゃないか?
0987デフォルトの名無しさん
2006/12/10(日) 22:25:12Sun Java Studio CreatorでJSFを駆使して作ったアプリケーションを
Tomcat5.0 + J2SE1.5環境にそのままデプロイして動作させることはできますか?
0988デフォルトの名無しさん
2006/12/10(日) 22:32:35必要なライブラリがアプリケーションのWEB-INF/libに入っているかどうかだな。
0989デフォルトの名無しさん
2006/12/10(日) 23:14:300990デフォルトの名無しさん
2006/12/11(月) 04:39:140991デフォルトの名無しさん
2006/12/11(月) 11:01:43Welcome to Ubeと画面に出力する)そして空うち(空行入力)で終了するプログラムを作成せよ。
といった問題です。どうかといてみてください
0992デフォルトの名無しさん
2006/12/11(月) 11:06:34やだ
0993デフォルトの名無しさん
2006/12/11(月) 12:44:050994デフォルトの名無しさん
2006/12/11(月) 12:46:510995デフォルトの名無しさん
2006/12/11(月) 13:30:00作ることは可能ですか??
射影変換を使って作ろうと思ったのですが、計算の過程がう
まくいかないらしく、プログラムが思うように動いてくれませ
ん;;
0996デフォルトの名無しさん
2006/12/11(月) 14:07:10【初心者】Java質問・相談スレッド95【大歓迎】
http://pc8.2ch.net/test/read.cgi/tech/1165813252/
0997デフォルトの名無しさん
2006/12/11(月) 17:55:01http://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スレ
0998977
2006/12/11(月) 17:58:070999デフォルトの名無しさん
2006/12/11(月) 17:58:521000デフォルトの名無しさん
2006/12/11(月) 18:03:2710011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。