【初心者】 Java質問・相談スレ26 【大歓迎】
1 :
デフォルトの名無しさん :
03/06/14 23:32
Q. javac コマンドを実行したときに、
『コマンドまたはファイル名が違います』や
『'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。』
と表示されてコンパイルできません。
A. javac.exeへのPATHが通っていません。
http://java.sun.com/j2se/1.4.1/ja/install-windows.html を良く読んで、javac.exe のあるディレクトリ(例: C:\j2sdk1.4.1_01\bin )のパスを
環境変数PATHに追加してください。 その後、
Windows98/MEの場合はOSを再起動、
Windows2000/XPの場合はコマンドプロンプトを立ち上げなおしてください。
設定したパスが正しければ、javacが使えるようになります。
それでも同じエラーが出る場合は、設定した値が間違っています。
よく見直してください。
Q. javac Hello.java でコンパイルはできるのですが、
java Hello を実行しようとすると
『Exception in thread "main" java.lang.NoClassDefFoundError: Hello』
と表示されて実行できません。
A. カレントディレクトリ(.)がクラスパス(classpath)に含まれていません。
コマンドプロンプトで、
set CLASSPATH=%CLASSPATH%;.
と設定する。最後の「;」と「.」を見落とさないように!
または、
http://www.gimlay.org/~javafaq/S004.html#S004-02 を読んでカレントディレクトリ「.」を環境変数CLASSPATHに追加してください。
クラスパスとはなにか(JavaFAQ 基礎知識)
http://www.gimlay.org/~javafaq/S004.html
3
テンプレ以上。 未更新な上に失敗した。ごめんよ。
おそかったな
16 :
デフォルトの名無しさん :03/06/15 00:05
どうしてJAVAは演算子のオーバーライドができない仕様なんですか?
18 :
デフォルトの名無しさん :03/06/15 00:09
19 :
デフォルトの名無しさん :03/06/15 00:38
20 :
デフォルトの名無しさん :03/06/15 00:48
>>19 オイオイ、ページみてないけど、課題の質問は教授にしろよ。
21 :
デフォルトの名無しさん :03/06/15 00:51
>>20 しばらく休んでいたもので、聞きづらくて....。
22 :
デフォルトの名無しさん :03/06/15 00:52
>>21 コッチは授業料払ってる客。なにを遠慮する必要があるんだ?
つうか、こういう話題はいた違いっぽ。
>>17 メソッドのオーバーライドができれば十分。
書く量が多すぎて面倒くさいといっている奴はXMLも書くな。
面倒くさがり屋はHTMLタグで終了タグを省略する。
演算子のオーバライドは怠け者のためにある。
25 :
デフォルトの名無しさん :03/06/15 01:33
メニューアイテムにDeleteキーだけのアクセラレータを追加したいのですができません。 menuitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE)); ↑これで動けば文句ないのですが、getKeyStrokeメソッドが 「SHIFT_MASK」「CTRL_MASK」「ALT_MASK」などの第二引数を要求してきます。 これらのキーとの組み合わせでないとアクセラレータキーは使えないのでしょうか?
適当に0でやったらできちゃいました。 なんで NOMASK=0 とかを定義しておかないんですかねぇ。 どうもありがとうございました。
28 :
デフォルトの名無しさん :03/06/15 02:18
>>27 ビットフラグALL OFF=0ってのは自然では?
NO_MASKがクラス定数定義されていないとすれば、カタワということかもな。
29 :
デフォルトの名無しさん :03/06/15 03:04
初心者スレにこんなこと書くのもなんだが 先日、EclipseのJBossプラグイン使ってみたんだけど 自動生成されるコードに以下のものがあった public int hashCode() { int result = 17; result = 37 * result + ((this.date != null) ? this.date.hashCode() : 0); result = 37 * result + ((this.name != null) ? this.name.hashCode() : 0); return result; } いわゆる、ハッシュコードを返すわけだけど この「17」「37」っていうのは、どこからきたものかと言うことを聞きたいのです ハッシュの意味を考えるとやってることはなんとなくわかるのだが この数字って他の素数なら何でもいいのか? それとも、「17」と「37」じゃなきゃいけないのかな? いまいち理解に苦しむので質問させてもらいます 俺よりデキルやつの意見が聞きたい
30 :
デフォルトの名無しさん :03/06/15 03:22
>>29 コアJava2にこんな例が書いてあった
public int hashCode() {
return 13*d.hashCode()+17*p;
}
private String d;
private p;
ま、いろんなアルゴリズム(ってほどじゃねーか)があるな
ただ、「素数」をつかうっていうのは正解だな
31 :
デフォルトの名無しさん :03/06/15 04:43
>>29 hashCodeは、HashMapやHashSet使うときのハッシュ値生成ですから、
極論すれば、「なに返しても」いいんでしょ。
値がぶつかりやすいとハッシュ検索が遅くなるってだけの話で。
String#hashCode()のソースにも、謎の数字がハードコーディング
されてますな。
まさにマジックナンバーってやつだな。
>>30-32 レスサンクス
ちょっと疑問に思って質問させていただきました
いやね、こういうプログラムの中で
何やってるのかわからん部分は明確にしときたいと思ってさ
この先、equalをオーバーライドするプログラム書く上で
参考にしますわ
34 :
デフォルトの名無しさん :03/06/15 04:58
>>32 でも残念ながらIDではない。
このあいだあるシステムで、hashCodeの戻り値をインスタンスのIDとして
使用するという、とんでもない実装をみて腰を抜かしました。多分にオイオイと。
35 :
デフォルトの名無しさん :03/06/15 05:00
ちなみに、Stringは文字が同じだと返す値同じだが StringBufferは違う 今日は久々に良スレだな こういう話題をもっと議論したいな
なんだよ、みんな結構わかってんじゃん 初心者スレに居座ってないで もっと他のトコでいろいろ話したいよな
37 :
デフォルトの名無しさん :03/06/15 05:09
普段はJakartaのdev-MLの住人ですが。
>29 実際素数でなくても何でもいい。が、素数のほうがいいハッシュ値を生成する。 そして37あたりがだいたいいい感じだから使っているだけ。 もっといい式があればそれに変えればいいだけ。 「Effective Java」「Javaの鉄則」あたりに載ってる話だな。
39 :
デフォルトの名無しさん :03/06/15 11:27
>34 衝突起こす可能性があるし、JVMによってhashCodeは一定しないわな。 すごいな。
40 :
デフォルトの名無しさん :03/06/15 14:11
JTableの項目にフォーカスがあればメニューやツールバーの項目を使用可能にし、 フォーカスがなければその項目を使用不可になるようにしたいのです。 FocusListener fcsListener = new FocusListener(){ public void focusGained(FocusEvent e){ menuitem.setEnabled(true); button.setEnabled(true); } public void focusLost(FocusEvent e){ menuitem.setEnabled(false); button.setEnabled(false); } }; 上記のようにJTableにFocusListenerを追加してそれを実現しようとしたのですが、 JMenuBar上のJMenuや、JToolBar上のJButtonを押した瞬間にJTableのフォーカスが消えるため、 それらの項目が使えないのです。 どうしたら良いのでしょうか?
インクリメント演算子とデクリメント演算子の前置演算と後置演算について y=++x; はインクリメント後の値をyにコピーする。 xの値を他で使い、そこで変化する可能性があるが、もう一個xの結果が必要なときに使う? y=x++; はインクリメント前にyに値を退避させたいときに使う。 同時にインクリメントまでの処理を一文ですませられて便利 と考えていい? x=x++; はx++;と同じだが、可読性の為だけに使う?xの初期値が5だと、 最初に5になりあとでインクリメントされて6になるので無意味? x=++x; は++x;と同じだけど、これもわざわざこう書いておく必要は無し?コンパイル後の 結果も変わらないし。 x++;や++x;とだけ書く場合はどちらのほうが望ましい?x++;のほうがいいのかな・・ ハッキリ断言してるサイトや本がなくて・・ やさしいJava → 説明だけ。どういうときに使うか分からない 独習Java → 前置後置のことがどこにあるのか・・
int x = 5; x = x++; //この時点では x == 5 x = ++x; //この時点では x == 6
44 :
デフォルトの名無しさん :03/06/15 16:42
普通にプログラミングしていれば x++; ぐらいだな良く使うのは・・・ 逆にいえば、そんなの使いこなすよりもっと他のもの使いこなした方がいいんじゃ
で、私のはなんとかなりませんか? sageますので教えてください。 よろしくおねがいします。
46 :
デフォルトの名無しさん :03/06/15 17:00
>>45 やりたいことが、完璧に実現されているように読めますが・・・?
47 :
デフォルトの名無しさん :03/06/15 17:00
>>45 俺昔、テストプログラムで
ボタン押すと他のコンポネにフォーカス移動するやつ
つくったことあったんだが
多分やり方は、ボタンのイベントとして
あるコンポネにフォーカス移動するようにすればいいのではないかと思う
たしか、setFocus()とか言うメソッド無かったけ?
requestFocus()だったかな?
しかも、なんかちょっと他にもやらなきゃいけないことがあったような気がする
いや、たいしたことじゃないんだがそのフォーカスセットするメソッド呼ぶ
タイミングとか場所とかちゃんとしてないと、動作しなかったような気がする
とりあえず、全てのメニューツールバーボタンのイベントに
テーブルにフォーカス行くようにすればいいんでないの
>>45 何がしたいのか良くわからん。
仕様がバグっている事は別にすれば、
>>40 のプログラムは仕様を満たしてると思うけど。
JTable からフォーカスが外れた瞬間に、 メニューやツールバーの項目(以下、ターゲットと呼ぶ)を 仕様不可にしてしまう、という仕様がまずいってことでしょうね。 じゃあどうすればいいか、 「JTable からフォーカスが外れたこと」を契機にターゲットを仕様不可にするのではなく、 「JTable 以外のオブジェクトがフォーカスを得たこと」を契機にして、ターゲットを仕様不可にすればよい。 こんなので回答になりましたでしょうか。
漢字の間違いを訂正。 ------------------- JTable からフォーカスが外れた瞬間に、 メニューやツールバーの項目(以下、ターゲットと呼ぶ)を 使用不可にしてしまう、という仕様がまずいってことでしょうね。 じゃあどうすればいいか、 「JTable からフォーカスが外れたこと」を契機にターゲットを使用不可にするのではなく、 「JTable 以外のオブジェクトがフォーカスを得たこと」を契機にして、ターゲットを使用不可にすればよい。 今度こそ回答になりましたでしょうか。
51 :
デフォルトの名無しさん :03/06/15 18:09
"100 23 34 500" こういう感じのテキストファイルをintに読み込むのに、 StringTokenizerで分割して、Integer.parseIntで変換してます。 もうすこし簡単な方法はないでしょうか? Cのfscanf("%d %d %d %d", &a,&b,&c,&d)みたいな感じで 一行で書けたらスッキリするんですけど。
ムズー(゜д゜)
>Cのfscanf("%d %d %d %d", &a,&b,&c,&d)みたいな感じで お前恐ろしいことするな・・・・・・・
54 :
デフォルトの名無しさん :03/06/15 18:55
>>51 java.text.MessageFormat
56 :
デフォルトの名無しさん :03/06/15 19:07
MessageFormat format = new MessageFormat("{0,number} {1,number} {2,number} {3,number}"); Object[] parsed = format.parse("10 20 30 40"); Number num1 =(Number)parsed[0]; int val1 = num1.intValue();
>>56 コード書く手間って意味では StringTokenizer 使うのと大して変わらんと思われ。
>>40 フォーカスがあるかどうかではなくテーブルのセルが選択されているかどうかで判断する方向でいってみてはどうだ?
59 :
デフォルトの名無しさん :03/06/15 19:17
>>57 この程度のコード書くのを手間だという連中にとっては、そうかもな。
>>58 なるほど。
そのほうがずっといい。
(反省)
61 :
デフォルトの名無氏 :03/06/15 19:56
本当に今からプログラムに入門したいと思います。 というわけでこのスレにきました。 まず何から始めればいいでしょうか?(即質問・・) 皆さんはなにをすることから始めたのでしょうか?
62 :
デフォルトの名無しさん :03/06/15 20:01
>>61 まずはプログラムを書いて、コンパイルして、実行する環境を整えよう
63 :
デフォルトの名無しさん :03/06/15 20:06
他にもJavaの質問スレがあったと思うのですが、URLを教えていただけないでしょうか。 'Java'で検索しても見つからないのです。今朝はあったんですが。
66 :
デフォルトの名無氏 :03/06/15 20:18
皆さんありがとうございます。 早速実行に移りたいと思います。
67 :
デフォルトの名無氏 :03/06/15 20:26
68 :
デフォルトの名無しさん :03/06/15 21:14
Appletって一時期はやったけど今、ほとんどFlashplayerにとって変わられた 感じなんですけど・・・ 今javaで熱いのはサーブレットだけかな・・・ マイコンの組み込みにする計画はどうなったのsun? 単体のアプリなんてほとんどないし最近勢いがないような・・・ 別にjavaを批判するつもりで書いたのではありませんので(*^_^*)
>マイコンの組み込みにする計画はどうなったのsun? 出てますよ。 後、最近の携帯Javaも組み込み系ではないにしろ、おもしろい使われ方をしている。
>>68 いや、クライアントのマシンパワーが飛躍的に向上した今こそ
Appletの出番だ!!
71 :
デフォルトの名無氏 :03/06/15 21:40
いや〜じっくりプログラミング入門のサイトを見てきたんですが、 入力ソフトが無いことに気付きました。 いや、入力ソフトってなんだろう?? ??
>>71 テキストエディタでいいじゃないか。別に。
sunとかが一応GUI開発アプリもフリーで提供してるけどさ。
というか、むしろ最初はテキストエディタ使った方がいいような気がする。
テキストエディタが欲しいなら、窓の杜やvectorでさがしてこーい。
>>最近勢いがないような・・・ 立場上、転職応募者の履歴書を見る機会が多いのですが、ここ2〜3年の経歴は みなさんJava関連の仕事ばかりなので、「勢いがない」というのはピンとこないのですが? Appletも社内システム等では結構使われていますよ。Webコンテンツ上でリアルタイムに 通信と同期ができたりする方法は限定されますので。
最近はAppletよりJavaWebStartに力を入れているみたいね。
76 :
デフォルトの名無しさん :03/06/16 00:45
>>75 まあ、JWSは、Appletのような、「ブラウザに挙動が依存しちゃったりしてイヤンな
ことになりうる」方式を、より洗練された方式にリプレースしただけなんだけどね。
ゼンゼンチガウ技術だと思い込んでる奴は、勘違いだから改めろー。
Webブラウザ上の割り当てられたビュー上にしか描画できないなんて、JWSアプリか
ら見たら不便なだけ。
77 :
デフォルトの名無しさん :03/06/16 02:14
emacs+Java最強。
79 :
デフォルトの名無しさん :03/06/16 02:52
>Webコンテンツ上でリアルタイムに >通信と同期ができたりする方法は限定されますので。 技術がわからないやつが知ったかで言いそうな言葉だな。
>技術がわからないやつが知ったかで言いそうな言葉だな。 技術がわか(略
81 :
デフォルトの名無しさん :03/06/16 08:35
画面(jsp)の入力項目から全角スペースが渡されたとき、 java側で全角スペースが渡されたという判断ロジック(ifの条件) を書くのにつまっています。 String a = ""; if (a.equals(" ")){ } って書いたら怒られるし・・・ どう判断させたらよいのでしょうか? 皆様の知識をお借りしたいです。。。
82 :
デフォルトの名無しさん :03/06/16 08:48
ソースをnative2asciiしてから、コンパイルすればだめか? 全部変換されるのがいやなら、 コード中では、全角スペースだけユニコードの表記すれ。
>>81 > 画面(jsp)の入力項目から全角スペースが渡されたとき、
じゃなくて
画面(jsp)の入力項目から全角スペースを含む文字列が渡されたとき、
だった場合は if(0 <= a.indexOf(" ")) とかすればいいのかも。
でなければ
>>81 ので良いはず。
85 :
JGreener :03/06/16 13:58
Zip圧縮をしようと思っています。 WEBで情報をあつめたところ、ファイル単位での圧縮ほうほうはわかったのですが、 ディレクトリを指定して、それ以下のファイル・ディレクトリを全て圧縮する方法はないでしょうか。 サンプル等ありましたら教えてください。 よろしくお願いします。
Java Web Startというものは、自分で書きこんだプログラムを絵として 表せられますか? また、どうやるんですか?おしえてくださいまし。
88 :
JGreener :03/06/16 16:30
レスありがとう。 うう、もうちょっと詳しい情報ないですか(汗 お願いしますm(_ _)m
TextAreaに書かれている文字列を一発で全消去する方法ないでしょうか?
>>89 textarea.setText(""); とかじゃいかんのか?
>>88 再帰は基礎だよ。めんどくさいからヒントだけ
{
ZipOutputStream zos = new ZipOutputStream([zipファイル]);
File dir = new File([目的のディレクトリ]);
zip(zos, "", dir);
}
private void zip(ZipOutputStream zos, String path, File file) {
if (file.isDirectory()) {
File dir = file;
String[] files = dir.list();
for (int i=0; i<files.length; i++) {
zip(zos, path + dir.getName() + "/", new File(dir, files[i]));
}
} else {
ZipEntry entry = new ZipEntry(path + file.getName());
zos_.putNextEntry(entry);
}
}
こんな感じだ。
必要なら files[i].endsWith(拡張子) でフィルタかけるなり好きにおやり。
レスを下さった皆様方、どうもありがとうございます。 結局、CharacterクラスのisSpaceCharメソッドを 使用して判定しました。 ※おかげでソースが見づらくなってしまいましたが・・・ ところで、javaのソース中に全角スペース" "を記述、 エラーとなってしまうと思っているのですが・・・ >全角スペースだけユニコードの表記すれ もう少し勉強します・・・
>92 んなことは(普通は)ない ちゃんと聞きたいなら 「おこられる」「エラーとなる」ではなく、 どんなエラーが出ているか詳しく書く
>>92 LANG がちゃんと設定されて無いとか。
>>92 javac -encodingで明示的にエンコーディングを指定すればよいのでは?
96 :
デフォルトの名無しさん :03/06/16 21:42
RoboCodeって、最近はやっているんですか? やたら本屋で、CD付きの本をみかけるんですが。
Robocodeってタンク一台=スレッドな割には思ってたより処理が軽いなぁ
98 :
デフォルトの名無しさん :03/06/16 23:10
JMenuItemの「コピー」にCTRL+Cキーの割り当てをしたいのですが、うまくいきません。 >> item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK)); これがActionEvent.ALT_MASKだとALT+Cでちゃんとメニューが反応するようになります。 対象にしてるコンポーネントはJTreeです。 CTRL+Cはアクセラレータキーに指定できないんでしょうか?
99 :
デフォルトの名無しさん :03/06/17 01:08
JavaFAQ見ても???って人はどこへ逝ったらいいですか? PC初心者逝けと言われでばそれまでなんですが、形だけでもJavaを使えるようになりたいのです。 お勧めの本やサイトがありましたら教えてください。
101 :
デフォルトの名無しさん :03/06/17 01:33
>>99 最初は何でも手探りだよ
本なんて本屋行けばあるだろ?
「はじめての・・・」とか「いまからはじめる・・・」
とか、タイトルで選べよ
そのくらい頭つかえよ
>>99 >形だけでもJavaを使えるようになりたいのです
就職か? Hah!
どうやら少し甘えすぎてたみたいですね。 自分の文章を見ていまさらながら 少し反省してます。 実はとあるサイトで見つけたJavaアプレットに使われている画像を保存したいという 無茶苦茶不純な動機でしたがソース見てパニックになってました。 簡単に考えていたのですが、一から勉強しないと無理みたいですね。 スレ汚しすいませんでした。地道に勉強してきます。
初心者スレなので気持ちお手柔らかにどうぞ。
>>103 Alt + PrtSc でコピった方がかしこいぞ
106 :
デフォルトの名無しさん :03/06/17 12:35
質問 Remoteについて Remoteにはどういう役目があるんですか?
PrtSc = ノート用キーボードっぽい PrintScreen = 普通のキーボードっぽい って感じですか。
110 :
デフォルトの名無しさん :03/06/17 16:16
>>108 いやそうじゃなくって
「Alt」押さないかんいうことは
ノートかなと・・・
111 :
デフォルトの名無しさん :03/06/17 16:26
>>110 Altはアクティブなウィンドウだけキャプチャするんでっせ
スレ違い気味だけど… ・Alt+PrtSc アクティブなウィンドウをクリップボードにキャプチャ ・PrtSc デスクトップ全体をクリップボードにキャプチャ ノート云々はFnキーだと思われ
113 :
デフォルトの名無しさん :03/06/17 16:27
あ、そうなんですか? じゃあ、RealPlayerの画像なんかも?
>>113 動画は大抵の場合だめ。俺は疎いので嘘度の高いことを書き散らすけど、
オフスクリーンではなく直接デバイスに描かれているから。
スレ違いだなぁ・・・無理やりスレに沿ったことも書くとすれば、JMF もだめ。
アクティブなウインドウってそういう意味ね
116 :
デフォルトの名無しさん :03/06/17 19:20
1.クラスフィールド?(static)に配列を宣言したいのですが、その時それを動的に宣言する方法を教えてください (動的とは違うかもしれんがここでは、宣言時には個数がわからないけど、他の処理をしてからその結果をもとに個数を決めるということです。 2.Vectorクラスを用いてオブジェクトを格納した時 (例)Aclassクラス メソッド aa Bclassクラス メソッド bb (aa,bbメソッドを持つAclass,Bclassというクラスがあるという意味(public)) それでCクラスのあるメソッドで void cc(){ Vector vec = new Vector(); Aclass aObject = new Aclass(); Bclass bObject = new Bclass(); vec.addElement(aObject); vec.addElement(bObject); Object Temp = new Object(); Temp = vec.get(2); Temp.bb } ということはできますか?(最後の行) 以上2問JAVAの勉強して日が浅い為、根本的に違うかもしれませんが是非助けてやってください。
>あちこち アクティブウィンドウってのは、最前面にある画面のこと >116 (1) []の中に要素数を書かないだけ、という話かな? (2) できない。キャストすればできる。 …が、そもそも型の違うものを同じコレクションに入れる 時点で終わりは近い。
>>116 1. final 宣言していなければ幾らでも入れ替えられる。
2. キャストしろ。
>>116 1.出来る
2.Temp.bb();
とやる前に、
Bclass bclass=(Bclass)Temp;
とやってから、
bclass.bb();
うまくいけば成功するが
うまく行かんかったら上の行のところで実行時エラー
ちなみに、なんとなくやりたいことがわかったから答えたが
>>116 で書いてるソースは間違いだらけだからな
Javaの資格試験対策用の本買った。 …こんな書き方しねーよ、的な引っ掛け問題が 多くて欝だ。試験は試験か。実用とはまた別…
早速のお答え感謝です。 1.は配列の大きさの話なのですが、それでもfinal宣言してなければ後で大きさを宣言できるのでしょうか?宣言部で[]の中を書かないだけでOKなの?? 2.は私の作っているのは、抽象クラスの勉強ということでAclassとBclassは実はAABBclassという抽象クラスを継承しているクラスなんです。それでaメソッド,bメソッドってのは継承した奴なんで同じAABBクラスのメソッドです。 それでAclassとBclassのオブジェクトをCclassでたくさん生成し、配列に格納していたのですが、サイズを可変にしろと言われて・・・ Vectorの中にはAclass、Bclassのどっちのオブジェクトがどの順番でどのくらい入っているかはわかりません。つまりVectorの2番がBclassってわかればキャスト?というのを使えばよさそうですがわかりません。 こんな時はどうやって管理すれば良いのでしょう?たとえばVectorの3番目のオブジェクトはAclassオブジェクトだよ!ってのがわかるような方法はあるんですか?
>121 引っかけというのとはちと違うかもしれないが、 帰りの電車で読んでいて解読する気が失せてくる 模擬が。 class なんとか { int i,j; for(i=0,j=0; i+j < 20; ++i, j+=i--) { System.out.println(i+j); } } どんな結果になるか。 □値5を出力する □値8を出力する □値13を出力する □コンパイルできない (□は複数選択可能な答) ……えーと、本番のテストはパソコン画面に向かって 回答するのだよな? 紙と鉛筆は使えるのか? とりあえず、普通は前置と後置を混ぜないだろうし for文のあの中をコンマで区切って複数書くと言うのも あまりやらないし。 複雑な処理は単純に分割する癖が付いているので、 こういった込み入ったものを見るとうっとおしくて かなわない…(弱)
>>122 1. 意味不明。
2. instanceof でも使え。
>>122 1. ClassA[] は、特定のクラス "ClassA" の配列を表すクラス(というか、型) で、
それに代入されるのものは new ClassA[length]; されたインスタンス。
動的にサイズが変わっていうわけじゃないからな。
new 時にサイズを決めたものを、static なフィールド ClassA[] array に好きなときに代入できるんだ。
しかし array が final 宣言されていれば、宣言時に final ClassA[] array = new ClassA[100]; と代入してそれで終わり。
(「代入」ってのもアレだがわかりやすく書いておる)
こんな説明でわかるのかな・・・親切に教えてあげよう。 ClassA[] array は、棚の置き場。棚は何段になるかわからないが、とにかく縦一列の棚が置かれる。 array = new ClassA[100]; で、100段の空の棚が置かれる。 (※もしあとで 200段くらいにしたければ array = new ClassA[200]; で、棚は置かれるけど、 元の 100段の棚の中身はどっかにいっちゃう。その前に移し変えをすること)
ありがとうございます
>>11 7
形の違うものって・・・?
Object一緒じゃないんすか?
>>122 は初心者だからしかたないが
他のやつらはほんとにJavaやってるのか?と問いたい
インターフェース使え
AclassもBclassもそれをimplementsしろ
インターフェースにはメソッド定義
A,Bそれぞれに同じ名前で違う処理書けばいい
あとはVectorから取り出したObjectをインターフェースにキャストすれ
そして定義したメソッド呼べばいい
>128 ごめん、確かにコンパイルできんわ。 設問は class なんとか { public static void main([String[] args) { int i,j; for(i=0,j=0; i+j < 20; ++i, j+=i--) { System.out.println(i+j); } } } ですた。
>>127 Object ではひと括りにしないな普通は。
どちらも AABB のサブクラスのようだからいいけど。
AABB aabb = (AABB)obj;
if (aabb instanceof Aclass) {
aabb.a();
} else { // 暗黙でいいなら Bclass
aabb.b();
}
こうなるな。しかしこうするくらいなら、
AABB の同じメソッド c を、Aclass, Bclass でオーバーライドして、
ポリモーフィズムさせるのがいい。
あう、ゴミが… class なんとか{ public static void main(String[] args) { int i,j; for(i=0,j=0; i+j < 20; ++i, j+=i--) { System.out.println(i+j); } } } death。
>>134 だったらお前らをテストしてみようかな?
偶然にもJava資格試験のレスかいてあるやついるから
お前らも参加しろ
int[][] a[],b,c[];
それぞれ、どんな配列になるか言ってみろ
>>133 なるほど。, が入れられるなんて知らなかったな。絶対やりたくないが。
前置と後置も吐き気がしてくる。
設問には
□無限ループに陥る
もあるとなおいいかもな。
>b 配列?
>>135 a :: int[][][]
b :: int[][]
c :: int[][][]
>>135 インスタンスつくらなきゃ"配列"にはならん。
というのはさておいて、そもそも a と c はどう違うんだ。
3, 2, 3 次元
偉そうな態度で出したわりに大した問題じゃなかったね…
public void start(){ boolean d=true; swich(d){ case true: System.out.println("OK"); case false: System.out.println("BAT"); } } さて、どうなる?
> swich(d){ コンパイルエラー
143 :
デフォルトの名無しさん :03/06/17 21:01
Forteをインストールして、JSPを勉強しようと思っているのですが、 デフォルトで入っているTomcatが動いてくれません。コンパイルは通るのですが、実行すると「プロセス を作成できません、有効な外部ブラウザが設定されていない」と出てしまいます。何かWebブラウザの設定とか必要なのでしょうか? 環境はJDK1.4、Forteの3.0CEなんですが・・・。設定に関してはどのページにも、このような例はなく、 困っています。もし、よろしければ伝授お願いします。
じゃぁこれはどうなる? int []a,b[],c; int d[][],e[];
>>144 a: int[]
b: int[][]
c: int[]
d: int[][]
e: int[]
146 :
デフォルトの名無しさん :03/06/17 21:04
public void start(){ byte d=100; swich(d){ case 10: System.out.println("SO"); case 100: System.out.println("OK"); case 1000: System.out.println("BAT"); } } じゃこれ、何行目でコンパイルエラ〜?
>>147 >swich(d){
いーかげん、スペルミスに気づけよ。
以下の書き方は正しい? String s[]={new String()};
case 1000:
char c; 上のようにメンバ変数として宣言されたcの値を答えなさい 値がはいってれば初期値を答えなさい なければ無いと
double s=1.0; int x=10; double a=x/(s+1); System.out.println(a); 表示は?
int x=3; int k; if(x>0){ k=1; } else{ x++; } System.out.println(k+x); どうなる?
>>159 >System.out.println(k+x);
コンパイルエラー (ifは特別扱いされる)
>>159 コンパイルエラ〜
「kは初期化されていないかも」みたいなかんじ??
>>162 Syntax Errorだと思われ。
importも無ければclassもない。
>>163 認定試験はこんな問題の出し方
キニシナイ
String s="S"; String d="S"; StringBuffer a=new StringBuffer(); StringBuffer b=new StringBuffer(); a.append("A"); b.append("A"); さて、s.equal(d); a.equal(b); それぞれ どうなる?
>>165 > s.equal(d);
> a.equal(b);
またスペルミスかよ。
s.equals(d); :: true
a.equals(b); :: false
Collection c=new ArrayList(); c.add("w"); System.out.println((String)c.get(0)); どうなる?
>>168 >System.out.println((String)c.get(0));
コンパイルエラー (Collection に get は無い)
予期せぬ例外のクラスをひとつ上げなさい
172 :
デフォルトの名無しさん :03/06/17 21:57
質問です。 アプレットをHTMLに貼ったんですが、友人が見れたり見れなかったりします。 タグは <applet codebase="java" code="Ball.java" width=60% height=100%> </applet> で、javaフォルダにBall.javaが入ってます。 ブラウザのアプレットはONにしてるんですが、見られないらしいです。 (僕は見られます) どなたか助言お願いします。
>>172 とりあえず見れない奴のコンソール
そのアプレットを貼ってあるページ開いてから見てみろ
Ball.class
175 :
デフォルトの名無しさん :03/06/17 22:37
JDKのバージョンごときでぎゃあぎゃあ言わんでくれ・・・。
なんかクイズやってるので、おいらも一題。 public class Test{ static{ map.put("test1","テスト1"); put("test1","テスト2"); } static public Map map = new HashMap(); static public put(String key,String val){ map.put(key,val); } static public void main(String args[]){ System.out.println(map.get("test1")); } } どうなると思う?
>>178 >static public put(String key,String val){
コンパイルエラー (戻り値無しでコンストラクタでもない)
問題出す方のアホさが露見する罠
げ、こんなのも可能なんだな・・。 public class A { public static void main(String[] args) { for (int i=0, j=0; i<10 && j<10; i++, j++, System.out.println("i=" + i + "/j=" + j)) { } } }
>>178 static public put(String key,String val){
が、もし
static public void put(String key,String val) {
になっていたとしても、静的初期化子でコンパイルエラーになるんじゃないかな?
静的初期化子の前に
static public Map map = new HashMap();
があれば多分コンパイル通るはず。
重複OKだったっけ?
185 :
デフォルトの名無しさん :03/06/17 23:50
>>178 static初期化節がmapをnewする前に記述されているので
「NullPointerExceptionになるのでは?」と予想したが
答えはコンパイルエラーだった。
Javaって読みやすく、分かりやすく書くのがモットー?だから この手の問題は結構ムズカシイな
タマタマこれに似たコード書いて、初めて見るコンパイルエラー メッセージに驚いたもんでした。そんなルールあったのね、と。
なに? 結局書く順番が問題だったんですか? 実際問題で public2回書いてある問題あって 多分違うファイルなんだろなとおもって 答え見たら、やっぱり同じファイルにはにpublic付きのクラスは一個です だったよ。 ま、受かればいいんだけどさ
アプレットビューアーを使いたいんですが コマンドでファイル名をいれてもなんかExceptioninthread”main” ってでるんですけど。 ファイル名をどうやって入力すればいいんでしょうか
190 :
デフォルトの名無しさん :03/06/18 23:52
ここで答えている香具師らをジャバ様と呼ばせてもらってもいいでつか?
>>189 どういうコマンド打ち込んだのか書いてね
193 :
デフォルトの名無しさん :03/06/19 11:45
ローカル変数の宣言で List list=new ArrayList(); とか、 Context con=new InitialContext(); とか、書いてる理由がわかりません 他から呼び出される関数を public void setXXX(ArrayList list){} じゃなくて public void setXXX(List list){} とやるのはわかるけど・・・
>>193 以降に続く処理で ArrayList である理由がこれっぽっちもない場合は、
List ないし Collection にする。
万一、ローカルにこんすとらくとするのではなく引数でとるように仕様を変更するとき、
果たして ArrayList でなければいけないんだっけか?
などとソースを見直す必要はない
俺は、そんなぐらいの意味合いでやってるが
>>193 まぁ、大した意味無いな。漏れは素直に同じ型でやってる。
196 :
デフォルトの名無しさん :03/06/19 13:32
あるメソッド内で そのメソッドの名前を文字列で取得する方法ありますか?
>>196 いったい何の意味があるんだ?
自分でメソッド書いたんだから自分で文字列を与えればよい
>>196 Exception 発生させて StackTraceElement からゲット。
ま、たしかに無意味っぽいけど。
201 :
デフォルトの名無しさん :03/06/19 17:00
Servletで、StringBufferクラスの長い文字列をPrintWriterクラスのprintlnで書き出すとブラウザ上で改行 されずに表示されてしまいます。 普通にテキストを表示させたときのようにブラウザの横幅で自然に改行されるように したいの ですが、何かいい方法はありませんか?
202 :
デフォルトの名無しさん :03/06/19 17:03
ほんとに Servlet だのなんだのとやってる野郎どもはあほばかりだな!!!!!
204 :
デフォルトの名無しさん :03/06/19 18:00
>>201 HTMLでないと自動改行(word wrap)してくれない。 ちゃんとtext/htmlで、HTMLの一部として出力してる?
お前ら、javascript と勘違いする奴はともかく、 HTML が完全にスレ違いだと気づかない奴は放置しる
>>203 は最近EJBおぼえたので鼻高々なんです
かわいいいね
僕のスキルは ・perl がぼちぼち おしまい
>>203 まあ、たしかに現状では
個人のプロバイダでは
PerlのCGIしかつかえないサーバばかりだもんな
Servletやっても仕事じゃない限りつかえる場所ないよな
おちまい
とても失礼な発言をしてしまったみたいで、すみませんでした…
仕事で今Servletをやり始めたところなのですが、考えてもいい案が浮かばなかったので。。
>>204 因みに、text/htmlで出力していますが、pw.println("text"+StringBuffer+"text");
のような形です。
仕方がないので今のところはStringBufferに文字列を足していくときに
一定の間隔で改行コードを挟むようなプログラムにしています。
気を悪くさせてしまってごめんなさい。。
Javaで連結リストはどうやって表現するんでしょうか? ポインタの役目を果たすものは何でしょうか?
>>212 >ポインタの役目を果たすものは何でしょうか?
ポインタ
もっとバカな初心者連れて来い!!!ゴルァ!!!  ̄ ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ∧,,∧____ ∬ /,ミ゚Д゚,,彡,, /| □⊂へ ::::⊂,,,ミ // (_ミ ゛,, ノ~~// (_丿|_|"" し'
215 :
デフォルトの名無しさん :03/06/19 21:51
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ∬ ∧,,∧ | 今日はさみしいなぁ〜 ~━っミ ゚Д゚彡,, < 雑談や質問を、しながら ∀._(,,,~ ,,,~⊃_ | マターリくつろごうや ━┳┷ |. ,(~ヽ,,,ミ. \_________ ┃...| ̄ ̄し'J.  ̄ ̄ ̄ ┻ ヽ ̄ ̄
218 :
デフォルトの名無しさん :03/06/19 21:55
∧_∧ ピュ.ー ミ ゚Д゚彡,, <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎
219 :
デフォルトの名無しさん :03/06/19 21:55
テキストファイルを1行ずつ読み込み、 目的の行に達した時に、 その行の内容だけを変更したり、 その行を削除して、1行詰める(空白行をなくす)事をしたいのですが、 やり方がわかりません。 どうしたらできますか?
>>219 一旦全データを読み込んで修正した後、
同じファイルを上書きする。
222 :
デフォルトの名無しさん :03/06/19 22:02
>>219 半角英数字とかだけだったら
ByteArrayInputStreamとかでもできる
(*´д`*)アハァ… Java初心者質問スレ
> テキストファイルを1行ずつ読み込み、 BufferedReader の readLine() 使えば?
226 :
デフォルトの名無しさん :03/06/19 22:08
>目的の行に達した時に startWith() を使えば?
盛り上がってまいりました!!!ゴルァ!!!  ̄ ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ∧,,∧____ ∬ /,ミ゚Д゚,,彡,, /| □⊂へ ::::⊂,,,ミ // (_ミ ゛,, ノ~~// (_丿|_|"" し'
>>225 単純に Writer に突っ込めばよいのでは?
あ、readLine() で読んだ場合は改行記号が消えるので
System.getProperty("line.separator") あたりをくっつけて。
229 :
デフォルトの名無しさん :03/06/19 22:15
サーバーの一時ディレクトリにアップした画像(jpg)をWebページで一覧表示し、 正式にアップするかどうかをユーザーに決めてもらい、正式ディレクトリに移動する プログラムを作っています。 選択されたファイルを一時ディレクトリから正式ディレクトリに移動させる処理は 簡単に出来たのですが、アップされたデータがjpgかどうかを判定するプログラムの 作り方がわかりません。Webなどで資料を調べてみたのですがそのことに関する記述が見つかりません。 何かいい方法があったら教えてください。
>>229 その心は・・・?
単にわけわからんサイズの大きな
得体の知れないファイル送りつけられるのがいやなら
ファイルサイズでければ問題なし
あとは、.jpegファイルの先頭部分を
読み込んでみるとJPEG共通のバイト入ってないかな・・?
233 :
デフォルトの名無しさん :03/06/19 22:21
>>231 システムを使われるお客様がパソコンがまったくダメなので
jpg以外のファイルをアップしてもリストに出てこないようにしたいだけです。
(ビットマップファイルの拡張子を.jpgに変更とかしてアップしそうなので)
なるほどjpegのヘッダを見ればいいんですね。ありがとうございました。
やってみます。
boolean java.io.image.JPEG#isJPEGFile()や、 boolean java.io.image.JPEG#isURAJPEG()が参考になる
>>233 ちょっとまて、俺が言った「ヘッダ」は
なんの根拠もない、勘だ、勘で言ったんだ許してくれぃ
236 :
デフォルトの名無しさん :03/06/19 22:32
>>234 一瞬、そんなメソッドあるのかと期待したが
よくよく考えると
そんなメソッド存在したところで
裏画像にありつけるわけでもない・・・
ちょっとまてよ・・・
ネットで無造作検索して
「true」の文字が返ってきた日にゃ〜・・・
おい、こうしちゃいられね〜な
237 :
デフォルトの名無しさん :03/06/19 23:21
とてつもなく初心者的な質問よろしいでしょうか? Swingでボタンなどのレイアウトについてなのですが BorderLayoutとGridLayoutを組み合わせたいのです。 感じとしてはのNORTHのなかにひとつテキストフィールドをいれて CENTERのなかに4*6列のボタンを配置したいのですがどうやれば うまくいきますでしょうか。
CENTERにJPanelを入れて そのJPanelにGridLayoutを設定せよ
>>237 GridLayoutを指定したJPanelにボタンを並べて、
そのJPanelをCENTERに配置する。
で、いける?
かぶった… ところでスレ汚しついでに質問なんだが、 javax.servletパッケージのクラスのソースコードってどこかにない? それがあると、Eclipse上でjavax.servlet以下の クラスのメソッドをオーバライドするのが便利になるんだが。 j2sdkee-1.3.1にはありませんでした。tomcatのソースにも。
>>239 >>238 うう、ばかですんません。
そのJPanelにGridLayoutを設定せよってのがうまくできなくて・・・
JPanelはbって名前なんですがどう書くのでしょうか。
そのあとにこれでいいんですよね?
getContentPane().add(b,BorderLayout.CENTER);
ああ、名前にsageってかいちゃったし・・・ もう最悪ですな
b.setLayout(new GridLayout(4,6)); b.add(button1); b.add(button2); ....
>>243 おお、できました。
どうもありがとうございました!!
本かって勉強しないと・・・・
基本情報処理試験以外にJAVA初級プログラマー向けの資格てなにかありますか? 最近モチベーションがやや墜ちているのですが資格の勉強ならやる気になるかなぁと・・。
JTable項目(SINGLE_SELECTION)の選択/非選択によって、
JMenuItemや、JToolBar上のJButtonをON/OFFしようとした
>>40 です。
JMenuItemに関しましては、JMenuをクリックした際のMenuListenerで、
JTable項目の選択/非選択を検知してsetEnabled(true/false)をすることにより可能となりました。
しかし、JToolBar上のJButtonに関しては、当然MenuListenerはありません。
JButtonがJTable項目の選択/非選択を知るためには、
1.JButtonがMenuListenerに相当するリスナを持つ
2.JTableがJTable項目のON/OFFを検知するリスナを持ち、そこでJButtonのON/OFFを切り替える
のどちらかだと思います。
しかし、そのようなリスナはありますでしょうか?
また、よりよい方法がありましたらご教授ください。おねがいします。
>>248 javax.swing.table.TableColumnModelと
そのメソッドaddColumnModelListener(TableColumnModelListener x)、
javax.swing.event.TableColumnModelListenerと
そのメソッドcolumnSelectionChanged(ListSelectionEvent e)
あたりが使えるのでは?
やったこと無いので責任は取れないが。
それにこの方法だと列の選択の変化しかわからないようなので、
やりたいことによっては使えないかも。自信ないのでsage
>>248 2.
javax.swing.table.TableColumnModelListener の
columnSelectionChanged(ListSelectionEvent) とか。
252 :
デフォルトの名無しさん :03/06/20 12:41
以下のようにエラーが出るのですが、原因はどんなことが考えられるでしょうか? Exception in thread "main" java.lang.NoSuchMethodError: main
あれ?252が見えない、、、 NGワードか??
255 :
デフォルトの名無しさん :03/06/20 13:53
JavaBeans化したクラスから同一パッケージである別のBeans化したクラスを 使おうとすると”シンボルを解決できません”と エラーがでてくるのですがどうしたらいいのでしょうか?
>>249-250 二人も同じ事を言ってくだされば心強いです!
寝てお風呂入ったあとにやってみます!
普通「1ソースコード」といったら、「1ファイルにつき」というのと同じ意味ですか?
258 :
デフォルトの名無しさん :03/06/20 23:34
>>255 使うってどういうこと?
Bean b=new Bean();
でも、言われるんなら
コンストラクタがprivateになってる可能性大
259 :
情報モトム(つ-`) :03/06/21 00:56
jarをダブルクリックして実行させてるけどProgram Filesとか Documents and Settingsだと空白が混じってるせいか実行できん〜 他のJREを1.4.1にしてそうなった様な気がする....情報モトム(つ-`) 人の作ったアプリもウゴカンし..
>>259 コンソールからjava -jar Hoge.jar
のコマンドで起動して、エラーをミロ。それで解決する可能性大。
261 :
情報モトム(つ-`) :03/06/21 01:05
>>260 それがコンソールから実行するとちゃんと起動するんよ〜
エクスプローラーからダブルクリックすると起動せんのよ〜
スペース混じってないフォルダだったら(もちろんフルパス)
問題ないんだけど...(TT)
>>261 じゃあ、javaw -jar Hoge.jar。
あと、JARを右クリック→プロパティ開く→なにに関連付けられている?
263 :
デフォルトの名無しさん :03/06/21 01:14
ArrayList配列からString型の配列データを得るにはどうしたら良いんですか? ArrayList配列にはString型オブジェクトが入ってます.
264 :
情報モトム(つ-`) :03/06/21 01:16
javaw -jar Hoge.jar ってやると javaw could not initialize the java virtual machine program will exit って表示された.......これは一体.. スペースなしフォルダでも同じエラーがでる.. jarプロパティに関連付けられているのはjavawでした (-.-;
265 :
情報モトム(つ-`) :03/06/21 01:19
>>263 List list = new ArrayList(); ってやってListに格納して
Iteratorで取り出すといいかも(^-^
>>264 レジストリと現実が整合性取れてないかもな。
メンドイので、JRE全部アンインストールしてからJRE
1.4.1だけ再インストール。王道ですね。
>>263 ArrayList#toArray() で我慢すれば楽
String[]じゃなくてObject[]で返ってくるけど。
どうしてもString[]にしたかったらループで一つずつ格納
>>263 かなり意味不明。ArrayList<String>[]ってことか?
>>265 本気で意味不明。
>>268 オイオイ。
String[] arr=(String[])ArrayList.toArray(new String[0]);
>>272 引数があるからOK(無いとClassCastExceptionになるが)
>>265 うんこは氏んでくださいよ ホント
275 :
デフォルトの名無しさん :03/06/21 01:46
あのー、すげー基本的なことだと思うんですが、 自分ではどーにもならんかったので、質問させて下さい。 Integerの値をStringにしたいんですが、Integer.toStringだと 上位の桁が0だと省略されてしまうんです。 で、例えば2桁固定で上位には0を詰めるようなメソッドって ないんでしょうか? 今は、しょうがないんで、下みたいにやってます。 String out = Int2String(hour,10,2)+":"+Int2String(min,10,2)+":"+Int2String(sec,10,2); /* Int2String */ public String Int2String(int i,int s,int l) { String str = null; str = Integer.toString(i,s); for(int ip=0;str.length()<l;ip++){ if (str.length()<l){ str = "0" + str; } } return( str ); } 教えてプリーズ!!
>>275 java.text.MessageFormat
つうかこの手の質問多すぎ。
import java.util.*; class Test { public static void main(String args[]) { ArrayList al = new ArrayList(); al.add("abc"); al.add("def"); al.add("ghi"); String[] strArr; strArr = (String [])al.toArray(new String[0]); for (int i=0; i<strArr.length; i++) { System.out.println(strArr[i]); } } } 全角空白は許してね。
Format
279 :
情報モトム(つ-`) :03/06/21 01:51
>>266 やってみます^^;;
>>271 やっぱキターww
これって重鎮から聞いたんですが...ww
俺はこーやってた ArrayList al = new ArrayList(); al.add("abc"); al.add("def"); al.add("ghi"); String[] strArr = new String[al.size()]; al.toArray(strArr); for (int i=0; i<strArr.length; i++) { System.out.println(strArr[i]); }
>>279 仮にイテレータ使うにしても何でいちいちListに入れ直す必要があるんだ
わけわか
>>281 その例なら、 new String[3] が妥当かと。w
285 :
デフォルトの名無しさん :03/06/21 01:59
>>276 ,278
JAVADOC見てみました。
説明がながーいので、今からしばらく読んで来ます
多謝!
まじで馬鹿ばっかりだ…シャレニナラン。
>>277 と
>>281 はどっちが一般的なんだろう?
&突き詰めていくとどっちが速く動くのかな。
>>281 の方がString[]のインスタンスが一つ少ないからいいのかな(実際は差なんかほとんど無いとしても)
前にも書かれてたけど、
質問するような立場の人間がトンチンカンな回答してることが多くない?
たとえば
>>265 >>272 みたいな回答を
初心者が真に受けたらどうすんだ、と。
>>287 最大公約数的に一般的なのは、
Hoge[] array = list.toArray(new Hoge[list.size()]);
だろうな。
キャスト忘れた…馬鹿の一員です(鬱
やってみりゃ直ぐ分かるようなことで、いちいちWebに質問あげてくるよう なアフォ(初心者かどうかはこの際関係なし)がどんな末路を歩もうと、正直 どうでもいい。
>>292 なんでだよ馬鹿。ArrayListのソース嫁。
あ、誤爆したよ。
めんどくせーのは
>>289 だった。
new String[0] っていうサイズゼロな配列を渡しているのをみて、
「あ、型を指定しているのね」ってのを感じとれるかどうか、
ってことだろ。イディオムっつうか。。
このスレは定期的にこんな惨状になるな。なんでだ? 他の言語の初心者スレはもっとまともなんだが
>>297 Javaは、最近のブームに乗って馬鹿が大量流入してるから。
底辺はVB厨以下。
>>292 >>296 めんどくさくねー。
list.toArray(new Hoge[list.size()]) の new Hoge[list.size()] の参照値が
Hoge[] array に渡ってる。
つまり
>>281 の
String[] strArr = new String[al.size()];
al.toArray(strArr);
の処理を一行にまとめたのと変わらない。
ちなみに
>>277 には無駄がある(String[]のインスタンス2つ作ってる)。
>>297 > このスレは定期的にこんな惨状になるな。なんでだ?
他のスレも似たり寄ったり
まあ、ArrayList#toArray(Object[])メソッドの挙動が、 経験が少ない人間にはわかりづらいのが本質的な問題なの かな? 引数自身を変更して戻り値にも同じ参照を返す可能性があ るなんて、普通の処理ならキモイよな。
つーかintやcharなんかは参照値扱えなくてオブジェクトは参照値しか扱えないような 言語仕様なのはなぜなんだ?よくわからん。コンセプトというか。 これのせいで初心者が混乱するわけだ。 あとString型なんかも、初心者に説明するのがかなりややこしい(初心者は基本データ型と混同しがち)。
import java.util.*; class Test { public static void main(String args[]) { ArrayList al = new ArrayList(); al.add("abc"); al.add("def"); al.add("ghi"); String[] strArr = new String[] { "0", "1", "2", "3", "4", "5", "6"}; strArr = (String [])al.toArray(strArr); for (int i=0; i<strArr.length; i++) { System.out.println(strArr[i]); } } } もっとキモイ一面。
長さ0の配列はimmutableだから、
---
private static final String[] NULL_STRING_ARRAY = new String[0];
public String[] hoge(List list) {
return (String[])list.toArray(NULL_STRING_ARRAY);
}
---
とすることで、無駄なインスタンスが生成されるのを極力減らすことができる
……が、やっぱり俺は
>>289 のやりかたが一番好きだ。
277は何がやりたいの? 悔しいの?
>>302 性能とOOPのバランス。純粋OOPならプリミティブな変数は必要ない。
でもそれじゃ「常に性能がでない」。開発者に選択権があるのは
シゴク真っ当だと思われ。
いや、別に悔しくは無いです。 楽しいです。w わたし的には、あんまりインスタンスの生成数にこだわるより、 見た目すっきりなほうが好き、ってだけです。 そもそも、そんなに効率重視したいなら初めから toArray() とか使わないほうがいいかも、 とか思ったり・・・。
>>303 > String[] strArr = new String[] { "0", "1", "2", "3", "4", "5", "6"};
なんかまどろっこしい書き方だな。
String[] strArr ={"0", "1", "2", "3", "4", "5", "6"};
でいいだろ。
>>304 そんなのわざわざ定数で宣言してある方がよっぽどキモイけどな。
それならまだ
>>277 の方がマシだろう。
ま、漏れもやるなら
>>289 がいいと思うが、そもそもそんな処理したことない。
Listの中身をArrays使ってソートしたいときにObject[]で戻すことがあるくらいか。
>>304 せめて EMPTY_STRING_ARRAY にしとけ。
>>308 あまり突っ込まないでやってくれ。荒れるから。
312 :
デフォルトの名無しさん :03/06/21 02:31
DefaultTableModel dtm = new DefaultTableModel(列名[], 行数); JTable table = new JTable(dtm); でJTableを構築した場合、 dtm.addRow(データ[]); で行が追加できて表示されるのですが、 DefaultTableModel dtm = new DefaultTableModel(列名[], 行数); DefaultTableColumnModel dcm = new DefaultTableColumnModel(); JTable table = new JTable(dtm, dcm); でJTableを構築した場合は dtm.addRow(データ[]); をしてもJTableにデータが追加されません。 JDKのドキュメントを見ると、new JTable(dtm) で構築した場合は、 デフォルトでDefaultTableColumnModelを使うみたいですが、 明示的にnew JTable(dtm, dcm)と入れると動きません。 何が悪いのでしょうか。
>>307 当たりですな。ArrayList#get(int)コールでも、コストは大して
変わらん。(アセンブラ invokeVirtual1コール分)
配列に置換する必要がある場合なんて、普通はないな。
生のコレクションだの配列だのをAPIの入出力インターフェイスに
したいというヤツラ(個人的には、そんな定義を書く奴には殺意を
覚えるが)は、TigerでGenericsつかいませう。
>>309 いちいち配列オブジェクトを作って一時的に入れ替えるのもったい
ないので、java.util.Collecitons#sort()使いなはれ。
>>312 ためしにJTable#setAutoCreateColumnsFromModel(true)してみてくれ。
>>312 table.setAutoCreateColumnsFromModel(true) とかするか、
dcm.addColumn(new TableColumn()) を必要なだけやってから
new JTable(dtm, dcm) するか。
>>315 きたーーーーーーーーーーーーーーーーーーーーーーーーーー!!!
師匠と呼ばせてください。
>>316 どうもどうも、ありがとうございます。ぺこぺこ。
>>317 よばんでいい。JTableのコンストラクタのソースコード、さっき
読んだだけ。おまいもやってみそ。悩み減るぞ。
320 :
デフォルトの名無しさん :03/06/21 02:54
クラスの中で static の HashTable を宣言し コンストラクタで new してます。 Aのセッションでnewし、Bのセッションでnewした場合、 同一のオブジェクトになりますか? また、別のオブジェクトとした場合、 同一セッションで別のbeanからコールしたいときは どうすれば良いですか?
言ってる事がよくわからないけれど、シングルトンしたいのかしら?
>Aのセッションでnewし、Bのセッションでnewした場合、 >同一のオブジェクトになりますか? なにとなにが同一なのかよくわからん。 newするたびに新しいオブジェクトなのは当たり前。 >また、別のオブジェクトとした場合、 >同一セッションで別のbeanからコールしたいときは >どうすれば良いですか? セッションに格納しときゃいいやん。セッション単位で シングルトンチックにすればよし。 synchronized(session){ HashMap map = (HashMap)session.getAttribute("map"); if(map == null){ map = new HashMap(); session.setAttribute(map); } } HttpServletの話しだよな?J2SE使いは"セッション"を 知らんぞ。質問の仕方考えたほうがいいな、お前ら。 ローカル用語と公用語の区別くらいつけれ。
質問の仕方がまずくて済みません。
static変数の使い方をお聞きしたかったのです。
Webアプリなんですが、別々のクライアントから接続した場合
別々にクラスをインスタンス化し、別々のHashTableが作成されるとの認識だったのですが
そのHashTableをクリアした時に、他のHashTableもクリアされる
(つまり同一化している)と言われ、それがstatic宣言しているせいだと。
なんとなく、??でしたので、質問させていただきました。
>>323 場違いでいたか。済みません。
現状は、その方法でクラス本体をセッションに乗っけてます。
別々になってほしいんならstaticじゃいかんだろ。 ついでに、staticな変数を初期化するときはStatic Initializerでやろうな。
bmp なんかの画像の一部分だけを切り取って表示するにはどうしたらいいんでしょうか? 何を見たらいいかのヒントだけでもいいので教えてくらはい。
どうも、質問者の264です。 Java初心者でどうも基本的なことが良く解らないんです。 Javaでは、newキーワードを使わないとオブジェクトにならないというのですが、 じゃあ、最初に何で配列に値が入れられるのかな?とか思うのですよ。 値というのはオブジェクトじゃないのかな?と。 あ。値すらもスケルトンなのかな。 でも、そうすると、値の一時的に入ってるメモリは何なのかな? とか思ったりするわけで、ここら辺は無視すべきですか? newはSmalltalkだか、shimuraからあるらしいですが、オブジェクト指向言語と 手続きが他言語だと、メモリの概念の基本部分で混乱しますね。 newする以前に値が出現しているのに、newしないとオブジェクトにならないし。 ああ。newはポインタということですか? それで全て参照渡しな訳ですかね?
String[] arr=(String[])ArrayList.toArray(new String[0]); この方法でうまくいきました。 String[] arr=(String[])ArrayList.toArray(new String[ArrayList.size()]); しなくて良いのかな?とか思いますけど。 配列0で初期化してるのにそれ以上に大量のデータを入れてオーバーフローとか しないんですか?
>>328 足りない場合はtoArray()の内部で new String[0] した配列を捨てて
new String[ArrayList.size()] と同じ処理を
(それより遅いかもしれない)リフレクションを使って行う。
>>326 java 一般では bmp は読めないものと思え。
jpg, gif, 古いものでなければ png 可、ぐらいに覚えておけ。
で画像の表示だが、
Toolkit から Image にとりこんで、
Component の paint で Graphics に drawImage するとき、
「指定矩形のみ」のメソッドで描画すればいい
>>329 ああ。そうなんですか。
念のため聞いておきたいんですが、これってJavaの仕様ですか?
それとも実装なのかな?
>>258 書いてくれた様な感じです。
また、そのクラス内のメソッドを記述しても
同様のエラーがでてしまうのです。
JSPからは正常に使えるんですがBeansだと駄目なんです。
コンストラクタはprivateにはしていないと思うんですが。。
>>332 定義は聞いてない。
実装と動作と仕様を聞いてるだけだよ。
あー配列オブジェクトが何かわからんのか。 JVM の仕様書読んでくれ。
>>336 お前の日本語が不自由なだけだと思うが。
それとも釣りが趣味でいらっしゃる?
何だ、 264 じゃなくて 263 じゃないか
>>327 いろんな基礎知識を、間違って理解している。
配列という言葉を知ってるのに、配列とは何なのかが分かっていない。
なのに "Java だと" どうこう、という話にすり替わってしまって混乱している。
java 初心者というより生半可なプログラミング初心者だということを自覚した方がいい。
専門2年目。 JABA言語は、入門書を一通り読み終えて、理解。 エクセリプスで、適当にメモ書きで設計して、 簡単なJSP/JEE2システム作れる程度です。 Apache/アヴァロンとか、PHP4とか。 COBOLは基本情報のときに勉強した。あれは簡単で自由度が低かったけど好きだった。 来年度からCOBOL.NETで仕事です。 俺もそんな出来る方じゃないけど、PG志願の学生の平均は超えてるかなぁ、と。(UNIXマスターだし) しかし、無知で入ってそれなりにこなす大学生もかなりいるから、 やっぱり全ては「センス」じゃないのかね?現時点のレベルはあんまし気にしない。 (ただ、学生時にHTML入門を挫折してしまうヤツはちょっと難しいと思うけど) とりあえず今は女よりJDK1.5のことで頭がいっぱいです (class Age{ void PG(){int 24;}} )
コピペか。
345 :
デフォルトの名無しさん :03/06/21 15:17
new のこーいう使い方ってあるんですか? TGForEachNode tgforeachnode = ad. new TGForEachNode() { public void forEachNode(Node node) { // } };
>>45 ある。あるからこそ、お前が例として出せる。
が、なんだ? その ad. っていうのは。汚いな。
javax.xml.parsers.DocumentBuilder ってデザインパターンのBuilderパターンが適用されているんでしょうか?
JBuilderやC++Builder ってデザインパターンのBuilderパターンが適用されているんでしょうか?
350 :
デフォルトの名無しさん :03/06/21 15:31
Body Builder ってデザインパターンのBuilderパターンが適用されているんでしょうか?
>>248-249 おっしゃる通り、同じ列を選択した場合、ツールバーのボタンは反応しません。
うーん、初心者がやってはいけない領域なのだろうか・・・
なんでTableColumnModelがあって、TableRowModelがないのでしょうね?
Excelみたいな表計算ソフトを作るのも楽になりそうなのに。。。
これを普通の書き方にしたいのですが、、、 ActionListener actionlistener = jpanel2. new ActionListener() { public void actionPerformed(ActionEvent actionevent) { } };
>>352 それもかなり普通な書き方だぞ。
jpanel2. はきちゃないけど。
こんなのもあったりして悩んでいます。そのほかdouble型もあります boolean b = false ; ActionListener actionlistener = b. new ActionListener() { public void actionPerformed(ActionEvent actionevent) { } };
エラーはこうでます、、 ActionListenerはbooleanクラス内のネストしたクラス、またはインターフェイスではありません。
限定クラスインスタンス生成式、で、かつ、匿名、ってやつか?
>>355 さすがにそれは間違いだ。
それに、
>>354 はおかしかった。見落としてた。反省。
仮に ClassAD という手作りクラスがあって、さらに内部クラスに TGForEachNode というのがあった場合、
そしてさらに TGForEachNode を継承して名前を付けない(それを匿名という)クラスを作り、
さらには同時にインスタンスも作りたいとき、
>>345 のような書き方ができる。正しくは new ClassAD.TGForEachNode() { ... } と書く。
ClassAD のインスタンス ad があった場合は new ad.TGForEachNode() でも ad.new TGForEachNode() でもいいが、
どっちも汚い書き方。
ActionListener は API の標準クラスで、何かの内部クラスではないから、
普通に new ActionListener() { ... } して匿名の継承クラスを作るか、
implements した名前付きクラスを作るのが正しい。
>ActionListener は API の標準クラスで、何かの内部クラスではないから、
クラスじゃねーやインタフェースだ。まぁいいか。
早い話が、
>>355 は b. が余計なだけだが、
いったいそのソースが何故そんな書き方をしているのか理解に苦しむ。
ヒト脳の奥深さに圧倒されそうな気がするんで詳しく知りたくは無いけど。
ありがとうございました。 もう少しがんばってもう一踏ん張りしてみようと思います
>>358 >ClassAD のインスタンス ad があった場合は new ad.TGForEachNode() でも ad.new TGForEachNode() でもいいが、
ほんと?
前者でやってみたらエラーになるよ。
あれ? 俺、何かと間違ってるか? ごめん。死ぬわ。
363 :
デフォルトの名無しさん :03/06/21 16:35
ストリームから一文字読み込むのにReaderのreadを使えますが、 一文字読み戻すことはできないんでしょうか? Cのungetcみたいな。
>>363 PushbackReader 使えば unread 出来ます。
mark, reset ってのもありまっせ
366 :
デフォルトの名無しさん :03/06/21 16:54
>>364 , 365
すばやい回答どうもありがとうございます。
ずっとCをやっていて、最近Javaをはじめましたが、
入出力にかかわるクラスがいっぱいあって混乱してます。
>>351 > おっしゃる通り、同じ列を選択した場合、ツールバーのボタンは反応しません。
「同じ列を選択」したときって、イベント来てる?
イベントが来てるなら大本の JTree から選択範囲貰って判断すれば良いだけだと思うんだけど。
最近Javaを勉強している初心者です。 Javaサーブレットで、AccessのDBを使用したいのですが、 sun.jdbc.odbcドライバというのはどこでダウンロード出来るのでしょうか?
>最近Javaを勉強している初心者です。 そういう方はサーブレットに手を出すより先に憶えることがあると思うんですが。 手順を飛ばしすぎですよ。
>>370 さん、出来ました!ありがとう御座います。
JDBC + ODBC + Jet で検索してたんでそのページが発見出来ませんでした。
・・・逝って来ます
372 :
デフォルトの名無しさん :03/06/21 21:01
うおっ。 正直スマンカッタ>>all じゃ。
374 :
40=248 :03/06/21 21:30
>>367 イベント来ていませんねー・・・
関係ない話ですが、このイベントは一度に二回呼ばれるんですね。
>>332 あー、Javaやるやつはこれ読んでおいたほうがいいね。
なかなか判りやすいし。
>>372 おいおい、フォントと文字コードは関係無いじょ。
>>349 名前なんてその程度のものであって、クラス名からパターンを判断するなってことですね。
満足しときます。
378 :
デフォルトの名無しさん :03/06/21 23:18
>>376 Fontクラスのコンストラクタの第二引数に文字の種類を指定できます。
379 :
40=248 :03/06/21 23:33
JTable項目の選択/非選択によりツールバーのボタンのON/OFFですが、 超卑怯くさいですができました!!! ツールバーのボタンを押した際に、 table.clearSelection(); を行うことで選択を解除することでできました。 しかし、この方法では、ツールバーのボタンを押して 連続で行を削除することなどができません。 急場しのぎですね。
380 :
デフォルトの名無しさん :03/06/21 23:37
class と public class の違いって何? classだけだとクラス名とファイル名が違っても大丈夫だけど public classだとコンパイルできないから ただの省略可能ってやつではないみたいだ。 でも、クラスになった後はどっちも同じように 使えてるような気がする。
381 :
デフォルトの名無しさん :03/06/21 23:41
public class ではなくてpublic と classです。publicはどこからでも アクセス可能な修飾子でパッケージ外からアクセスできます。classだけたと デフォルトになって同じパッケージからしかアクセスできません。
382 :
デフォルトの名無しさん :03/06/21 23:43
あとpublicは同じソース内に1つしかつけられません。
>>379 ListSelectionListener l = new ListSelectionListener(){
public void valueChanged(ListSelectionEvent e){
//選択変更検出。
}
};
table.getSelectionModel().addListSelectionListener(l);
table.getColumnModel().getSelectionModel().addListSelectionListener(l);
>>383 神降臨きたーーーーーーーーーーーーーーーーーーーーーーーーーー!!!
前にvalueChangedを見かけたとき、
セルの値を変更したら反応するのだと勝手に思ってしまいました。
やったーーーーーーーーきたーーーーーーーーーーうわーーーーーーーーのわーーーーーーーーーーーー
教えてください・・。 JRadioButtonを拡張したクラスを作るとき、選択項目が変更されたときに呼び出される リスナーをimplementsさせたいのですが、何をimplementsさせればいいのでしょうか。。 ItemListener+itemStateChanged()じゃダメなのでしょうか。 だれか・・。
386 :
デフォルトの名無しさん :03/06/22 00:44
>>382 ソースファイル名と同じにしないといけないから、1つしか作れん罠
387 :
デフォルトの名無しさん :03/06/22 01:28
public interface A { public static class A1 { } public static class A2 { } public static class A3 { } }
>>385 Button だったら ActionListener じゃないかな。
389 :
デフォルトの名無しさん :03/06/22 02:40
っていうかよ、 おまえら少しは本買って勉強スレよ 金なきゃ図書館イケ
390 :
デフォルトの名無しさん :03/06/22 03:35
今、ホームページでjavaを使って、0,1秒ごとにスクエアのウィンドウを大きくしたいんですけど どうすればいいんですか?? 教えてください。。。
391 :
デフォルトの名無しさん :03/06/22 03:55
マジレス スクエアってなに? ブラウザの部品か? なんかJavaScriptのにほいがプンプンするのですが・・・
392 :
デフォルトの名無しさん :03/06/22 06:21
XEmacsでJava書いてこそJavaプログラマと呼ぶに相応しい。
394 :
デフォルトの名無しさん :03/06/22 09:33
>>391 そうです。
スクエアは四角です。
ホームページを起動したときに別窓で四角を表示して大きくしていきたいんですけど、、、
javaとjavascriptはちがうものなんですか??
初心者ですみません、、、、
ActionListener,ChangeListenerなど試しましたがダメなのです・・。 JCheckBoxならItemListenerをimplementsでイケるので同じやり方でいけると 思ったのですが。
と思ったのですが、やっぱりItemListenerでイケました。 凡ミスでした。。 失礼しました。
>394 JavaとJavaScriptは全然違う ブラウザの別窓云々はJavaScriptなので、 WebProg板あたりで質問してくれると答えが返ってくるかと思う でもスクエアとか四角じゃ誰もわからないような気もするが ブラウザの別ウィンドウのことなのか、HTML内のOBJECTかAppletなのか、SVGなのか・・・
399 :
デフォルトの名無しさん :03/06/22 14:42
マ板・Linux板に入れないのは漏れだけでつか?
400 :
デフォルトの名無しさん :03/06/22 14:50
>>399 Mac版と同じサーバーだね。
新G5Macの祭りでサーバー落ちたらしい
なんでも最速PCより速いMacintosh発表とか
401 :
デフォルトの名無しさん :03/06/22 15:14
javaでヘッダーのuser_agent を指定したHttpリクエストを送るクライアントプログラム作りたいんですけど、 socketクラスとHttpURLConnectionクラスどちらを使えばいいですか?
お好きなほうで
403 :
デフォルトの名無しさん :03/06/22 15:29
明日sunのjava programmer認定試験を受けるため、しょうえい社の 参考書についてたiStudyで勉強中ですが。この問題と解説がわかり ません。だれかおしえてください。 【問題】 次のうち、Javaのクラス宣言として正しくないものはどれですか (当てはまるものをすべて選んでください)。 【選択肢】 a. class FastClass extends Thread b. public synchronized class FastClass extends Thread c. public abstract class FastClass d. private protected class FastClass 【正解の確認】 whileステートメント、do-whileステートメントとも、条件判断の結果は booleanにならなければなりません。 「public synchronized class FastClass extends Thread」は変数tが boolean型ではないのでコンパイルできません。 「private protected class FastClass」もコンパイルできません。 変数xの宣言は、条件判断を行う直前までに行わなければなりません。 たとえば、次のようにします。 int x; while(x > 0) { x = 1; x--; }
>>403 解説が意味不明なだけで答えはわかるんでしょ?
synchronizedなclassってどんなん?
>>403 誤植だろ。時間があったら翔泳社にメールで教えてあげるといいよ。
>>407 複数のインスタンスからのメソッド呼び出しとか変数書き換えがなぜか排他的に行われるのだろう。
410 :
デフォルトの名無しさん :03/06/22 15:52
>>409 いや、それを言うなら
そのクラスのインスタンス参照がどこかにある限り
そのクラスは他から使えないとか・・・
411 :
デフォルトの名無しさん :03/06/22 15:53
403はいまだによくわかりませんが。 これもわかりません。 【問題】 次のプログラムを実行したときargs1とargs2の値はどうなりますか? 1. String args1 = "String"; 2. String args2 = "copy"; 3. System.arraycopy(args1, 0, args2, 4, 6); 【選択肢】 a. args1:Stringcopy args2:copy a. args1:String args2:copyString b. args1:copy String args2:copy c. args1:String args2:Stringcopy d. args1: args2:
堂々と著作権違法を犯す阿呆がいるスレはここですか?
413 :
デフォルトの名無しさん :03/06/22 15:55
え、誤植ですか。。。5分くらい悩んだのに
415 :
デフォルトの名無しさん :03/06/22 15:56
>>413 どう考えても、題意と答えがバラバラじゃんかよ
そのぐらい分かれよ
>>411 System.arraycopy に String 突っ込んだら
ArrayStoreException 食らうはずなんだけど…
>>412 まあ、これなら議論のための引用の範囲かと。
解 args1:String args2:copy オマケ:ArrayStoreException
>> 408 謝礼くれるならメールするんだけど。 こういうのってもらえるのか?
糞本掴まされた愚痴はよそでやれ
ウィンドウの右上の×ボタンを押した際、終了確認を行いたいです。 WindowsListenerのwindowClosing(WindowEvent evt)で下記のようにしましたが、 NOを選択するとプロセスは終了しないでウィンドウは消えないです。 //ソース int nRetValue = new JOptionPane().showConfirmDialog(null, "終了しちゃうよ?", "終了確認", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if(nRetValue==JOptionPane.OK_OPTION){ frame.this.setVisible(false); frame.this.dispose(); System.exit(0); } else{ //なにすればいいんだろう・・・ } elseのところで、show()やSetVisible(true)をやったのですが、だめでした。 どのようにすればいいでしょうか?
>NOを選択するとプロセスは終了しないでウィンドウは消えないです。 「ConfirmDialogでNOを選択すると、プロセスは終了せず、ウィンドウは消えます。」 の間違いです。よろしくおねがいします。
>>424 JFrame#setDefaultCloseOperation(int)
>>425 なるほど、
setDefaultCloseOperationはWindowListenerを作らなくても終了できるようにするだけでなく、
終了させない効果もあったんですね。素早い返信どうもありがとうございました。
>320 知らんかった、恥っ でも非Javaではそんなに遅く感じないな
誤爆スマン
スレ違いの上に遅レスなのに敢えて書かせてもらうが 翔泳社のSJC-Pの本は糞。誤植が多い上に記述不足。マジで最悪。 ま、こんな本買っても受かる奴は受かるがな。
430 :
デフォルトの名無しさん :03/06/22 23:54
JLSのほかに何が必要?<本
>>429 まじで同意
スレ違いの上に遅レスなのに敢えて書きたい気持ちも分かる。
最初に買ったSJC-P本がそれだったんだけど、金捨てたようなもんだった。
スミマセン教えて下さい。 数値を0001と出力させたいのですが、1しか出力できません。 書式があるのでしょうか
>>432 java.text.DecimalFormat
かな?
))433 ありがとうございます。しらべます。
JAVAMAILでBCやBCCは使えるのですか? もしできるのならやり方を教えていただけるとうれしいです。
>>436 message.addRecipient(Message.RecipientType.TO, toAddress);
message.addRecipient(Message.RecipientType.CC, ccAddress);
message.addRecipient(Message.RecipientType.BCC, bccAddress);
好きなように追加すれ。
438 :
デフォルトの名無しさん :03/06/23 17:03
>>429 そうなんですか。早速買いなおさなければ・・・。
ところで、質問があります。
最近いくつかSwingアプリをつくって何人かに見てもらったんですが、
setLayout(null)はあんまり勧めないって言われました。
サイズ変更が難しいし、他に問題点あるといわれました。
(サイズ変更が難しいこと以外は正直よく分からないですが。)
最近は90%くらいの確率でnullレイアウトを使ってるんですが。(まずいのかな?)
可能な限りレイアウトマネージャを使った方がいいんですか?
正直困ってます。
439 :
デフォルトの名無しさん :03/06/23 18:52
>>438 人に聞かないと何も出来ないの?
人に言われたことしか出来ないの?
440 :
デフォルトの名無しさん :03/06/23 18:55
perlのjoinのような連結メソッドってありますか? String[] を「,」で結合したいのですが
>>440 作れば?
俺の会社ではListにjoinメソッド追加したようなクラス作って使ってるよ。
>>440 標準 API では提供されて無いので自作してくらさい。
私は最近JAVAプログラミングの勉強をはじめたのですが JAVAについていろいろ調べているとJAVAにも JAVAアプレット、JAVAアプリケーション、JAVAサーブレット、iアプリ用のJAVA などなどいろいろあるようなことを知りました。 いったい何から勉強したらいいのでしょうか?サーブレットが人気があるとか なんとか…。それから勉強したほうがいいのかな。 ちなみに私はプログラム初心者です。
>>444 プログラムの勉強を止めることをオススメする。
>>444 アプリケーションからやれい。
アプレットも iアプリもそのあと。
サーブレットはずっとあと。ただし目標にはすえてよい。
プログラムの初心者ならアルゴリズムをまず先に。
できたヽ(´ー`)ノ public class JoinString { private static StringBuffer sb; public static String joinString(String[] sa, String sj){ sb = new StringBuffer(); for(int i = 0; i < sa.length; i++){ sb.append(sa[i] + (i == (sa.length - 1) ? "":sj)); } return sb.toString(); } }
>>446 アドバイスありがとうございます。
がんばって勉強してみます。
とりあえず目標は脱初心者かな。
showConfirmDialogのデフォルトボタンを変更するにはどうすればいいでしょうか? もう引数が足りなくて・・・
451 :
デフォルトの名無しさん :03/06/23 21:55
JavaのSQLで,COUNT * や MAX(列名) をやっているのですが, 実行した後に生成される列名が分かりません. String sql; Statement stmt; ResultSet rs; String sql = "SELECT COUNT * FROM 表名"; rs = stmt.executeQuery(sql); rs.next(); rs.getInt(/*生成される列名がわかりません*/); よろしくおねがいします.
>>451 列番でとれ。< Java 側からのアプローチ
でなきゃ as で自分で列名つけろ。<SQL 側からのアプローチ
>>449 まず JOptionPane の API をよく読んで、
それで分からなかったらやりたいことの例をきちんとあげろ。
454 :
デフォルトの名無しさん :03/06/23 22:09
import java.awt.*; import java.awt.event.*; import java.util.*; public class Clock extends Frame { public Clock() { setSize(400,300); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); } public void paint(Graphics g) { int hour,minute,second,milli; GregorianCalendar t=new GregorianCalendar(); hour = t.get(Calendar.HOUR); minute = t.get(Calendar.MINUTE); second = t.get(Calendar.SECOND); milli = t.get(Calendar.MILLISECOND); g.drawString(""+hour+"時"+minute+"分"+second+"秒"+milli,20,40); } public static void main(String[] args) { Frame w=new Clock(); w.show(); } } こいつをリアルタイムで動くようにするにはどうしたらいいですか?
show(); のあとにこんなん足す。 new Thread(new Runnable() { public void run() { while (true) { try { Thread.sleep(1000); } catch (InterruptedException ex) {} repaint(); } } |).start(); があんまり好もしくないなぁ。 やることは他にもある。
まちがった。すまん。 コンストラクタの最後だな。 あと最後の行は }).start();
457 :
デフォルトの名無しさん :03/06/23 22:38
>>439 あんたのような批判にすらならないけなししかできない馬鹿たちに
聞いた僕が馬鹿だったよ。
いいよGridBagLayout使えるようにいくつかプログラム作って
その後はなれたnullで作ることにする。
もう二度とここでは聞かない。
>>457 一緒にしないでくれ。放置した俺が悪かったから。
俺が答えてやるよ
好きにやれ
良い判断だ。 二度とくるなよ。
>>452 "SELECT COUNT (*) FROM 表名";
rs.getInt(0);
だと、「記述子のインデックスが無効です」と出て、
"SELECT COUNT (*) AS '新列名' FROM 表名";
rs.getInt("新列名");
だと、「Column Not Found」と出ます。
何が悪いでしょうか?
461 :
デフォルトの名無しさん :03/06/23 23:08
上級者向けの質問だと思うんですが。 ArrayList や Vector に格納されたオブジェクトに順にアクセスしていく 方法で一番速いのは。 Object[] objs = list.toArray(); for(int i=0; i<objs.length; i++){ Object o = objs[i]; } これでOK?
>>461 >上級者向けの質問だと思うんですが。
初心者レベルの質問だよ…
質問する前に 10000 * 10000 回ループとかで自分で計測しろ。
複数のJVMで計測すれば傾向はわかるだろ。
463 :
デフォルトの名無しさん :03/06/23 23:17
>>454 ,455
GraphicsはちらつくのでImageをバッファーで使用したほうがいいかと。
465 :
デフォルトの名無しさん :03/06/23 23:27
>>462 HashMapはマップのサイズと無関係に取得時間は一定である。
らしいのでTreeMapでキーを管理する。TreeMapはキーを常に並べ替えた順に
保つらしい。Mapクラスを実装する適役としてTreeMapを使う。
とある。俺にはわからん!!!
上級者には簡単だろ!
>>465 計算量は同じだけれど、問題は係数な訳だ。
467 :
デフォルトの名無しさん :03/06/23 23:45
>>466 おなじか?
ArrayList や Vector はポインタを順にたどっていくけど
TreeMapはlog(n)の時間コストを保証するをAPIにあいてあるぞ!!!
468 :
デフォルトの名無しさん :03/06/23 23:48
JDK1.5必須 for(int i = 0; i < 10000; ++ i) { list.add(i); } for(int x = 0; x < 10000; ++ x) { for(int y = 0; y < 10000; ++ y) { Object[] objs = list.toArray(); System.out.println(objs[y]); } }
>>461 > Object[] objs = list.toArray();
そもそも、ここで配列コピーが発生しているわけだが。
>>466 計算量は同じじゃないでしょ。
HashMapの計算量は、ハッシュ値が適当にばらけていると仮定すればO(1)、
対するTreeMapはO(log n)だ。
470 :
デフォルトの名無しさん :03/06/24 00:03
>>457 かわいそうに…ヨチヨチ
知っている話だと、Look and Feelを変更すると
コンポーネントのサイズががらりと変わって
レイアウトがぐちゃぐちゃになる、っていうのを聞いたことがある。
javax.swing.UIManager.setLookAndFeel(String)を実行すると
わかるんじゃないかな。引数は、Windowsなら
"com.sun.java.swing.plaf.windows.WindowsLookAndFeel"
を指定してみて。
あと、GridBagLayoutよりはBoxLayoutでTcl/tkっぽく
並べた方がやりやすいと思うよ。
471 :
デフォルトの名無しさん :03/06/24 01:53
実際に仕事してるプログラマーって仕事中、本やウェブ参考にしながらコーディングしてるの? 詰まったりしたら1日数行しか進まないこともあるの?
ぶっちゃけ、あるよ。
473 :
デフォルトの名無しさん :03/06/24 02:31
キャストに関して質問があります。 objというオブジェクトがあるとき、そのクラス名が『obj.getClass().getName()』で String型として呼び出せるのですが、このオブジェクトを『obj.getClass().getName()』型に キャストするどうすればよいのでしょうか? また、そのようなメソッドが用意されているのでしょうか? (クラス名)objと手動でキャストするのではなくて、ということです。 どうか教えていただけないでしょうか、お願いします。
474 :
デフォルトの名無しさん :03/06/24 02:39
質問です。 jtext.getText().length()で文字列の長さを読み取ると、 全角文字も半角文字も長さが1になってしまいますが、 これを全角文字=2、半角文字=1と判定するにはどうしたらいいでしょうか。 UNICODE関連だということはわかるのですが・・・
>>473 > このオブジェクトを『obj.getClass().getName()』型に
> キャストするどうすればよいのでしょうか?
聞いたこと無い型だなぁ…
>475 日本語が不自然ですいませんでした。 objオブジェクトがあったときに、obj.getClass().getName()でオブジェクトの クラス名が分かるのですが(String型として)、そのクラスにキャストするにはどう すればよろしいですか? という意味でした。
477 :
デフォルトの名無しさん :03/06/24 03:34
>>476 そのクラスって最初からわかってれば
(クラス名)obj
でOKだけど
質問の意味を考えると
何がはいってるかわからないのか?
instanceof使うとか?
479 :
デフォルトの名無しさん :03/06/24 06:18
よくWindowsの設定の画面では、 OKボタンだけ太枠になっていて、どこでもエンターキーを押せばOKを押したことになりますが、 Javaではそれをどうやって実現するのでしょうか? JButtonのメソッドで、名前がsetで始まるもので、引数がbooleanのものはすべて試したのですがだめでした。 もしかして、あらゆるところに(JTextBoxとか)キーボードのリスナーを付けなければいけないのでしょうか?
>HashMapはマップのサイズと無関係に取得時間は一定である。 >TreeMapはlog(n)の時間コストを保証するをAPIにあいてあるぞ!!! それ、n(アイテム数)が増加すると比例して遅くなるってことじゃん。一定ではなし。 あなたの開いたAPIヘルプ、かっこいいよ。
482 :
デフォルトの名無しさん :03/06/24 07:39
requestFocus public void requestFocus() クラス Component の記述: このコンポーネントに入力フォーカス取得を要求し、 またこのコンポーネントが属する階層の最上位のコンポーネントを フォーカス設定ウィンドウとします。 許可対象の要求に対してこのコンポーネントが表示可能であり、 可視であり、フォーカス設定可能でなければなりません。 この要求を実行するために必要なすべての処理が行われますが、 場合によっては不可能なこともあります。 開発者側では、このコンポーネントが FOCUS_GAINED イベントを受け取るまで フォーカス所有者ではないことに注意する必要があります。 このコンポーネントのトップレベルウィンドウにフォーカスが設定できないために 要求が処理されなかった場合、 この要求は記録され、後でユーザがウィンドウにフォーカスを設定する時に許可されます。 このメソッドはフォーカス所有者にコンポーネントを設定するためには使用できません。 この目的では KeyboardFocusManager.clearGlobalFocusOwner()を使用します。 このメソッドのフォーカス動作はプラットフォームによって異なるため、開発者側ではできるだけ requestFocusInWindow を使用することを強くお勧めします。 オーバーライド: クラス Component 内の requestFocus 関連項目: Component.requestFocusInWindow(), FocusEvent, Component.addFocusListener(java.awt.event.FocusListener), Component.isFocusable(), Component.isDisplayable(), KeyboardFocusManager.clearGlobalFocusOwner()
483 :
デフォルトの名無しさん :03/06/24 07:54
>>469 やはり、toArray してから回すのが最速ですた。(メソッド呼び出しのコストの方が高いらしい)
>>476 そうじゃなくて君のやりたいことが不自然なんだよ。
キャストしてそのあとどうするんだ?
考え付くこととしては・・・こんなようなことしたいのか?
public void func(Object obj) {
func2((調べたクラスでキャスト)obj);
}
public void func2(String str) { ... }
public void func2(Double double) { ... }
public void func2(Point pnt) { ... }
public void func2(Rectangle rect) { ... }
無理だ。
485 :
デフォルトの名無しさん :03/06/24 11:28
>>479 JRootPane#setDefaultButton()
>>474 過去スレで
String#getBytes()でbyte配列を取ってきてその長さを得る、
という方法が紹介されていたような。
これだと何かまずい点があったと思うが忘れた。
完璧を目指すならjava.lang.Character.UnicodeBlock#of()でも使って
地道に調べるのかねぇ。
>>483 List#get(int)は試した?
ループ内でキャストが必要になるけど、これが最速だったはず。
toArrayは
>>469 の意見同様、配列コピーしなくちゃならないので、
それなりに負荷が高いはず。
>>486 どんな時にまずいんだろ?
結合文字とかその辺?
EUC-JPだと3バイトの文字もあるとか?
JISだとESCが入ったり、エンコーディング次第でバイト列違ってくるから?
……いろいろありそうだな。
>>485 できました。助かりました。ありがとうございました。
490 :
デフォルトの名無しさん :03/06/24 14:00
Javaで日本語って相当不便じゃありません? IOとかいろんなところで文字化けだらけ。
>>490 他の言語使ってもエンコーディングとか文字集合とかの勉強して無いと化けるけどね。
>>487 プログラム内容によって使い分けるべきところ。
基本的に配列アクセスの方が速いはず。
>>490 そんなことはないと思うけど。
箱庭環境でしか開発したことないのなら、そう思うかも。
>>492 toArray もかなりのロス食らうけどね。
ハッキリ言って、そんなに速度が気になるなら
ArrayList を使うのを止めるべきかと。
494 :
デフォルトの名無しさん :03/06/24 17:19
Shift-JIS ⇔ UNICODE のテキスト変換どうすればいいですか? 基本的にはInputStreamReaderとOutputStreamReaderでやるの?
>>494 きみはそれでずばりと答えてもらえるとでも思ってるのかね。
どこに ShiftJIS の何 (ネットワークリソース? ファイル? プログラム内で生成した byte列?)があって、
unicode の何をどこにどうしたいのだ。
496 :
デフォルトの名無しさん :03/06/24 17:51
UNICODEってワードサイズなのにbyte列とか出てきて・・・、 もう訳わかりません。 基本的にはファイル→FileReader ネットワーク→Socket→InputStream→InputStreamReader で同じことなんじゃ? unicodeテキストファイルにできればいいと思います。
>>496 さらに訳わからなくしてあげよう。
サロゲートの考慮もしておいた方がいいと思うぞ。
JSP のサーブレットに変換されたソースを見るにはどうすれば良かったですか? Tomcat です。
>>498 %TOMCAT_HOME%work
の下にあると思うが。
>>496 こんぴうたはみんな、 byte が一般的な最小単位だぞ。
UNICODE も ワードサイズ(2bytes のことか?) とは限らないし
http://homepage1.nifty.com/nomenclator/unicode/ucs_utf.htm それはそれとして、
読み込みは Win ならそれでいいかもしれんが、
マルチプラットフォームなプログラミングなら SJIS であると明示的に指定するべき。
しかし FileReader にそんなコンストラクタは無い。API 読んで考えること。
書き込むときには Writer 。これも考え方は同じ。ただし SJIS でなくて Unicode にすること。
そっからあとはケースバイケース。上にあげたリンクと
>>497 の点が要勉強だな
で、SJISであれれ?とかいうことになって、Windows-31Jに変更したり、 変換ユーティリティクラスを作るわけだ。 たしかに、最初はこの辺でハマってわけわかんねぇ、とかなるんだが、 一度分かってしまえば別にたいしたことはない。 #それにしても「Windows-31J」が正式名称ってのはなぁ(;´Д`)
>>501 何か数年前に売ってたOSみたいだな・・・。
503 :
デフォルトの名無しさん :03/06/24 21:07
認定試験で 以下のソースコードを見て下さい Point point = new Point(2,4); Rectangle rectangle = new Rectangle(point,20,20); point = null; PointオブジェクトとRectangleオブジェクトが1つづつ生成さえています。このコードの実行後、 ガベージコレクションの対象となるオブジェクトを選択してください。 1、PointオブジェクトとRectangleオブジェクトの両方 2、Pointオブジェクトのみ 3、Rectangleオブジェクトのみ 4、どちらでもない で答えは4なんですが、、対象となるで実行するとはいっていません。 私は2だと思うのですが誰かわかりますか?
505 :
デフォルトの名無しさん :03/06/24 21:10
普通に考えて4だけど
Rectangle のコンストラクタに Point,int,int が突っ込めないのでコンパイルエラーって事じゃなくて?
507 :
デフォルトの名無しさん :03/06/24 21:33
showConfirmDialog()での第二ボタンにフォーカスを当てたいのですがどうやればいいでしょうか。 JOptoinPane型のオブジェクトを宣言していろいろじってみたのですが、 「はい」「いいえ」のボタンの取得方法すらわかりません。 何か簡単な設定方法はあるのでしょうか?
なんでこんないい加減な問題ばかりなのかね。
>>507 show 〜使わずインスタンスをいちいち造るなら、
setOptions(Object[] newOptions) があるようだがこれでどうか。
>>473 実行時の型でキャストする方法はない。
あらかじめありえる型を列挙して instanceof で場合わけして
それぞれの型にキャストするしかない。
いつから、Java初心者相手じゃなくてネイティブ馬鹿相手のスレになったんですか?
>>483 > やはり、toArray してから回すのが最速ですた。
ちゃんとClient VMとServer VMの両方で試してみた?
気になったんで、俺も自分で試してみた。
テストコードは以下の通り。
---
import java.util.*;
public class AAA {
public int testloop1(List list) {
int sum = 0;
for (int i = 0, n = list.size(); i < n; i++)
sum += ((Integer)list.get(i)).intValue();
return sum;
}
public int testloop2(List list) {
int sum = 0;
for (Iterator i = list.iterator(); i.hasNext(); )
sum += ((Integer)i.next()).intValue();
return sum;
}
public int testloop3(List list) {
int sum = 0;
Object[] array = list.toArray();
for (int i = 0, n = array.length; i < n; i++)
sum += ((Integer)array[i]).intValue();
return sum;
}
public int testloop4(List list) { int sum = 0; Integer[] array = (Integer[])list.toArray(new Integer[list.size()]); for (int i = 0, n = array.length; i < n; i++) sum += array[i].intValue(); return sum; } public static void main(String[] args) throws Exception { List list = new ArrayList(Collections.nCopies(1000, new Integer(5))); AAA a = new AAA(); for (int i = 0; i < 20; i++) { long start = System.currentTimeMillis(); for (int j = 0; j < 100000; j++) a.testloop1(list); System.out.println((System.currentTimeMillis() - start) / 1000.0); } } } --- で、Sun JDK1.4.1上での結果は ・HotSpot Client VMでの平均実行時間 testloop1 10.1秒 testloop2 22.2秒 testloop3 5.3秒 testloop4 6.0秒 ・HotSpot Server VMでの実行時間 testloop1 1.6秒 testloop2 5.4秒 testloop3 2.7秒 testloop4 3.9秒 ですた。Server VM マンセー!! # しかし、testloop4 より testloop3 の方が速いってのは、かなり意外だった。
515 :
デフォルトの名無しさん :03/06/25 00:25
っていうか、Javaの入門書って馬鹿なの多いよな あんなのでよく本出せると思うよな
516 :
デフォルトの名無しさん :03/06/25 01:19
>>515 初心者にウソ教えるのはよくないよね。
分かりやすいように一部を誤魔化すのは、場合によっては
かまわないと思うけど。
まぁCのも多いけどな
VB初心者サイトなんぞ目も当てられんけどな。
519 :
デフォルトの名無しさん :03/06/25 10:51
っていうかさー っていうかさー っていうかさー 俺の部屋の本棚は よく見ると 「技術評論社」 の書籍や雑誌ばかりなんですが あと、翔泳社数冊です オライリーは「Javaセキュリティー」しかもってません。 大丈夫でしょうか?
520 :
デフォルトの名無しさん :03/06/25 11:00
2つ(以上)の jpeg 画像ファイルを入力とし、 横に連結した1つの jpeg 画像ファイルを出力するプログラムを書け。 また、指定した位置に連結できるようにもせよ。 なお、perl で書いてもよい。
板間違えました。
質問があります。 class Foo { public static void main(String[] args) { new Bar().doSomething(); } } class Bar { static { System.loadLibrary("hoge"); // hoge.dll } public native void doSomething(); } とかある時に、このクラスBarが使用するDLLがシステムプロパティ"java.library.path"上に見つからないとします。 この時、以下のようなコードを追加しても、VMに探してもらえません。何故でしょうか。 class Foo { final static String JAVA_LIB_PATH = "java.library.path"; final static String SEP = System.getProperty("path.separator"); static { // DLLのあるパスを追加 System.setProperty( JAVA_LIB_PATH, System.getProperty(JAVA_LIB_PATH) + SEP + "C:\\pathA\\pathB" ); } 〜 以下略 〜 }
JPanel で自分自身のサイズを取得するのってどうやるんでしょう? this.getSize() とやってもサイズが出てこないです(;´Д⊂
>523 そのthisは本当にJPanelなのか? そのJPanelのPeerは作られてるか? pack()とかsetVisible(true)とかしてからgetSize()してみ。
>>522 System.setProperty() ってちゃんとしたポリシー無いみたいだから
値設定しても反映されるかは key によるみたい。
LOAD_LIBRARY_PATH とかだと JVM 起動時にキャッシュされてる可能性もあるし。
>>522 詳しくないが、経験から
>>525 に激しく同調。
JNI 使うのはいいとしても、中にパス書くのはよろしくない設計だよ。
何らかの方法でできたとしても、"もうけもん" じゃないだろうか?
>>525-526 レスありがとうございます。
そうですよね、普通に考えればやっぱり起動時にキャッシュしますよね。ふぅ。
...ちなみになんであんな事(起動後に動的にパス追加)しようと思ったかと言えば、
要はJavaで簡単なツールを作成していまして...その際にユーザの指定(UI経由)によって、
動的にいくつかのコンポーネント(尚、この言い回しはすごくアバウトにしています)を追加できる
ようにしている為です。
... やっぱ別の手段でいくか。ありがとうございました。
\ 毛 /
腿 \_ | _/
彡彡彡
ミミミミ クリトリス
ミミミミ / ̄ ̄ ̄ ̄
ノ σ ヽ 尿道
/ / ゚ヽ ̄ ̄ ̄ ̄
大陰唇 / //\\ \
 ̄ ̄ ̄ ̄ ( ( 膣 ) ←<<<<<<<<<<挿入
\ \\// /
` \/ '
\ *──アナル
\_____ \_____/
/ ⌒\
__ / _| | |
ヽヽ / / \ | | ,,,,,,,iiiiillllll!!!!!!!lllllliiiii,,,,,,,
\\| |____| .| | .,llll゙゙゙゙゙ ゙゙゙゙゙lllll,
\/ \ | | .|!!!!,,,,,,,, ,,,,,,,,,!!!!|
| ヽ_「\ | |、 | ゙゙゙゙!!!!llllliiiiiiiiiilllll!!!!゙゙゙゙ .|
| \ \――、. | | ヽ .| .゙゙゙゙゙゙゙゙゙゙ |
| / \ "-、, `| | ヽ | | ヅガッ!!!
_/ / "-, "' (_ ヽ ヽ .| |
/ __ノ "'m__`\ヽ_,,,, ヽ | |
`ー― ̄ ヽ、__`/ー_,,,, ゙゙゙゙!!!!!!!lllllllliii| |
\゙゙゙゙゙゙゙!!!!!lllllllliiiii| |
\ ヽ | |
ヽ \ | | ←
>>491
>>527 java.net.URLClassLoader
クラス変数を継承したクラスで別々の値を持つことは不可能なのでしょうか? class A {static int a;} class B extends A {static int a = 10;} class C extends A {static int a = 20;} みたいなことをやりたいのです。 もちろんclassAのint aを消せば可能なのですが、 classBのオブジェクトかclassCのオブジェクトかを意識せずに 変数aにアクセスしたいのです。
クラス内からアクセスするならそのクラスの a が使われるし クラス外からアクセスするなら結局 A.a とか B.a とか C.a としないといかんだろ? 何がやりたいのかよくわからんぞ。
>>530 コンパイルは通るでしょ?覆い隠しが発生するけど。
すなわち A.a == 0, B.a == 10, C.a == 20,
やりたいことって
interface A{ int getA(); }
class B implements A{ public int getA(){ return 10; } }
class C implements A{ public int getA(){ return 20; } }
みたいな事じゃなくて?
>>531 すみません、書き方がおかしかったです。
class Bのオブジェクト全体でひとつの変数、
class Cのオブジェクト全体でひとつの変数を持たせて
それをclass Aのメソッドで扱いたいのです。
同じメソッドなのですが、class Bのオブジェクトと
class Cのオブジェクトでは変数aの内容が違うという…
どうでしょうか
swingとawtの違いってなんですか?
awt: GUI 部品は OS のモノを利用 swing : GUI 部品は Java 製
536 :
デフォルトの名無しさん :03/06/26 01:32
>>533 abstract class A { int getA();}
class B {private static int a; int getA(){ return a; }}
class C {private static int a; int getA(){ return a; }}
100%設計が間違ってるので考え直すことをお勧めする。
>>533 アブストラクトな class A で定義したメソッドに、継承クラスごとの違いを反映させたいんだろ?
「継承」を用いるからには、それはコアとなるメソッドのオーバーライドで実現すべきでなかろうか。
むしろ public な abstract メソッドを造って、B, C ではその内部で A の protected メソッドを呼ぶことで代替できる
abstract class A { public abstract void func(); protected void func(int a); }
class B { private static int a; public void func() { func(a); } }
class C { private static int a; public void func() { func(a); } }
こう置換したほうがましだが、もっというと A の中に処理は持たず、
A〜C の外にあった方がずっとよいんではなかろうか。それなら
>>537 でよい。
>>537 ありがとうございます。これでできそうです。
>100%設計が間違ってるので考え直すことをお勧めする。
そうなんですか…実はシューティングゲームを作ろうと思っていて
キャラクタクラスをスーパークラス
自機、敵、弾などをサブクラスにしています。
それぞれのキャラのImageオブジェクトをstatic変数に保持して
プログラム起動時に一度だけ画像を読み込みます。
そしてスーパークラスの描画メソッドでキャラクタを描画するのですが、
Imageオブジェクト変数をサブクラス毎に持たせられれば
自動的に適切なキャラクタを描画してくれて便利かなーと思った次第なのです。
もっと上手い方法があったらぜひ教えていただけませんか。
540 :
デフォルトの名無しさん :03/06/26 02:03
質問なんですが おねがいします java.lang.Integerの値を 増やしたいときに Integer a=new Integer(3); int b=((Integer)a.intValue())+2; a=new Integer(b); というように、キャストしないといけないと思うんですが Integer型のまま、値を増やすことは出来ますでしょうか? たとえば、うえの「a」に2を足すとしたら a.plus(2); とか、できないもんですかね? 自分でクラス書くしかないですか?
最悪だ
>>540 1. そこのキャストはしちゃいかん。
質問スレで、やってみずに「思うんですが」は無しだ。まずやってみれ。
2. クラス書いてもいいが、Integer は final なので、継承できない。
万一 Integer の必要な API があってそれに使いたいんだったら役に立たん。
お手軽に int[1] でも使えば?
>>540 できねーです。Integerは不変オブジェクトです。 Integer a = new Integer(3); a = a.add(2); ってとこか。
※これだって new Integer(array[0]) せなならんが。
>>538 ありがとうございます。イケそうです。
クラスの外に出すのはなんかちょっと気持ち悪くて…
>>545 わかるけどな。
ちなみに、ちょっと気合入れたシューティングなら、
敵キャラはいろんな絵や大きさ、自弾もダライアス風ならいろんなのがあるから、
クラス毎に static に持つのは変でねーの。それとも i アプリ?
>>546 敵クラスを作って、さらにそれを継承して敵の種類分サブクラスを
作ろうかなーと思ってました。
移動メソッドをオーバーライドしてそれぞれの敵で独自の動きを出したりとか。
くだらない質問なのですが なぜプロバイダーは、サーブレットを 使えるようにしてくれないのですか? 対応させるのは技術的に難しいのですか?
>>547 やりたいことの方向性はいいが static の使い方がどうかと思う
>>548 使えるようなところもあるぞ。
負荷があるから&使う奴など CGI に比べりゃごく僅かだから対応しないだけ。
間違っても素人向けじゃないわな
553 :
デフォルトの名無しさん :03/06/26 03:28
ハイパーリンクの機能を使えるjavaのapiクラスって JEditorPaneとその子クラスであるJTextPaneだけですか?
>548 自分でtomcatを使用した経験があるなら、難しいことがわかるだろ。 webコンテナを複数たてるわけにはいかないから、基本的には1つたてるにしても、 各ユーザーごとにwarを用意するのか? どうやって、コンテキストルートを各ユーザーごとに用意すればよいのか、 まずは君がアイデアをだしなさい。
555 :
デフォルトの名無しさん :03/06/26 04:55
>>554 >webコンテナを複数たてるわけにはいかないから
実際の業務で使ってるところは
Apachの裏でTomcatが2〜3立ち上がってるのあるよな
どうやってるのかしらんけど
誰か答えてください。
>>539 俺なら画像管理クラス作ってそこの該当画像へのポインタなりインデックスなりを持たせる。
いいからてめえら早く教えろよ!!!
複数の JToolBar を左右に並べることは無理ですか? MS Office のように。 FlowLayout に add していくと可能なんですが、 これだとそのコンテナ(たとえば BordeerLayout の NORTH)にしか配置できないので、 左右や下に移動できないのです。欲張りすぎ?
>>493 そんなこと気になるようなら元々Javaを選んでないぞ。
toArray がお得かなと思った。スレッドセーフの必要性が
後から出てくること多くて、toArray 使っておけば、後から
スレッドセーフじゃないとアカンなってことになっても修正
せずに済む。
>>560 toArray() やってる間に add やら remove 呼ばれたらダメそうだけど。
俺、たった今気づいた。 2ch でまともな答えを期待する方が間違ってる。 なぜならまともなプログラマならこんなとこきてる暇ないから。 俺?まともじゃないよ
563 :
デフォルトの名無しさん :03/06/26 12:33
BufferStrategyクラスを使っていて描画バッファが消失した(contentsLost()の返り値がtrue)のとき、 描画バッファを明示的に回復させる方法はないものでしょうか?
>>555 ポート別に複数立てて、それぞれのポートにコネクトしてるだけじゃないの?
>>529 URLClassLoader って findLibrary 無いみたいだけど。
>>564 VolatileImageの中身がVRAM上に確保されてるかどうかは
ユーザーからはわからないんじゃなかったっけ。
当然その辺の指示も出来ないかと。
中身の画像のことだったら自分で
createGraphics()して書き直すしか。
的外れなこと言ってたらごめん。
568 :
デフォルトの名無しさん :03/06/26 20:14
"2003/01/20"をDateに変換するにはどうすればいいですか? DateFormat.getDateInstance().parse("2003/01/20"); とすると java.text.ParseException: invalid Date syntax になってしまいます。
>567 フルスクリーンとウインドウモードを任意に切り替えられるプログラムを作ってみたのですが、 ウインドウモードに切り替えたときに描画バッファが消失して そのままずっとcontentsLost()がtrueを返し続け…… という状態になったもので。 ウインドウのサイズを切り替えたりすると直るんですが、 ではプログラム的に確実に直すにはどうしたらいいものかと悩んだ次第で。
>>568 前々スレで既出
807 名前:デフォルトの名無しさん[sage] 投稿日:03/05/08 14:59
794です。
説明不足ですみません。
String sDate = "2004/12/21 10:56:30";
DateFormat sdtFormat = DateFormat.getDateInstance();
java.util.Date sdate = dtFormat.parse(stDate);
SimpleDateFormat formatter = new SimpleDateFormat ("MMM dd yyyy hh:mm", Locale.US);
sDate = formatter.format(sdate);
System.out.println(stDate);
こういう感じでStringでとったものをdate型に変換して実行してみたのですが、
これでは時間が正常に表示されないので困っています。
808 名前:797[sage] 投稿日:03/05/08 15:15
>>806 >>794 が月を出力したい形式が
MMMでフォーマットしたものをtoUpperCase()で大文字にしたものでよければ
それでいけるなあと思ってたらそれでOKっぽいですね。
>>794 DateFormat sdtFormat = DateFormat.getDateInstance();
↓
DateFormat sdtFormat = new SimpleDateFormat( "yyyy/MM/dd hh:mm:ss" );
これでいけます。
>>569 contentsLost()がtrueになった後で
if(volatileImage.validate(graphicsConfiguration) == VolatileImage.IMAGE_INCOMPATIBLE) {
/*volatileImage作り直し*/
}
みたいな処理は、やってる?
BufferStrategyのことはぜんぜん知らないんで
なんか間違ってたらごめんちょ。
このスレ見て思った事。 16 進 数 が 全 く 出 て こ な い。 APIが供給する機能以外は何もできない言語だけの事はありますね。(w
573 :
デフォルトの名無しさん :03/06/26 21:40
>>572 その通り
しかし、生産性はアセンブラより断然大きいのだ!
574 :
デフォルトの名無しさん :03/06/26 21:56
>>572 イミディエイトで 16進なんて何に使うんだ?
文字コード変換ぐらいのもんだろう
16進数て。何の関係があるんだ? ハード叩きたいのかい?よちよち
>>577 煽るのは勝手だが使えないと一応は恥ずかしいぞ。
>>578 と
>>572 くらいだろ。使えないのは。
最近覚えたばっかりで、嬉しくて仕方ないとか?
581 :
デフォルトの名無しさん :03/06/26 22:54
おいおい、俺なんか16進数バリバリ使ってるよ 例↓ bgcolor="#ff5656" 見ただけでどんな色になるかは 16進を極めていない君たちにとっては難しいか?w
582 :
デフォルトの名無しさん :03/06/26 22:56
>>581 うすい(ややしろっぽい)赤だろ
必須技能だヴォケ
584 :
デフォルトの名無しさん :03/06/26 23:01
586 :
デフォルトの名無しさん :03/06/26 23:50
そうでなくて
>>581 はネタだろ
なぜ答えちゃうかな?
#ffd700 さて何色でしょう
572は一級の馬鹿または一級の釣師のいずれか
大漁だなw。
591 :
デフォルトの名無しさん :03/06/27 02:19
JTreeのノードをドラッグ&ドロップさせたいのですが JDK1.4で追加されたドラッグ&ドロップ機能を使って簡単にできないものか?と考えています。 > tree.setTransferHandler(new TransferHandler("transferTreePath")); > tree.setDragEnabled(true); こんな感じで設定するとドロップ時に > public void setTransferTreePath(Object t); > public Object getTransferTreePath(); が呼び出されるようになります。 これらは両方ともドロップ時に呼び出され、そのときの選択ノード(tree.getSelectionPath())はドロップ位置にあります。 ドラッグ時の選択ノードはどのようにして知る事ができるのでしょうか? 1.getTransferTreePath()で、ドラッグ時のノードを返す方法 2.getTransferTreePath()を、ドラッグ時に呼び出す方法 のどちらかが判れば解決すると思うのですが・・・ ご存知の方みえましたら教えてください。
592 :
デフォルトの名無しさん :03/06/27 03:02
ちんちん出すのはやめろ それよりも intの配列なんですが *pの場合と p[0]の場合、どっちがいんですかね? ArrayListでよく使うんですが (java.util.)ArrayList[] list=new ArrayList[length]; の場合、*listでやればかなりいいのですが 逆にlist[0]だと、データ入ってないときに 起こられるんですよね list[0]!=nullで確認しようとも その確認時点で起こられるのでどうしていいか困ってます でも、*は極端に遅くなるし・・
>>592 Java には *p (単項前置* 識別子) などという構文はありません。
別の言語の話題なら別の場所でやってくれ。
>>591 DragGestureEvent から getDragOrigin でドラッグ開始点を得てから
JTree の getPathForLocation とかで引っ張ってくれば良いのでは?
getTransferTreePath() とか言われても
そっちの自作したメソッドなんて全然知らんので。
メソッドの説明は殆どないし、ソースも出さないし。
595 :
デフォルトの名無しさん :03/06/27 07:57
0x0A 0x0D
596 :
デフォルトの名無しさん :03/06/27 08:00
>>592 お前も同じ悩みか・・・
Javaで
int hoge=~20;
とやったときに
System.out.println(hoge);
としたとき、何が表示されるか
知らない奴がこのスレに大勢いるってことだ
>>593 お前は何も知らない
他の言語だと?
マジボケじゃないよな野郎
まじで、知らないようだな
まずは上のやつやってみろ
何が表示される?
int f=200*(~1000); これはどうだ?
int p; int k; [*]p~k
int i=9; i+=i+=i;
おい、Delphスレに対抗して次スレからは キャラクターにDukeをつかおうぜ 人 O
601 :
Java初心者 :03/06/27 11:34
今Javaを勉強しているんですが、 indexOf(int ch)、lastIndexOf(int ch)の intの意味がわかりません。 どの本を呼んでもこう書いてあるのですが、 実際に使う時は文字"char"型、もしくは 文字列"String"型しか受け付けてくれません。 使い方はわかるんですが、 いまいち納得がいかないので、 もしうまく説明できる方がいたら教えてください。
単発スレの削除依頼は出したか?
603 :
デフォルトの名無しさん :03/06/27 11:54
>>596 で、*や~はどういう意味なのでしょうか
ググってもわかんないし。
教えてママン!
>>606 サンクス!
*は?演算子じゃないような?
記号のググーリは難しいのう
>>605 596はネタかアフォか勘違い。忘れていいよ。
609 :
デフォルトの名無しさん :03/06/27 18:10
今の環境ではみなさんの作った優秀なjavaプログラムが全く動きません。 javaのランタイムってどこでどれをダウンロードすればいいんですか? できれば直リンでお願いします。
610 :
デフォルトの名無しさん :03/06/27 18:14
>>609 こんなとこでサボってるやつの作ったプログラムなんてたいしたことないよ!
といいつつ俺もか。
612 :
デフォルトの名無しさん :03/06/27 19:23
>>611 ありがとうございます。
Download Java(TM) 2 Runtime Environment, Standard Edition 1.4.0_03が、
それっぽいのでこれをインストールしてみます
ArrayList<Integer> List = new ArrayList<Integer>(); list.add(0,42); int total=list.get(0); ↑ これこそ、待ち望んでいた機能です
>>613 50:50で答えを間違えた回答者ってこんな漢字なんだろうな。
616 :
デフォルトの名無しさん :03/06/27 22:23
すみません JAVAアプレット(スレッド使用)で簡単なゲームを作ったんですけど、JAVAがインストールされていない パソコンでは読み込めません ホームページにアップロードして、JAVAの開発環境のない人たちもJAVAができるよう にするにはどうすればいいんでしょうか。
618 :
デフォルトの名無しさん :03/06/27 23:27
Javaのバージョンってどんどんあがっていくけど JVMの実装って簡単なのでしょうか? 万が一新たなOSが普及し始めたとき、無償で提供してくれるようなところが なかったらどうするんでしょう。
Sunが必死こいて頑張るだろ
>>618 杞憂。
そもそも、新しく届いたパイをみすみす見過ごすほど
SunやIBMは阿呆ではない。
ま、マイナーな環境だと多少不便するようだが。
MacとかFreeBSDとか。
JVM自体はポータブルな実装もあるだろうから大丈夫だと思う むしろ周りのライブラリを用意するのが大変・・・
>>614 おお!いつの間にこんな仕様が!!!
全然知らなかった
623 :
デフォルトの名無しさん :03/06/28 00:08
複数のJAVAアプリケーションをHTTPサーブレットから 同時に実行するにはどうしたらよいでしょうか? 並列処理をしたいのですがわかりません。
>>622 いつの間っていうか、来年の夏ね。J2SE-1.5から。
>>623 サーブレットの実行環境ではすでに並行処理が行われているんだが。
>>623 JAVAアプリケーションって、Servletのことじゃなくて?
例えばデータベースとかか?
>>624 >>625 ありがとうございます。
JAVAアプリケーションとしてJAVA2D(印刷)を利用してPostscript文書を
作ってみました(3つ)
この3つをサーブレットからコールさせたいのです。
>>623 PS文書生成クラスを作って、そのメソッドをサーブレットから呼べばよろし。
コンソールやウィンドウに結果を出力なんてことをしなければそれでいける。
628 :
デフォルトの名無しさん :03/06/28 00:49
>>618 新たなOSって言っても、APIはWinかNTに収束しつつある。
汎用機、UNIX、LinuxからMacOSXまでは、POSIX互換。
独自オフコンやミニコンは消滅しつつある。
携帯や家電やゲーム機まで、Win系やLinuxが増えとる。
PS文書作成クラスにして、同時に(3つ並行して)動作させるには スレッドを使うことになるのでしょうか?
>>623 だから〜、サーブレットの実行環境では
個々のリクエストが別のスレッドで処理されてるの!
思わず語気を強めてしまったが、こういうことって入門書じゃふれないのかな?
>>623 スマン、1回のリクエストで3つのスレッドを動かしたいということね。
それなら明示的にスレッドを作る必要があります。
勘違いしてスマソ...
でも、なんでそんなことを?
>>630 いや、
>>629 が言いたいのは
そのPS(ryが行なう処理をThreadで同時に行ないたいってことでしょ?
633 :
コレッテカオモジニミエナイ? :03/06/28 01:00
if ('A'<=c)
マンドクセ
>>631 すまそん
(俺って書き込むの遅いんだ)
1コのリクエストから→HTTPサーブレット→文書作成クラスを3個同時に。 としたいのですが、 やはり言われていることを理解していないでしょうか? すみませんでした。 勉強に励みます。
文書作成クラスを3個同時に動かすのはいいが、 それでできた文書をどうするつもり? 状況によっちゃスレッドを作らずに逐次実行でも良さそうな気がするんだが。
>>631 >>632 はい。質問がわかりにくくて申し訳ないです。
出来あがった文書は、3種類(共通の番号がついている)のPS文書がそろったところで印刷しようと考えています。
3文書で1セットの出力をプリンターへ送りたいと思っているところです。
何スレか前で出てきた質問に似てるな…ひょっとして同(ry 敢えてつっこまないで答えるが、スレッド使わずに逐次実行でいいじゃん。 一個一個PS文書作って、3つ目ができたら全部印刷。
>>636 のようにしたいなら
その文章作成クラスとやらにRunnableイン(ryを実装させて、
ServletがRequest受け取った時にそれらをstart()で動作開始させる
これじゃダメ?
>何スレか前で出てきた質問に似てるな…ひょっとして同(ry いえ、同じではありません。 PS文書作成クラスは複数の番号のPS文書を一気に作り終え終了させています。 前のスレをもう一度確かめてみます。
>>640 スレッドのプログラミング経験がないのですが、
スレッドというのはそれぞれが非同期でも使ってよいのでしょうか?
参考書には並行、同期についてばかりのっていたので、
こういう方法は間違いなのだと思っていました。
ちがってたのならすまん。 Javaアプリとして作ったPS(PDFだったかも)生成プログラムを サーブレットから呼びたいっていうのが似てただけ。 いまいちわからないのはね、互いに関連のある複数の番号のPS文書を 別々のスレッドで分けて作る必要があるのかってこと。 必ず3つ同時に作り始めて3つ同時に終わる必要があるとか、 ある文書の生成過程のデータが別の文書を作る際に必要になるとか でなければ順序実行してもいいと思うんだけどね。 ま、どうしても平行実行する必要があるのならそれでどうぞ。 技術的に難しいということは(きっと)たいしてない。
>>642 やりたいことはよく分かりますよ
多分I/Oブロッキングを防ぎたいんでしょうね?
非同期とか言われてもどういう場面のことを言いたいのかわからないけど
別に間違ってはいないと思います
>>643 1リクエストに対して100枚近くを印刷するつもりでいます。
なので、1セット(3文書つくり終えた時)揃った時点で即プリンターへ送信したら
処理の時間が早いのではないかと思ったのです。
>>644 ありがとうございます。
間違っているのか、間違っていないのか自信がなかったので
とても安心しました。
勉強に励みます。
646 :
デフォルトの名無しさん :03/06/28 02:26
この時間、、人いるかな。。。 質問がありまする。 Apache,Tomcatインスコ後Tomcatを仮想サーバーとして連携させるところでトラブってます。 WebAppDeploy examples /examples/ の行で、Invalid vartual host name が出ます。
647 :
デフォルトの名無しさん :03/06/28 02:27
>>646 訂正。
WebAppConnection conn warp localhost:8080
WebAppDeploy examples conn /examples/
この通りです。
おやしみぃ
>>648 (ノ_<)あぅ〜ヒントだけでもくださぃ〜
>>649 すまん、ひとりごとだ。
一番上に上がっていたんでつい・・・
>>650 りょーかぃでつ。
明日まで待ってみまつ。
ひとつだけ
>>623 に言っとくが
>1セット(3文書つくり終えた時)揃った時点で即プリンターへ送信したら
処理の時間が早いのではないかと思ったのです。
スレッド使えば処理が早いっていうのは間違いです
ちなみに、J2EE関連では独自のスレッドを作って動かすことは
あまり推奨されていません
thx!!
>APIはWinかNTに NTだってWindowsだろう・・・
656 :
デフォルトの名無しさん :03/06/28 08:25
>>653 レスありがとうございます。
処理の時間と書いたのは適切ではありませんでした。
結果として逐次実行よりも並列であるほうが
PS文書の印刷を早く開始することが出来るのでは?と考えました。
658 :
デフォルトの名無しさん :03/06/28 12:05
J2EEのservletだろうがEJBコンテナだろうが プリンタ用のスレッド作るくらい問題ないんじゃない?
>>658 リモートで印刷して何が楽しいってのはあるけどな。
>>657 トータルの時間はそんなに変わらないか逐次実行の方が速いんじゃない?
だって使うCPUの数は一緒でしょ?
複数のマシンで並列処理させるとかだったら違うでしょうけど。
>>657 >PS文書の印刷を早く開始することが出来るのでは?と考えました。
印刷を先に開始できるのは逐次実行の方。
全文書印刷完了までのトータルの時間も逐次実行の方が速いはず。
(CPUの利用時間はどちらも大して変わらない)
プリンタは普通CPUとは独立して動く。
頭で考えてわからなかったらServlet云々言う前に簡単なアプリケーション作って試してみな
Servletから利用する場合は、Response返すためにMessage-Driven Bean(MDB)使うとか
PS文書作成&印刷処理スレッドを「一つだけ」立ち上げるとかは必要.。
ファイルコピーするには、やはり自前で public static File copy(File from, File to){ if( !from.isFile() ){ throw new RuntimeException("specify copy target file path is not file: " + from); } try { if( to.isDirectory() ){ to = new File(to, from.getName()); } FileReader in = new FileReader(from); FileWriter out = new FileWriter(to); for(int c; (c = in.read()) != -1;) { out.write(c); } in.close(); out.close(); return to; } catch (IOException e) { throw new RuntimeException(e); } } を定義しなけりゃならんのですか。 何か使えるメソッドは無いですか。
>>662 単なるコピーにFileReader, FileWriterなんか使うな。
Stream系を使え。
jdk1.4以降ならFileChannel#transferToを使うとなおよし。
コンパイルを実行するとclassが生成されるのですが、 いざプログラミングを実行すると下記のようなメッセージが表示されます。 なぜ? Exception in thread "main" java.lang.NoClassDefFoundError: tryjava02
665 :
デフォルトの名無しさん :03/06/28 17:43
>>664 tryjava2.classのあるフォルダをクラスパスに追加したか?
すでにそのディレクトリにいたとしても、"."を含めないと探してはくれんぞ。
ご回答ありがとうございます。 windows2000を使用しておりシステム環境変数で ;c:\jdk1.3.1\binとしております。 現在、クラスパスもソースと同じ領域に作成されております。
667 :
デフォルトの名無しさん :03/06/28 18:34
>>666 とりあえず、
.;c:\jdk1.3.1\bin
にしろ。このピリオドが無いとソースの隣のclassファイルは
永遠に実行されないからな。
>>665 偉そうな感じだがjava.exeのデフォルトクラスパスを理解してないのがわらた。
正解は環境変数CLASSPATHは設定しないことだろ?
標準ライブラリはどうせブートクラスバスに含まれるし。
#途中で送っちゃった。 さらにカレントディレクトリこそユーザクラスパスのデフォルト 設定なわけだし。
素人ですいません。 皆さんご意見いただきありがとうございます。 クラスパス指定しているのですがうまくいきません。 C:\java_home>set CLASSPATH=java_home; C:\java_home>java Tryjava02 Exception in thread "main" java.lang.NoClassDefFoundError: Tryjava02 (wrong name : TryJava02) at java.lang.ClassLoader.defineClass0(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) C:\java_home> ってなります。 windows2000の環境だからでしょうか?
673 :
デフォルトの名無しさん :03/06/28 20:56
プ
∧∧Λ 最初に「tryjava02」と書いといて置きながら ピュ.ー ( ゜∇゜ )つ <つぎは「Tryjava02」とか書きやがる =〔~∪ ̄ ̄〕 おまけにエラーの文字は「TryJava02」 = ◎――◎ もうわけわかんねーな (゜∇゜)/ 「ウンマンコ」
∧∧Λ ピュ.ー ( ゜∇゜ )つ <「これかのぅ〜」って俺に聞かれても困るんだよ(゜∇゜)/ =〔~∪ ̄ ̄〕 = ◎――◎ 「ウンマンコ」
678 :
デフォルトの名無しさん :03/06/28 23:01
質問。 char型に''を入れようとすると、コンパイルエラーになるんですが、回避できませんかね?
679 :
デフォルトの名無しさん :03/06/28 23:03
>>678 それってエスケープ文字を使うじゃない?
680 :
デフォルトの名無しさん :03/06/28 23:08
>>679 あ、そういうことじゃなくて、空文字を入れるとってことです。
空文字は文字にあらず
682 :
デフォルトの名無しさん :03/06/28 23:14
684 :
デフォルトの名無しさん :03/06/28 23:17
∧∧Λ
ピュ.ー ( ゜∇゜ )つ <
>>683 は親切じゃのぅ〜
=〔~∪ ̄ ̄〕 他にもためになる情報教えてくれまし(゜∇゜)/
= ◎――◎ 「ウンマンコ」
686 :
デフォルトの名無しさん :03/06/28 23:32
char型について聞いたものでつ。 HTTPプロトコルを使ってデータを取得するプログラムを書いてます。 その中でボディの前の<CR><LF>まで繰り返す処理をしてるんだけど、上手くいかない…。 // code while(!(in.readLine()).equals("\r\n")); while((line=in.readLine()) != null) { data = data + line; } 助けてくだせぇ。 説明が下手だけど…。
>>688 \nで送ってくるサーバも少なからずある。どうせ\r\nなHTTPヘッダに\nは単独で出てこないんだから\nで判定しる。
って言うかreadlineって改行文字残るんでしたっけ?
∧∧Λ ピュ.ー ( ゜∇゜ )つ < いえ、改行文字は破棄されると記憶してます =〔~∪ ̄ ̄〕 「ウンマンコ」 = ◎――◎
>>690 じゃあ、空行の判定方法が明らかに違うわけだ。
って言うかデバッガとかSystem.out,printlnで変数の中身位確認しろって感じだな。
∧∧Λ
ピュ.ー ( ゜∇゜ )つ <
>>688 ちょっとまって(゜∇゜)/
=〔~∪ ̄ ̄〕 while((line=in.readLine()) != null)
= ◎――◎ のところを
while((line=in.readLine()) != null&&(line=in.readLine()).length>0)
じゃだめかな?確かじゃないけど「ウンマンコ」
∧∧Λ ピュ.ー ( ゜∇゜ )つ < length()な「誤 length」(゜∇゜)/ =〔~∪ ̄ ̄〕 「ウンマンコ」 = ◎――◎
>>688 最初のwhileでnullチェックやってないから、不正な状態
があったとき危ないよ。
ま、全部書き直しなわけだが。
ラベル低いよ。。。
/ ̄ ̄ ̄ ̄ヽ ノ /二二○ヽヽ ヽ|ノ// 川 ソ 川 ゚ヮ゚ノl| <ドレミファじゃばこで フォーリンラブ ⊂)亞つ L__」 し'ノ
チン子
こんにちわ。 例えば、下記のようなコードがあったとします。 FileOutputStream a = new FileOutputStream("テスト.txt"); OutputStreamWriter b = new OutputStreamWriter(a); BufferedWriter c= new BufferedWriter(c); この場合最後にはやはり a.close(); b.close(); c.close(); と3つ全てに対してcloseしなくてはいけないですか?
すみません。3行目は BufferedWriter c= new BufferedWriter(b); の間違いです。
二つのPanelを同じ行で、右端と左端に表示させるにはどうしたらいいでしょうか?
>>700 src.zip展開してそれぞれclose()のソース見てごらん。
質問です。
C言語では未使用変数に対してコンパイラが警告を出してくれますが、
Javaで同等な機能を実現したフリーなツールなどありますか?
Java Houseで検索したところ、下記URLのJ.Tasterが見つかったのですが、
どうも有償ソフトのようでした。
ttp://www.toyo.co.jp/ss/jtaster/
>C言語では未使用変数に対してコンパイラが警告を出してくれますが、 うちのccはなんにも言ってくれないけれど。
>>706 レス感謝です。Eclipseは少ししか試していないのですが、その時は警告が
出なかったような記憶があります。機能を見逃していないか、もう1度試して
みたいと思います。ただ、普段の開発はAppleのWebObjectsなので、
気軽に使うのは難しそうです。
>>707 微妙に揚げ足取りをされてるようで悲しいのですが、確かにC言語だから
ではなく、たまたま多くのC/C++コンパイラが実装しているだけですね。
lintコマンドか、ccに-Wallオプションを使ってみるとどうですか?
引き続き、他にもレスいただければ嬉しいです。
709 :
デフォルトの名無しさん :03/06/29 17:38
何故コンパイルできないのでしょうか? public class hello{ public static void main(String[] args,int i){ for(i=0,i=3,i++){ System.out.println("3回でる"); } } } コンパイラより。 C:\j2sdk1.4.1_03\bin\javac.exe hello.java hello.java:4: ';' がありません。 <<ど、どこに!? for(i=0,i=3,i++){ ^ hello.java:7: 式の開始が不正です。 } ^ hello.java:6: ';' がありません。 } << {の後に";"??? ^ エラー 3 個 Compile End !!
for(i=0 ; i=3 ; i++){
>>708 Eclipseはデフォルト設定では警告は出ない。
警告やエラーは設定次第でかなり詳細に設定出来るよ。
>for(i=0,i=3,i++){
>>711 早速設定を見直してみました。[Java]-[Compiler]にそれらしい項目を
発見しまして、変更しましたら無事警告が出ました。
Eclipseは本当に便利ですね。それに比べてWebObjectsといったら…。
レス有り難う御座いました。Eclipseをうまく使えないか、考えてみたいと思います。
>>708 自己レス
708を書いた直後、「lint java」でググってないのを思い出してググってみました。
下記にJlintというのを見つけまして、調査してみたいと思っています。
どなたか使用されたことある人いらっしゃいますか?
ttp://artho.com/jlint/ >>713 煽ったつもりはなく…いえ、少しはあったかもしれません。すみませんでした。
>>688 Reader系を使うのはやめてInputStream系を使え。
717 :
709です。 :03/06/29 19:05
ありがとうございます。コンパイルは通ったのですが、、、 実行すると下記のように怒られてしまいました。 hello だけなら、ちゃんと実行できたのでpathは問題ないと思うのですが… 何故なのでしょうか?? > C:\j2sdk1.4.1_03\bin\javac.exe hello.java Compile End !! > java hello java.lang.NoSuchMethodError: main Exception in thread "main"
すみません、またageちゃいましたm(_ _ m
>>717 > public static void main(String[] args,int i){
int i の宣言がここにあるのが原因。
レスありがとうございます。 下記のようにしてみたのですが、 実行結果に何も表示されません。 for(int i=0;i>3;i++) iが3を超えるまで… の予定だったのですが、どのへんが まずかったのでしょうか?? public class hello{ public static void main(String[] args){ for(int i=0;i>3;i++){ System.out.println("3回でる"); } } }
>>721 ぐだぐだ質問する前に他のソース見て勉強せい
703を誰か・・・
724 :
デフォルトの名無しさん :03/06/29 19:30
>>723 ぷぷぷぷぷぷぷぷぷぷぷぷぷぷぷぷぷぷぷぷぷぷぷぷぷぷぷ
∧∧Λ
ピュ.ー ( ゜∇゜ )つ <
>>721 for(int i=3;i>0;i--) ←これが正解(゜∇゜)/
=〔~∪ ̄ ̄〕 「ウンマンコ」
= ◎――◎
レイアウトマネージャを使っているときにJTextAreaの大きさを変えないように するにはどうしたらいいのでしょうか? つーかJScrollPaneつかってるのにいちいちリサイズしてくれたらスクロールバー意味ねぇ・・
>>729 もちょっと詳しく。
両方とも使ったことのあるオブジェクトなので、
お力になれれば。
>>721 頭悪いな。
for (int i = 0; i < 3; i++)
で3回でる。
つーか、たしかにここは初心者スレだけど、こんなレベルでいいのか?
>>730 簡単に書くとグラフィックなど表示してあるメインウインドウの下(NORTH)に
ちっこい3行分くらいのJTextAreaがあるわけです。
そのちっこいJTextAreaに文字を書く訳ですが、その画面から少しでも行がはみ出した後
(JScrollPaneに入れ子して縦スクロールバーが出ます)画面が再表示されると
TextAreaがスクロールバーを丁度表示されない大きさに大きくなって
NORTH部分がでかくなり、当然画面全体も滅茶苦茶に・・・
というわけです。
∧∧Λ ピュ.ー ( ゜∇゜ )つ < for (int i = 3; i > 0; i--,System.out.println("3回でる")); =〔~∪ ̄ ̄〕 中身一行ならこれでいいじゃない 「ウンマンコ」 = ◎――◎
あるウィンドウAでボタンをおして、別ウィンドウBを開いたときに、 ウィンドウBで処理をしないと、Aがアクティブにならないようにするにはどうすればいいんでつか?
>>734 B を "モーダルダイアログ" にするのがごくごく一般的
737 :
デフォルトの名無しさん :03/06/30 22:23
javaのclientプログラムでcookieってどうやって保存するんですか? 後、送信するんですか? 誰か教えてちょ。
httpの勉強しろ
してるんですけどね。 いまいちわからんのです。
740 :
デフォルトの名無しさん :03/06/30 23:05
でかい、何行もあるテキストファイルの途中に一行とか挿入したいとき いちばん効率いいのは? pipeかなぁ?
742 :
デフォルトの名無しさん :03/06/30 23:12
>>732 setPreferredSizeでどうだろ
アプレットの事で困ってます、誰か助言をください。 簡単なアプレットを作って、まずappletviewerで動作を確認しました。 次にブラウザ上で見てみようとしてhtmlファイルを書いたんですが、 何故かブラウザではアプレットは実行されずに灰色のまま。 htmlファイルには <applet code="MyApplet.class" width=100 height=100> </applet> と、ちゃんと書いているし、MyApplet.classはこのhtmlファイルと同じディレクトリに置いてるんですが。 ちなみにアプレットを公開しているサイトのアプレットはちゃんと見ることは出来ます。 一体何が原因なのかさっぱり解りません。誰か助言を・・
>>745 ・クラス名の大文字小文字の間違い
・なんかセキュリティ例外に引っかかってる。
・JavaVMのバージョンの問題。たとえばMSVMは最近増えたAPIは使えない。
まずJavaのコンソールを出してメッセージを確認してみようじゃないか。
748 :
デフォルトの名無しさん :03/07/01 00:58
jspで質問です。 思いっきり、サンプルリストからぶっこ抜いたソースなんですが、このソースで、/hoge以下のファイル一覧が出るのですが、 1つ1つのファイルの一行目を読み込んで、 hoge.txt hogeの一行目 hoge2.txt hoge2の一行目 みたいな感じで一覧出したいんですが、どのようにしたら良いでしょうか? < % //ディレクトリ名 String dName = "/hoge"; //Fileオブジェクトを作成する File fl = new File(dName); //ディレクトリ内のファイルとディレクトリを取得する File[] ar = fl.listFiles(); //ファイルとディレクトリを一覧表示する for(int i = 0; i < ar.length; i++){ out.print("< br >" + ar[i]); //一行表示 } % > </body> </html>
>>748 それぞれのファイルの1行目を読み込んでそれを表示
>>746 レスどうもm(__)m
>・クラス名の大文字小文字の間違い
これは無いです、もう10回以上どこかにスペルミスが無いか確認しました。
>・なんかセキュリティ例外に引っかかってる。
どのアプレット入門的な事を簡単に解説してるサイトや書籍でもセキュリティの事には全く触れてなかったので、考えてもなかったのですが、J2SEドキュメントの「セキュリティと署名付きアプレット」を読んでみます。
>・JavaVMのバージョンの問題。たとえばMSVMは最近増えたAPIは使えない。
ただpaintメソッドで文字を書くだけのアプレットなので、最近増えたAPIは使って無いとおもうのですが。
Javaのコンソール・・こんなの有るとは知りませんでした。で、早速見てみた所、
Error loading class:MyApplet
java.lang.NoClassDefFoundError
java.lang.ClassNotFoundException:MyApplet
と、大まかなエラーと例外がこの二つでした。クラスが見つからないっていうのは一体どういう事なんだろう・・・。
後、NoClassDefFoundErrorについても調べてみます。
どちらにしてもこの問題の解決について進展することが出来ました。また書き込んでみます
JPanelに実行時操作で、さらにJPanelを追加したり削除したりするような プログラムを作ってるんだけど、 いったんremoveAllで全部消してから、もっかい全部addしてやってるわけね。 したらremoveAll後に上手く表示されなくってコマッチング! つД`) タスケレ !!
752 :
デフォルトの名無しさん :03/07/01 02:14
>>751 #invalidate()と#validate()で何とかならへんか?
>>752 サンクスコ。
馬鹿でわからんから、もうちょっちだけ詳しくキボン。
あとはぐぐるから。
754 :
デフォルトの名無しさん :03/07/01 02:28
java.awt.Component#validate(),#invalidate()
755 :
デフォルトの名無しさん :03/07/01 02:36
>>749 出来ました。
あと、取得したファイルの拡張子ってのを抜き出すには、ピリオドから先の文字を抜き出すってルーチンを用意しなきゃいけないんでしょうか?
yes. そもそも拡張子なんて概念はWindows固有だ。
760 :
デフォルトの名無しさん :03/07/01 04:18
>>756 >>758 どうもです。正規表現というのを使って、拾い出したい拡張子設定するやり方で取り出せそうです。
ファイルの中身を一行表示するコードなんですが、readLine() を使って一行表示した時、英数字は問題ないのですが、日本語が化けてしまいます。
ファイルの中身はSJISだと思うんですが、どこを確認したら良いでしょうか?
761 :
デフォルトの名無しさん :03/07/01 08:52
CORBAを使ってみたいんだけど、どうにも要領がつかめないので、 すごい簡単なサンプル見せてもらいたいです。 なるべくスタンドアロンで何も立ち上げずにやりたいですが、 LAN、Apache、TOMCATは一応準備できます。おねがいします。
>>760 わざわざ正規表現使わなくても出来る。こんな感じで。
s.substring(s.lastIndexOf('.') + 1, s.length())
ストリーム作成時にエンコーディングを指定する。
InputStreamReader reader = new InputStreamReader(new FileInputStream("theFile", "Windows-31J"));
バッファリングしたけりゃお好きに。
763 :
デフォルトの名無しさん :03/07/01 09:23
1.4.2がリリースされてるのZDNetの記事で今頃気づいた
>764 窓の杜にも出てたな。
766 :
デフォルトの名無しさん :03/07/01 12:27
Java 卒論のために勉強し始めて、ウィンドウアプリで ウィンドウ内にアニメーションさせるアプリ(時計とか)を作ろうと 参考書を買ってきたんですが、アニメーションさせる方法が JavaAppletのやり方しか書いてなかった(´・ω・`) そこで質問なんですが ウィンドウアプリの場合アニメーションさせる命令って何でしょうか? 命令さえ分かればググって参考サイト見つけれると思うんですが… よろしくお願いします(´・ω・`)
>>750 > ただpaintメソッドで文字を書くだけのアプレットなので、最近増えたAPIは使って無いとおもうのですが。
そういう問題ではなくて、対象のVMとクラスファイルが合ってないんだと。
javacに-target 1.1って指定してみたら?
MSJAVAだと1.1互換にしないと動かなかったと思うよ。
javacのドキュメント見ておくことをお勧めするよ。
>>766 ウィンドウアプリもAppletも、アニメーションさせる方法は同じなので、
その本で学んでも悪くないかも。
あとは、Javaでウィンドウアプリを作る方法さえわかれば
お望みのことが出来るよ。
java.awt.Frameかjavax.swing.JFrameの使い方を覚えればすぐ。
awtやSwingは、本読んだほうがいいけど、ただで済ませたいなら
APIか、%JAVA_HOME%\demo\jfc以下のサンプルを見てみて。
>>767 >javacに-target 1.1って指定してみたら?
うわっ出来ましたー。ちょっと感動した!一体何時間ぐぐったり本見たりサイト回った事か・・。
まじありがとう。
javacのドキュメントも読んでみます。
staticなフィールドはstaticなメソッド内からじゃないと参照できないぽだけど、 コンストラクタはstaticではないよね? JFrameにEXIT_ON_CLSEを設定するのは、mainからやるべきでつか?
>770 前半と後半のつながりがいまいちわからんが、 setDefaultCloseOperation()を使うとか、processWindowEvent()をオーバライドするとか。
んと、詳しく書くと、JPanelを継承したクラスAがあって、 そのAのコンストラクタでフレームにAを追加してるんだけど、 frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE); ってやると、EXIT_ON_CLOSE使ったらダメよってでまつ。 shouldだから警告だと思うんだが、今mainで同じ処理やっても 同じ警告出た。 なんでやああ!! Eclipseです。
……漏れはバカかw staticなフィールドも非staticなメソッドから参照できるだろうが。 で、条件反射でレスしちまったが、 JFrame#setDefaultCloseOperation()でないの?
>>773 static なフィールドをインスタンスから参照しようとしてるから警告が出ただけでしょ。
よーするに frame.EXIT_ON_CLOSE -> JFrame.EXIT_ON_CLOSE に直せって怒られてるわけ。
>>774 775
すいませんですた。
知らなかったです。インスタンスからやってるからダメなのでつね・・・。
出直してきまつ。
777 :
デフォルトの名無しさん :03/07/01 14:53
ここのサイト見てるとjava初心者ってプログラム初心者がほとんどだな!!! そんなやつらはただWindowsでFrameを出してるだけでうれしいみたいだが、 ウインドウやフレームを出す前にプログラムの基本を仕組みアルゴリズムを学んだほうが いいと俺は思うぞ。
ボタンを押したときにラベルが出るようなプログラムを作ってるんですが、 出てきません! でもウィンドウのサイズを変えると出てくるんです。 panel.repaint()とか、やりましたが無理ですた・・・。 どうしましょう?
780 :
デフォルトの名無しさん :03/07/01 15:45
これからC++を勉強します Cをある程度理解しているのですが、 そういう人におすすめの本を教えてください.
>>777 ちょっぴり視点がずれている。
初心者はプログラミング=GUI の表示ぐらいにしか思っていず、
もはやプログラムとはプラモデルを組み立てるがごとく、
GUIの組み合わせで動くと勘違いしている向きさえある。
だからGUI表示できればひゃっほうもう少しだと思ってしまう。のではなかろうか。
アルゴリズムなんて、解説してるサイトもそうそうないしね。
java初心者がイマイチ君だというより、
イマイチ君は「いかにも組み立てやすいプラモデルに見える java」 を選びやすい。
バカどもにはちょうどいい目くらましだ。
誤爆スマソ
今日からその馬鹿どもをGUI厨と呼ぼう
オブジェクトを組み合わせればプログラムができると思ってるやつは オブジェクト厨だな。
>>779 なにわけわからん事言ってんだ?
ラベルを出すのにpanel.repaint()の使っても出るわけないだろ!
ラベルクラスのsetVisibleを使うんだよ!!!
こういう人は本を読んでも最初の肝心なとこ勉強してないんだよね!
クラスとか継承、実装、コンストラクタ、オブジェクト、オーバーロード、
なにいってんだかわかんないだろ!!!
だいたい、イベント処理なんてインナークラスや匿名クラス、オーバーライド
を知らないとできないのに本読んでで簡単にできると思い込みをしてるやつが
たくさんいるよなまったく・・・
787 :
デフォルトの名無しさん :03/07/01 16:12
アプレットでゲームつくろうと思うんだけど 日本語はどのブラウザでも使えるのかな。
788 :
デフォルトの名無しさん :03/07/01 16:22
質問質問質問 タグライブラリでインナークラスは利用できないんですか?
会社からプロキシ経由で「messenger.hotmail.com」ってとこの1863ポートに繋ぎたいのですが、 Socketの生成でつまずいてます。(UnknownHostException) System.setProperty("http.proxyHost", "○.○.○.○"); System.setProperty("http.proxyPort", "○"); これ↑って意味ないんですか?
790 :
デフォルトの名無しさん :03/07/01 16:48
proxyHost, proxyPort だけでなく proxySet を設定せよ しかし会社からメッセンジャーにつないでサボる気かね
>>786 でもねでもね。
ウィンドウのサイズを変えたら出るんだよ?
実行時にVectorにJLabelを登録して、
再描画する前に、一旦panel.removeAllで全部けして
それから全部表示させてるんだけども。
出てこないのさ。
ウィンドウリサイズはupdate()が呼び出されてるんでないの?
>>779 コンポーネントを追加した後にpanel.validate()を呼ぶ。
これでできるけど正しい方法なんかね?
自分で調べろ。
>>793 update() なんてメソッドは無い
update(Graphics) ならあるが、これは描画しなおし。
Image や drawLine などのグラフィックス描画をやるのであって、
GUI の表示とは無縁と考えよ
>>794 できた!マジさんくす!!
vaidateは何をするんだ!?検証するっていったい・・・。
>>796 そうですか。じゃあpaintComponentだね!
>>790 名前をIPに解決できてないっぽい(外に出れていない)
>>792 proxySetの使い方がわかりません。
今特に作業かかえてないので、題材決めて勉強しようと思って。
どうせやるならおもしろくやりたいので。
ものすごいバカな質問だけど、 ActionListenerを実装したクラスを継承したサブクラスでも implements ACiton..ってやんないとダメなんでつか?
複雑に階層化されたGUIコンポーネント間で連携させるときのコツ、 というかセオリーを解説してあるサイトはないでしょうか。 すこし油断するとすぐ 「ローカル変数controllerは内部クラスからアクセスされます。 final で宣言される必要があります。」 がでます・・
>802 相手に理解してもらえる日本語になっているか、書き込む前に確認しよう。 まず、落ち着いて事情を説明するべし。 前半と後半では、話がかみ合わないように読めるよ。
>>802 デザインパターンを眺めるといい考えが思い浮かぶかも。
メ、メディエーターパターンかのう?・・・
806 :
デフォルトの名無しさん :03/07/01 23:18
>>802 コンポーネントを普通のクラスから作らない。
コンポ−ネントのクラスを作る。
全部メンバ変数にする。
807 :
デフォルトの名無しさん :03/07/01 23:56
質問させてください。 アパッチだとか、iisだとか立ち上げてる(社内の)端末にアクセスすると 記録されるIPの値を任意の値で渡したいのですが javaでそういうプログラムはかけますか? つまり、自分の端末が持っているIPとは別のIPを渡したいのです。 自分の会社でのPCはIPは自動取得なんで、任意のIPを渡したいなー って今日、ふと思ってしまったので質問させてもらいました。
808 :
デフォルトの名無しさん :03/07/01 23:58
>>807 Cracking program書く人は放置、が不文律。
809 :
デフォルトの名無しさん :03/07/02 00:31
スーパークラスハンターの私にとって不可能な処理はありませんが何か?
>>809 1.あなた自身が復号できない符号化プログラムを作ってください。
2.そのプログラムで符号化したデータを復号してください。
>>810-811 藻前らそれは確かに不可能だけどな!
本当の答えはこうだ。
コンピュータが爆発するクラスを作ってください。
女子が全員裸のクラスを・・・
>>812 CRTをバグらせて発火させるウイルスは有り得るらしいけど。
>>813 男子校ならできるな。女子は全員裸(ただし女子比率0%)
import org.eclipse.swt.*; import org.eclipse.swt.widgets.*; import org.eclipse.swt.events.*; import org.eclipse.swt.layout.*; public class SwtApplication { Display disp; shell sh; Button btn; public SwtApplication(){ disp = new Display (); sh = new Shell(disp); sh.setText("記念すべき第二アプリケーション"); sh.setSize(300,150); sh.setLayout(new Fillayout()); btn = new Button(sh, SWT.NULL); btn.setText("Click here."); btn.addSelectionListener(new SelectionAdapter(){ public void widgetSelected(SelectionEvent ev) { MessageBox msg = new MessageBox(sh, SWT.OK); msg.setText("メッセージ"); msg.setMessage("congraturations again !"); msg.open(); } });
javaでファイル出力を行うときに、指定ファイルがなければIOexceptionを投げますが そのさいにファイルを作成するようにするにはどうしたらいいでようか?
↑てEclipse上で書いたんですが、 インポート org.eclipse.swt は決して使用されません。MyJava2.javaMyJava2line 14 とか public 型 SwtApplication は自身のファイルにおいて定義されなくてはいけません。MyJava2.javaMyJava2line 19 と出ます。 どうしてでしょうか? おながいします、おしえてくれ
>>818 catchしてやり直せば委員でないの?
>>817 ファイル名とクラス名は同じにすべし。Eclipseでやれば勝手に同じになるはずだが。
Eclipseなんだし、赤い波線が出たら電球マークをクリックして勝手に直してもらえば
何とかなるだろ。もちろん、その波線がでた理由とどう変更して波線が消えたのか
考えるのを忘れずに。
>>820 すいません、出来ました。
もう一つだけききたいんですが、ファイルに\tで区切ったデータがあって、
それをファイルから読み込む場合、FileReader.read()で、\tが来たら
データの格納先を変えるっていう処理でいいんですか?
なんだか上手くいかなく・・・
ありがとう なんとか自分で出来ました
825 :
デフォルトの名無しさん :03/07/02 11:19
プリント「イン」ではなくて、プリント「エルエヌ」なんですね? かなり困惑したんですが・・・ なぜIではなくてLなんでしょうか?
Line だから
>>824 タブ文字は上手く区切れてるみたいなんですが、データの変換が上手くいきません・・。
int i = FileReader.read()でiをcharにキャストして入れていきますよね?
その時に、charの配列に、
charArray[index++]= (char)i;
と一旦データを別部分に格納してから、iが'\t'だったら
String str = new String(charArray);
とやってるんです。そいで改行が来たら
Integer.parseInt(str)でint型に直して、本来の変数へと格納してるんですが、
ここで、Exception : java.lang.NumberFormatException: For input string: "2002
こんなエラーが出てしまいます。
最後のダブルクオが気になりますが、閉じてないってことなのでしょうか?
javaも最後\0で閉じないとダメですか?
あのさぁ、なんでソース見せないの?
システム.アウチ.プリンプリン("-_-");
830 :
デフォルトの名無しさん :03/07/02 11:41
ちょっと長いですが・・・。 private void loadFromFile() { try { FileReader fr = new FileReader("data.txt"); int tabCounter = 0; int c; char[] tempData = new char[256]; String[] data = new String[5]; boolean flag = true; // 提出済みデータならtrue boolean change = false; // 格納先変更直後のみtrue for(int i = 0 ; (c = fr.read()) != -1 ; i++) { if(c == '\t') { tempData[i] = '\0'; data[tabCounter++] = new String(tempData); i = -1; tempData = new char[256]; } else if(c == '\n'){ if(!change) { int year = Integer.parseInt(data[2]); int month = Integer.parseInt(data[3]); int day = Integer.parseInt(data[4]); Report r = new Report(data[0], data[1], year, month, day);
if(flag) { reportTrueVector.add(r); } else { reportFalseVector.add(r); } } else { change = false; } } else if(c == '@'){ change = true; flag = true; } else { tempData[i] = (char)c; } } } catch(Exception e) { System.err.println("Exception : " + e); } }
833 :
デフォルトの名無しさん :03/07/02 12:15
>>561 スレッドセーフなコレクションを使えばよい :-)
やっぱ文字列処理はJavaショボいねぇ
>822 StringTokenizerじゃ駄目なの?
>> 822 int year = Integer.parseInt(data[2]); 読み込むテキストに 数字以外の文字入ってたら たいてい、NumberFormatException出るようになってる コンマンウ2002って「年」を読み込む部分だろうけど 頭に「"」がついてるんじゃない? 「"」も区切り対象にすればいい
>836 コンマンウ
>頭に「"」がついてるんじゃない? 頭に「コンマンウ」がついてるんじゃない?
>831-832 すげーソースだなぁ。わざと複雑に書いたの?これ。 BufferedReaderを使ってreadLine()で一行ずつStringに取り込んで、 各行で項目数が決まっているならString#split()、 不定ならStringTokenizerで一個ずつ取り出せ。
【もう】なきそうになりながら、仕様書を読み返すスレ【だめぽ】
∧∧Λ
ピュ.ー ( ゜∇゜ )つ <
>>822 boolean flag = true; boolean change = false;
=〔~∪ ̄ ̄〕 こういうフラグなるべく使わないようにしよう (゜∇゜)/「ウンマンコ」
= ◎――◎
【宿題】一夜漬けアプリの杜質問箱【テスト】
843 :
デフォルトの名無しさん :03/07/02 16:39
【ドキドキ】さて、次はどのAPIで遊ぼうかな?Java編【ワクワク】
844 :
デフォルトの名無しさん :03/07/02 16:58
============================= ◎――◎
846 :
デフォルトの名無しさん :03/07/02 18:33
会社で働いている方に質問なんですけど Sunのjsp-pの資格を2年前(高校のとき)にとったのですが、ロゴ試用期間が2年で消えますよね、 専門2年なんですが、取り直したほうが就職では有利なんですか? デベロッパーは無理というか取る気持ちになれません。
J2SE 1.3.1版どこかでダウンロードできないのかな? サンマイクロのHPでは1.4.1しかダウンロード できないみたいなんだけど・・・。
>>849 どーもです。
最後のexeアンカーをクリックすると
必ずエラーになってダウンロードできないんですけど
なんかご存知ですか?
>>850 最後まで試してなかった。失礼。
1.3.1_07の時は落とせたんだけど…
sunのページからJVMを落としたんですが、 アプレットを実行しようとすると、Java仮想マシンをインストールする必要があります。と出ます。 これはマイクロソフトのVMを入れるように言ってるのかと思いますが、 すでにプラグインされているJavaVMを使うように設定するにはどうすればいいんでしょうか?
853 :
デフォルトの名無しさん :03/07/02 20:03
>これはマイクロソフトのVMを入れるように言ってるのかと思いますが、 >すでにプラグインされているJavaVMを使うように設定するにはどうすればいいんでしょうか? 逆じゃないのか? 普通はインストールしたJREが使われるはずだが? まあ、設定はWindowsなら、コントロールパネルのなかに JavaPluginあるのでいじってみれば何とかなるかな まあ、適当な答えだ勘弁してくれ
>>853 ありがとうございます。やってみます。
補足ですが、ダウンロードを促される画面で
インストールオンデマンドと出ています。
何のことかちょっとわからないですが・・・。
>>853 できました!ありがとうございます。
ブラウザ変更に失敗しましたと出て、変更権利があるか確認してくださいと出たのが
気になりますが、なんとか出来ました。
858 :
デフォルトの名無しさん :03/07/02 20:39
>>762 文字化けせずにファイルの中を表示できるようになりました。
あと、もう1つ問題出てきてしまったのですが、
パス+ファイル名で取得してきた、ファイル名そのものが文字化けして正しくファイルを参照できないの物が出てきてしまいました(文字化けしないものは開けます)
ソースは以下のような感じなんですが、
FileReaderで作った、パス名+ファイル名 をOSの文字コードで指定するにはどうすれば良いでしょうか?
OSはLinuxで、開きたい対象のファイルはSJISだと思います。
//Fileオブジェクトを作成する
File fl = new File(dName);
String[] ar = fl.list();
String fnm;
FileReader fno
for(int i = 0; i < ar.length; i++){
fnm = ar[i];
fno = new FileReader(dName + fnm);
860 :
デフォルトの名無しさん :03/07/02 21:00
>>859 こんな感じで指定してみましたが、エラーが出てしまいます。
開きたいファイルは、B・LUE.PDXなんですが、エラーでは、B?LUE.PDX (No such file or directory)) is not available. こんな感じで蹴られてしまいます。
BufferedReader はこんな感じで使って見ました。
BufferedReader bno = new BufferedReader(new InputStreamReader(new FileInputStream(dName+fnm),"MS932"));
>>858 ファイル名が化けるのかファイルの中身が化けるのかどっちだよ
>B・LUE.PDX まずこのファイルをどうにかするのが先だろ
>>858 new String(string.getBytes("8859_1"), エンコード名)
864 :
デフォルトの名無しさん :03/07/02 21:06
B・LUE.PDX どう考えてもこの「・」が原因だろ。なんだよこれ
866 :
デフォルトの名無しさん :03/07/02 21:25
>>865 ls で表示してみると
B?BLUE.PDX
ls -ls | less で表示すると(多分SJISで表示されるので)
B・BLUE.PDX
こう表示されます。
このファイルは,X68から持ってきたPCMセットファイルなんですが、とくにLinux上で、聞く分には問題ありません。
ただ、表示させようとする段階で、今のようなエラーがでます。
>>866 取りあえずcat | nkfの結果。SJISじゃないに3JDK
>>866 まずそれをEUCとして正しいファイル名に直せ。
OSのファイル名設定がEUC-JPなら、
EUC-JPとして認識できないファイル名をまともに扱うことは不可能。
これはJavaに限らずUnicodeを利用して国際化されているソフトウェア全般に言える
869 :
デフォルトの名無しさん :03/07/02 21:49
B・LUE.PDX どう考えてもこの「・」が原因だろ。なんだよこれ 及川奈央の鼻の横についてるクソみたいに邪魔だな フォルダ名に空白も厄介だ 結婚して退社したアナウンサーが芸能界復帰するぐらい厄介だ
>フォルダ名に空白も厄介だ 通常シェルのお仕事。
871 :
デフォルトの名無しさん :03/07/02 21:52
>>869 なんで、NHKで将棋番組やってるんですか?
>>869 はアナウンサーに片思いをしていて
どこの馬の骨かわからんやつに取られて、
寿退社をきに、忘れようとしていたら、
芸能界に復帰されて、忘れようとしても
忘れられず、テレビで見るたびに泣いている奴。
873 :
デフォルトの名無しさん :03/07/02 21:55
大橋
874 :
デフォルトの名無しさん :03/07/02 22:00
>>871 いやなんでも、女房役やってる旦那がえらく将棋強いんだと
だからなんで、そいつの女房が将棋番組に出るのかは不明
875 :
デフォルトの名無しさん :03/07/02 22:01
>>867 >>868 >>869 >>870 特殊記号を使ってるので、それが原因で、とても厄介なのはわかりました。
しかし、凶悪02.PDX このファイル名も同じように弾かれます。
ls *.PDX| nkf -S できちんと、表示もされます。
#007.PDX
ASSAULTV.PDX
DYWM99.PDX
GRA100.PDX
HA2500.PDX
SPD002.PDX
UGO002.PDX
UGO028.PDX
凶悪02.PDX
jsp側のエラー画面は、先ほどと同じようです。
エラー画面は、??02.PDX (No such file or directory)) is not available. こんな感じです。
877 :
デフォルトの名無しさん :03/07/02 22:04
>>875 変えるわけにはいかんのか?フォルダ名
(今日は楽しくなりそうだな)
878 :
デフォルトの名無しさん :03/07/02 22:06
>>875 ローカルエンコーディングと違うファイル名なんだから
しょうがないだろ。シェルから
for file in *.PDX; do mv $file `echo $file |nkf -S -e`; done
とでもやって変換しとけば?
880 :
デフォルトの名無しさん :03/07/02 22:07
>>877 MDXという、音楽ファイルがあるんですが、それが、PDX(PCMセットファイル)を読み込んで、再生するので、PDXを変えると、PCMの部分が無くなりドラムとかの音が消えると思うんです。
MDXのファイル名は変えれるけど、PDXのファイル名は変えれないと思うんです。
MDXがPDXファイルを読み込みって感じで、MDXのなかにバイナリ形式で、PDXのファイル名が埋め込まれています。
MDXをweb経由で垂れ流すのか・・・ たしかに今なら普通にできるなー
多分無理だと思うけど、
File d = new File(親ディレクトリ);
File[] files = d.listFiles();
して、ファイル名を経由せずにFileオブジェクトを取得したらどうなる?
これで無理なら何やっても無理。
>>879 の通りファイル名をEUCに変えてしまうしかない
>>882 結局ファイル名でアクセスするから無理ぽ。
質問です。 Stringに入ってる文章の中からURLの抽出ができるクラスってなんでしょうか?
885 :
デフォルトの名無しさん :03/07/02 23:31
対象ファイルが、少ないので、68側で、普通の名前で読めるように変えて対処することにします。 大変お騒がせしました。
>>884 java.util.regex.Pattern
5年ほどまえバーで飲んでたら、そのバーの直ぐ外に大木ぼんどが来ていた。 その頃ガキだった俺は話の種にと思い、紙切れ一枚持ってぼんどにサインを貰いに行った。 そしてサインを貰って直ぐにその紙切れを破り捨てた。なぜ破り捨てたのかは解らん。 俺も酔っていたからな。
こんにちは。 初心者というより門外漢です。 質問お願いいたします。 RedHat Linux上のJavaで正規表現を多用して 日本語処理を行います。 入力する漢字コードがEUCかJISの場合 どちらがよいでしょうか?どちらでもよいでしょうか? トンチンカンでしたらすみません。 どういう情報が足りないかご教示いただければ幸いです。 よろしくお願いします。
sprintf("%02X",num); や sprintf("%2d",num) の様に16進右桁揃えで整形するスマートな方法はありますか?
>>836 すげー!まさにそのとおりです!
指摘のとおりやったらできました!ありがとうございます。
>>839 一応本見ながら書いたんで・・・。
readLine()について勉強してきます!
>>890 10進でも16進でも右詰処理は自作するしかないと思われ。
Tiger まで待てば printf() が付くらしいけど。
893 :
デフォルトの名無しさん :03/07/03 03:03
Antの質問ってここでしていいのか わかりませんが教えてください DOSコマンドをパラメータ付きで実行します。 <exec dir="." executable="test.exe"> <arg value="*.txt"> </exec> を実行すると >test.exe *.txt が実行されます。 そうではなくて、例えば、a.txt b.txt c.txtの3つがあるとすると >test.exe a.txt >test.exe b.txt >test.exe c.txt と順に実行させたいのですが、Antのワイルドカードみたいな機能で うまく出来ないでしょうか?
>>892 やっぱ自分で作るしかないんですね.
何か便利なクラスがあればと思い質問したので期待はしてなかったのですが.
難しい仕事じゃないんで良いんですけどね.
ありがとうございました.
>>889 どちらでも同じです。javaは内部では文字列はすべてUnicodeとして変換し扱います。
896 :
ウンマンコ :03/07/03 07:00
>>890 以前俺がつくったユーティリティークラスの一部
sprintfはしらないが、こういうことか?↓
(ちなみに最初の部分は四捨五入処理なので無視してくれ)
∧∧∧
( ゜∇゜ )つ
public static String averageFormat(double average) {
int aveH = (int) (average * 1000.0);
int aveT = (int) (average * 10000.0);
if (aveT - aveH * 10 > 4) {
aveH = aveH + 1;
}
DecimalFormat dformat = new DecimalFormat("#.000");←java.text.DecimalFormat
return dformat.format((double) aveH / 1000.0);
}
java.text.*あたり使うぐらいしか思いつかん(基定クラスはNumberFormat)
897 :
デフォルトの名無しさん :03/07/03 08:55
>>892 printfなんて自分で実装しても30分かからないだろう。
問題は最近のNetにprintfの仕様に関係する資料がごみみたいのしか無い事だ。
898 :
デフォルトの名無しさん :03/07/03 11:10
899 :
デフォルトの名無しさん :03/07/03 11:55
スレッドが、自分自身(Threadクラス)の参照を入手するには どうすれば良いのでしょうか?
>>889 正規表現を多用するなら
素直に perl, ruby, python あたりの方が楽なんじゃ。。。
>>899 現在実行中のスレッドオブジェクトの参照が欲しい、という意味なら
java.lang.Thread#currentThread()
>901 ありがとうございます。 ご指摘のやり方について、よく調べてみます。
904 :
デフォルトの名無しさん :03/07/03 14:15
Javaで新しくディレクトリを作るには、どうすればいいですか?
905 :
デフォルトの名無しさん :03/07/03 14:25
File.mkdir() File.mkdirs()
ありがとう
>>850 今だとDLできます。
サイトの問題だったんでしょうか…
>>907 たぶんサイトの問題
他のバージョンも落とせなかったから
javaのスレがイパーイありすぎてわからないのですが antとかJunitととかはどこで語ればいいのでしょうか?
911 :
デフォルトの名無しさん :03/07/03 16:28
版違いですいません。 どこで聞けばいいのかわからないんですが 携帯で送られてきたときと五人に送ったときでは 絵が変わる、っていうチェンメの しくみを教えて欲しいんですが
912 :
デフォルトの名無しさん :03/07/03 16:33
>>908 設定の保存とかはできる
そういう風にプログラムされていれば・・・
だから、どっちにしてもそのサイト運営者がやんなきゃダメだ
こっち側からではどうしようもない
設計者の親切さが足りないな
せめてクッキーでも使ってくれればよかったのにな
まあ、しょうがないアプレットなんだし・・・
913 :
デフォルトの名無しさん :03/07/03 16:37
>>911 メールにはメールの内容の他に
いろんな情報が入っている部分があるんだよ
そのなかに、CCでメール送った人のアドレスがずらっと並んでる
だからそれを調べて5人だったら○○しなさいって言う具合だ
ってボケェコラ 板が違うんじゃ とりあえず絶対あやまれよコラァ
すいませんでした。 よくわかりました ありがとうございました 東京都 主婦 56
915 :
デフォルトの名無しさん :03/07/03 16:47
同packageのクラスを読み込ませたいのですが シンボルを解決できませんと表示されてしまいます。 パスとかの問題なんでしょうか? どのようにしたらいいのかよろしくお願いします。
917 :
デフォルトの名無しさん :03/07/03 16:59
>>915 クラスは読めても
プライベートなところ
つついてるんじゃないの?
FAQは先に読んでいたのですが FAQの記述だと同Package内のクラスは何もせずに インポートできると書いているんですよね・・う〜ん package A; public class test { public static void test(){ System.out.println("test"); } } package A; public class test2 { public static void main(String args[]){ test Test=new test(); test.test(); } }
>918 とりあえず、そのコンストラクタかどうかよくわからんメソッド名をヤメレ。
920 :
デフォルトの名無しさん :03/07/03 17:43
>>918 あんたね〜
staticにしてるんだったらnewする必要ないわさ
しかも
>>919 も行ってるとおり、コンストラクタと同じ名前のメソッド
でもってクラス名は小文字で始まり
インスタンス名は大文字で始まってる
いや別にいいんだけどさ
さっぱりわかってないみたいね
すいません、ではこれで・・ package A; public class test { public static void Method(){ System.out.println("Hello World"); } } package A; public class test2 { public static void main(String args[]){ test Test=new test(); test.Method(); } }
922 :
デフォルトの名無しさん :03/07/03 17:49
しかしすごいな・・・
このソースどうなりますか?
と聞かれたら、迷うな
コンパイルエラー?警告?「test」と表示?
動かしてみないとわからんかった
俺の答えはコンストラクタの返り血があるのでコンパイルエラー
だと思ったが、正解は「test」と表示
お前のおかげで、俺は今まで何やってきたんだ?と再認識させられた
ありがとう
>>918
923 :
デフォルトの名無しさん :03/07/03 17:51
だからさぁ なんでnewするのさ test Test=new test(); ←コレ無くても動くんじゃないの? っていうか、あんたのソースstaticばっかりかい?
924 :
デフォルトの名無しさん :03/07/03 17:54
ひとつ聞くが 「A」っていうフォルダを自分で作って その中に、そのクラス入れてますか?
926 :
デフォルトの名無しさん :03/07/03 18:03
なんでだろう
俺の環境では
>>918 も
>>921 も動くぞ
いったいどんなエラーが出るのか教えてください
確認のために一応聞くが、 ・ソースを置いているディレクトリ ・javacを実行しているディレクトリ ・実行するjavacコマンド、引数付き を書いてくれ。例えばこんな感じ。 ・ソースを置いているディレクトリ:C:\some\project\source\A ・javacを実行しているディレクトリ:C:\some\project\source\A ・javacコマンド:javac -d .. Test.java
>>926 ええ、いけるんですか。。何が悪いんだろう;;
エラーは シンボルを解決できません。
シンボル:クラス test test Test=new test(); です。
>>927 ソースをおいているディレクトリ: C:\java\bin\A
Javacを実行しているディレクトリ: C:\java:bin:A
javacコマンド: javac test2.java
javac -d .. test2.javaでも駄目でした・・
929 :
デフォルトの名無しさん :03/07/03 18:30
訂正 Javacを実行しているディレクトリ: C:\java\bin\A でした。
>>928 java\bin ディレクトリって sdk のインストールでわ?
何かもうわけ分からんな
つか、クラス名に大文字使わないような段階のお人は、
まだパッケージに手を出しちゃだめなり
正解は
C:\java\bin で
javac .\A\test2.java
本当の正解例は
C:\MyDocument\java で、PATH を通しておきつつ
javac .\a\Test2.java
さらにいえば *.classファイルは(ry
>>921 >>928 がネタにしか見えないんだけど。
名前付けでことごとく逆やってたり、
質問者の意識として斜め上行ったり、
ありがちな横着タコやってたり。
>>912 やっぱこっちからはどうしようもないか。。
まあ、トレイで開きっぱなしって事もできなくはないけどね。
一回閉じたら終わりってのがなんだかなあ。
とにかくサンクス。
935 :
デフォルトの名無しさん :03/07/03 19:46
入力について質問があります。 下のコードのようにユーザーに入力させて入力文字毎に条件分岐をする プログラムを書いているのですが、どういうわけか、入力文字を正しく 認識しません。 例えばaと入力したのに、条件分岐で正しくaの場合に進まないのです。 どうすればいいのでしょうか? (String st=a;みたいにすれば正しく認識されるので入力の問題みたいです。) どなたかよろしく御願いします。m(_ _)m BufferedReader myReader = new BufferedReader(new InputStreamReader(System.in)); st=myReader.readLine(); if( st =="a"){・・・} if( st =="b"){・・・}
>935 String#equals()
みなさんどうもありがとうございました。 コンパイルはいけました、、 で、、そのー起動させるとエラーになるんですが これもやり方があるんでしょうか?
すいません、いけました。 ご迷惑をおかけしました。
>>940 ありがとうございます。
しっかり読んでおきます。
>>895 そうでなのですか。
ありがとうございます。
>>900 基本的な処理系が既にJavaであるもので。
ありがとうございます。
Win2000+Tomcatでjsp内で定義したjs外部ファイルが 読み込めないのはなんで? server.xmlかweb.xmlに記述が必要?
947 :
デフォルトの名無しさん :03/07/03 23:38
double値をStringに変換するにはどうしたらいいのでしょうか?
948 :
デフォルトの名無しさん :03/07/03 23:46
String#valueOf(double) つうか、いくらなんでもそのくらいはAPIドキュメント嫁。 java.lang.Stringのメソッドだぞ…
double d = 1.23; String s1 = String.valueOf(d); String s2 = "" + d;
最低の質問をすいません。
逝ってきまつ・・・
それでも答えてくれた
>>948 に多謝です。
責任って何の責任だ?ておもた。 俺もついでに逝ってきまつ
BufferedWriterクラスにある、 flushメソッドってどういう時に使うんですか? ドキュメントには「ストリームをフラッシュします」と説明があるのですが 意味がわかりません。 教えて下さい。
訂正です。 どういうときにというか、何の役割をしているのかが分かりません。 前半部は省略してますが、この中にでてくるflushメソッドです。 ーー(省略)ーー public void writeData() { try { FileDialog fd = new FileDialog (this,"Input File name.", FileDialog.SAVE); fd.setVisible(true); String fname = fd.getDirectory() + fd.getFile(); FileWriter fw = new FileWriter(fname); BufferedWriter bw = new BufferedWriter(fw); bw.write(ta1.getText()); bw.flush(); } catch (Exception e) { System.out.println(e); } } お願いします。
>>956 bw.close() がどこにも無いね。ちょっとアレなコードかも。
FileWriter ってのは OS のファイル書き込みAPI呼ぶんだけど、
これは OS 内部でバッファリングしてる可能性があって write しても即座にディスクには書き込まれる保証は無い。
BufferedWriter はそれ自体がバッファリングしてて
write してもバッファが満タンになるまでは FileWriter に対して write しない。
flush すると BufferedWriter はバッファが満タンになってなくても自分のバッファ内のデータを全部
FileWriter に write して、FileWriter の flush() を連鎖的に呼び出す。
FileWriter の flush() は先に書いたように OS 内部でバッファリングしてても
バッファの中身をディスクに書き出すように指示する。
簡単にいうと flush() が無いとファイルの内容が尻切れトンボになる可能性があるわけよ。
ちなみに水洗トイレの水を流すことを"flush"という。
そして
>>955 よ、
この場合流されるのはウンコなわけだ。
このことを常に心に留めていて欲しい。
>>957 .958
ありがとうございます。
>>959 ある意味ありがとうござます、かな?
flush()があるこで、バッファリングされているものを直ちに書きはじめて、
かつ、全てを完全に吐きだしてくれる。
みたいなことをしてくれるって解釈でいいですか?
でも、flush()がないとなんで完全に吐き出してくれないのかが疑問なのですが。。。
>>960 flush() 無しで即座にディスクに書きに行くと
例えば for(int i = 0; i < 256; i++) out.write(i);
みたいな処理があると、そのたんびにディスクまで書きに行くことになる。
ディスクに書くってのは物理ディスクへのアクセスの遅さもさることながら
ファイルサイズとかファイルの更新日時の更新とかもせにゃいかんわけで。
結構シャレにならないわけですよ。
たぶん HDD とかの寿命も短くなるんじゃないかと。
そもそもclose()がないわけだが
>>961 いままで flush() を使ったことがなかった、、、
今度から気をつけよう。
close()について語ってください。
public class Aclass extends Applet{ Dat dat1[]; //配列になってます。数はdatnum個 int datnum; string filename; Bclass data_in; (ファイル名入力フォーム => filename) data_in.B_decode(filename,datnum,dat1[]) } class Bclass{ public B_decode(string filename,int num,Dat[],X[){ (filenameのファイルからdata数を読み込み(=>num)、Dat[num]を割り当てる。) } } class Dat(){ int a; int b; public Dat(int a,int b){ this a = a; this b = b; } } 上記のようなことをやりたいのですが、このときdatnumをBclassで読むため、 C言語的に言うならBclassでmalloc(メモリ割り当て)しないといけないと思います。 そのときAclassからBclassへどうやってdat1[]を渡せばよいのでしょうか? ぶっちゃけDatがBclassからも見えれば問題ないのですが、どうもうまくいきません。 どうか よろしくおながいします。
( ゚д゚) ポカーン
( ゚д゚) ポカーン
>>966 ファイルを読んだりする前に、「配列変数」 と 「配列オブジェクト」の違いを
明確に理解されることが必要と感じました。
>へどうやってdat1[]を渡せばよいのでしょうか?
と書かれていますが、dat1[] ってなんのことだかわかりません。
メソッドの引数として配列変数を渡すことは出来ません。
渡すことができるのは、配列オブジェクトです。
>>969 ううむ、どうも見当違いのことをやっているみたいですね。レスサンクスです。
もっかい参考書とにらめっこしてきますです。。。
新スレの季節!!
>>963-964 ソース読めば分かるが、
close()呼ぶと、flush()も内部で呼ばれるよ。
973 :
デフォルトの名無しさん :03/07/04 18:31
>>972 まあ、明示的に書くのが基本でありマナーでもある
「イク」時は「イクッ」っていうのがマナー それと同じだよ
>>963 ,964
実は使い終わったらきちんとclose()するようにすれば
そのなかでflushは呼ばれるので
ファイルについてはあんまり気にする必要がない場合も多い。
気にする必要があるのは標準出力にリダイレクトしたり
ネットワークに書いたりするとき。
flush()しないとバッファがいっぱいになるまで
ちっとも表示されなかったり
相手に届かなかったりする。
975 :
デフォルトの名無しさん :03/07/04 18:53
呼ばれないOS Unix系
976 :
デフォルトの名無しさん :03/07/04 19:21
サーブレットかJSPでセッションが終了した時に ”セッションが終了しました”みたいなメッセージをhtmlで 表示させたいんですができるのでしょうか? HttpSessionBindingEventとかを使うのでしょうか?
977 :
デフォルトの名無しさん :03/07/04 19:37
>>976 HttpSessionListenerを実装して
sessionDestroyed()で後処理ができる
ただ、ユーザに対してそれを通知するようにできるのかはわからん
だって、このメソッド呼ばれるときにはセッション切れているはずなので
どのユーザに対しておくりゃいいの?って感じ
アプリ側で切るのなら大丈夫だが・・・
BindListenerに関しても
ま、一回試してみるしかないんじゃない?
978 :
デフォルトの名無しさん :03/07/04 21:27
J2SE 1.4でXMLを,つまりDOMやSAXを勉強したいんですが, 世間ではXercesを使っている例が多いようです. しかし,デフォルトでJAXP 1.1というのが入っていて, DOMなんかが使えるようですが,一体どちらを勉強したら良いのでしょうか? もしかして,XercesはJAXPに対して何かメリットがあるんで, 一般的に使われてるのですか?
979 :
デフォルトの名無しさん :03/07/04 21:57
一般で販売されているjavaでつくったソフトってどうやって逆コンパイルを防いでいるんですか? もしくは何もやってないんですか?
逆アセンブルを防ぐのは無理なんじゃないかな
981 :
デフォルトの名無しさん :03/07/04 22:04
>>978 もうそろそろ、JAXPに移行し始めてる
>>979 何もやってない
単文字にするぐらいだろやるといっても・・・
だいたい、Javaで出回るソフトなんて
自社のために作ってくれたものだから
そんなもの逆コンパイルしたところで
意味ない
おら、なんか質問すれよ
983 :
デフォルトの名無しさん :03/07/04 23:04
JAVAのしようしょてなに?どんなこと書いてあるの?UMLなの?? あとJAVAプログラマーってコーディングする前ってなにするの? CALSSの抽出とかもやるの?
984 :
デフォルトの名無しさん :03/07/04 23:11
>>983 全部正解だよ
Javaの仕様書ってJVMのことか?
それとも、APIか?
よくわからんがどっちにしてもJavaについてかかれている
コーディングする前にClass抽出(設計)とタバコ
985 :
デフォルトの名無しさん :03/07/04 23:13
>>984 ありがと。 JVMって邪場のバーチャルマシンでしょ? APIって標準ライブラリでしょ? 自分が言ってる仕様書ってSEさんが書いてPGにつくって言ってわたす紙のこと
987 :
デフォルトの名無しさん :03/07/04 23:23
>>986 いや、Javaの仕様書って書くからさ・・
それを言うならプログラム、アプリの仕様書だろ?
UMLは一部の図しか使わない(ユースケースとか)
要件とかが大半を閉める
>>987 親切にありがとう
あと詳細設計てどのくらい詳細なの?
要件とは文の事?
990 :
デフォルトの名無しさん :03/07/04 23:31
書いてるSEにもよる(詳細さは) 要件はたとえば、大まかに言うと 「こういうプログラムを作ります」 細かく言うと 「このダイアログボックスはこういうデザインで・・・・ ここの値はユーザーが変更できるようにします」とか 動作からデザインまで細かく書かれた請求書みたいなものだ
今サーブレットやってんだけど、フツーのJAVAの開発も クラスさえ覚えればなんとかなる?
>>992 コーダーと呼ばれる立場なら、それでオケ。
設計に関わりたいなら、それだけじゃ全然ダメ。
>>993 今時コーダーなんているの?どんなプログラマでも詳細はやるだろ?
996 :
デフォルトの名無しさん :03/07/05 00:45
Java、質問、をぐぐってこちらに辿り着きました。 どうしても分からなかったので、教えて頂いて宜しいでしょうか? Javaを同じページに二つ以上使ってしまうと、片一方が動かなくなります。 両方動かすには、どうしたらいいんでしょうか? 色んなページを検索したのですが、初歩的過ぎるのか何処にも書いていなくて…。 場違いでしたら、お許し下さい。
>>996 もしかして、JavaScriptの話かな。
ここは違うよ。
>997 Appletじゃねーのかな?
2
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。