【初心者】Java質問・相談スレッド60【大歓迎】
Frame を作って setSize でサイズを指定しようとすると、 そのサイズはタイトルバー込みのサイズになってしまいます。 タイトルバーなしのサイズを指定(もしくは取得)したいのですが、 何とかする方法はありませんか?
>>4 ぉぉぉ、まさにそれです。
ありがとうございました。
6 :
デフォルトの名無しさん :05/01/14 20:05:43
前スレの969さん、ありがとうございます! これでプログラムでIEEE754の浮動小数点表現が得られ、仮数の桁数も求められる ようになったわけですが、あと切捨ての有無を調べるにはどうしたら良いでしょうか。 わかる方、教えて下さい!! 以下に今の所できているプログラムを記載します。 class FloatingPoint { public static void main(String[] args) { // 文字列 args[0] を float 型に変換 float f = Float.parseFloat(args[0]); // float 型 f のビット表現を文字列 str に変換 String str = Integer.toBinaryString(Float.floatToRawIntBits(f)); System.out.println(args[0] + " = " + str); System.out.println("仮数の桁数は" + ((0 <= args[0].indexOf('e') ? args[0].indexOf('e') : args[0].length()) - (0 <= args[0].indexOf('.') ? 1 : 0) + "です。")); } }
このスレでいいのかな? アプレットはJRE無しでも動くものなのでしょうか? それともアプレットが動くということは、JREが入っているということですか?
JRE無しで動くわけねーだろ
スレ違いだったらすいません。 javaをホームページに載せようとアップロードしてるのですが、 (クラス名)$1.class (クラス名)$2.class などのクラスファイルがアップロードできなくて困ってます。 たぶんファイル名に「$」が入ってるからダメだと思うのですが、 何か良い方法はないでしょうか? プログラムを書き直すしかないですか? どうかよろしくお願いします。
デジャブってやつか
既出質問すいませんでした。 前スレ検索して、解決できました。 とてもありがとうございました。
あの~JAVAの入門書を読んで次に何をやったらいいか途方にくれてます 少し考えたのですが、簡単なブラウザでも作ろうかと思ってるんですがいきなりは厳しいでしょうか? GUI・ネットワークの勉強にもなるとは思うんですけど・・・ 基礎本の後って皆さん何をやるんですかね? いきなりすいません 入門書の後に読む参考書でも買ってJAVAのメカニック・プログラミングでも学ぶんでしょうか? それともJSPやJDBCとかを勉強するんでしょうか? こんなおいらに何でもいいんでアドバイス下さい
17 :
デフォルトの名無しさん :05/01/15 00:33:28
まず自前ウインドウにhello world!と表示するところから順番に始めたほうがいいと思うな。マジで。
18 :
デフォルトの名無しさん :05/01/15 00:58:22
質問です。 参考として本についているCDのプログラムをコピペしてコンパイルしてみると "Untitled1.java": クラス FirstApplet は public であり、ファイル FirstApplet.java で宣言しなければなりません。 とエラーが出てきました。 他の参考書のサンプルプログラムを記述してコンパイルしても同じようなことが起こってしまいます。 この解決方法を教えてください。
>>18 エラーメッセージのとおりにファイル名を直す。
>>18 FirstApplet.javaに名前を変更してコンパイル
>>18 1つのファイル中では、publicなクラスは1つしか宣言できません。
ファイルを2つに分けましょう。
22 :
デフォルトの名無しさん :05/01/15 01:01:57
ソースファイル内に複数のクラスを宣言するときはたった一つだけ
public宣言していなければならない。
また、public宣言をしてあるクラスがソースファイル名になる。
>>18 FirstAppletクラスのpublic修飾子をはずせば動くなり!
みんな速い..。
ところで、Untitled1.javaってファイル名つけるエディタって なんだろ。メモ帳じゃないよね。
25 :
デフォルトの名無しさん :05/01/15 01:09:09
じゃあ、僕も問題出すよ。もっとも早くデータを参照できるクラスをえらんでね。 1.String[] 2.ArrayList 3.Vector 4.HashSet
ぱっと見そういうクラスなのかと思ってたよ。。
28 :
デフォルトの名無しさん :05/01/15 01:13:29
J2EEコンテナに配備したインスタンスに対して、 リモートアクセスするときはJNDI名でlookupするけど、 同じコンテナ上のアプリからのアクセスは java:comp/env/...という名前になるよね? なぜこのような違いがあるのか教えてもらえないだろうか。
早い返事、どうもありがとうございます。 修正(ファイル名をクラス名に変更、publicを除去)してコンパイルし実行してみましたが Exception in thread"main"java.lang.NoSuchMethodError:main との表示がでました(コマンドプロンプトにて) スレッドに関しての詳しい勉強はまだしていないのですが mainからプログラムが始まるということは勉強しました。 エラーに関しての詳しいことはよく分からないのですがmainの表記がないことが問題なのでしょうか? 一応次にソースがありますので分かる方教えてください。お願いします。
~始~ import java.applet.*; import java.awt.*; import java.awt.event.*; /* <applet code="SelectColor" width=400 height=60> </applet> */ class SelectColor extends Applet implements ItemListener { CheckboxGroup cbg; Checkbox red, green, blue; Canvas canvas; public void init() { cbg = new CheckboxGroup(); red = new Checkbox("Red", cbg, true); red.addItemListener(this); add(red); green = new Checkbox("Green", cbg, false); green.addItemListener(this); add(green); blue = new Checkbox("Blue", cbg, false); blue.addItemListener(this); add(blue); canvas = new Canvas(); canvas.setBackground(Color.red); canvas.setSize(30, 30); add(canvas); }
public void itemStateChanged(ItemEvent ie) { Color color; Checkbox cb = cbg.getSelectedCheckbox(); if (cb == red) color = Color.red; else if (cb == green) color = Color.green; else color = Color.blue; canvas.setBackground(color); canvas.repaint(); } } ~終~ (publicは複数記述されていますがメソッドなので問題ない・・・ですよね? すいません、よく理解できていなくてm(__)m コンパイルは成功しましたし、参考書のものなので間違いはないと思いますが。。。)
>30 そりゃ、「java SelectColor」ってしてるからでそ。 アプレットをブラウザ以外で動かしたかったら、コマンドはjavaじゃなく、appletviewer。 「appletviewer SelectColor.java」でドゾ。
>>35 class SelectColor extends Applet
> J2EEコンテナに配備したインスタンスに対して、 > リモートアクセスするときはJNDI名でlookupするけど、 > 同じコンテナ上のアプリからのアクセスは > java:comp/env/...という名前になるよね? そうとも限らない。 リモートアクセスでもjava:comp/env/...が使えるコンテナなら 使った方がよい。結合が疎になり、アプリケーションの ポータビリティが高まる。
>>17 アプレットも基本的な表示は入門書で勉強しました
だれか僕にもかまってください
39 :
デフォルトの名無しさん :05/01/15 02:11:34
うす。 C畑出身なんだけど、 class A { public String hoge() { String s = new String("hoge"); return( s ); } } このクラスのメソッドで返してるString[s]ってローカル変数でしょ? これってアリ? JAVAのガベージコレクタって、参照カウンタが残ってる限り、値を 保証してくれるの?perlみたいに。
>>37 java:comp/env/ってリモートアクセスでも使えるの?
例えばコンテナ次第で
・ローカルでもリモートでもjava:comp/env/が使える
・ローカルでは使えるがリモートでは使えない
・ローカルでは使えないがリモートでは使える
というパターンがあり得る、ということ?
あと、この辺の話はJ2EEの仕様?それともEJB仕様?JNDI仕様?
この辺の話を明瞭に解説してある資料がうまく探せなくて。
>>40 じゃー、明示的にnull突っ込んで参照カウンタ減らさないと破棄してくれないんだな。
ガベージコレクタの信頼性を聞くのは野暮だろうけど。
さんくす。
>>42 あ、でも
>String s = new String("hoge");
これはなしだな、糞すぎ。
>>43 return(new String("hoge"))
か?
>>44 >
>>43 > return(new String("hoge"))
> か?
return "hoge";
だよ。String は new しない。
>>38 マジレスしとくと、ブラウザでも既存部品を使ってやってみるとか、ともかく既存品をいじって
組み立てるようなイメージで作られるものを、ひとつずつ挑戦することだな。
プログラムは結局作ってみなければ分からないことが多い。世に発表するとかじゃなくて、
練習がてら、思いついたことが実現できそうかやってみるとか、作っては作りかけで棄てる
のを繰り返しているうちになんか分かってくる。
そんなことして遊んでいるうちに蓄積した知識で、1本くらいソフトが作れるようになる。
まず完成させる事は忘れて、ともかく実験、実験、実験で遊びまくれ。
たとえばだ、フツーのTextFieldにメールアドレスがあったら青くしてクリックしたら
別の画面が開くようにするにはどうしたらいいか? とかそういうぱっと思いついた
単機能で遊んでみるのが楽しいと思う。
>>45 javadocに
String str = "abc";
は、次と同じです。
char data[] = {'a', 'b', 'c'};
String str = new String(data);
と、書いてあるぞ。
しんたくすしゅがーじゃないのか。
もしかして、JAVAって文字列はStringになんの?char[]じゃなくて?
>>41 EJB仕様でもJ2EE仕様でもなく、JNDI仕様の範疇だが
仕様では明確に規定されていない、コンテナ依存の部分だな。
・ローカルでは使えないがリモートでは使える
というパターンも理屈ではあり得るが実際にはほぼ無いと考えていいだろう。
リモートで使うにはグローバルJNDI名と関連づける「何か」が必要。
たとえばJBossだったらjboss.xmlとかjbossweb.xmlなどで関連づけを行う。
明確な資料は思い当たらないな・・・・
JBoss入門(技術評論社)とかはわかりやすいが、ここですべて解説されているかと
いうとそうでもないし。
>>47 文字列はStringクラスのインスタンスだよ。しかも同じ文字列は使い回される。
でもnewしたら使い回さずに新しいインスタンスを作るから非効率。
>>49 [String クラスは文字列を表します。Java プログラム内の "abc" などのリテラル文字列はすべて、このクラスのインスタンスとして実行されます。 ]
書いてあった。すまんこ。
さんくすこ。
>>47 String str1 = "abc";
char data[] = {'a', 'b', 'c'};
String str2 = new String(data);
System.out.println(str1==str2);
System.out.println(str1.equals(str2));
「同じ」っていったときに二つの意味があるんだよ。
あと、
String str3 = new String("abc");
System.out.println(str1==str3);
System.out.println(str1.equals(str3));
の違いもこのスレだと定番。オブジェクト生成
のコストも違う。
>>48 リモートアクセス→lookupしてPorableRemoteObject#narrow
ローカルアクセス→lookupで直接取れる
という前提はまず正しいだろうか?
んで、グローバルで一意なJNDI名が定義してあれば、
基本的にローカルでもリモートでもJNDI名で
lookup出来るんだよね。
その上で、java:comp/envを使うと、
・java:comp/env/参照名でアクセスできるので、
JNDI名をソースにハードコーディングせずに済む。
・同一コンテナ上の異なるアプリで同じ参照名が使われた
としても、java:comp/env/参照名としているとコンテナ側
で名前衝突を回避してくれる。
といったメリットがあるから、なるべくjava:comp/env/を
使うべし、ということでいいかな。
> リモートアクセス→lookupしてPorableRemoteObject#narrow > ローカルアクセス→lookupで直接取れる > という前提はまず正しいだろうか? まあそうなんだけど。 JNDIクライアントは、リモートアクセスするのかローカルアクセスするのかは 意識せずに透過的に扱えるのが望ましいから、 リモートだろうがローカルだろうがPorableRemoteObject#narrow()したほうが安全。 > んで、グローバルで一意なJNDI名が定義してあれば、 > 基本的にローカルでもリモートでもJNDI名で > lookup出来るんだよね。 そう。 > その上で、 ~ 中略 ~ > といったメリットがあるから、なるべくjava:comp/env/を > 使うべし、ということでいいかな。 そう。
55 :
デフォルトの名無しさん :05/01/15 10:54:51
> の違いもこのスレだと定番。オブジェクト生成 > のコストも違う。 C厨じゃねーんだから、百済ねーこと気にする暇あったら、アルゴリズムでも最適化しろ、ボケが!
>>55 いや、くだらなくないと思うよ。と釣られてみる。
57 :
デフォルトの名無しさん :05/01/15 12:35:30
せこせこ実行速度を気にするやつは、Javaなんかやめちまいな!
58 :
デフォルトの名無しさん :05/01/15 12:50:44
直接Javaには関係ないんですが、MYSQLと連携したプログラムを作りたいと思って います。win98でmysql4.0.13に環境変数PATHを設定する場合、どうしたら良 いでしょうか。(mysqlはC:\の直下にあります) ちなみにAutoexe.batに付け足すのはわかっているんですが・・・
61 :
デフォルトの名無しさん :05/01/15 15:15:22
時系列の株価をグラフ表示するアプリケーションを作ろうと思っています。 株価データを取得し、移動平均等を計算するクラスを作って、 SwingのGUIのボタンなどで株価データを扱うようにはできました。 あとは、グラフを表示するところなんですけど、 Canvasを拡張してpaint()をオーバーライドするのかなと思っていますが、 合ってますか? 拡大表示できるようにして、スクロール可能にしたいと思っています。 ScrollPaneに乗せるだけで実現可能でしょうか? あと、表示するグラフの種類(ローソク足とか移動平均とか)をJCheckBoxで選択したいんですけど 選択したグラフの種類のデータは、 Canvasを拡張したクラスに変数を作ってGUIで操作される度にsetするのと CanvasにGUIのクラスへの参照を持たせて、JCheckBoxのisSelected()で判断するのと どちらが良いですか? 以上、よろしくお願いします。
tomcatとapacheと連携させていますが、 サーブレットに対してアクセス制限をかけたいです。 IPアドレスで許可または拒否するにはどうしたらいいでしょうか? できれば拒否または許可リストを、標準入力で読み込んでできるとナイシなのですが。 ちなみにjspファイルには何もしたくありません。
63 :
デフォルトの名無しさん :05/01/15 16:35:55
JAVA逆引き大全500っていう本を前に買ったんですけど、550っていうのが出てるらしいのです。 いったい何が変わったのでしょうか? 後、みなさんはリファレンスとして、やはり本を買って使っているのでしょうか? もし使っているのでしたら、その本のタイトルも教えていただけるとありがたいです。
>>61 >Canvasを拡張してpaint()をオーバーライドするのかなと思っていますが、
>合ってますか?
それはAWT
Swingの基本なのでテンプレふくめ少し検索してみるといい
わかりやすくヒントをいうとSwingはある意味すべてのコンポーネントがCanvas
import java.io.*; class testTyping { public static void main(String args[]) { int i; while(true) { System.out.println("小文字の英文字を大文字の英文字にします。"); System.out.println("小文字の英文字を入力して下さい。"); try { i=System.in.read(); } catch(IOException objioexception) { System.out.println("input erro"); return; } if('E'==(char)i) { return; } i=i-32; //小文字から32を引くと大文字の英文字になります。 System.out.println((char)i); } } }
すいません、ソースだけ先走ってしまった・・・
以下の質問お願いします
http://www.geocities.jp/onearchangela/javaex/javaex0005.htm このサイトのプログラム(
>>65 )を実行したのですがうまくいきません
内容は、入力する小文字を一字づつ大文字にして'E'が入力するまで続けるものです
どこがおかしいのかと言うと、例えば
小文字の英文字を大文字の英文字にします。
小文字の英文字を入力して下さい
の時に、'a'を入力すると
小文字の英文字を大文字の英文字にします。
小文字の英文字を入力して下さい。
a
A
小文字の英文字を大文字の英文字にします。
小文字の英文字を入力して下さい。
?
小文字の英文字を大文字の英文字にします。
小文字の英文字を入力して下さい。
?
小文字の英文字を大文字の英文字にします。
小文字の英文字を入力して下さい。
となります
何故か?と待ち受けプロンプトがいくつも表示されます
他の入力でも同じ感じです
ソース見てもそうなるとは思えないし、'?'が出てくる事事態が謎です
67 :
デフォルトの名無しさん :05/01/15 18:27:37
ArrayListに同じObject型(例:Employee型)のObjectを たくさん格納しています。 で、この中から同じ社員コードを持ったEmployeeオブジェクトを 排除してしまいたいのですが、何か言い方法はありませんでしょうか。
68 :
デフォルトの名無しさん :05/01/15 19:14:09
Tomcat3.3.2+Apache1.3.29(mod_jk1.3)で、
例えば
http://hoge/examples/ ってやったときに
(examplesはContextで登録済み)ディレクトリのリストが
表示されるんだが、このリストを表示させないようにしたい。
どうすればいいんだろう?
Tomcat4系だと、web.xmlに
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
にすればいいらしんだけど、
Tomcat3でweb.xmlにこのエントリを買いても
うまくいかない。
教えてエロい人~
今、初めてこのスレにたどり着いたんだけど、J2SDK5.0ってどうなの? 1.4.2_06から乗り換える価値あり?不具合とかバグとかが心配なんだけど、あんまりそういう話聞かないし・・・
>>70 実務じゃないけど、趣味でJava系のプログラム(GUI系やWeb系)を配布してるから・・・
しょうもないバグがあったり・・・とかで時間を喰われたくないんだ。
>>71 不特定多数に配るんじゃどっちにしろ5.0系での動作確認は
やることになるだろ。
73 :
デフォルトの名無しさん :05/01/15 21:26:40
test.txtというテキストファイルの各行の 10文字目以降の文字を読み込むプログラムを作りたいのですが、うまくいきません。。 substring()を使うと思うのですが、どうすればいいのでしょうか? 現在のソースは以下のようになっています。 FileReader fr = new FileReader("test.txt"); StreamTokenizer st = new StreamTokenizer(fr); String instring; while(st.nextToken() == StreamTokenizer.TT_NUMBER){ i++; a[i-1]=st.nval; } fr.close();
>>73 File f = new File("test.txt");
FileChannel channel = new FileInputStream(f).getChannel();
ByteBuffer buffer = ByteBuffer.allocate((int)f.length());
channel.read(buffer);
channel.close();
buffer.clear();
byte[] bytes = new byte[buffer.capacity()];
buffer.get(bytes);
String s = new String(bytes);
String[] line = Pattern.compile("\\n").split(s);
for(int i=0; i<line.length; i++){
line[i] = line[i].substring(10, line[i].length());
}
こんな感じではだめ?
HogeClass a ; //実体が生成されない int b ; //実体が生成される HogeClass c = new HogeClass; //実体が生成される int d = new int ; //駄目 HogeClass[] e ; //実体が生成されない int[] f ; //実体が生成されない HogeClass[] g = new HogeClass[10]; //実体が生成されない int[] h = new int[10] ; //実体が生成される 何か納得いかないのは俺だけか。 皆、ここで躓かないのか。 C馬鹿の俺に、納得いく説明を誰か頼む。
>>74 java.nioかよ。
>>73 java.ioとsubstringを使ったバージョン。
List resultList = new ArrayList();
BufferedReader fr = null;
try {
fr = new BufferedReader( new FileReader("test.txt"));
for( String line = fr.readLine(); line != null; line = fr.readLine()) {
String wanted = line.substring( 9, 10);
resultList.add( wanted);
}
//内容を表示
for( Iterator iter = resultList.iterator(); iter.hasNext(); ) {
String forPrint = (String)iter.next();
System.out.println( forPrint);
}
} catch( IOException e) {
e.printStackTrace();
System.exit(1);
} finally {
if( fr != null) {
try{
fr.close();
} catch( IOException e) {}
}
}
>>70 CRLF・・・キャリッジリターン・・・
解りません、CRLFだけでは読み取れないです
もう少し詳しく教えてください、お願いします
>>66 70じゃないけどな
i = 'a';
i = '\r';
i = '\n';
>>75 1と2は大丈夫でした。
3は少し。
4は何回かミスを。。
プリミティブの変数と普通のオブジェクトは別に考えてるから気にならないのかも。
>>75 「実体」の意味が行によってまちまちじゃないか。だから納得いかんのじゃないか?
HogeClass a ; //変数が作成される
int b ; //変数が作成される
HogeClass c = new HogeClass; //インスタンス(実体)が生成されて、変数cにその参照が代入される。
int d = new int ; //intはclassじゃないんだからnew演算子が使えるわけないだろがボケ。
HogeClass[] e ; //配列型の変数が作成される(中身は空)
int[] f ; //配列型の変数が作成される(中身は空)
HogeClass[] g = new HogeClass[10]; //配列型の変数に、10個分のHogeClass用領域をもったArrayクラスのインスタンス参照が代入される。
int[] h = new int[10] ; //配列型の変数に、10個分のint用領域を持ったArrayクラスのインスタンス参照が代入される。
何の矛盾も無いな。
>>74 >>76 jdk1.3を使っているので
>>76 さんのでうまくいきました。
java初心者でわかりにくい質問だったと思いますが、
早急な解答をお二方ともありがとうございました。
>>78 ありがとうございます
つまり、'a'以外にもprintlnの'\n'、リターンキーを押した時の'\r'の事でしょうか?
>>66 のサイトにはその事について触れて無いんですけど間違い?
83 :
81(73) :05/01/15 23:20:53
すみません、
>>81 (
>>73 )の者ですが、
ファイルによってはプログラムを実行すると
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -2
というエラーがでます。
各行の10文字目から2文字前を見てみると、半角の英語でした。
(他はスペースか数字)
これはどういったエラーなのでしょうか?
>>83 間違ったインデックスを参照しようとして発生する例外です。
10文字未満しかない行で10文字目以降をsubstringしようとしたりしたせいかも。
長さによって処理を変えましょう。
それと、76のsubstringはline.substring(9, line.length())にしないといけない気が。
>>84 あー、そだね。よく見てなくて、10文字目をとってくるように書いてしまった。
あとOutOfBounds(範囲外)例外は10文字目がないから起きてるんでしょうね。というわけで修正してみた。
List resultList = new ArrayList();
BufferedReader fr = null;
try {
fr = new BufferedReader( new FileReader("test.txt"));
for( String line = fr.readLine(); line != null; line = fr.readLine()) {
if( line.length() >= 10) {
String wanted = line.substring( 9, line.length());
resultList.add( wanted);
} else { resultList.add( ""); }
}
//内容を表示
for( Iterator iter = resultList.iterator(); iter.hasNext(); ) {
String forPrint = (String)iter.next();
System.out.println( forPrint);
}
} catch( IOException e) {
e.printStackTrace();
System.exit(1);
} finally {
if( fr != null) {
try{
fr.close();
} catch( IOException e) {}
}
}
86 :
デフォルトの名無しさん :05/01/15 23:59:15
stringをdoubleに変換する方法教えてください
87 :
81(73) :05/01/16 00:04:46
>>86 double d = Double.parseDouble(string);
J2SEをインストールしましたが、J2EEも入れる必要はありますか? そもそもJ2EEとはなんなのでしょうか?
>>89 今のあなたにはたぶんいらない。
J2EEはJSP/Servlet/EJBといったWebアプリケーション用のエディションです。
>>90 アプレット作成だけなら不要なんですね。ありがとうございます。
>>80 んなこたーわかってんだよ!
HogeClass a ; //(参照を格納できる)変数が作成される
int b ; //(参照ってなんですか)変数が作成される
Cばっかやってると、この二つが心情的に納得いかねーんだよ!
Stringで混乱すんだよ!
String[] s = new String[10];
で、「よーしパパ文字列10個作っちゃったぞ~」とか勘違いしがちなんだよ!
s[0]とか参照してコンパイラに「何いってんの?」とか言われると
逆切れしたくなるんだよ!
>>92 おれも最初やったなぁ
Object[] objs = new Object[10];
objs[0].toString();
とかやるとぬるぽ
Javaで
HogeClass a;
ってのはC++だと
HogeClass& a;
なんだよ。だから
a = new HogeClass();
って実体を作ってやんなきゃならん
>>66 あー、じゃあ
System.out.println((char)i);
これ、
System.out.println(i);
System.out.println(",");
にして、アスキーコード表とにらめっこしな。
>>93 やっぱ、
「JAVAはクラスの場合デフォでエイリアスでその上参照先変更可」
と憶える他無いのか。
俺は気分が悪い!帰るよ!
96 :
デフォルトの名無しさん :05/01/16 01:02:45
Eclipseを使い始めてわからない事があり、Eclipseスレで質問したのですが、
Java自体初心者という事で別スレ行けといわれたのでこっちに来て見ました。
というか質問の内容がEclipseってわけじゃないようなんですが・・・
Eclipseでdoclet(javadocのカスタマイズ)を書いているのですが
Eclipseでどうやって実行させればいいんでしょうか?
ファイルのエクスポートからJavadocを選んだのですがどこに何をいれたら
いいのかわかりません・・・
Javadocコマンドにはtools.jarを指定、ドクレット名に自作ドクレットの名前、
ドクレットクラスパスはそのソースのパス、を入れて終了おしたのですが
うまくいきません・・・
エラーメッセージはこんな感じです。
http://www.uploda.org/file/uporg31221.jpg あとjavadocのソースコードは公開されていると聞いたのですが
どこを探してもみつけれません・・・
どこにあるのでしょうか?
Sunのサイト・・・?
"やさしいJAVA"でオベンキョしてるけど GUIを作れるようになるのはマダー? 電卓とか作りたいなぁ・・・
Cばっかやってるっていってるんだから、C++じゃなくてCで説明したほうが よかないか。 ・Object objは、HogeRec *hogeRecみたいなもん。 ・Object[] objs は、HogeRec *hogeRecsみたいなもん。つまり上と変わらん。 ・obj = new Object() は hogeRec = malloc( sizeof( HogeRec)) みたいなもん。 ・objs = new Object[5]は、hogeRecs = malloc( sizeof( HogeRec) * 5)みたいなもん。 だからString[] s = new String[10] は stringArray = malloc( sizeof( String) * 10) のようなものに過ぎん。 そりゃCでもstringArray[0]とか参照したら、「なにいってんの?」すら言ってくれずにバスエラーだろ。 「文字列10個つくっちゃったぞー」ではなくて、「文字列10個分のメモリ確保したぞー」なわけだから。 おれは上記のような理解でいったので、そこでは躓かなかったなあ。 誤解を恐れずに言えば、JavaにはCのような意味での「配列」という型はないんだな。 あるのは「Arrayクラス」だけ。でStringが言語仕様に組み込まれているのと同じように、Arrayも 言語仕様に組み込まれている.....というよりも特別扱いされてて、なんとなくCっぽく使えるようになって るけど、基本的にはやっぱりオブジェクトであることに変わりはない。
>>97 GUIなんてそんなに楽しくないよ。
絵を描くなら別だけど。
言語とかつくるほうが楽しそう。
>>98 っつーか、C にマトモな配列が無いのでは。引数で渡すとポインタに成り下がったりとか。
あと、Arrayクラスってーのは文脈を見るに配列型だね。
Array(java.lang.reflect.Array)はリフレクションで配列にアクセスするためのユーティリティクラス。
>>96 > Javadocコマンドにはtools.jarを指定
そこは使用する javadoc.exe をフルパスで指定する場所。
103 :
デフォルトの名無しさん :05/01/16 01:16:00
テキストフィールドに入力した実数をdouble型で宣言してる変数に代入するにはどうしたらいいですか?
104 :
96 :05/01/16 01:18:56
>>102 javadoc.exeてのは標準javadocですよね?
それはどこにあるんでしょう・・・?
>>103 String string = textField.getText();
あとは
>>88 つーかAPI嫁
>>104 JDKをインストールしたディレクトリ\bin\javadoc.exe
107 :
66 :05/01/16 01:37:03
>>94 やってみました、納得です
System.out.println(i);
に変更して
>>66 と同様'a'を入力すると結果が三つ
65,-19,-22
i=i-32; を考慮するとアスキーコードで97,10,13
にらめっこした結果'a'とCRとNL
System.out.println(","); の結果は三つ','でした
','とリターンキーでwhile分が3回ループしている事がわかりました
どうもです
108 :
96 :05/01/16 01:40:23
>>106 おお、ありがとうございます、とりあえず実行はできました!
ところがまたエラーが・・・
javadoc: doclet クラス DocSearch が見つかりません。
エラー 1 個
というやつなんですが。
読み込むソースはJavadocが生成される型の選択 てとこで
指定するんですよね?
ちなみにDocSearchてのが自分で作った奴です。
クラスパスはEclipseで作ったのがここにあるのでこんな感じで
指定してるのですが・・・
C:\Program Files\eclipse\workspace\DocSearch\src
>>108 ソースパス示してどうするよ。いちどエクスプローラで
そこみてごらん。classファイルないから。
>>108 勘でレス。
>C:\Program Files\eclipse\workspace\DocSearch\src
最後のsrcはいらないと思う。
これはEclipseの話です。
あるいはカレントディレクトリにクラスパスが通ってない??
クラスパスに.(ピリオド)があるかどうか確認してください。
これはJava一般的な話。問題の切り分けが難しいですね。
111 :
96 :05/01/16 01:48:38
>>109 、110
おお!無事できました!
ありがとうございました!
112 :
デフォルトの名無しさん :05/01/16 01:51:14
java.lang.NumberFormatException: empty String at java.lang.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:983) at java.lang.Double.parseDouble(Double.java:220) at test3.init(test3.java:19) at sun.applet.AppletPanel.run(AppletPanel.java:353) at java.lang.Thread.run(Thread.java:534) 上のエラーは何ですか?
あ、それでjavadoc(標準doclet)のソースコードはどこにあるか わかるかた、教えてもらえたらありがたいです・・・
というか、日本語ドキュメントの標準docletの説明読めば そこからリンクされてる。
|
|
∩___∩ | ぷらぷら
| ノ _, ,_ ヽ (( |
/ ● ● | (=)
>>112 | ( _●_) ミ _ (⌒) J ))
彡、 |∪| ノ
⊂⌒ヽ / ヽノ ヽ /⌒つ
\ ヽ / ヽ /
\_,,ノ |、_ノ
122 :
92 :05/01/16 03:32:34
>>98 >・objs = new Object[5]は、hogeRecs = malloc( sizeof( HogeRec) * 5)みたいなもん。
あら、そうなのか。
hogeRecs = malloc( sizeof( hogeRec) * 5)
だと思ってたよ。
つまり、Cで言うポインタ配列。
ぶっちゃけ
HogeRec *hogeRec[5];
これと等価かと思ってたんだが、めんどくせぇな、おい!
>>92 Stringで混乱するのは単に、Cが本来は「文字の配列」でしかないchar[]を
「文字列」として扱っているところに問題があるかと。
JavaやC#では「文字列」は本当に「文字列」として扱う(C++はやや微妙)。
あと実体が生成されたりされなかったりと言ってるけど
単に初期値がnullか0かの違いに過ぎないわけで。その意味で
>String[] s = new String[10];
>で、「よーしパパ文字列10個作っちゃったぞ~」とか勘違いしがちなんだよ!
ってのは別に勘違いじゃないじゃん。
初期値のnullが入ってるけどStringは10個あるんだから。
(もちろんint[] i = new int[10];ならintの初期値の0が入ってるだけ)。
>>122 98が間違い。
Object[] objs = new Object[5]はHogeRec **hogeRecsみたいなもん。
その意味でポインタ配列みたいなもんというのはあってるがHogeRec *hogeRec[5]ではない。
だからhogeRecs = malloc(sizeof(HogeRec *) * 5)となる。
もちろんhogeRecs[0]を使う前にはhogeRecs = malloc(sizeof(HogeRec))が必要なのはいうまでもない。
125 :
98 :05/01/16 09:05:37
>>124 たしかに間違ってたよ。ポインタの配列だからね....
object[] objs = new Object[10]; オブジェクトを作成、参照を配列の要素に格納 objs[0] = new Object(); objs[1] = new Object(); objs[2] = new Object();
128 :
デフォルトの名無しさん :05/01/16 12:40:53
あのObjectInputStreamを継承したクラスのコンストラクタで public class MyObjectInputStream extends ObjectInputStream { public MyObjectInputStream(InputStream in)throws IOException{ super(in); //その他の処理が続く } //続く } と、スーパークラスのコンストラクタにInputStreamを渡しています。(使用時はソケットから得たInputStream) 大抵の場合はこれでうまくいくのですが、たまに、super(in);のところでEOFExceptionが出ます。 データの読み込みのところでEOFExceptionが出るのであればまだわかるのですが、 ここででるのはさっぱり意味がわかりません。 で、今手元にスタックトレースの結果がないので(諸事情で)、わかりにくいかもしれませんが スーパークラスのコンストラクタの処理の中のreadFullyメソッドで最終的にはEOFExceptionが出てしまっている ようです。 このような症状を経験された方いらっしゃらないでしょうか?
129 :
デフォルトの名無しさん :05/01/16 14:52:06
htmlを表示するアップレットを作ろうと思っています。 どうでしょうか?
130 :
デフォルトの名無しさん :05/01/16 15:30:36
JavaDocumentのFileChannelの説明で >RandomAccessFile インスタンスの getChannel メソッドで取得したチャネルは、 >インスタンスがモード「r」で作成された場合は読み込み可能、 >モード「r」で作成された場合は読み込みと書き込みが可能です。 ってかいてあるけど 2番目の「ら」は「w」だよね
131 :
デフォルトの名無しさん :05/01/16 15:37:30
ブッブー
文字列の考え方ってこれであってる? String[] hogeA = new String[1]; String[] hogeX = new String[1]; hogeA[0] = "ABC"; hogeX[0] = hogeA[0]; hogeA[0] += "DEF"; // hogeA[0] = "ABCDEF" , hogeX[0] = "ABCDEF" String hoge1 = "ABC"; String hoge2 = hoge1; hoge1 += "DEF"; // hoge1 = "ABCDEF" , hoge2 = "ABC"
133 :
デフォルトの名無しさん :05/01/16 17:20:28
指定したファイルを読み出して!で始まる命令でその命令に従って ファイルの内容を変換して出力するというプログラムを作ろうと思うのですが その命令というのは!RIGHT で右寄せ !CENTERで中央寄せ !LEFTで左寄せという風にしてます。 readLineメソッドで読み込んでif分で比べていき、 その後出力するという方法なのですがだと思うのですが。 出力は一行ずつすればよいのかまとめて出力するものなのかよくわかりません。 どなたか力を貸してもらえないでしょうか?
>129 どうでしょうかと言われても。作りたければお好きなように。 >132 なぜそこまで書いて、mainメソッドとクラス宣言書いてコンパイルする手間を惜しむ? (訳: 自分でやってみれ) >133 どっちでもいいと思うが普通はバッファ処理はBufferedWriterに任せて プログラムからは1行ずつたらたら書き出すもんじゃないかと思われ。
イベントリスナの実装は、一般的にどのタイミングで、 実装されるべきもの何ですか?
136 :
デフォルトの名無しさん :05/01/16 18:14:35
String型の文字列をchar型の配列に代入(コピー)したいんですが、どのようにすればいいんでしょうか? test2.java:53: 互換性のない型 検出値 : java.lang.String 期待値 : char[] s=str1; /* そのまま入れるとコンパイルエラーになります。 */ ^ エラー 1 個 お願いします。
>>136 s = str1.toCharArray();
>>134 なるほど・・・。
一応ストリームの分でBufferedWriterを見たのですが
ちょっといまいち自信がありませんでした。
頑張って解いてみます
140 :
136 :05/01/16 19:07:16
141 :
デフォルトの名無しさん :05/01/16 21:03:05
import com.oreilly.servlet.MultipartRequest; でエラーになるんだけど このパッケージって何かのjarファイルをダウンロードして CLASSPATH通せばいいんですか? 環境はTomcat5 です
キーボードから入力した文字の一番目と二番目の文字を取り出し、さらにそれを 整数に変換するため、 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); char ch1 = str.charAt(0); char ch2 = str.charAt(1); int res1 = Integer.parseInt(ch1); int res2 = Integer.parseInt(ch2); と売ったのですが int res1 = Integer.parseInt(ch1); int res2 = Integer.parseInt(ch2); のところでえらーがでます。原因はなんでしょうか?
144 :
デフォルトの名無しさん :05/01/16 22:33:22
売った×→打った
先ほど質問をしたものです。 作っていたところに新たに疑問点が生じましたのでご教授ください。 133でいっていた命令で !LEFT これ以降の行を左寄せで出力 !begin これ以降の行を出力 !end これ以降の行を出力しない 命令がない場合は!LEFTと同等の効果が現れるようにしたいと思ってます。 !LEFT プログラム作成中 とすると プログラム作成中 と表示されるとしたいのですが。 なまじ命令がないところは!LEFTと同じようにしないといけないためちょっと混乱しています。 BufferedReaderで1行ずつ読み込んでいこうとは思ったもののちょっと壁にぶち当たっています。
JAVAでOS依存と言うのは邪道かもしれませんが、 COMオブジェクトを作成する方法は何かありますか?
オレが最近までしていた思い込み。 char = -128~+127 byte = 0~255
>>145 どっち寄せかという情報と、出力するかどうかというフラグを変数で持て。
そのものを書くと意味ないからヒントだけにしておくが。
aが0なら左、1なら中央、2なら右
pが0なら出力しない、1なら出力する
>>147 俺が今現在進行中で思い込んでるんだが、俺を救ってくれ
>>150 おお、正にぴったりな感じですね。どうもです。
ちょっと試してみます。
>>151 char 0u0000~0uFFFF (int換算で0x0000~0xFFFF)
byte -128~+127
>>153 そうそう、charが2バイトだって知ったときはめちゃめちゃショックだった。
char=1文字=UNICODEだから2バイトなんだよね。
>>151 char 0~65535
byte -128~127
げ、かぶった。スマソ intが速くて、十分でかいからshortとかlongとか ほとんど使ったことないなあ。。。
最近のCPUって4バイト単位の処理が一番速いんだっけ? メモリに余裕があるなら小さな数値しか扱わなくてもbyteよりintの方が速いとか。
>>154 UNICODEなのか!
だから、OBEXのNameHeaderをchar[]に受け取れるのか。
今まで、Hoge((char)byteBuff)とか書いてた俺は馬鹿ですか。
そして、byteはunsignedじゃないのか。
なんか、自分が小さく見えてきたよ。
>>158 8ビット時代からやってる人にとっては今までの常識が通用しないこともある。
>>159 unsigned byte無いの?
byte b = 0xff;
これOK?
>>160 符号付整数型
整数のリテラルは内部的には int 型に解釈されます。
byte, short 型変数へ代入すると、自動的に型変換されて代入できます。
byte, short への代入は、代入先の変数の型に合わせて自動的に型変換されます。
無論、データ型の表現できる数値の範囲を超えたリテラルは代入できません。
だそうだ。
そもそも基本データ型に符号無しが存在しないから、特に事情がない限りは
整数はintかlongで扱えということなんじゃなかろうか?
16進数表記のアルファベット部分を小文字にしようか大文字にしようか迷っています。 どちらが好きですか?
>>163 アセンブラなら大文字、他の言語なら小文字。
個人的には大文字のほうが好きだけど、大きいプロジェクトで
多人数でやるときに困るから小文字で書くクセをつけた。
>>162 JSPの勉強をするのにApacheはいらない。Tomcat単体で勉強すれ。
書き込みのように、JSPではないよけいな箇所でつまづくし
問題が起こったときに原因の切り分けも難しいだろう。
>>161 じゃ、通信バッファをint配列で扱うのか。
RAM無駄にしてる気がしてやだなぁ。
特にiαppliとか作ってると。
JAVAじゃ無理な事なんだろうが、ROM書き換える時とか、面倒そうだな。
>>166 iアプリだと速度とメモリの兼ね合いじゃない?
端末によってコアも違うから、必ずしもintが最速とは限らないし。
>>165 そうなんですか、
>>162 のサイトを参考にしてたんですが・・
確かに処理はTomcatとApacheで区別するってありますね
それでも、コネクタをダウンロード・解凍してみたのですがなんか違うっぽい・・・
>169 いや、162で書いてるのってIIS(マイクロソフト製Webサーバ)とのコネクタだし。 ついでにJK2コネクタはもうメンテされないそうだから忘れてよし。
>>167 byte b = (byte)(0xff & in.read());
こういうの、だいじょぶ?
>>168 だな。
ただ、俺の携帯SH系で16ビット最速のはずだし、やっぱintか。
byte a = 255; // エラー byte a = 0xff; // エラー byte a = (byte)255; // a = -1 byte a = (byte)0xff; // a = -1 byte a = (byte)0xffff; // a = -1 byte a = (byte)0xff80; // a = -128 byte a = (byte)0x80ff; // a = -1 (byte)NでキャストすることでN & 0xffされて、その結果を符号付byteとして格納されるっぽい。
もし符号なしの0~255の1バイト長データの配列があったとして、 それをソートしようと思ったらJavaだとどうするのが最も効率がいいんだろう?
>>170 わかりました、忘れます。有難うございました
技術が枯れるのははやいですね
>>171 |byte b = (byte)(0xff & in.read());
|こういうの、だいじょぶ?
言いたいことはわかるが、in.read()が-1を返したときに
判別できなくなるから、だいじょばない。
>>177 そ、それぐらい知ってるよ!
ばーか、ばーか
read()は結局のところ、一旦intで受け取るかbyte配列に読むしかないんだね。
顔を真っ赤にしてうつむき加減にキーボードを叩く
>>178 の姿が目に浮かぶようです。
jarファイルをダブルクリックしてソフトが起動出来るようにしたいのですが そうするには C:\Program Files\Java\jdk1.5.0\bin\java.exeに関連づけすれば良いのでしょうか
>>146 と
>>150 見て思ったが、JavaBeansでは無理?
Java(Beans)をActiveXにできるんだから、
「JavaでActiveXを叩く何か」も用意されてて良いような
気がするんだが・・・ぐぐっても見つからなかったorz
あまり需要ないのかな。
184 :
デフォルトの名無しさん :05/01/17 03:44:51
今日からつかえるJSP&サーブレットサンプル集を見て、勉強しているのですが、行き詰っています。 スレッド式掲示板を作るというサンプルがあって、新規投稿の部分を作っています。 ************ new.jsp ************ bean_bbs objBbs = new bean_bbs(); //sbmがnullのとき、すなわち初めてこのページが開かれたとき if(request.getAttribute("sbm") == null){ <form method="post" action="new.jsp" name="fm"> 件名<input type="text" name="title" size="70" maxlength="25"> 名前<input type="text" name="nam" size="70" maxlength="10"> パスワード<input type="password" name="passwd" size="15" maxlength="15"></td> <textarea name="article" cols="70" rows="15"></textarea> <input type="submit" name="sbm" value="投稿"> </form> }else{ //bbs_beanのsetArticleメソッドでは、引数で渡されたもの (掲示板の投稿内容)をbbsテーブルにINSERTしています。 objBbs.setArticle((String)request.getAttribute("title"), (String)request.getAttribute("nam"), (String)request.getAttribute("article"), (String)request.getAttribute("passwd"),"0","0"); }
>>185 そうなんですか
参考書を読みながらやってたのですが
C:\Program Files\Java\jdk1.5.0\demo\jfc\Notepadにある
jreをダブルクリックして起動してみましょうと書かれてたのですが、動かなかったのでおかしいなぁと
再インストールしたら出来ました。ありがとうございます
188 :
デフォルトの名無しさん :05/01/17 08:09:48
Cで scanf("%d %d", &h, &w);は、javaではどのように記述したらいいんでしょうか? あと 123 456 789 のようなデータを num[0][0]=1,num[0][1]=2,num[0][2]=3 num[1][0]=4,num[1][1]=5,num[1][2]=6 num[2][0]=7,num[2][1]=8,num[2][2]=9 の2次元配列に格納するにはどのようにしたらいいんでしょうか?
189 :
デフォルトの名無しさん :05/01/17 08:48:14
>>188 int[][] num=new int[3][3];
num[0][0]=1,num[0][1]=2,num[0][2]=3
num[1][0]=4,num[1][1]=5,num[1][2]=6
num[2][0]=7,num[2][1]=8,num[2][2]=9
か
int[][] num={{1,2,3},{4,5,6},{7,8,9}};
こんな感じ
190 :
デフォルトの名無しさん :05/01/17 09:09:19
クライアントPC:Windows サーバ:UNIX 上記環境でクライアントPCのローカルディスク上のファイルをWEBブラウザ(JSPページ)を通してサーバ側にアップロードするものを作りたいのですが、 サーバ側のプログラムでC:\~と言うパスを認識させることって可能なのでしょうか?
>>190 サーバ側でクライアントのパスを認識する必要はない
>>186 SWTでのCOMサポートは限定的なものだからお勧めしない。
193 :
190 :05/01/17 10:19:29
>>191 さん
ありがとうございます。
クライアント側からデータを送信して、
それをサーバ側が受け取り、所定の場所に吐き出すようにすれば良いのでしょうか?
>>193 その通り。
Jakarta-commonsのFileUploadでも使うがいい
195 :
デフォルトの名無しさん :05/01/17 10:36:50
恐れ入ります。 staticのクラスの中からstaticでない別のクラスの変数を参照したり、 変数に値を代入する方法はありますでしょうか?
引数でオブジェクトもらえ。 クラスにはアクセサメソッド実装しておけ。
>>194 さん
ライブラリまで教えていただき、ありがとうございました。
早速とりかかってみます!
198 :
195 :05/01/17 10:48:57
199 :
デフォルトの名無しさん :05/01/17 11:57:33
散々既出な質問かもしれんが、教えてください。 ぶっちゃけ、Java2 SE 5.0(1.5) ってどうよ? 使用用途は個人でプログラミングする程度なんだけど どこか恐くていまいち踏み切れない…。 いまのところ、バグとか不具合とか大丈夫? 導入に値しますか? それとも 1.4.2 使ってたほうがセーフ?
個人ならそれほど気にする必要ないだろ
どんなレスが欲しいんだよ?
>>201 おまえのその一言は
親切なおせっかいを
皆引かせるのに十分な一撃だ
いまんとこ個人的には1.4xに戻りたくなるようなバグには遭遇していない。
すでに1.5.0.01がでてるけどな
なあ byte[] = { 0xf0, 0x01 } ; これ書くと 「0xf0はintなんだけど?解ってる?あなたお馬鹿ちゃん?」 とか言われて激しくむかつくんだが、俺が悪いのか。 通信データだからbyteじゃないと駄目なんだが。 おまいら byte[] = { (byte)0xf0, 0x01 } ; とか書いてるの?
>>206 Javaのbyteは符号付1バイト整数、つまり範囲は-128 ~ 127、
16進表記でいうと-0x80 ~ 0x7fまで。
0xf0 = 240は大きすぎます。
>>207 んじゃ、通信バッファにはint配列使ってんの?
byte[] bs = {-0x10, 0x01}; と書けばいいのかな・・・スマン自信がなくなってきた。 -0x10 = 1111 0000 0x01 = 0000 0001 だよね?
>byte[] bs = {-0x10, 0x01}; 気持ち悪いな。 いや、まあ、それしか手が無いなら好みを言ってる余地は無いんだが。
馬鹿馬鹿しいけど、全部 (byte)0x** にしたよ!もりもり!
213 :
デフォルトの名無しさん :05/01/17 18:25:56
TextAreaから一行ずつ読込んで2次元配列に一文字ずつ格納するにはどうすればいいでしょうか? 例) 12345 7d6r5 99y66 を num[0][0]=1,num[0][1]=2,num[0][2]=3,num[0][3]=4,num[0][4]=5 num[1][0]=7,num[1][1]=d,num[1][2]=6,num[1][3]=r,num[1][4]=5 num[2][0]=9,num[2][1]=9,num[2][2]=y,num[2][3]=6,num[2][4]=6 見たいな感じです。
>>213 つ[hogechar = hogestr.charAt(int index)]
>>213 間違ってたらごめん、動作確認してないから
String lines[] = textArea.getText().split("\n");
char num[][] = new char[lines.length][256];
for(int i = 0; i < lines.length; i++)
num[i] = lines[i].toCharArray();
ありがとうご ざいます
まちがえま した
218 :
213 :05/01/17 18:50:28
>>215 できました!ありがとうございました><
219 :
デフォルトの名無しさん :05/01/17 20:16:54
Javaは特に学習サイトが充実してるよね。 もしかして書籍全く買わないでネットだけで習得 できちゃうんじゃない?って思う。 今まで計6冊のJava本を買い勉強してきた身としては 悲しい事実なんだけども。 ぶっちゃけ本買わないでネットの情報のみで Javaを習得しちゃった人いる? またはネットで習得可能だ!って思う人はなぜ そう思うのか詳細キボヌ
220 :
デフォルトの名無しさん :05/01/17 20:33:56
drawLine()とかの線の太さを変えたり、 点線を描いたりするにはどうすれば良いですか?
222 :
220 :05/01/17 22:42:48
223 :
デフォルトの名無しさん :05/01/17 23:02:11
こんばんは、よろしくお願いします。 int 型は、32ビットで、 -2147483647から2147483647です。 補数も使って負の数も出力 以下こんな感じなのですが、 class Hosuu{ public static void main(String args[]){ int i = 0; int ii = 0; for(int j = 0;j<31;j++){ i = i+(int)Math.pow(2,j); ii = ii + (~((int)Math.pow(2,j))) + 1; System.out.println("負"+ii); System.out.println("正"+i); }}} これだと32ビット使ってないような気がするのですが。
>>223 ii = ii + (~((int)Math.pow(2,j))) + 1; ←
225 :
デフォルトの名無しさん :05/01/17 23:50:33
>>224 さんありがとうございます。
最後、1足してますから、ですね。
負の数をだすのに、1bit 必要ということですね。
失礼しました。
ものすごく基本的なことなのだと思いますが、なぜか調べても分からなかったので教えて下さい。 メソッドの引数が、 | で区切られているソースを見たことがあるのですが、 これはどういう意味なのですか? public void method( A | B | C | D ) { } Javaの勉強を始めた頃に見たので、そのときは単純に4つの引数を渡してるだけなんだと 思って見てましたが、今考えてみると、ここで渡されるのはtrueかfalseになるように思います。 でも、そのとき見たメソッドは、A,B,C,Dのどれとどれが指定されているかによって違う動きを するものだったと思うんです。 つまり、 A A | B A | B | C A | B | C | D の4パターンの指定は、全て違う結果になったと思います。 trueかfalseなら、2パターンにしかなりませんよね? でも確かに違う指定だったと思うんです。。。うろ覚えですみません。
228 :
デフォルトの名無しさん :05/01/18 01:55:54
的外れなこと言ってるかもしれないけど、String num[]=new String[XX*YY];を メインクラスに置かないでそれ専用のクラスを別に作って、必要時に作って 要らなくなったら破棄する方法はどう?これならサイズも動的に変えれる希ガス。 思いつきで書いてるから正しいかどうかもわからんが、これで想像してくれ。 hoge num = new hoge(XX*YY); // 使い始め num.sethoge(count, "hoge"); str = num.gethoge(count); num = null; // 不要になったら public class hoge { static num[]; public void hoge(int maxcount) { num = new String[maxcount]; } public void sethoge(int count, String str) { num[count] = str; } public String gethoge(int count) { return num[count]; } }
ゴメン。 public class hoge { static num[]; じゃなくて public class hoge { private String num[];
>>228 ここまで凄いソースを書けるとは尊敬するよ。
お薦めの入門書教えてください。
233 :
デフォルトの名無しさん :05/01/18 06:10:58
>>221 便乗質問ですが、Graphics2D を使わないで、つまり ver.1.1 で同じことをやる
方法はないんでしょうか。
>227 理解しました! ありがとうございます!
ファイルの中の行をBufferedReaderで読み込んでファイルに出力するというプログラムを作っているのですが 出力した行を最大で30文字に揃えなければならないのです。一行が30文字を超える場合は31文字以降を次の行に折り返すとなっています。 考えた方法としてはleadLine()で読み込んだ行をlength()で文字数をカウントして if分で30文字を超えた場合は31文字以降を次の行に折り返す処理を行い、 そうでない場合にはそのまま処理を続けるという風にしたいのですが折り返す処理というものがいまいち理解できません。 新たに変数を作って一文字ずつ出力していき変数が30を超えたらprintlnで改行して 次の行に出力していけばいいのでしょうか? FileReader fr; FileWriter fw; try{ BufferedReader in = new BufferedReader(fr); PrintWriter out = new PrintWriter(fw); String s; int length = 0; while((s = in.readLine()) != null) { length = s.length(); if(length > 35){ }else{ }
237 :
206 :05/01/18 10:42:11
>>212 超遅レスだが
それは受信のときだろ?
通信アプリでは固定送信データが必要になるじゃねーか。
それを
int txData[] = {0x10, 0x03, 0xff・・・・};
とintで書くのはまあ、別に構わん。
だが、OutputStreamはbyte[]しか受け取ってないのにどうするんだって話だ。
int渡しでループさせるのか。
>>237 まあ落ち着け。おまいの当初の疑問は、
>>160-161 と
>>172 読めば解決しないか?
キャスト無しにこだわるなら
>>209 だが。
通信だの送受信だのは関係ないよ。
この場合、java.ioパッケージの問題ではなくJava言語仕様の問題だから。
>>236 1文字ずつやらんでも、readLineで読んだ1行の中には改行が含まれないから
30文字ずつやればいいじゃん。
例えば、50文字読んだら、30、20。
Runtemi rt = Runtime.getRuntime(); Process P; P = rt.exec(s); P.watiFor(); で実行中のプロセスをP.destroy()で任意のときに強制終了させるにはどうすればよいのでしょうか?
C# の char[] GetChars(byte[] bytes) に代わるようなメソッドは Java にはないでしょうか? もしくは実現する方法があれば教えてください。
>>241 new String(bytes).toCharArray()とか。
>>239 そうですね。readLine()で呼んだ行の中にどうやって\nをいれようか悩んでいたんですがどうしてもわからなかったんです。
30文字ずつやるというのは
read()で1文字ずつ読み込み 変数などで文字数が30以上になるかなどを調整する
ということでいいのでしょうか?
>>238 うむ、落ち着いた。すま。
JAVA曰く「キャストしましょう」か。
JAVA好感度-5
めそめそ。
245 :
デフォルトの名無しさん :05/01/18 13:25:12
java超初心者なんですが,hello.javaというファイルを コンパイルしたいのですが、コマンドプロンプトでjavac hello.java としたのですが 'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 とでてコンパイルできません。どうすればよいのでしょうか・
247 :
デフォルトの名無しさん :05/01/18 13:38:54
>>245 おまいさん SDK インストールしたんだろ?
そのなかの bin っていうディレクトリーにパスを通せ。
例)
C:\Program Files\j2sdk1.4.2_04\bin
「パスの通し方が~」「パスってなんですか?」なんていう質問したらやさしく抱きしめるぞ!
>>242 説明不足でした。
C# では次のコードを実行すると "a]?RvE!a?iisPoa" が表示されます。
public class MyClass {
public static void Main() {
byte[] bs = {
226, 93, 159, 82, 31, 118, 200, 33,
97, 190, 237, 238, 115, 80, 243, 229
};
char[] c = System.Text.Encoding.GetEncoding(1252).GetChars(bs);
string str = "";
for (int i = 0; i < c.Length; i++) {
str += c[i];
}
System.Console.WriteLine(str);
}
}
Java で次のようにしてみると "[B@1be2d65" が表示されます。
public class MyClass {
public static void main(String[] args) {
char[] cs = {
226, 93, 159, 82, 31, 118, 200, 33,
97, 190, 237, 238, 115, 80, 243, 229
};
System.out.println(new String(cs));
}
}
つまり、 226, 93, 159, 82, 31, 118, 200, 33, 97, 190, 237, 238, 115, 80, 243, 229 が格納されている配列から、 C# の実行結果と同じ文字列を取得したいのですが、 実現する方法があれば教えてください。
1.1.xでwebゲームを公開してるのですが、そろそろ1.2.x以降に乗り換えても大丈夫でしょうか? それともflashに乗り換えたほうがいいですか?できればjavaの方がいいんだけど普及してない!?
>>248 new String(new byte[]{ (byte)226, (byte)93, (byte)159, (byte)82, (byte)31, (byte)118, (byte)200, (byte)33, (byte)97, (byte)190, (byte)237, (byte)238, (byte)115, (byte)80, (byte)243, (byte)229 }, "windows-1252");
>>250 素直にflashに乗り換えた方がよさげ。
>>252 そうですか。
グラフィックはメモリイメージソースをいじって何とかなってたのですが、
サウンドがどうしようもないんですよね。1.2.x以降の普及を待つつもりだったのですが
flash陣営にかないそうにないみたいな意見がおおいですからね。
javaは好きだからしばらくはつづけつつも裏でflashの勉強でもしますかにょ。
>>250 いいかげんMSJVMに頼るのは止めれ。
Appletプラグイン使って最新のJREをインストールしてもらうようにすべき。
>>251 ありがとうございます。
ただ、"?]?Rv?!a???sP?? " と表示されてしまいます……
257 :
245 :05/01/18 14:34:24
読んだんですが java.exeが C:\Program Files\Java\j2re1.4.2_01\bin というディレクトリにあるんですが C:\Program Files\Java\j2re1.4.2_01\bin\javac としても、パスが見つかりませんとなります・・ どうすればよいのでしょうか
259 :
257 :05/01/18 14:42:59
いや、学校のパソなんですけど、javaは入ってるんですよ。
質問。 JavamailでX-Mailerの設定は無理ですか?
>>259 ドライブ内をjavac.exeで検索してみたら
>>259 SDKじゃなくてJREが入ってるんだろ
>>256 C#とJavaで一文字ずつ16進表示させて比較してみたら?
>>256 C#だとサーカムフレクスアクセントとかの無いASCII文字に成り下がるのか。
それをやると再変換しようとしても元に戻せないって事だから問題あるような。
まぁ、どの時点でそーなったかにもよるんだけど。
Javaの場合は小細工なしに出力して日本語のエンコーディングで扱えない文字は
全部'?'に変換されてるから予想された結果だけど。
JFrame1のJButtonを押したらJFrame2が呼び出されて、 JFrame2でごちゃごちゃ計算した結果をJFrame1に返したいんですけど どうしたらよいのか検討がつきません。ご教授願います。
>>259 その「学校のパソ」とやらの管理者に聞けば良いんじゃない?
>>265 class Manager{
private JFrame1 frame1;
private JFrame2 frame2;
public static void main(String[] args){
//自身のインスタンス化とJFrame1の表示
}
public void requestAction(){
action(); // 何か複雑な処理
frame2.showResult();
}
}
class JFrame1 extends JFrame implements ActionListener{ private Manager maneger; public void actionPerformed(ActionEvent e){ Thread t = new Thread(new Runnable(){ public void run(){ manager.requestAction(); } }); t.start(); } }
269 :
257 :05/01/18 15:28:22
>>262 そうっぽいです。JREの場合パス指定方法は
どのように?
C:\Program Files\Java\j2re1.4.2_01\bin\javac
ではパス指定になってないのですか?
JDKの最新バージョンで1.5ですよね じゃあJVMの最新バージョンは? JVMのバージョン意識する必要あるの?
class JFrame2 extends JFrame{ public void showResult(){ SwingUtilities.invokeLater(new Runnable(){ public void run(){ // 表示 } }); } } ざっくり省いたので使うときは補ってくれ。それから、引数が必要な時は適宜クラス作れ。
>>269 JREにはjavacは含まれませんよ。
>>270 JVMを含むJREとJDKは同じバージョンのものが同時にリリースされています。
最新のJDKで提供される機能をフルに用いた場合、最新のJVMが必要かと思います。
275 :
デフォルトの名無しさん :05/01/18 15:34:38
>>270 なってない。javacっていうのはコンパイラを示す。
\bin\javacは意味不明になっちゃうの。
環境設定をしなさい。
>>273 同じ?JDKとJVMのバージョンがですか?
>>274 JVMはJREとJDK両方に含まれてますよね
JREとJDKが同時にリリースされるのでバージョンが一緒になるのはわかるのですが
JVMも一緒になるのでしょうか?
というのもさっきSystemクラスのpropertyメソッドで自分のJDKとJVMのバージョン確認してみたら
JDKが1.4.**、JVMが1.0.**となりました
public void init(){ JTabbedPane base=new JTabbedPane(SwingConstants.TOP); getContentPane().add(base); JPanel tab1=new JPanel(); JPanel tab2=new JPanel(); JPanel tab3=new JPanel(); base.add(tab1,"1"); base.add(tab2,"2"); base.add(tab3,"3"); tab1.setLayout(new BorderLayout()); tab1.add(new JButton("A")); tab2.setLayout(new BorderLayout()); tab2.add(new JButton("B")); tab3.setLayout(new BorderLayout()); tab3.add(new ScrollPane()); } ↑みたいにScrollPaneとJTabbedPaneを組み合わせると 起動直後はタブの1枚目や2枚目にもScrollPaneが表示される… 順番の入れ替え以外で対処できないんですかね?
>>277 > JVMはJREとJDK両方に含まれてますよね
> JREとJDKが同時にリリースされるのでバージョンが一緒になるのはわかるのですが
> JVMも一緒になるのでしょうか?
同じになるものと理解しています。
> というのもさっきSystemクラスのpropertyメソッドで自分のJDKとJVMのバージョン確認してみたら
> JDKが1.4.**、JVMが1.0.**となりました
私の環境で次のコードを実行してみたところ、
JRE は 1.4.2_06 で、JVM は 1.4.2_06-b03 という結果が得られました。
public class Test {
public static void main(java.lang.String args[]){
System.out.println("JRE: "+System.getProperty("java.version"));
System.out.println("JVM: "+System.getProperty("java.vm.version"));
}
}
JDK のバージョンはどのように確認されていますか?
全然関係ないんだけどさ、 System.arraycpy( trg, 0, src, 0, len ) って書いたこと無い? 紛らわしいんだよ!普通 trg, src の順だろうが!
>>277 JDKにもJREは含まれていて、JREがJVMを提供しているので
JDKにJVMが含まれているとも言えるし、バージョンも同じと言える。
「バージョン」って一言でいっても、規格のバージョンと 実装系のバージョンは別物だから気をつけようね。
>>259 まさか""で囲んでないとか?
"C:\Program Files\Java\j2re1.4.2_01\bin\javac"
>>283 ふつうに考えてそのパスにjavac.exeがあるか?
>>284 見間違えてた…
ふつうに考えてそのパスにjavac.exeはないね
>245 hello.javaファイル内の public class helloのところをHelloに変えて、 ファイル名もHello.javaに変えてみ。
>>286 javacが見つかってないんだからそういう問題じゃないと思う。
288 :
デフォルトの名無しさん :05/01/18 19:36:26
横幅の長いHTML文書をswingコンポーネント上(JLabelとか)に表示させ、 指定した幅で折り返ししたいのですが、どのようにすれば良いのか分かりません。 setPreferredSizeメソッドで横幅を指定すれば、折り返しは出来ますが、 高さが不明であるため、上下に無駄な空白が出来たり、途中で切れていたりして 制御できません。 どなたかご教授お願いします。
>>243 ちがう、読むのは1行ずつよむ。
1行読み込んだら、その1文字を30文字単位に分割して、
30文字単位で出力する。
30文字単位で、printlnすれば改行は付くでしょ?(\nを入れる必要はない)
1行読む→
1行が50文字だった→
最初の30文字をprintln→
残りの20文字をprintln
先ほどプログラムを作っておりまして、改行に関してはある程度解決できました。 readLine()で行を読み込んでlength()で30文字を超えるかどうかを判定し、 readLine()で読み込んだ文字列をString型の変数にいれたあと while(y <= 30){ System.out.print(charAt(y)); y++; } 以上のプログラムを使って出力ができました。おそらくヒントとはちょっと違うと思いますが 非常に参考になりました。どうもありがとうございました。
>>289 if文ではなくwhile文になりそうだな。
292 :
デフォルトの名無しさん :05/01/18 21:09:12
えーと。。。 class FrameTest extends Frame { } class Test extends FrameTest { . . . とやればTestにはTestFrameが継承されて、Frameの機能をTestクラスで使えるようになるのですか??
294 :
デフォルトの名無しさん :05/01/18 22:09:15
Genericsを試しているのですが、2箇所でコンパイルエラーが発生しています。(※の箇所) final class Foo { // 改造禁止のクラス public Foo() {} public void setId() {...} }; class Bar<Child> { // 試しに作ったクラス public Child child; public Bar() {} public void createChild() { child = new Child(); // ※1 Childはインスタンス化できない } public void setChildId(int id) { child.setId(id); // ※2 setId()はChildで未定義 } } void test() { // ためしに作ったクラスを使う例 Bar<Foo> bar = new Bar<Foo>(); bar.createChild(); bar.setChildId(1); } こういう場合、どうやって回避するのが良いでしょうか?
>>294 test()ってどのクラスのメソッド?
>>295 任意のクラスのメソッド、という意図です。
>>294 悪いがソースを全部コピペしてくれ。
コピペミスしてそうだから
>>294 のような状況を再現することすら出来ない。
クラスFooの最後にセミコロンあるしクラスChildの定義ないし。
>>297 貼り付けます。 なおコンパイルエラーは正確には、以下の二つです。
Cannot instantiate the type Child
The method setId(int) is undefined for the type Child
public class Test {
final class Foo { // 改造禁止のクラス
public Foo() {}
public void setId() {}
};
class Bar<Child> { // 試しに作ったクラス
public Child child;
public Bar() {}
public void createChild() {
child = new Child(); // ※1 Childはインスタンス化できない
}
public void setChildId(int id) {
child.setId(id); // ※2 setId()はChildで未定義
}
}
void test() { // ためしに作ったクラスを使う例
Bar<Foo> bar = new Bar<Foo>();
bar.createChild();
bar.setChildId(1);
}
}
>>294 > child = new Child(); // ※1 Childはインスタンス化できない
そーゆーもん。
不満があるなら interface や class で定義された特定の引数型のコンストラクタを
実装クラスで定義しないとコンパイルエラーになるように言語仕様を変更しろと
JCP や Sun の掲示板やメーリングリストで騒ぐとかしろ。
> child.setId(id); // ※2 setId()はChildで未定義
静的型言語で定義されていないものが呼べないのは極めて正常。
不満があるなら実行時にメソッド呼び出しを解決するスクリプト言語でも作れ。
>>299 不満があるのではなく、こういう場合の逃げ方のパターンがあれば教えて欲しい、のですが...
>>298 > child.setId(id); // ※2 setId()はChildで未定義
setId()はjava.lang.Objectで未定義の間違いだな。
>>300 ちなみに、どーゆーシチュエーションで使いたいわけ?
303 :
デフォルトの名無しさん :05/01/18 22:39:03
createChild() と setChildId(int id) はどういう目的のメソッドなんだろう?
>>303 つながる。
httpsの接続環境を確認してみましょう。
>>302 ,304
実際にはタブブラウザを作成していて、
タブ内に表示す子るビューとそのモデルをパラメータとする、タブビューテンプレートクラス、
のようなものを作っています。
す子る...「タブ内に表示する子ビュー」です。orz
ネストクラスを使わなくても、、という気はする。
310 :
デフォルトの名無しさん :05/01/18 22:47:13
JScrollPane なんですが この中に組み込む GUI オブジェクトが、もしプログラムの実行中にサイズ変更された場合って JScrollPane 自体を再描画するしか反映させる方法って無いですよね? GUI オブジェクト内部で getParent().paintAll(…) ってやる以外に、変更をトリガする方法って無いですよね?
>>300 setIdの方は、setIdを持つ適当なインタフェースHogeを定義して
Bar<Child extends Hoge>とする。
new Child()できないのは仕様なので、適当なファクトリメソッドを持つ
ファクトリをテンプレートパラメタに与えるようにする。
>>310 いいえ。
>>311 ファクトリクラスをテンプレートパラメタに与えるやりかただと、
ファクトリクラスのインスタンス化の際に、同様の問題が発生しませんか?
>>312 ファクトリクラスはコンストラクタで与えるなり
テンプレートクラスの名前を設定ファイルとかから読み出して
reflection とかでインスタンス生成するなり
どっかのクラスに静的ファクトリメソッドを用意するなり
>>313 コンストラクタにファクトリを与えるようにしてみました。
interface ChildCreator<Child> {
Child createChild();
};
void test() {
Bar<Foo> bar = new Bar<Foo>(new ChildCreator<Foo>() {
public Foo createChild() { // ※
return new Foo();
}
});
...
}
※のところで以下のような警告が出たのですが、意味が分からない…。
(Eclipse3.1M4+jdk1.5.0_01使っています)
Type safety: The return type Foo of the method createChild()
of type new ChildCreator<Foo>(){} needs unchecked conversion
to conform to the return type Child of inherited method
new ChildCreator<Foo>(){}の中にあるメソッドcreateChild()の返却値の型
Fooは、継承されたメソッドの返却値の型Childに一致させるために、
チェック無しの変換が必要...???
>>314 の続き
あと、調子に乗って、以下のようにしてみました。
interface ChildDelegate<Child> {
Child createChild();
void setChildId(Child child, int id);
};
void test() {
Bar<Foo> bar = new Bar<Foo>(new ChildDelegate<Foo>() {
public Foo createChild() {
return new Foo();
}
public void setChildId(Foo child, int id) {
child.id = id; // ※コンパイルエラー
}
});
...
}
※のところで、「child.id cannot be resolved or is not a field」と、
前と同じようなエラーがでます。
何か基本的なところで間違えている予感...
初心者な質問なのですが、内部クラスの必要性って、どのような事なのでしょうか?
317 :
デフォルトの名無しさん :05/01/19 00:21:51
synchronized って、排他制御だよな。 俗に言うクリティカルセクション。 何で synchronized - 同期 って名前なんだろう。排他制御以外にも利用されるからか? 誰か俺を救え。
ならばまず俺を信じろ。
>>317 マルチスレッドプログラミングで各スレッドの「同期」を取るために「排他制御」を使う。
同期が排他制御以外にも利用されるんじゃなくて、同期のために排他制御を使ったりもするの。
>>314-315 全然問題外なので自分でもう一度genericsの仕様を調べることを勧める。
30文字毎に云々 String hoge1 = "目的の文字列"; String hoge2 = ""; while(hoge1.length() > 30) { hoge2 = hoge1.substring(0, 30); hoge1 = hoge1.substring(30); // ここでhoge2を出力 } if(hoge1 != "") // ここでhoge1を出力
interface Child{ } class ChildCreator<? extends Child>{ Child createChild(); } Bar<Child> bar = new Bar<Child>(new ChildCreator<ChildImpl>);
適当に書いてみたがこれだめそうだなsage
325 :
デフォルトの名無しさん :05/01/19 01:44:21
>>318-320 色々さんくす。ただ、セマフォとの違いが見えん。
結局鍵を取り合うだけだろ?セマフォのようにカウンタ無いっぽいけど。
名前の由来がしっくりこないな。
使う前。 interface Factory<T> { T create(); } Bar<T extends Factory<U>> {} 使うとき。 class FooFactory implements Factory<Foo> { Foo create() { return new Foo(); } } Bar<FooCreator> bar = new Bar<FooCreator>(); setIdも対応するともっと長くなるがこんな感じだろ。
おっと。Bar<FooFactory> bar = new Bar<FooFactory>(); な。
329 :
310 :05/01/19 02:14:42
>>311 具体的にはどんな方法があるんでしょうか?
>>325 マルチスレッドで同期化されてないのをつかったりするとよくわかる
VectorとArrayListとかクラス変数の宣言にvolatileありなしとかやってみそ
あるスレッドの動作で他のスレッドでも使われる変数の中身がかわらないから
各スレッドはスタックを別に持つはずだからまぁ言いたいことはわかるべ
>>315 アフォでした、「child.id」は「child.setId()」の誤りでした...。
直したところ、コンパイルエラー消えました。
>>294 からしてすでにおかしいし。orz
>>326 interface Factory<T> { T create(); }
class FooFactory implements Factory<Foo> {
public Foo create() { return new Foo(); }
}
これだと
>>314 と同じ警告が出ます。
初心に帰って"javac Test.java"してみたところ、両方とも、
特に警告は出ませんでした。実行しても特にエラーは出ないようなので、
Eclipse周りをあたって見つつ、これでいきたいと思います。
>>321 言語仕様の最新Fix版はどこで見れますか?
JDKのスタートページから「Java言語仕様」のリンクをたどると、古いようなのですが。
JSRとかいうところをグルグルとさまよっている最中です...。
参考までに、最終版を書いておきます。 public class Test { final class Foo { // 改造禁止のクラス public Foo() {} public void setId(int i) {} }; interface Adapter<Child> { Child create(); void setId(Child child, int id); } class Bar<Child> { public Child child; Adapter<Child> adapter; public Bar(Adapter<Child> adapter) { this.adapter = adapter; } public void createChild() { child = adapter.create(); } public void setChildId(int id) { adapter.setId(child, id); } } void test() { Bar<Foo> bar = new Bar<Foo>(new Adapter<Foo>() { public Foo create() { return new Foo(); } public void setId(Foo child, int id) { child.setId(id); } }); bar.createChild(); bar.setChildId(1); } }
>>315 Eclise3.1内蔵コンパイラにおける未検査例外チェックの
bugは以前からknown bug。Eclipseスレの過去スレでも話題に出てた。
milestone buildを試すときにはbugzillaとにらめっこしながら
試すのを心がけよう。
まあ1.5サポートが不完全なmilestone buildで新しい言語仕様
を勉強するのは無茶だとおもうよ。
あとそもそもEclipseはJDKのjavac使ってないのは知ってますか?
初歩的な事かも知れんが、修飾子省略すると、 クラスのstaticメソッドってパッケージをまたげないの? 自動でpublicだと思ってたんだが。
自動でprotectedさ
>>339 絶対 い ・ や ・ だ !
つか、教えろ!オマエが!
>>338 protected は継承クラスならパッケージ外からでもアクセス可能だな。
protected じゃなくて デフォルトアクセスだ。
おう、そうだった。 わりわり。
質問がありますが、Timerクラスを利用すると、マルチスレッドと呼べますか? ちなみに、Runnableインターフェースを実装し、そのrunのなかでTimerクラスを用いてます。
上のものです。あの、アニメーション的な動作はTimerクラスで行っているんですよ。 何秒ごとに描写、と。描写はpaintですけど。。 スレッドを継承しているわけではないから、違うのかなぁ。
スレッドは譲り合いで複数作業を平行して進める。 タイマーは奪い合いで複数作業を平行して進める。
>>348 ここでいうTimerはJavaのクラスとしてのTimerであって、
タイマーという概念全般のことではないだろ?
Javaプログラム内で、外部コマンドを別プロセスで実行する機能を実装してます。 そのとき、そのコマンドを実行するカレントディレクトリを指定したいんですけど、 Javaでやる場合って、どうやればいいですかね? "cd c:\~"ってなコマンドをJava内で実行するとエラーになります。
public static void main(String[] args) と public static void main(String args[]) は 何が違うんですか?
Webアプリ開発をメインに学習してるJava初心者です。 Webアプリでは様々なツールを連携させて開発するので 一応下記の物を入手しましたが J2SE 5.0 J2EE 1.4 Eclipse 3.0.1 Tomcat 5.5.4 mysql 4.1.7 Apache 2.0.52 JBoss 4.0.1 Struts 1.2.4 jakarta-taglibs Ant 1.6.2 JUnit 3.8.1 Cactus 1.6.1 これらを連携させるとの概念で少し詰まっています。 それぞれのツールのインストーラーを起動させてプラグインするのは 分かるのですが、それをどれに対してするのかが曖昧です。 標準的な組み合わせ法を教えてください。
>>355 連携の概念も糞も無いというか、俺としては連携に苦労した記憶が一切無いんだが・・・
普通に教科書どおりにやってうまく動かないの?
361 :
デフォルトの名無しさん :05/01/19 22:46:12
>>352 eclipseでコーディングしてるんで、エスケープシーケンスはチェックが入るんで、
ちゃんと実装してますよ。
>>351 java.lang.Runtime.exec(String, String[], java.io.File) とか
java.lang.Runtime.exec(String[], String[], java.io.File) とかを使え。
あと、cd は外部コマンドじゃないな。
>>350 そりゃすべてのEJB呼び出しがリモート呼び出しになる環境で
パフォーマンスなんか出るわけないわな。
メソッド呼び出すために、オブジェクトがシリアライズされて渡される
んだぞ。ローカルですら。
EJB2.0でローカル呼び出しが可能になって、ローカルを使う分には
速くなった。ものの記事によると、Hibernate(O/Rマッピングツール)
と、EJBローカルエンティティと比べると、一部EJBの方が速かったり
するらしいし。
ただあの複雑さと無駄な単純作業の多さは、まともな人間が設計した
とは思えん。なんか頭のいい人がユーザーのことなんて考えずに作った
ような感じがする。
364 :
デフォルトの名無しさん :05/01/19 23:51:22
>>362 ありがとうございます。
execは多々オーバーロードされた関数でしたか。
この第三引数で指定したディレクトリが、カレントとみなされるわけですね。
なるほどー。
cdで例外が起こったのは、外部コマンドでないからでしたか。
勉強になりました。
365 :
デフォルトの名無しさん :05/01/19 23:52:12
行間についての質問なのですがどなたかお願いします。 環境は JDK1.3.x Win2000 エクリプス3.0 下記のソースなのですが、1行目の「あいうえお」を表示した後に 子供のコンポーネントをインサートして図1の様に1行目の上側の スペースをそろえたいのですが、どうしても図2のようになってしま います。理由はわかるのですが、何とかならないでしょうか? 長文、駄文、スレ汚し申し訳ありません。 図1 -------------------------------- 「あいうえお」|「2あいうえお」| | | |「2かきくけこ」 | ------------- 「かきくけこ」 -------------------------------- 図2 -------------------------------- |「2あいうえお」| 「あいうえお」| | |「2かきくけこ」 | ------------- 「かきくけこ」 -------------------------------- 次に サンプル・ソースを乗せます。
366 :
デフォルトの名無しさん :05/01/19 23:54:35
import java.awt.BorderLayout; import javax.swing.JFrame; import javax.swing.JTextPane; import javax.swing.text.BadLocationException; import javax.swing.text.Document; import javax.swing.text.SimpleAttributeSet; import javax.swing.text.StyleConstants; public class LineSpacingTset extends JFrame { public LineSpacingTset() { super("LineSpacingTset"); setBounds(200, 160, 500, 250); JTextPane jTP = new JTextPane(); SimpleAttributeSet attr = new SimpleAttributeSet(); StyleConstants.setLineSpacing(attr, 20.5f); // JTextPane全体に属性を設定 jTP.setParagraphAttributes(attr, true); JTextPane jTP1 = new JTextPane(); jTP1.setParagraphAttributes(attr, true); Document doc1 = jTP1.getDocument(); try { doc1.insertString(0, "2あいうえお\n", attr); doc1.insertString(8, "2かきくけこ", attr); }
367 :
デフォルトの名無しさん :05/01/19 23:55:17
つづき catch (BadLocationException e) { e.printStackTrace(); } Document doc = jTP.getDocument(); try { doc.insertString(0, "あいうえお\n", attr); doc.insertString(7, "\nかきくけこ", attr); } catch (BadLocationException e) { e.printStackTrace(); } jTP.setCaretPosition(5); jTP.insertComponent(jTP1); getContentPane().add(jTP, BorderLayout.CENTER); } public static void main(String[] args) { LineSpacingTset cTester = new LineSpacingTset(); cTester.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); cTester.setVisible(true); } }
368 :
デフォルトの名無しさん :05/01/19 23:56:05
連続投稿うざくてすいません ためしに、SimpleAttributeSet();を(attri, -16.5f)として StyledDocument.setCharacterAttributes(0, 7, attr, true) を使って「あいうえお」を選択してその文字属性だけ上に 持ち上げようとしたのですがうまくいきませんでした・・・ なにとぞ、お願いします。
369 :
デフォルトの名無しさん :05/01/20 00:05:17
java にはグローバル変数はないと聞いたのですが、dialog で値を変更した変数を Frame で使用したい場合は、変数をどう扱ったらよいのでしょうか? 引数で渡すだけだと変更されてなくて方法が分かりませんでした^^;
>>363 あなたも知識だけの人ですね。
ローカルインタフェースが仕様化されたのは2.0からですが
実際にはほとんどのEJBコンテナ製品では物理的にリモート配置
していない限りは内部で勝手に最適化してローカル参照していました。
それが後付で仕様として取り込まれたというのが実状です。
現行の製品でもリモートインタフェースを作成しても
実際には内部で最適化されてローカル参照しているのがほとんどです。
ふむ、じゃああとはあの鬱陶しい仕様だけなんとかすればいいんだな?
JFrame の背景色を Windows のシステムカラーにするには どうしたらよいでしょうか?
373 :
デフォルトの名無しさん :05/01/20 00:16:01
import java.awt.*; import java.awt.event.*; class Frame1 extends Frame { Frame1(String title) { super(title); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent we) { System.exit(0); } }); } } public class FrameApplication { public static void main(String [] agrs) { Frame1 f1 = new Frame1("ふれーむ"); f1.setSize(200,200); f1.show(); } }
374 :
デフォルトの名無しさん :05/01/20 00:16:33
>>373 の続き
というのを作ったんですが、コンパイルすると
c:\MyApplet>javac Frame1.java
Frame1.java:19: クラス FrameApplication は public であり、ファイル FrameApplicat
ion.java で宣言しなければなりません。
public class FrameApplication
とでます。どういうことですか?
ファイル名をFrameApplication.javaにしろってこと。 Javaのファイル名は、ファイル内に一つだけ書いていいことになっている publicなクラス名と同じでないといけない。
376 :
デフォルトの名無しさん :05/01/20 00:19:43
377 :
デフォルトの名無しさん :05/01/20 00:26:02
文字列を一文字ずつ配列に入れたいのですがどうしたらよいでしょうか? コマンドライン引数というのがありますが、これは java *** a b c と実行したとき args[0]=a args[1]=b args[2]=c となります。 そうではなく、半角スペースなしに java *** abc と実行したとき args[0]=a args[1]=b args[2]=c こうなって欲しいのですが、どうしたらよいでしょうか?
亀レスです
>>279 >>282 返事貰ったのにおくれてすいません
以下にJVM確認のプログラムと実行結果を書きます
<プログラム>
System.out.println(System.getProperty("java.version"));
System.out.println(System.getProperty("java.vm.specification.version"));
System.out.println(System.getProperty("java.vm.version"));
<実行結果>
1.4.2_03
1.0
1.4.2_03-b02
僕が報告したのは2行目でした
APIリファレンス見たら(
http://java.sun.com/j2se/1.4/ja/docs/ja/api/index.html )
>>282 さんの言うとおり仕様のバージョンと実装のバージョン二種類があるのを知りました
一体それぞれの違いは何なんですか?教えてください、お願いします
>>373-375 は初心者だと中々解らないだろうし、
>>1 のテンプレに
追加しておいてはどうだろうかと提案してみるテスト。
>>377 toCharArrayか、Substring。
>>378 仕様が確定しても、製品としての実装物はいくらでも改良できるだろ。仕様をさえ
満たせばいいわけだから。
だから仕様バージョンはなかなかあがらないが、実装バージョンはどんどんあがる。
>>381 例えてくれると解りやすいですけどこの場合JVMの仕様バージョンとは・・・?
バージョンと言ってもプログラムではないという事?
1、ある偉い人達(サンの人達?)がJVMにはこういう機能を持たせよう(ドキュメント)
→JVMの仕様バージョンになる
2、その仕様バージョンにあわせて実装・プログラミングする→JVMの実装バージョンになる
3、JVMの仕様は変わらないけど2で実装したJVMのバグを直す、改良・昨日補足する→JVMの実装バージョンUP
こういう理解であってる?
そんな感じ。
385 :
デフォルトの名無しさん :05/01/20 04:23:43
JavaのVMはクソばかり。仕様を満たしているものなんてない。シヨウモクソダケド
君のお勧めのVMは?
VMware
JAVAでは動的にクラスを作ることは出来ますか? (eval (read) ) >>(defclass CA()());クラスCAが定義される みたいな。
できます
>>389 マジすか?
差し支えなければ方法を教えていただけないでしょうか?
>>363 >>370 レスありがとうございます。
ちょっと私の言葉が足りなかったようです。
知りたかったのはエンティティ・ビーンの永続化の
パフォーマンスが低い原因について、でした。
コンテナがダーティーフラグやキャッシュを用意して
いるにもかかわらず、パフォーマンスが出ないのは
なぜか、と思いまして。
>>390 クラス名 a = (クラス名)Class.forName( "クラス名" ).newInstance();
IBMのランタイムは1.4.2止まりでしょうか? 1.4.2_03以降のものはIBMからは提供されていませんか? 探してみたんですが見つからないので。
>>379 賛成。
案1
publicなクラスは同名のファイル(クラス名.java)中に宣言しなければなりません。
名前を揃えましょう。大文字と小文字の違いにも注意しましょう。
またこのことによって1つのファイル中に2つ以上のpublicなクラスを宣言することもできません。
可視性を変更するか、ファイルを分割しましょう。
wikiへの誘導でいいかな。
eclipseの5.0対応はいつになるんだろう。。
>>397 6月頃。
Eclipseのサイトにロードマップがあるんだからそれぐらい見ろよ
>>398 知らなかったよ。ありがとう。
6月か。。
400 :
デフォルトの名無しさん :05/01/20 12:35:42
ちょっとすれ違いかもしれませんが、質問です。 VB.NETで、javaを実行したいんですが、 java.exeは起動はできるんですが、ファイルを実行できません。 エラーからクラスパスに問題があることがわかりました。 それで環境変数設定しても、うまくいきませんでした。 だれか、他のプログラムから、javaのクラスファイル実行するの わかるひといませんか?
> だれか、他のプログラムから、javaのクラスファイル実行するの > わかるひといませんか? いる。
>>372 SystemColorの定数にいろいろあるから使え。
>>400 エラー内容は書いてない・・・自分の行った環境変数設定は書いてない・・・
どのようなVB.NETのプログラムで、どのようなJavaプログラムを呼び出すかも書いてない・・・
独り言口調・・・
典型的なエスパー募集の広告だな。
>>401 >>403 うるさいよ。わからない奴はだまってみてろっつーの。
俺は、知ってる人に聞いてるんだから、ちゃちゃ入れるだけの初心者は引っ込んでろ。
クラスパスに問題があることがわかったんなら、javaのオプションでクラスパスを渡してやればいいじゃない バカじゃなかろか?
あえて、packager.exeに挑戦してみろと言ってみる。
java.exeもつかえないやつが初心者は黙っていろってのもすごいな 詳細なエラーメッセージ出すとかなにもないしねぇ
>>405 わからないなら書き込むんじゃねえよ、カス
>>375 ちょっと補足。
ファイル名と異なる名前の非publicクラス群*のみ*
からなるソースコードも作れる。
webアプリの文字化け対策が判らない素人です。 どこを直すべきか、アドバイス頂けませんでしょうか? ブラウザからPOSTした文字列をbeanで受け取って、それをpostgresqlのDBに書く、 という処理を行っています。関係しそうな所を抜粋して書きます。 ---- javaBean内で request.setCharacterEncoding("euc-jp"); String params = request.getParameter("params"); String sSql = "insert into TEST values (?)"; ps = conn.prepareStatement(sSql); ps.setString(1, params); result = ps.executeUpdate(); ---- ---- Database (postgresql) createdb -E EUC_JP foo ---- OS unix DBに挿入された日本語は全く無関係な漢字の羅列に化けます。 素人ながらの推測ですが、Unicodeな文字列をそのままEUCのつもりでDBに書いてるん じゃないかという気がするんですが(←根拠なし)
>>412 HTMLはEUC_JPで表示してるの?
JAVAアプレットを使用して、1つのボタンを押すたびに 画像をランダムに表示するプログラムを作っているのですが、 なかなかうまくいきません。 どなたか教えていただけませんでしょうか。
どなたか
>>414 が何を教えて欲しいのか教えていただけませんでしょうか。
へんじ遅れてしまってすいません。
>>404 >>409 は偽者です。
エラーは、Exception in thread "main" java.lang.NoClassDefFoundError: Hello
こんなのです。
javaのプログラムとしては、試験的なものなので、
ただhelloを表示させるものです。
環境変数設定は、マイコンピューターのプロパティでPATH,CLASSPATHを
設定しました。コマンドプロンプトでは、普通に実行できました
コマンドから指定ではなく、 javaのプログラム内で、クラスパス指定ってできますか?
>>417 おいおい、そーじゃねーだろ。
おまえさんの作ったHelloすらjavaはどこにあるかわからんから、
java.lang.NoClassDefFoundError (クラス定義がみつかんねー)
を出してるわけだ。
javaのオプションに-classpathがあるから、それ使っておまえさんの作ったHello.classがあるディレクトリを指定してやればいいんだよ
import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class ekaki extends Applet implements ActionListener, MouseListener, MouseMotionListener{ int x,y; Button btn; public void init(){ btn=new Button("消去"); setLayout(new BorderLayout()); add("South",btn); btn.addActionListener(this); addMouseMotionListener(this); addMouseListener(this); img=getImage(getDocumentBase(),"1.gif"); addMouseMotionListener(this); } public void mouseDragged(MouseEvent e){ Graphics g; g=getGraphics(); g.drawLine(x,y,e.getX(),e.getY()); x=e.getX(); y=e.getY(); }
続き public void mousePressed(MouseEvent e){ x=e.getX(); y=e.getY(); } public void actionPerformed(ActionEvent e){ repaint(); } Image img; public void mouseMoved(MouseEvent e){ x=e.getX(); y=e.getY(); showStatus("X: "+x+", Y: "+y); repaint(); } public void paint(Graphics g){ if((x==100)&&(y==100)){g.drawImage(img,x+5,y+5,this);} if((x==200)&&(y==200)){g.drawImage(img,x+5,y+5,this);} if((x==300)&&(y==300)){g.drawImage(img,x+5,y+5,this);} if((x==100)&&(y==200)){g.drawImage(img,x+5,y+5,this);} if((x==200)&&(y==300)){g.drawImage(img,x+5,y+5,this);} if((x==300)&&(y==100)){g.drawImage(img,x+5,y+5,this);} if((x==100)&&(y==300)){g.drawImage(img,x+5,y+5,this);} if((x==200)&&(y==100)){g.drawImage(img,x+5,y+5,this);} if((x==300)&&(y==200)){g.drawImage(img,x+5,y+5,this);} else {} }
public void mouseReleased(MouseEvent e){} public void mouseExited(MouseEvent e){} public void mouseEntered(MouseEvent e){} public void mouseClicked(MouseEvent e){} } 上記のプログラムで描いた線を消去ボタンで消えるようにして、 あるポイントにいったら画像を表示するようにするにはどのように直せばいいのでしょうか?
>>417 コマンドプロンプトで,
-classpath入力してクラスパスを指定するってことですよね?
412です。 あれからもう少し実験しました。 request.setCharacterEncoding("euc-jp");//←(1) String params = request.getParameter("params"); String sSql = "insert into TEST values (?)"; ps = conn.prepareStatement(sSql); params = "日本語がちゃんと登録されるか確認わはー";//←追加 ps.setString(1, params); result = ps.executeUpdate(); これで、DBに日本語が正しく登録される事を確認しました。 という訳で、おそらく「POSTされた文字列がUnicodeとして正しくparamsに 入っていない」のが化ける原因だと思われるのですが、そうなると(1)の記 述がまずいか、根本的に勘違いしているのか・・・ setCharacterEncodingではなく、一旦バイトデータに変換してから再エンコ ードする方法しかないのでしょうか? >413 EUCです。ブラウザのメニューで確認しました。
params = "日本語がちゃんと登録されるか確認わはー";//←追加 より以前で、System.out.println(params);で確認したら?
>425 確認しました。やっぱり化けています。正しくUnicodeで入っていないのは 確かみたいです。という訳で、結局教科書どおりの s = new String(s.getBytes("iso-8859-1"), "EUC_JP"); として再エンコードする事で日本語化けは解消しました。それはそれで 原因と対処方法がわかってよかったのですが、何故 setCharacterEncoding がちゃんと機能しなかったのかイマイチ納得できない感じです。 書き忘れていましたが、環境は postgresql 7.4.6 + postgresql-jbdc 7.4.6 apache 1.3.29 pl3 jdk 1.3.1 jakarta-tomcat 4.1.31 です。>412 のソースでsetCharacterEncodingの使い方のまずい点がありま したら何方かご指摘下さい。
427 :
デフォルトの名無しさん :05/01/20 19:37:07
あの、どこかにソケット関係の例外処理をどんな風にするといいか解説してる サイトありませんでしょうか? Javaソケットプログラミングをやっているのですが、うまい例外処理がいまいち よくわかりません。 どなたか教えてくださいorz
あぁぁ、連投すみません>ALL。これで最後です。 原因はわからないけど解決しました。 一連の処理はMVCmodel2なんですが、コントローラ内でsetCharacterEncoding を書いてやれば文字化けしなくなりました。 -- in Controller.class -- doPost(HttpServletRequest request, ・・・) { request.setCharacterEncoding("EUC_JP"); //<-ここに書けばOK Model.updateDB(request); } -- -- in Model.class -- updateDB(HttpServletRequest req){ req.setCharacterEncoding("EUC_JP"); //<-ここに書いても機能しない //DB処理 } なんでなのか理由は判りませんが・・・ って、requestをモデルに丸投げする事自体が多分論外なのかもしれませんが。
429 :
デフォルトの名無しさん :05/01/20 20:39:02
http://www.ehime-u.ac.jp/ICPC/problems/domestic/d2004/A.jp/A.html 誰かこのC++をCに直してくれませんか?問題は↑
#include <iostream>
#include <vector>
using namespace std;
void print(const vector<int>& v){
for (int i = 0; i < v.size(); ++i) {
cout << v[i] << ' ';
}
cout << endl;
}
int main(){
int n, r;
while (cin >> n >> r, n || r) {
vector<int> card(n);
for (int i = 0; i < n; ++i) { card[i] = n - i; }
for (int i = 0; i < r; ++i) {
vector<int> target(card);
int p, c; cin >> p >> c;
for (int j = 0; j < p - 1; ++j) {
target[c + j] = card[j];
}
for (int j = p - 1; j < p + c - 1; ++j) {
target[j - p + 1] = card[j];
}
swap(card, target);
}
cout << card[0] << endl;
}
}
431 :
デフォルトの名無しさん :05/01/20 22:15:00
int i = Integer.parseInt(args[0]); と int i = Integer.valueOf(args[0]).intValue(); の二つがあるけど、どう違うのですか?僕は同じだと思うんですが・・・
明らかに違う
>>392 これはクラスからインスタンスを作るだけで
>>390 の「クラスを動的に作る」
という目的とは全然違うだろ?
>>390 クラスを動的に作る方法は
1.バイトに対応するバイト列を動的に生成してClassLoader#defineClassする(難易度高)
2.JavassistやBCELなどのライブラリを使う(難易度中)
3.動的にソースファイルを作って動的にコンパイルし、それを読み込む(難易度低)
なんかがある。
>>431 後者は、内部的に引数に対して前者と同じことをやった後、
その結果からIntegerインスタンスをつくって、あらためて
中にある結果を取り出すというまわりくどいことをしている。
詳しくはjava/lang/Integer.javaを見ること。
作ってその場でintValue()を呼ぶようなケースなら前者のほう
がいいのは当然だが、文字列からIntegerオブジェクトを作る
目的ではvalueOfにも存在意義がある。
new Integer(argv[0])でもいいじゃん、という話もあるが、
APIドキュメントによれば、valueOfで返されるIntegerオブ
ジェクトはキャッシュされるので、ラッピングインスタンス
を作りまくるようなケースではvalueOfを使ったほうがいい
らしい。
VectorとArrayListってどちらもスレッドセーフですか?
438 :
デフォルトの名無しさん :05/01/21 00:30:26
javaで作ったプログラムって、 javaコマンド使わなきゃ実行できないじゃないですか。 どうにか、.exeとかにならないですかね? この場合マルチプラットフォームとかは抜きで。 とりあえずexe生成方教えてください。
バッチファイルでも作れば?
誤爆承知で、C/C++の腕を再確認するつもりで429やってみたが…… いやー、Cマンドクセ……Javaに慣れると辛いね、いろいろと…… とりあえず、bccでコンパイルして、例題通りの入力で>429と同じ出力が出ることのみ確認。 素敵なソースうpろだのup0711に晒したので暇な人はどぞ。
>438 ダブルクリックで起動したいだけならjarにまとめてMANIFEST.MFを適切に書けばなんとかなるよ。 (JREは要るが) Cygwinでgcj使えばCygwin環境内で動く(てことは、cygwin絡みのdllがあれば何とかなる?)exeが 作れるかも知らんが、やったことないのでワカンネ
>>438 おカネ払う覚悟があるのなら方法はあるよ
443 :
デフォルトの名無しさん :05/01/21 00:42:34
>>438 excelor JETというソフトを使う。
Wクリックで実行できる.jarの形にして
変換すると.exeにしてくれる。
exeがほしいという人に対してgcjという 初心者こそ使い物にならないのをすすめるのはどうだろう
445 :
デフォルトの名無しさん :05/01/21 00:50:16
jarにまとめるか バッチファイルですね。 どうもありがとうございます 一番楽なのはバッチファイルですね 何とか色々ためしてみます
個人的に
>>428 がすっきりしてないのだが、わかるやついるか?
4.1.31なんてJDK1.4系でしかBuildされてないはずだしLinux+1.3はクラッシュするとか
いろいろと問題あるのはわかるが、あの書き方でかわるのか?
結局出してない部分で不具合だしてるってことかね
>>436 invokeとクラスの動的生成がどうつながる?
すでにクラス定義があるところからインスタンスを作る話じゃないぞ?
>>390 がLisperなところを見ても実行時に動的にクラス定義を作る話だろうに。
それとも、
>>392 もそうだがJava(ないしそれに類する静的言語)しか知らないせいで
動的にクラスを作るという意味が理解できないのか?
そこで逆ギレですよ。
>>428 ,446
読むタイミングでうまくいってないってことは、モデルクラスでsetCharactorEncoding()したとき
よりも前に、どこかでリクエスト・パラメータを読むなり、getReaderでストリームを取ったりし
ちゃってるんじゃないの?
setCharactorEncoding()は、リクエスト・パラメータを読むよりも前に実行しないといけない
から、doPostに移しただけで動くようになったんなら、そのdoPostからモデルに行くまでに
どっかでなんかHttpServletRequestを使った処理が挟まってるんじゃないか?
まあ動的クラス作成なら、BCELよりはJavaAssistだろうなあ。
でもJSPの例もあるわけだから、
>>433 の上げた、ソースコードを生成して
コンパイラを起動するのが、クラス生成の頻度が少ないなら一番現実的な解かも。
「クラスを作る」っていうのがインスタンスを作ることだと 思ってる香具師がいるが、そもそもクラスとインスタンスの区別 も付いてないようだしね。 もとの質問が最初から「動的にクラスを定義する」(作るじゃなく) って書いてあればまだ脊髄反射で答える香具師も出なかったんだろうが。
452 :
デフォルトの名無しさん :05/01/21 06:36:13
これがJava厨って生き物ですか≧∇≦ブハハハハハ
とオブジェクト指向のオも分からないC厨が申しております
454 :
デフォルトの名無しさん :05/01/21 08:57:35
動的にクラスを作るっていってもさ、 1.バイトに対応するバイト列を動的に生成してClassLoader#defineClassする(難易度高) 2.JavassistやBCELなどのライブラリを使う(難易度中) 3.動的にソースファイルを作って動的にコンパイルし、それを読み込む(難易度低) なんかがある。 2と3はなんとなくイメージつくけど、1ってVMの知識無いと無理じゃね?Class clをcl.toString()してbyte変換とかするだけじゃ無理っしょ?
JTabbedPaneを使ってるJFrameで起動直後に あるフィールドにフォーカスを当てたいんですけど どうしたらいいでしょうか? Field.requestFocusInWindow();でいいんですか? 入れるタイミングがわかりません。
>>454 VMの知識っつーか、class ファイルの知識だね。
あと、Javassist は 3. と同程度、BCEL は 1. と同程度の難易度だな。
他にも Groovy とか pnuts みたいなスクリプト言語を使うって手もあるし。
457 :
デフォルトの名無しさん :05/01/21 13:03:05
初心者の質問で申し訳ない。 j2sdk1.4.2_06でメール配信プログラムを書いています。 (activation.jarとmail.jarを使用して) セミコロン区切りのメールアドレスを配列にsplitしようと 思っているのですが コンパイルはできるのですが、実行すると java.lang.NoSuchMethodError となってしまいます。 基本的なことが分っていない気がするのですが、ご教授お願いします。 (情報が足りなかったら補足します) よろしくお願いします・・
話題違いだが、Gnoovyって意味あるのか? Javaのプロジェクトって5の利益を得るために、10の労力がいる様なのが 多いから、いい加減にしてくれって思う事が度々ある。 工数が減るたって後になれば、実はそうでもなかった。だがGrooby独特の 仕様はJavaにない世界を生み出したって結局完全な別言語に進化するのが オチだろうよ。 回りの新しい物好きのマニアがやり出すと、結局自分も学ばなきゃいかん ようになるし、それで幾つものフレームワークやライブラリに時間 潰されたからな。
>>457 どのメソッドが原因でjava.lang.NoSuchMethodErrorだったのか不明確ですが、
前後から察するに、java.lang.String#split(String)でしょうか?
その場合、コンパイル時と実行時で異なるバージョンを使っていると思います。
javac に -verboseオプションをつけてコンパイルした時の結果と
java -versionと実行したときの結果を比べ、
本当に1.4.2を使っているのか確認してください。
実行時だけ1.3、というのがありがちです。Oracle入れたときとか。
Javaだけの利用を前提条件とすると、 リッチクライアントは必然的にAppletしかない? 最近のアプレットって、ビジネスアプリへの適用に耐えうる?
461 :
457 :05/01/21 13:34:39
>>457 ありがとうございます!
javac *** -verbose ではj2sdk1.4.2_06で、
java -version は1.3.1_01でした・・
1.3.1_01をインストールした記憶はないんですけど・・
対処方はありますか?
よろしくお願いします。
>>461 実行環境がよくわからんが、実行環境がJAVA_HOMEをただしく認識するように設定する
としか言いようがないな・・・
>>461 そこまでわかったのなら、環境変数PATHを調べるなり、
PATHの通ったディレクトリにjava.exeがあるか調べるなり、
自分ですることはあるでしょう。
それから、1.3.1なんてインストールした記憶はないといっていますが、
ソフトによっては自前でJREをインストールし、
あまつさえPATHの先頭に追加してしまう厄介なものも存在します。
>>459 でもちょっとだけ触れましたけど、Oracleとか。
これが原因で「○○動かない」という声を良く聞きますね。
>>460 それならJavaWebStartですよ。JavaWebStartで作ったソフトを挙げるスレがどこかにあったような。
464 :
デフォルトの名無しさん :05/01/21 14:24:04
分かり難い説明で恐縮ですが htmlを作成しているのですがチェックを入れた項目をフォームのページの ラジオボタンに引き継ぐプログラムを教えてください
>>461 Windows のシステムディレクトリに 1.3.1_01 の java.exe と javaw.exe があるのではないかと推測。
>>463 なるほど、JWSですか。盲点でした。
チェックしてみます。ありがとう。
>>460 Webstartにもアプリケーションとアプレットがある
まぁ最近のといういい方してるけど、1.2以降は十分実用的だよ
1.3で実用的なアプリにも耐えられ、1.4で描画速度がネックにならなくなったしね
1.4以上対応アプリでMemoryImageSource使ってた人を見たときは殴り倒したくなったけどな
リッチクライアントということで業務用と仮定、となると安定度も重要だろうから1.4.2がベストだろうね
>>468 >1.4以上対応アプリでMemoryImageSource使ってた人を見たときは殴り倒したくなったけどな
特殊なグラフィックローダとかでもだめ?
470 :
デフォルトの名無しさん :05/01/21 17:16:46
引数って、書いた後はどんな値を記述してもいいのでしょうか? 抽象から具象ってことでOK? public class Param { public static void main(String[] args) { Method method1 = new Method(); method1.setMessage("ええんか"); method1.messageOut(); } class Method { protected String message; // コンストラクタ略 public void setMessage(String s) { message = s; } public void messageOut() { System.out.println(message); } }//おわり
うんとね、setMessage(String s)と書いとけば、 後はmainメソッドに書いてるように method1.setMessage("ええんか");のように 括弧の中に具体的な値を好きなようにかけるんですよね?
>>472 当たり前だ。
固定値なら引数で取る意味ねーよ。
>1.4以上対応アプリでMemoryImageSource使ってた人を見たときは殴り倒したくなったけどな なんでだめなの?
クラスの名前がメソッドってどういう頭してるのさ?
Java2DではBufferedImageというのがあって柔軟性や速度ではるかに勝る
>>473 ありがとう
そうですよね。ちょっと気になってたもんだから・・・
>>475 即席ですから堪忍してーな
>>475 マジレスするとMethodクラスがあるわけだが・・・ConstructorクラスもFieldクラスも
javaアプレットって使われてるんですか?役に立つのこれ?
>>470 使われてるところでは使われてる。
役に立つかどうかは作る人と使う人次第。
s/470/479/
昔はJavaプログラミング=アプレットプログラミングであるかのような時代もあった…… 1.1は遠くになりにけり。
>>480 それを言っちゃーおしまいよ
俺が知りたいのは一般的な話や
>>482 のよう話
仕事で使う技術なのかどうか?
アプレットを好き好んで使う人は居るのかどうか?
今、入門書でアプレットの章読んでるんだけどツマンネ
Java=アプレットの時代 ↓ Webアプリの普及によるServlet/JSPなどのJ2EEプログラミングの時代 ↓ リッチクライアント導入においてアプレットという選択肢が登場する時代
>484 しかし既に市場はFlashが席巻している時代、でもある。 JREよりFlashプラグインの方が導入の敷居は低いし だが、「Javaでリッチクライアントが作れる」ということでJava使いにとって (そして、Java使いを擁する開発チームにとって)旨味のある選択肢ではある。 Flash作者と業務PGの集合はほとんど重なってないし、ね。
>JREよりFlashプラグインの方が導入の敷居は低いし アプレットも今の時代はプラグイン構造だから 敷居はFlashと変わらないはずなんだけど、情報が全然 広まらないんだよな。
>>476 BufferedImage>>MemoryImageSourceってことなんですね
結局 -target 1.1 というオマジナイが手放せないわけで。。。
ケータイのJavaではアプレットチックなものが使われているわけで。。。 サーバサイドプログラマながらiアプリを作らされる羽目に。orz
javaの概念がよくわかりません。 クラスを作ってメソッドを定義して、 インスタンス化するとオブジェクトになる こんな感じでいいんすか? えろい人教えてください。
>>485 使える範囲がFlashでは弱い
主にリッチクライアントの土俵は業務系だと思うが、
ここではさすがにJavaとFlashではやれる範囲が違いすぎる
そして不特定多数のところではWEBアプリのままで行くと思われ
動的な部分はFlashで
つまり現状維持
Flash方面しらべればわかるがとにかく人手が足りない
というのは鯖のアプリをJavaや.NETでかくのだが、Flashはまた別言語で習得が難しいのだ
たとえばIDEでの生産性の高さとかいろいろと問題山積み
これがJavaや.netでは同一言語でクライアントと鯖をこなすことができて
教育のコストとかいろいろと恩恵がある
>>487 そういうこと
あとはBufferedImageはたとえばWindowsではDIBによるアクセラレーションがきいたりする
まぁG400とか古めでもその辺とくいなビデオチップは今でもJavaの体感速度早かったりするのさ
ちなみにレスポンスはUMAである855GMEとか結構いいのとPentiumMのほうがPentium4より
Javaの動作速度が速いこともあって不思議とデスクトップよりノートのほうが快適だったりする
>>488 今時のリッチクライアントの選択肢としてのアプレットなら -target 1.1 なんてやらんだろ。
-target 1.1 なんてのは絶滅寸前の趣味のアプレットぐらいでしか使われて無い。
すいません。 tomcat5.xで、servletなしでjspとbeanだけで動かすことは 出来ますか? --web-inf--classes(ここのフォルダはなにもなし)--model(package)-xxx.class(bean) | --xxx.jsp こんな構成でbeanをxxx.jspで <jsp:useBean id="??" class="model.xxx" /> としてもservletを生成してくれないでコンパイルのエラーがでます。(エラー500) web.xmlとか設定の問題でしょうか?それともservletなしで、jsp+beanだと ダメなんでしょうか?
>>494 > tomcat5.xで、servletなしでjspとbeanだけで動かすことは
> 出来ますか?
できる。
>コンパイルのエラーがでます。(エラー500)
そのエラーの内容を書かないと適切な回答は得られないぞ
Netbeansは無償ですか?
>>493 某県庁の仕事を請け負って開発しているのだが、
未だにWin98やMeが稼働してたりするのでつ。。。
499 :
デフォルトの名無しさん :05/01/22 07:16:16
おはようございます Servlet+JSP+Bean+データベースで、実行ボタンをクリックしたら データベースの一覧がJSPで表示されるようなものを考えます。 その際に、Beanはどのように定義するのがよろしいんでしょうか。 自分がやったのは、 1.UserDataというBeanでidとnameをフィールドに持つ。 2.Servletの部分でデータベースと接続し、 ArrayList objAry = new ArrayList(); while(rs.next()){ UserData userData = new UserData(); userData.setId(rs.getString("id")); userData.setName(rs.getString("id")); objAry.add(userData); } session.setAttribute("user_list",objAry); そしてJSPに転送。 3.JSPで表示 というものなのですが、3.のところでどう呼び出したらよいか分からないのが一点。 Strutsなら簡単なのですが、Struts使わないとよくわかりません。 もう一つはArrayListもBeanにするべきかどうかという点。 Beanの定義に簡単なsetter,getter以外のメソッドをぐちゃぐちゃかくはめになりそうで嫌なんですが・・。 どなたかよろしければ教えてください。 情報が足りない、とかあれば随時かきこみます。
500 :
デフォルトの名無しさん :05/01/22 08:21:13
JSPで・・・ <c:forEach var="row" items="${user_list}"> <c:out value="${row.id}" /> <br> <c:out value="${row.name}" /> <br> </c:forEach> こ
>>491 flash知らなさ杉
>>498 MEも98も1.4.2の動作リストに入ってるし
1.1って遅いんだよ?
>>501 Flashとサーバーサイドと2つとも書ける技術者あまりいませんぜ
動的なコンテンツかける人だけならそれなりにつかまえれるけど、
業務系の画面や考え方となるとね
そもそも開発効率がJavaや.NETとくらべて絶対的に悪すぎ
>>499 > Strutsなら簡単なのですが、Struts使わないとよくわかりません。
何も理解しないでStruts使ってるんだな・・・・
金額を計算するのに浮動小数点は信用できない。 なぜ固定小数点というデータ型がないの? と、ここで愚痴を言ってもしかたないんだけどねw
>>505 BigDecimal か BigInteger 使え。
507 :
デフォルトの名無しさん :05/01/22 13:59:27
>>502 >>498 とは別人だけど、
plug-in のインストールが前提になっただけでお手上げのユーザがいるのよ。
>>507 ユーザではなく開発者ではないのか?
ちゃんと作ればユーザは単にボタンを押していくだけで
プラグインのインストールはできたと思ったが。
509 :
デフォルトの名無しさん :05/01/22 14:26:35
>>508 まず、ユーザがインターネット接続環境であることが保証されていない。
それから、これは自分は知らないので教えてもらいたいんだけど、
ネットのないユーザに対して、plug-in も一緒に配布したとして、セキュリティソフトが
あれこれメッセージを出したりしない?
それがあるとユーザがビビってしまって問合せをしてきて、ユーザが使っている
セキュリティソフトの情報をしなきゃいけなくなるんだが。
510 :
デフォルトの名無しさん :05/01/22 14:27:21
>>509 最後の行 「情報」→「情報収集」 の間違い。
>>507 だからFlashと同じようにプラグインを自動インストールできる
仕組みを使うんだけどな。
>>504 釣られたかな?
strutsには、ActionMappingとActionForwadrdというサーブレットと
JSPを明確に関連つける機能があり、さらに任意のパラメーターも
ワンタッチで設定できるので、相互間のやり取りが簡便になります。
従来みたいに、直接パス名からgetRequestDispacherとかして
さらにデータを渡すのにrequest.setAttributeなんてしなくてもいいし
forward時の例外処理も書かなくていいんです。
これ位常識だと思うのですが・・・
>>514 なんで今までStruts使ってたの?
なんで今回はStruts使わないの?
>>514 >ActionMappingとActionForwadrdというサーブレットと
サーブレットではありません
> 従来みたいに、直接パス名からgetRequestDispacherとかして
従来でもそんなことしません
> さらにデータを渡すのにrequest.setAttributeなんてしなくてもいいし
Struts使ってもそうします
>>514 だからStrutsを使ってない段階でStrutsがやってくれてる事は自分で
やらないといけないに決まってるだろ? それが分からんと言ってるって
ことは、Strutsが何をやってくれるもんなのかもよく分からんまま使って
たってことじゃん。
RequestDispacherまで取れてるんだったらforward()するだけだろ。 何の質問なんだこれ?
>>516 ・・・・釣り師なら天才かな
>サーブレットではありません
サーブレットの意味分かってる?
>従来でもそんなことしません
RequestDispacherを生成するのにパス名以外の方法なんてありません。
>Struts使ってもそうします
strutsじゃ、属性をセットする事なくパラメーターとして(つまりクエリ文字列)
として渡せます。それに属性のセットもワンタッチでできます。
おいおい、ActionMappingやActionForwardはただのStrutsフレームワーク 内のクラスだろが。いつからサーブレットになったんだよ。
>>515 パフォーマンスの問題です。
さらに経験上、画面遷移数が30を超えるWebアプリだと
strutsでは収集がつかなくなるので、マイフレームワークで今回
試験的に作成する事にしました。
522 :
デフォルトの名無しさん :05/01/22 17:02:07
>>517 strutsの限界(ちょっと大げさですが)を感じたから、今回struts抜きの
マイフレームワークで作成して、で、今までstrutsに依存してた部分に
ついての質問をしただけなのですが・・・
何故これでstrutsを分かってない等と言われねばならないのか疑問を
感じます。まあどうでもいい事なんですがね。
単なる煽り厨だったら恥ずかしいし・・
>>519 あなたがどう思おうと、ActionMappingやActionForwardはサーブレットでは
ありません。サーブレットなのは唯一 ActionServletだけ。
ActionForwardを作る方法も最終的にはパス名しかないな。
結局Servlet APIの上で動いているんだから。ただパス名がプログラム内に
出てこないようにXMLとして外だししているだけで。そのXMLは自分で書くん
だし。ActionMappingの定義書いたことあるんでしょう?
最後のは
String path = "/path/to/you/hoge.jsp?param=value"
ってしてRequestDispacherに渡せばいいだけじゃないのか?
ネタでなければただの馬鹿ってことになるんだが。
>>519 > サーブレットの意味分かってる?
この質問はそのままお返ししましょう。
「直接パス名からgetRequestDispacherとか 」
「パス名を引数に渡してjavax.servlet.http.HttpServletRequestオブジェクトから」ならわかりますが「パス名からgetRequestDispacher」は意味不明です。
> strutsじゃ、属性をセットする事なくパラメーターとして(つまりクエリ文字列)
として渡せます。
Struts使わなくても同じです。Strutsだからできると思っているんですか?
>それに属性のセットもワンタッチでできます。
激しく意味不明。
Struts使わないとよくわかりませんってことは Strutsが何をやっているのかよくわかってないで使っているってことだろ
>画面遷移数が30を超えるWebアプリだと >strutsでは収集がつかなくなるので、 収集つかなくなるやり方しかしてないんだろうな。 XDocletとか使ったこと無いだろ?
>>523 >>ActionForwardを作る方法も最終的にはパス名しかないな。
ActiomMapping#findFowrawr(String name)
の引数のどこがパス名なんですか?
これで「ネタでなければただの馬鹿」ってもう話になりませんね。
サーブレットについては言葉遊びになってるので、これ以上の不毛な
議論はもういいでしょう。
最後のテーマについてもワンタッチできます。
Strutsに限界を感じて、Strutsが何をやっているのか知らないまま、 StrutsがServletのどの部分を吸収しているのか理解しないまま 「分かってます」「マイフレームワークです」とかいっても、そりゃ 「なにも理解しないでStruts使ってるんだな」と言われても仕方がないと思う。 まず「分かってません」ってところから始めないと、まともなものが 出来ないと思うよ、本気で。
>>526 不可能です。struts-configを別エンティティに分割したりしましたが
結局は、本質的に同じです。
もっと、ビジュアルなマッピング図が必要だと考えてます。
strutsは何より凡用性を重視してますので、それ以上を求めるのは酷だってのは
理解してるんですけどね。
>>527 > ActiomMapping#findFowrawr(String name)
> の引数のどこがパス名なんですか?
本当に何もわかってないで使ってたんだな。
HttpServletRequset#getRerquestDispatcher() の引数に
直接パス名を指定しないで、外部設定ファイルにパスを設定し
それを読み込む、という方法にすれば同じじゃないか。
> これで「ネタでなければただの馬鹿」ってもう話になりませんね。
これはそっくりそのまま返すよ
>>528 これ以上の煽り意見につき合う気はないので、そろそろ
最後にしますが、私がstrutsを分かってないって
明確なソースは何なのか?
まあ、どうでもいいのですけどね。実際に私がWEBアプリを
開発してるのは事実なんですから・・・
>>531 > Strutsなら簡単なのですが、Struts使わないとよくわかりません。
これにつきる
>>527 おまえ、ほんとに
>>523 読んだのか? findForwardしたらActionForwardが
返ってくるが、ActionForwardにはパス名が必要。だって最後にはServlet API
のforward()を呼ぶんだから。
# ついでにいえば、getNamedDispacher()ってのもあるんだぞ。
だからそれをstruts-config.xmlに<ActionMapping>やらで定義するんだろ。
XMLにパス名を書くだろが。必要なんだからどっかに書くしかないよな。
だれかがXML書いてくれるんでxmlなんて書いたことないのか?
念のためいっとくが、この、具体的なパス名を抽象化してフォワード名として
扱うような機能な、おまえがマイフレームワークで自分で実現しないといけない
機能の一つなんだぞ?
さらにいえば、ActionMappingがServletでないのは言葉遊びでもなんでもなく、
明確な事実だよ。web.xmlに設定するサーブレットはActionServletだけだし、
そもそもActionMappingもActionForwardもHttpServletクラスを継承してない。
当然web.xmlに設定してサーブレットとして呼び出すことも出来ない。
ActionServletが内部で使う一つのクラスに過ぎない。
何言ってんのほんと?
>>531 このスレは十分に明確なソースだと思うが....
おれはStrutsで画面遷移数が30以下のものを開発したことのほうが少ないが... ちゃんと収集がついてるけどねえ。
>>535 そこら辺は人によりけりでしょう。
人によっては、OOP無し書かれた大規模なソースも、上手く構造化
されてると見ますからね。
自分はソフトウェア理論から入りましたので、actiom-mappings内の
羅列には抵抗を覚えます。設計に厳しい面がありますので・・
ActionMappingをビジュアルに表現してくれるソフトを使ったら いいんでない? まあStruts自体に問題ありだとは思うけどね。おれはActionMappingより 特にActionFormの存在意味がほとんどないのがな....
だから使い方を教えろって
ここまで読んだ。
>>531 は正直言って開発者に向いてないと思う。
100あることを100知ってるような発言するくせに、他人の意見についてなんら検証してないでしょ。
自分が正しいことを証明するのは難しいかもしれないけど、他人の意見に間違いがあるなら
それをちゃんと理由付きで説明できないと仕事でやってく人間としては失格だよ。
ビジュアルに見たいのならStrutsIDE使えば?
>>540 531は他人についてのみならず
自分のしたいことや、自分のわかっていること・わかっていないことを
他人に説明する能力も著しく欠けているよ
>>500 ありがとうございます。JSTLという存在をおかげさまで知ることができました。
一覧作成もできました。
>>504 はい、Java暦3ヶ月で・・まごうことなき初心者です
Strutsはサンプルとしてコードをみせてもらったことがあるぐらいで、
自分ではほとんど書いたことはありません。
Strutsでここまで議論になっているところをみると、
みなさん使っているんですねー。
>>538 ActionFormの欠点は、大きなファイルのアップロード時にメモリ不足に
なりやすい事ですね。全部読み込んでActionFormインスタンスに
してしまうのですから・・・
データを部分的に順に読み込んで、順次データベースに転送するって
方法が使えないので、そこら辺は仕方なくコールバックタイプの
フォームデータ読み込みBeanを作成しました。
Object.wait() Object.notify() がObjectクラスにある必要がよくわからんです。 MutexクラスやRockクラスを用意するより基底クラスで実装するもんなんでしょうか。
546 :
デフォルトの名無しさん :05/01/22 20:11:03
簡単に文字列を暗号化できるクラスを探しています。 たとえば、 //文字列strをpassを使って暗号化 String encode = EncryptClass.encrypt(str, pass); //暗号化した文字列encodeをpassを使って復号化 String decode = DecodeClass.decode(encode, pass); こんな感じで簡単に使用できるクラス・メソッドって ないでしょうか?暗号の強度などは気にしません。 パッと見てよくわからない文字列になればいいです。 どなたかよろしくお願いします。
>>546 文字列もpassもchar[]かbyte[]にしてxorして16進文字列に変えるとかどう?
それくらいなら自前で作れるでしょ。
>>546 じゃBASE64とかunicodeエスケープとかでいいじゃん。
めっちゃ簡単でいんだったら適当な値でxorすりゃいいな で、もう一回同じ値で xor して元に戻す
>>545 非常に便利であっても、それを素人が使うと
問題が出てくる可能性のある場合、
その芽は予め摘み取っておく。
これが Java の思想。
552 :
デフォルトの名無しさん :05/01/22 23:42:48
Tomcatを用いたWebアプリケーションについて質問します。 webapp | +--myApp | +-lib + bar.jar | +subLib + foo.jar こういうディレクトリ構成の場合、bar.jar、foo.jar共にクラスパスを通してやりたいと 思っています。しかしながら、通常Tomcatの場合はlib直下のディレクトリには クラスパスが通りますが、subLibディレクトリ以下のjarファイルにはクラスパスは 通りません。 みなさん、このような場合は、どのように解決すればよろしいでしょうか。
libの下に全部おくべき
「おかなければならない」ではなく「おくべき」ということは 技術的な制約ではなくなにか別の理由でサブディレクトリを 作ってはいけないのですよね。その理由をお聞かせください。
早速のレスありがとうございます。 そうですね。理由といえば、論理的にライブラリディレクトリを分けておきたいといったところでしょうか。 大規模なwebアプリになってくるとjarファイルだけでも数十になってきたりします。 特にオープンソースのコンポーネントを多数使っている場合に数が多くなってしまいますので せめてディレクトリを分けることにより、開発者に「このコンポーネントはこのディレクトリ配下の jarファイルで構成されている」ということを認識してもらいたいからです。 たとえディレクトリに分けてjarを配備してもAppコンテナから見れば並列に扱われればいいので なんとかして上記のような構成にしたいと思っています。
グレースケールのjpeg画像の強度を得るには どうしたいいのでしょうか BufferedImageのgetRGBメソッドを使っても ぜんぜん違う値になってしまいます 以下ソースです BufferedImage bi = ImageIO.read(new FileInputStream("hoge.jpg")); int pixel = bi.getRGB(0,0); System.out.println((pixel & 0xff)); 画像がRGB画像の場合では上記のソースで正しくRGBの強度 を得ることができました
>>556 Servlet仕様では/コンテキスト/libではなく
/コンテキスト/WEB-INF/libなのだが。
>>558 すまん。間違った。
WEB-INF/libとして話を進めてくださいませ。
引き続き、宜しくお願いします。
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class A extends JFrame implements Runnable, ActionListener { String[] str = { "1", "2", "3", "4" }; JButton jButton = new JButton("Draw"),jButton2 = new JButton("Stop"), jButton3 =new JButton("Open"); JComboBox jComboBox = new JComboBox(str); Image image; Graphics g, buf; Thread thread = null; private boolean flag; public static void main(String[] args) { A jFrame = new A(); } A() {setBounds(0, 0, 400, 250); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBackground(Color.WHITE); Container con = getContentPane(); con.setBackground(getBackground()); con.setLayout(new FlowLayout()); jButton.addActionListener(this); jButton2.addActionListener(this); jButton3.addActionListener(this); con.add(jComboBox);con.add(jButton); con.add(jButton2);con.add(jButton3); setVisible(true);g =getGraphics(); image = createImage(getWidth(),getHeight() - (getInsets().top + getInsets().bottom + jButton.getY() + jButton.getHeight())); buf = image.getGraphics(); }
public void run() { while (flag) { myPaint(); try { Thread.sleep(100); } catch (InterruptedException e) {} } } private void myPaint() { buf.setColor(Color.BLUE); buf.fillOval(50,50,100,100); g.drawImage(image, 0, getInsets().top + jButton.getY() + jButton.getHeight(), this); } public void actionPerformed(ActionEvent e) { if (e.getSource() == jButton) { if (thread == null) { flag = true; Thread thread = new Thread(this); thread.start(); } } if (e.getSource() == jButton2) { flag = false;thread = null; } if(e.getSource()==jButton3){ JOptionPane.showMessageDialog(this,"test"); } } }
すみません。 上のプログラムでDrawボタンを押した後、コンボボックスをクリックすると (drawImageで上書きされて?)すぐに消えてしまいます。 消えないようにするためにはどうすればいいですか? また、しかしながら、Openボタンを押した後ならすぐに消えません。それはなぜですか? 教えてください。
>>557 BufferedImageのピクセルフォーマットが何になってるかとかしらべてみそ
>>563 すみません,ピクセルフォーマットの情報は
bi.toString()
のなかにありますか?
いちおうBufferedImage.javaやColorModel.java等の
ソースを見てみましたが,さっぱりわかりませんでした
こちらのスレより適切そうなスレがありましたね。 自ら誘導されて行ってきます。。。 スレ汚し失礼しました。
Strutsまったく使ったこと無いんですが、
>>514 は、
>ActionMappingとActionForwadrdという/
>サーブレットとJSPを明確に関連つける機能
という具合に切って読むんですよね?なんか、
>ActionMappingとActionForwadrdというサーブレット/
>とJSPを明確に関連つける機能
という感じで話が進んだようですが、微妙に気になる。。。
568 :
デフォルトの名無しさん :05/01/23 07:43:16
すみません、だれか
>>509 の相手をしてくれませんか?
569 :
デフォルトの名無しさん :05/01/23 07:59:14
public class exsample3{ public static void main(String arg[]){ int siire_ne1, teika1, kosuu1, goukei; int siire_ne2=200, teika2, kosuu2=3; siire_ne1=100; kosuu1=2; teika1=siire_ne1+10; teika2=siire_ne2+15; goukei=teika1*kosuu1+teika2*kosuu2; System.out.println(goukei); double zeikomi1, zeikomi2; zeikomi1=houhou1(teika1); //メソッドの利用 zeikomi2=houhou1(teika2); System.out.println("1:\t"+zeikomi1); //タブの出力 System.out.println("2:\t"+zeikomi2); /* ここから2行は、特殊文字の説明です */ System.out.println("1234"+"5678901234567890"+"\n"); System.out.println("1234\t123\t12."); } /* ここからはメソッドhouhou1の定義です */ public static int houhou1(int teika){ double waribiki, urine_ne, zei; waribiki=0.2; zei=0.05; uri_ne=teika*(1-waribiki); return(int) (uri_ne*(1+zei)); } } 23、24行目でシンボルが解決できないそうです。何故なんでしょうか?
>>569 宣言されていない変数 uri_ne が使われているからだと思いますが。
21行目の urine_ne を uri_ne にすれば良いんじゃないでしょうかね。
571 :
デフォルトの名無しさん :05/01/23 08:18:49
>>570 ありがとう!マジでわかんなかった・・・orz
>>567 なるほど!
おれも後者で読んでたクチですな。
>>572 大多数は後者で理解してるでしょ。
ていうか書いた本人も後者の意味で書いていると思う。
ActionMappingとActionForwadrdサーブレットじゃないという
レスにも何も返答できてないし。
ブラウザのウィンドウを最大表示する書き方はありますか。 最小化、最大化、閉じるボタンは表示したいです。 <a href="" onclick='window.open( "GAMEN.HTML", "maxsize")'>GAMEN</a>の様な感じです。 IEとネスケで開きたいです。
誘導してんだから吊らずに移動しる
580 :
デフォルトの名無しさん :05/01/23 20:54:38
質問をします。 ある文字列が整数かどうかを判定する時に、 Integer.parseInt(id); でエラーがでるか否か以外にシンプルな方法ありますでしょうか。 よろしければ教えてくださいませ。
正規表現
Sunが乗り換えキャンペーンとは珍しいですね
JRE、1.4.2_06だった、大丈夫ですかね?
585 :
デフォルトの名無しさん :05/01/23 21:38:11
質問させてください。 public class Oya{ // 略 equals(Object o){ // equalsの実装 // 略 } } public class Ko extends Oya{ // 略 equals(Object o){ // 略 } } という2つのクラスがあり、 あるところで boolean oyadehikaku(Oya o){ Oya oya = (Oya)getObj(); // getObj()はKoを返すメソッド return oya.equals(o); } といった感じでOyaレベルで比較したいのですが、 getObjで返されるオブジェクトがKoなのでKoのequalsメソッドで 比較してしまいます。 このような場合どのようにしてOya#equalsを利用するのでしょうか?
↑ 上の2つのメソッドの前に戻り型のboolean付けるの忘れてました すいません
(´-`).。oO(コボラーと同レベルだな)
カスの余計なレスがうざいね プログラマは性格がねちねちしてるやつ多すぎ
まあ、あまりにもレベル低いからだろね
>>590 みたいなレスをスルーしとけばスレもマターリするよ
594 :
デフォルトの名無しさん :05/01/23 23:53:59
P3(int i, int y, int o) { this.i=i; this.y=y; this.o=o; } というインスタンスメソッドがあるとします。これを P3(int i, int y, int o) { this(i, y, o) } というふうに書いてたら間違いですか?
595 :
デフォルトの名無しさん :05/01/24 00:05:09
推薦で情報学科に合格している高3です。 一年次からJAVAが必修になっているらしいので、JAVAを初めから勉強したいと思います。 おすすめの本を教えてください。
596 :
デフォルトの名無しさん :05/01/24 00:05:34
立ち読みして気に入ったら買え。
601 :
595 :05/01/24 00:26:59
>>595 焦るな。やりたいことを、やりたいだけやっとけ。
スタンドアロンとAppletと両方使えるjarを作りたいのですが 画像の読み込みで同一のクラスで読み込めるものってありますか?
>>585 オブジェクト指向の原理的に無理。
それとは関係ないがそもそもその例では
Ko クラスで equals メソッドをオーバライドしてるので
a.equals(b) が true なのに b.equals(a) が false になるようなことが
起こる可能性があり、非常によくない。
どうしてもやりたかったら static boolean equals(Oya o1, Oya o2)
みたいなメソッドを Oya クラスに追加するのが簡単。
606 :
デフォルトの名無しさん :05/01/24 04:25:58
javaにも、.NETみたいにプロパティというものを作りたいのですが、 javaにインスタンスのフィールドの値が変更されたときに呼ばれるリスナーのメソッドってありますか?
607 :
デフォルトの名無しさん :05/01/24 06:07:25
>>606 ない
よってむり
Cでオブジェクト指向やるようなもん
608 :
デフォルトの名無しさん :05/01/24 06:17:33
import java.io.*; import java.util.*; public class e12{ public static void main(String arg[]){ String line,s1; int i,j; double sum=0.0; try{ //JDK1.0.対応;1.1の時「推奨されないAPI」の警告メッセージ // dataInputStream fi = // new DataInputStream(new FileInputStream("data3.txt")); //JDK1.1.対応; BufferedReader fi= new BufferedReader(new FileReader(data3.txt)); while((line=fi.readLine())!=null){ //最終行か? StringTokenizer tk=new StringTokenizer(line,","); j=tk.countTokens(); System.out.println("["+j+"]tokens ->"); for(i=0; i<j; i++){ s1=tk.nextToken(); //トークン抽出 System.out.print("\t"+s1);} System.out.println();} fi.close();} catch(FileNotFoundException e){ //ファイルがない時 System.err.println("FileStreamsTest:"+e);} catch(IOException e){ //入出力エラーの時 System.err.println("FileStreamsTest:"+e);} } } 実行時に読み取るファイルをコマンドラインで指定できるように修正せよ。上で修正したプログラムを存在しないファイル名で指定して実行し、ディスプレイにメッセージを表示させよ。 マジわかりません、教えてください
609 :
デフォルトの名無しさん :05/01/24 06:19:52
フォームで、あるデータを送信するのと、 再読込みで同じデータが送信されてしまうのを 区別する方法ってありますか? JSPでじゃんけんプログラムで困っています・・。
>>608 どの部分がわからないのかが不明だから答えようが無い。
>>609 フォームにhiddenでフォーム表示時の時分秒+IPを埋め込む。
JSPのセッション管理で前回の時分秒+IPを保持しておき、
同じ値だったらリロードされたと判断できる。
ゴメン。
>>610 の+IPは無くてもいい。
但しこの方法だと1秒に1回しか送信できない。
マイクロ秒まで埋め込むことができれば問題ないが。
hiddenで時分秒を埋め込むには、フォームをperlかPHPで表示するか、
JavaScriptのOnLoadかOnSubmitを使う。
612 :
608 :05/01/24 06:46:35
>>610 すいません、コマンドラインで指定するっていうのもイマイチわかりません。
修正ってどこ修正するのかもわかりません。
>>612 そのレベルは質問以前の問題だから、入門サイトを隅から隅まで嫁。
それだけじゃ可哀想だからヒントを。 コマンドラインから入力した文字を表示する public static void main(String[] args) { System.out.print(srgs[0]); }
616 :
デフォルトの名無しさん :05/01/24 06:53:53
>>605 ありがとうございます。教えていただいた静的メソッドでやってみるとこにします。
質問させてください。 mysqlのdate型で0000-00-00という値をgetDateやgetStringで取り出そうとするとエラーがでてしまいます。 普通の日付だったらうまく取り出せるんですが… 何かいい方法はないでしょうか?よろしくお願いします。
>>619 0月0日って有り得ないだろ。
データを見直せ。
>>619 データを入力するときに日時を指定しなかったり、間違った日時を入力したとき、
デフォルトで0000-00-00という値が入るようになっているんですが、これは間違った使い方なのでしょうか?
mysqlのリファレンスでも0000-00-00という値が入ると書いてあるので問題ないと思っていました。
まだ初心者なので見当違いのことを言っていたらすみません。
できるだけ仕様を変えたくないのでうまく取り出す方法がありましたら教えてください。
mysqlってDate型にNULL無いの?
623 :
デフォルトの名無しさん :05/01/24 12:22:08
default値を変えませう
>>621 入力が無いならまだしも、間違った日時が入力できるっていうのは駄目だろ。
それは置いといて、もしnullがないのなら日付が有効か無効かを示すための項目を一つ増やせ。
それで無効の時は日付に1990-01-01とかなんでもいいから入れとけ。
Tomcat5.5.4を使ってJSPの勉強をしています。 自分で作ったclassファイルを使いたいのですが どのように置けばよいでしょうか? とりあえず \WEB-INF\classes\aaa の中に入っていて package aaa; とJSPの中で書いて呼び出していますが The server encountered an internal error () that prevented it from fulfilling this request. とエラーが出ます。 tomcatをインストールしたときに 一緒にサンプルも入れたのですが そちらのWEB-INFにはweb.xmlというファイルが入っていました。 このxmlファイルで登録(?)とかしないと駄目なんでしょうか?
>>625 JSPの書き方が間違ってるんじゃねーの?
>>625 Tomcatではデフォルトパッケージ(パッケージ宣言無し)のクラスは
インポートされないので、クラスはパッケージ宣言付きで実装し、
/WEB-INF/classes/パッケージ名に配置するべし
625です。ご返信ありがとうございました。 JSPの書き方を間違えていた模様です。恥ずかしき。 ただちょっと気になったのですが staticで書いたメソッドは インスタンスを作らなくても呼び出せる と本にあったのですが 実際は 作らなかったらエラーで 作ったら正常に動作しました。 そういうものなんでしょうか?
>>628 またJSPの書き方かメソッドの定義の仕方間違ってるんじゃねーの?
きっとこんなところだろう。 package foo; class Bar{ public void buz(){} public static void hoge(){} } で、JSPでこう書いたと。 <jsp:useBean id="bar" class="foo.Bar" scope="request"/> <% bar.buz(); %> なら上手くいって <% Bar.hoge(); %> で怒られるとか。
>>609 POSTリクエストを処理した後、次画面をリダイレクトで表示すればいいのでは
ないですか?
>>628 > そういうものなんでしょうか?
あなたのコードが間違っている可能性大。
SocketChannelからreadしたByteBufferを sjisに変換したいのですが、どうしたらよいのでしょうか?
>>633 つ java.nio.CharSet, java.nio.CharSetDecoder
thisでロックをかける書式がよくわからない。 class Lock{ public foo(){ synchronized(this){ hoge(); } } } で複数スレッドが Lock lock = new Lock(); lock.foo(); したときってlockインスタンス別なんだから期待したロックが かからないんじゃーって思う。 馬鹿にもわかるように解説してくれる方はおりませぬか。.
cronでJavaを実行させると出力が文字化けしてしまいます。 例) System.out.println("日本語を出力"); サーバーは、redhat9です。 sshから実行した場合は、問題ありません。 いろいろ調べてみたのですが、どうしても解決できません。 cronでの文字化けを解決するには、どのようにすればよいのでしょうか?
637 :
デフォルトの名無しさん :05/01/24 22:13:26
Javaの勉強を再開した者です。 classが作られディレクトリにパッケージのホルダーを作って いるのですが、それを使うソース(classと同じディレクトリ に置いている)をコンパイルすると、 パッケージ xxxxx は存在しません。 import xxxxx.*; sdk1.3のとき問題なくコンパイルできたのにj2sdk1.4.2_06 だとうまくいきません。 なぜでしょうか? と、エラーになるのですが。
638 :
デフォルトの名無しさん :05/01/24 22:15:15
>>637 ですが、文を訂正します。
Javaの勉強を再開した者です。
classが作られディレクトリにパッケージのホルダーを作って
いるのですが、それを使うソース(classと同じディレクトリ
に置いている)をコンパイルすると、
パッケージ xxxxx は存在しません。
import xxxxx.*;
と、エラーになるのですが。
sdk1.3のとき問題なくコンパイルできたのにj2sdk1.4.2_06
だとうまくいきません。
なぜでしょうか?
>>636 環境変数が設定されてないね。
cronから実行されるスクリプトに
echo $LANG > /var/log/cron.log
とか追記してから、cronに実行させて、
日本語に対応したロケールが設定されているか確認して。
>>635 その例ではまったく意味ない。
複数スレッドで「一個」の Lock オブジェクトを使う場合に意味がある。
例えばこんな感じ。
final Lock lock = new Lock();
for (int i = 0; i < 10; i++) {
new Thread() {
public void run() {
lock.foo();
}
}.start();
}
641 :
デフォルトの名無しさん :05/01/24 23:17:28
ダブルクリックで動くようにJARファイルにまとめようとしたら、 こんな表示がでてJARになりません。JARになっても中身がからっぽです。 c:\MyApplet>jar cvfm Sentou.class Mikata.class Teki.class WinLose.class java.io.IOException: invalid header field at java.util.jar.Attributes.read(Attributes.java:355) at java.util.jar.Manifest.read(Manifest.java:162) at java.util.jar.Manifest.<init>(Manifest.java:52) at sun.tools.jar.Main.run(Main.java:124) at sun.tools.jar.Main.main(Main.java:904) どうしたらいいのですか?
>>641 > jar
と打って出てくる文章を読め。
try{ System.out.println(java.net.InetAddress.getLocalHost()); }catch(UnknownHostException ex){ //ここでは何をするべきなんでしょうか。 //というかどんな場合にここに来るんでしょうか。 }
645 :
デフォルトの名無しさん :05/01/24 23:49:44
私の知人の公立中学校教師がこの前結婚したんだが結婚祝いに 組合(いわゆる日教組)から30万円も貰ったんだと嬉しそうに言っていた。 組合のおかげで1年間病気で休んでも給料は普通に出るそうだ。 日教組が反日教育を行っており日本の子供たちにどんどん悪影響を及ぼしているにも関わらず、 日本の馬鹿教師達は、日本の将来を背負ってたつ希望に満ちた学生たちに対して 毎日のように反日教育を繰り返しているのである。 「学生にオススメの新聞は朝日新聞だよ」などと学生たちに吹き込みながら。 日本の教育は今後どうなっていくのだろうか
646 :
デフォルトの名無しさん :05/01/24 23:57:46
>>642 JARファイルは作成できました!
が、ダブルクリックでは何も起こりません。どうしたらダブルクリックで起動するようにできますか?
大学が入試問題に朝日の記事を使うのを止めさせなきゃいかんな
>>639 ありがとうございます。
スクリプトの先頭に、
export LANG=ja_JP.ujis
を記述することで、解決しました。
>>606 一応書いておくけど、単なるプロパティ(Getter/Setter)にデフォルトでそういう機能はないけど、
JavaBeans仕様の一部としては、バウンドプロパティというのがある。プロパティの値が変更さ
れると、PropertyChangeListerとして登録されてるリスナにPropertyChangeEventを送るという
仕様がある。
むろんBean作成者が自前で実装するわけだが、さすがにそんなもん実装してられないので、
PropertyChangeSupportというクラスに移譲すれば良きに計らってくれる。
addPropertyChangeListenerもfirePropertyChnageも全部こいつに移譲で幸せになれる。
>>640 うぉーサンクス!納得しますた。
java言語仕様にスレッド関連の項目いっぱいあるけど、
そこらへんについて書いてあるところが上手く探せなかった。
本当ありがとう。
>>635 LockインターフェースなるものがJ2SE5にあるので
紛らわしい名前は控えたほうがいいかと
ちなみにこうやって書く
lock.lock(); // block until condition holds
try {
// ... method body
} finally {
lock.unlock()
}
クリティカルセクションとかやってた人にとってはこっちがわかりやすいかな?
パフォーマンスもsynchronizedよりかなり高い
あいかわらずの厨の溜まり場
はい、もちろん手前も厨です。質問いきます。恐縮です。 何故子クラスが親クラスのインポート受け継がないんです? ご支援ご鞭撻の程宜しくお願い申し上げます。 願わくば、自分のキャパが狭いので簡潔に教えてください。
インポートも受け継いだら・・・どうなる?
655 :
デフォルトの名無しさん :05/01/25 07:13:07
finally文って使う時ありますか?なくてもcatchのあとにかけばよいような・・
656 :
質問です :05/01/25 08:42:40
今、Java1.4でゲームを作っています。 それでUSB接続のゲームパッドを使いたいのですが、ボタン入力を KeyListenerで取れるかなーと思っていたら、取れませんでした。 Σ(>д<;)ショーック! [Java ゲームパッド]で物知りなGoogleさんに聞いみたのですが、 分かりやすい答えが返ってきませんでした。 ΣΣ(>д<;)ダブルショーック! ゲームパッドの入力を取るにはどうしたら良いのでしょうか? m(>_<;)m ム板の皆さん、教えてください!!!
>>655 私はこういうときに使うよ。
Connection conn = null;
try {
conn = myDatabase.getConnection();
// 例外が投げられるかもしれない処理…
} catch (Exception e) {
return result;
} finally {
if ( conn != null ) conn.close();
}
// 続きの処理…
>>655 士郎よ、お前は何もわかっておらん!
finallyはtry、catchの中でreturn、throwしてても必ず通る。
catchの後に書いた文などとは格が違うのだ!
>>655 えーとね、
>>657 を実行して例外が投げられるとね、あたかも
Connection conn = null;
conn = myDatabase.getConnection();
// 例外が投げられるかもしれない処理…
if ( conn != null ) conn.close();
return result;
って書いたように実行されるんだよ。でね、例外が投げられないときには、あたかも
Connection conn = null;
conn = myDatabase.getConnection();
// 例外が投げられるかもしれない処理…
if ( conn != null ) conn.close();
// 続きの処理…
って書いたように実行されるの。
必ずやらなきゃいけない後始末の処理を finallyブロック に書くと、
すっごく便利だよね!(>_<)b
660 :
デフォルトの名無しさん :05/01/25 09:28:20
すみません、原理がさっぱりわからないので質問させてください。 ヒントだけでもお教えいただければ幸いです。 アプレットでするプログラムをアプリケーションで実行させようと試み、以下のように変更いたしました。 import java.applet.Applet; ↑を削除 public class Image2 extends Applet implements Runnable { ↑をpublic class Image4に変更 上記のように変更したところ、エラーがたくさん出てきました。 もしかしてアプレットで使えてもアプリケーションでは使用できないような記述があるのでは、と考えましたがさっぱりわかりません。 よろしければご教授願います。
記述の間違いがありましたので訂正します。 public class Image2 extends Applet implements Runnable { ではなく、 public class Image4 extends Applet implements Runnable { です。
>>660 まずextends Appletという時点で違うだろ
663 :
660 :05/01/25 10:00:11
>>662 そのプログラムはサイトから参照したものなので、よくわからないまま使ってました・・・
アプリケーションで実行するためにはどうしたらいいでしょうか?
665 :
デフォルトの名無しさん :05/01/25 11:28:13
>>660 public static void main(String[] args) {
Image2 apl = new Image2();
apl.init();
JFrame frm = new JFrame();
frm.getContentPane().add(apl);
frm.setSize(600, 480);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setVisible(true);
}
このコードをアプレットクラスImage2内に含めればOK。
で、普通に実行する。
((String)null).length();
667 :
660 :05/01/25 11:54:22
>>664 ありがとうございます。
参考にさせていただきます。
>>665 含めてみましたが、その文にもエラーが出てしまいました・・・
使用ソフトはeclipse3.0です
どこで聞いて良いか分からないので、ここに書いちゃう。 Mavenをプロジェクトで使ってる人って居る? 何か既存のプロジェクトにMavenを使おうとしたんだけど 難しくて良く分からん・・・。
671 :
660 :05/01/25 12:58:47
>>668 Syntax error on tokens, InterfaceHeader expected instead
Syntax error on token "init", Identifier expected after this token
Syntax error on token "getContentPane", Identifier expected after this token
このようなエラーが出てきます。
>>670 おおっ、すげぇ。
どうやって使い方マスターしたんですか?やっぱapacheのサイトを熟読?
もし参考サイトとかあったら教えてくれぃ。
>>656 >>658 ありがと!
catchの中でプログラムが終了して困る場合に有効なわけですね。
finallyは敗戦処理野郎と。
んでもcatchの中って、
catch (Exception ex) { ex.printStackTrace ();}
とか、
catch (SQLException ex) {
System.err.println("SQL State : "+ ex.getSQLState());
System.err.println("ErrorCode : "+ ex.getErrorCode());
}
ぐらいしか今の所書いたことないなくて・・
あんまりありがたみが・・。
>>673 例えばtry~catchの間でDBに対する何らかの処理を行っていて、その処理が
正常終了出来ずにExceptionが発生した場合でも、finallyにDB接続のクローズ処理を
書いておけば、間違いなくクローズされるようになる。
多分こんな感じ。
finallyはなんらかのIOがあるアプリでは必須だよ
676 :
sasa :05/01/25 17:21:57
Jビルダーを使っているのですが、Jpanelに画像を貼るにはどうしたらよいのですか ?教えてください。
>>674 すいません。言われるとおりDB接続の例外、finally、クローズ処理を
描いてみたのですが・・・
Connection con = ds.getConnection();
try {
Statement st = con.createStatement(・・・
} catch (Exception ex) {
} finally {
try {
con.close();
} catch (Exception ex2) {
try {
con.close();
} catch (Exception ex3) {
(ここにさらに入れ子になる・・・)
}
}
}
って無限入れ子ループに陥ってしまいました。どうすれば完全確実に
Connectionをクローズできるのでしょうか?
678 :
sasa :05/01/25 17:28:02
Jビルダーを使っているのですが、Jpanelに画像を貼るにはどうしたらよいのですか ?教えてください。
679 :
デフォルトの名無しさん :05/01/25 17:29:47
>>678 JPanelをボーダーレイアウトにして、JLabelを配置する。JLabelに画像をセットする。
JPanelに描画したいのなら普通にpaintComponentでもいいけどな
>>677 おまいはアホか。
一旦クローズで失敗したら、あきらめろ。
例外をログにでも吐いて抜け出せ。
682 :
sasa :05/01/25 17:58:03
ありがとうございます!JLabelのどこに画像をセットすればよいのですか? 何度もすいません。
683 :
sasa :05/01/25 18:14:26
ありがとうございます!JLabelのどこに画像をセットすればよいのですか? 何度もすいません。
684 :
sasa :05/01/25 18:23:37
課題の締め切りが迫ってますのでお願いします。 Jlabelのどこに画像をセットすればよいのですか? ほんとにすいません。
宿題なら宿題すれへ APIマニュアルくらい読んだのかなぁ・・・・
ぬるぽ
688 :
デフォルトの名無しさん :05/01/25 19:49:57
静的メンバを格納したユーティリティクラスがあるのですが、 このクラスを継承したクラスから、先の静的メンバにアクセスするのは良くないのでしょうか。 Eclipseに怒られるのですが。
privateにでもなってるんじゃねーの
すいません、書き方が悪かったです。 Aクラスがpublic staticなメソッドaを持っていて、BはAを継承するとき、 B.aにアクセスしています。 これが警告を受けるんです。
>>690 継承では、staticなメンバは引き継がれない。
692 :
デフォルトの名無しさん :05/01/25 20:38:26
質問者じゃないけど、 こんなのはできるで、 class tesuto333{ public static final int v = 99; tesuto333(){ }} class tesuto3333 extends tesuto333{ public static void main(String args[]){ System.out.println(new tesuto3333().v); } tesuto3333(){ }}
>>690 継承する時にアクセスなんてできるわけないだろう。
エラーの読み間違いじゃない?
>>691 馬鹿
氏ね
>>690 作法の一つだと思ってくれ。
コンパイル時のオプションがデフォルトだと注意される。
オプションで警告でないように出来るよ
継承ではstaticメンバは引き継がれないというのは正しいぞ。 そもそもstaticはクラスに属しているものだから。 名前が同じstaticフィールドをそれぞれ変更してみればわかる
Date と Calender クラスが死ぬほど使いづらいような気がするんですが こんなもんでしょうか。設計失敗してんじゃねぇか?って思う。
日付関連は設計が悪すぎるね。 日付処理(計算)関係のクラスも少ないし
>>685 >なんだか拡張子が[.jar]っていうのが実行に戸惑ってしまいそうなので、
>拡張子を[.exe]にファイル名を変えてみたりコンパイルの際に出来る
>ファイル名の指定を「guisample.exe」にしてみたりしたのですが、
>有効なwin32アプリケーションではないらしくて実行できませんでした。
ワラタ
694みたいなのがいるから staticフィールドが継承されると勘違いする奴が増えるんだ
700 :
sasa :05/01/25 22:21:37
いろいろ調べたのですが、JPanelに画像を張るやり方がわかりません。 どうか助けてください。
>>700 あせってるのは分かるがいい加減ウザイよ。
ウザイ
オブジェクト指向らしいソースの書き方ってどんな感じですか?
705 :
DNS未登録さん :05/01/25 22:56:21
JSPは板違いですか?
A is 14.1421 B is -2.4362 C is 3.1415 という文字列の、アルファベットとスペースを消し、 数値間に「,」(カンマ)を入れた 14.1421,-2.4362,3.1415 という文字列の作り方が分かりません。 見当として、replaceとdeleteの使用を試みましたが 上手くいきませんでした。 アドバイス願います。
複数のスレッドから同時にstaticなメソッドを呼び出すとき staticメソッドにsynchronized修飾子をつけなければいけない時ってどういうときなんでしょう? 今までメモリ上の同じ場所にアクセスしているから、 スレッドを使うときはsynchronizedにしないといけないのかと思ってましたが、 CoreのMathクラスとか、Jakarta Commons Lang の StringUtilクラスとかは synchronized指定をしてないですよね。 staticメソッドから他の共有するもの(たとえばファイルとか)がある場合のみ synchronizedにすればいいのか、 いまいち、どういったときにsynchronizedをつければよいのかがわかりません。 法則みたいなのがあれば教えていただけませんか?
708 :
デフォルトの名無しさん :05/01/25 23:26:06
TOMCATのインストールがうまくいきませn OSはXPSP2 VERは4.127 C直下にstrというフォルダを作ってそこに入れました。そしてserver.xmlに <!-- School Lesson Context --> <Context path="/str" docBase="C:\str" crossContext="true" debug="0" reloadable="true"> </Context> に編集しました。 そしたら HTTP Status 500 - -------------------------------------------------------------------------------- type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception javax.servlet.ServletException: com/sun/tools/javac/Main (Unsupported major.minor version 49.0) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:249) at javax.servlet.http.HttpServlet.service(HttpServlet.java以下略 というエラーが出ました。どうしてでしょうか?アドバイスお願いします
>>707 >staticメソッドから他の共有するもの(たとえばファイルとか)がある場合のみ
>synchronizedにすればいいのか、
そのとおり。
>>707 同じ場所にアクセスしてる場合でも、
- そこに格納されてる値を読む
- その値から何か新しい値を計算する。
- 新しい値を書き込む
って一連の操作をアトミックにする必要がなければ、synchronizedはいらないよ。
単純な例をあげると、どのスレッドも読むだけの場合はsynchronizedはいらない。
あと、synchronizedにしなきゃいけない場合でも、あんまりstaticメソッドにはつけないなあ。
staticメソッドにsynchronizedつけると、そのクラスオブジェクトがロックされちゃうから色々不便なこともある。
>>706 String s = "A is 14.1421 B is -2.4362 C is 3.1415";
String 答え = s.replaceAll("[^1-9.]+", ",");
>>710 マルチスレッドの場合読むだけでもsynchronized必要なんだが・・・
お答え頂き、ありがとうございます。 staticメソッドは継承出来ないんですね。 ということはコンパイラが吸収しているわけだから、 逆コンパイルするとクラス名が変わっているのかな?
>>712 スレッドによるローカルコピーの問題は値を読むだけなら発生しないんじゃないの?
ああ、volatileの話がしたいの?
他のスレッドが書き換えた場合
それは「読むだけ」の条件に反してるだろ。。
>>707 > スレッドを使うときはsynchronizedにしないといけないのかと思ってましたが、
> CoreのMathクラスとか、Jakarta Commons Lang の StringUtilクラスとかは
ローカル変数しか使っていないメソッドも synchronized 不要。
721 :
poponach :05/01/25 23:59:56
プロとして働く為に趣味で勉強を続けている J a v a ある程度の基本はマスターしたのですが、 趣味 ~→ プ ロ( グ ラ マ ) へのシフトに苦労しています。 どうすれば、開発現場で使えるという風に見なされるので しょうか?Eclips3で勉強中です。
>>721 まずはeclipseなしである程度書けるようになれ。
EJB覚えろ ハッタリでいい
>>721 変なクセをなくして誰が見ても無難と思えるコーディングできるようにしる
趣味で勉強してるヤシはやたらと独自なコード書いちゃったり、
既存コードを改変しちゃったり、で迷惑なときがある
EJBなんて無駄に重くて使う価値ないよ。 ・・ていうハッタリはダメ?
>>721 ぶっちゃけ無理っす。実務経験がなければ何を知ってても開発現場
で使えるという風には見なされません。
今の現場は1に実務経験、2に新卒、3~4がなくて、5に職歴だから
何が使えればどうなるってもんじゃない。
学生ならとにかくがむしゃらに入社する事だけを考える。
既に社会人なら派遣に登録してみる。今時は実務経験がないと派遣
でも仕事が取れないと聞いてるけど、取れたらめっけもんのつもりで
とにかくどんな形であれ実務経験を手に入れるのが大切。
>>716 寝ぼけ半分で書いたのだがよくvolatileのことわかったな(w
文字列の変換の質問
A is 14.1421 B is -2.4362 C is 3.1415 → 14.1421,-2.4362,3.1415
で、
>>711 さんから s.replaceAll("[^1-9.]+", ","); を使うアドバイスを
頂きましたが、JDKが1.3なのでこのメソッドは使えません。
他の仕事の関係上バージョンアップができないので、別の方法を教えて下さい。
>>727 一応Cでマルチスレッドプログラミングはバリバリしてましたから。
Javaだとsynchronizedが(Cで言うところの)volatileも兼ねてるんだよね。
最初、何故Javaだと、synchornizedでアクセスしてる変数にvolatileが付いてなくて
大丈夫なのか、すごく悩んだ記憶がある。
>>728 だったら真面目にパーズすればいいでないの?
あるいは、↓みたいにjava.util.StringTokenizerでがんばるとかw
stk = new StringTokenizer("A is 14.1421 B is -2.4362 C is 3.1415",
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ");
StringBuffer sb = new StringBuffer();
while (true) {
if (stk.hasMoreTokens()) {
sb.append(stk.nextToken());
if (stk.hasMoreTokens()) {
sb.append(',');
} else {
break;
}
}
System.out.pritln(sb);
>>726 ところで、実務経験と職歴って何が違うの?
>731 職歴は捏造し、実務経験は水増しするもの。 ってのは笑えない冗談として、 職歴……役割で見た履歴。PGやってたとかPMやってたとか 実務経験……具体的な技術、言語の経験履歴。Struts使ったことありまつとかiアプリ作りますたとか
「あの本とこの本を読みました。 eclips でペイントプログラム作ったことがあります。 実務経験はありません。」 <- 実社会じゃ汚物以下
eclipseすら綴れない奴も相当無能だと思う
文字列の変換の質問の件
>>711 さん,730さん、有難うございました。
>>728 半角スペースでスプリットして配列に入れて、英字はスキップして数値だけ連結する。
String str = "A is 14.1421 B is -2.4362 C is 3.1415"; String s = str; char x = '!'; while(x <= '~') { s = s.replace(x, ' '); x++; if(x == '+') x = ':'; } String y = ""; String z = ""; int i = 0; while(i < s.length()) { if(s.substring(i,i+1).compareTo(" ") != 0) { z += s.substring(i,i+1); y = ","; } else { z += y; y = ""; } i++; } System.out.println(str); System.out.println(z);
あれ?オレなんでfor使わないでwhileで書いたんだろ?
741 :
デフォルトの名無しさん :05/01/26 10:19:24
ITドカタ 昔はコボラー 今はJava厨
742 :
デフォルトの名無しさん :05/01/26 11:15:30
今iアプリプログラミングをやっていて String s = "...some string..."; char[] chars = new char[s.length()]; s.getChars(0, s.length(), chars, 0); このやり方でStringの文字をChar配列に変換したのですが、日本語で実行 するとjava.lang.ArrayIndexOutOFBoundsExceptionてゆうエラーがでてうまく行きません、 このやり方では、日本語は使えないのでしょうか?
743 :
デフォルトの名無しさん :05/01/26 11:37:28
toCharArray()を使いませう。
何故素直に String str = "ぬるぽ"; char[] arrayChar = str.toCharArray(); こうしない
sun java studio creatorについての質問はどこですればいいですか?
>>774 "ガッ".toCharArray();
749 :
デフォルトの名無しさん :05/01/26 18:30:52
つい最近まで、クラス(static)フィールドに複雑な初期化を施すのに いちいち初期化用のクラスメソッドを書いて アプリケーション起動時に呼び出していたのですが、 最近、static ファクトリー なる存在を知りました。 Java 5.0 のドキュメントには EnumMap の初期化に使われていましたが、 他のクラスフィールドにも応用でき、大変便利です。 これって java のいつのバージョンから入っていたものなのですか?
1.1で書けた様な気が駿河
>>750 御返答ありがとうごさいます。
こんなに基本的で便利なことを
手持ちの入門書4冊には書いてありませんでした。
テキスト処理の質問です。例えば、 1: IEブラウザ破壊スクリプト (20) 2: VB.NET質問スレ (Part9) (117) 3: 【初心者】Java質問・相談スレッド60【大歓迎】 (751) 4: すれ立てるまでもない質問はここで 第64刷 (92) という、行先頭にスペース&行末で改行の文章があったとき、これを1行に詰めて 1: IEブラウザ破壊スクリプト (20) 2: VB.NET質問スレ (Part9) (117) 3: 【初心者】・・・ の形にする方法を教えて下さい。JDKのバージョンは1.3です。
上の質問を書いた者です。 表示上スペースが消えていますが、対象テキストではスペースが入っています。
JPanelの上に載せたJLabel(複数)をTABでフォーカス移動して 回るにはどうすればよいでしょうか?
static ファクトリーってなんですか? 解説ページ見つけれないorz
>>756 名前が自由につけられるコンストラクタ?
良さげな本なんで買おうかな。
静的初期化子の話じゃなかったの?
s/子/ブロック/
String str = "test1"; の「1」を切り出して、int型にする方法を教えてください。
>>760 |д・)つ int i = (new Integer(str.substring(str.indexOf("1"),str.indexOf("1")+1))).intValue();
|д・)つ Javaダメポ
オブジェクトをC言語とかのsizeof()するにはどうしたらよいでしょうか?
>>761 ヒントになりました。
ありがとうございました。
volatile つけたら syncronized って無駄?
そもそも volatile はちゃんと実装されてない可能性があるから 使わない方がいいとか言う話を聞いた事があるよ。
768 :
656 :05/01/26 22:44:49
ちょっと!早く答えなさいよ!(=_=#)
同期ってなんですか? クラスの説明とか見てると時々でてくるのですが。教えていてでけますか?
volatileとsynchronizedって全然違うもんだと思うけど。
メモリ同期の話だろが
>>766 うそつき
Cなら確かに実装の違いがあるが
volatileしてもsynchronizedと同じことする実装は存在するらしい。
>>775 一番大事な「順序の一貫性」って部分とるなよ
同期化についてはどちらもおなじ
volatileって順序の一貫性まで保証してたんだ。 知らなんだ。 Cのvolatileってそこまで保証してたっけ? でも、gccでvolatile asmとか書くと保証してくれたがw
778 :
デフォルトの名無しさん :05/01/27 02:08:37
JavaってVMの実装に違いありすぎ(´∇`)
>>757 名前が自由につけられるコンストラクタというのを
コードで教えてくれませぬか。
static{
...
}
って名前ないよなぁ。
javaではないんだけどさ、カキコするとコードの空白が 飛んじゃうやつ。どっかに便利な整形CGIない?
タブコードをスペースに置き換えるなんざ、大抵のIDEには備わってるだろ
>>779 757で言ってるのは静的初期化ブロックの話ではないよ。
例えばHogeクラスの場合。
Hoge()、Hoge(int)、Hoge(String)、、、
コンストラクタは引数をいろいろ変えてオーバロードしても名前はHogeしかない。
しかも同じ引数の並びで別のコンストラクタは当然定義できない。
でもHogeインスタンスを返すstaticメソッドだったら名前は自由に付けられる。
static Hoge hoge()、static Hoge hogeInt(int)、static Hoge hogeString(String)、、、
名前が自由につけられるから同じ引数の並びであっても問題ない。
static Hoge hogeInt1(int)、static Hoge hogeInt2(int)、、、
たいていはコンストラクタではフィールドの設定くらいしかしないけど
複雑な初期化がしたい、あるいはいろいろな方法で初期化したいという場合は役に立つ。
>>782 ( ・∀・)つ〃∩ ヘェーヘェーヘェー
APIドキュメントにあったコードはそういう意味だったんですね。納得。
テキスト処理の再質問です。 1: IEブラウザ破壊スクリプト (20) 2: VB.NET質問スレ (Part9) (117) 3: 【初心者】Java質問・相談スレッド60【大歓迎】 (751) 4: すれ立てるまでもない質問はここで 第64刷 (92) という、行先頭にスペース&行末で改行の文章があったとき、これを1行にまとめて 1: IEブラウザ破壊スクリプト (20) 2: VB.NET質問スレ (Part9) (117) 3: 【初心者】・・・ の形にする方法を教えて下さい。JDKのバージョンは、1.3 → 1.4に上げました。
>>737 ,738,739,740 さん有難うございます。
>>785 普通に改行コードをスペースか空文字に置換するんじゃだめなのか?
>>787 オレもオモタ
文字列Aから一文字ずつ文字列Bへコピーしていって、
その際改行コードが見つかったら代わりに空白文字をコピーすればいいんじゃね?
>>787 ,788さん、どうも。
目的のテキストをSample.txtとして
File txt = new File("Sample.txt");
BufferedReader br = new BufferedReader(new FileReader(txt));
br = br.replace('\n' , ' ');
System.out.println("文 = " + br );
と、replace()を使って試してみましたが、下記のエラーが出ました
Trim3_1.java:17: シンボルを解釈処理できません。
シンボル: メソッド replace (char,char)
位置 : java.io.BufferedReader の クラス
br = br.replace('\n' , ' ');
^
※ioはimportしています
>>789 落ち着け
BufferedReaderにreplaceなんてメソッドないぞ
>>790 Stringクラスにはreplace(char, char)メソッドは存在するけど、BufferedReaderクラスには存在しないよ
replaceメソッドを使いたいならプログラムを変えるしかないよ
>>790 ,791
File txt = new File("Sample.txt");
BufferedReader br = new BufferedReader(new FileReader(txt));
String st = br.toString();
st = st.replace('\n' , ' ');
StringBuffer sb = new StringBuffer(st);
System.out.println("文 = " + sb );
と、toString()でString型に変換したところ、コンパイルは成功しましたが
文 = java.io.BufferedReader@42719c
と表示されました。アドバイスを願います。
793 :
デフォルトの名無しさん :05/01/27 07:05:43
>>792 toStringメソッドの使い方間違ってるょ
java.io.BufferedReader@42719c はオブジェクトbrのJVM上のメモリアドレスが文字列で表示されてるだけ
って、まぁここら辺はいいとして、
BufferedReaderオブジェクトからStringオブジェクトへの変換は、readLine()かread()メソッドを使うよろし
// readLine()の場合
String st;
String copy;
while((st = br.readLine()) != null) {
copy += br.readLine(); // これOKなのかちょっと不安、少なくともパフォーマンスは悪い
}
// read()メソッドを使う場合
StringBuffere sb = new StringBuffere();
while(br.read() != -1) {
sb.append(br.read());
}
String st = sb.toString(); // このtoString()はOK.なぜならStringBuffereクラスはの内部は文字列表現だから
※BufferedReaderクラスはバイトであり、文字列表現ではない。
このように内部が文字列表現でないクラスの場合、そのオブジェクトが配置されているJVM上のメモリアドレスが示される
JAVAに限らないアルゴリズムの問題になるかもしれないんだけど、 例えばApplet等で大戦略のようなユニット型シミュレーションを作るとしたら、 ユニットのアニメーションは 1.一つのスレッドですべてのハンドルを登録して管理する方法を執る 2.ユニットのクラスごとにスレッドを走らせてアニメーションする どちらが良いかね。 俺は前者で行こうと思ってるんだけど、後者はアニメーションの速度を柔軟に 調節できたりする面もあるし、判断に迷ってて。 助言よろ。
設計のしやすさなら 2 を チューンアップするなら 1 を びっくりするほどのパフォーマンスが出てるときに、 開発者に仕組みを尋ねるとたいてい 1。 そこに独自のノウハウを突っ込んであるケースが多い。 でもね、俺は 2 を勧めるよ。 1 は同業他社に差を付ける為のプロ仕事だと思う。
てか2なんて使うバカは、現実より脳内自己満足を優先する、ソースヲタだけ。ソレガJavaジャン テノハナシネ
作ったプログラムが動いている間(JFrameなんかで)、(Windows)システム全体のマウスカーソル画像を任意のものに固定させることはできますか? プログラムのウィンドウ内だけなら簡単に変更できる確認はできましたが・・・
798 :
デフォルトの名無しさん :05/01/27 11:59:58
きゃぷっちゃえ
>>793 BufferedReader.toSringが文字列表現を返すかどうかは
内部表現とはなんら関係ない。BufferedReaderはtoString()を
オーバーライドしていないのでObject$toString()が呼ばれる。
で、Object#toString()が返すのはVM上のメモリアドレスなんていう
不思議アイテムではなく、オブジェクトのハッシュコードを
16進表現したもの。ただそれだけ。
あとStringBuffer#toString()が文字列表現を返すのも
APIの仕様上バッファの中身に相当する文字列を
返すって決められてるからであって、内部が文字列かどうか
には関係が無い。
>>800 アニメーションをする場合の話ですよね?
ユニットごとに別のスレッドで処理をするのも論外ですか?
描画用のインターフェースを各オブジェクトが持つ そしてそのインターフェースを管理クラスがプライオリティ順に呼ぶ マルチスレッドにする利点はないよ どうせ垂直同期やらタイマー管理やらにしろフレーム単位で結果出すだけだから スレッドでやったら描画順位どうするんだ?
803 :
1/2 :05/01/27 13:02:26
import javax.swing.*; import java.awt.*; import java.awt.event.*; public class WindowEvent { public static void main(String[] args) { //アプリケーションウィンドウの生成 Frame win = new Frame("窓作り"); win.setBounds(10,10,400,300); win.show();//ウィンドウを表示 win.addWindowListener(new WindowListener(){ //WindowListenerの実装(匿名内部クラス)////////////////////// public void windowOpened(WindowEvent e){ System.out.println(e.paramString()); } public void windowClosing(WindowEvent e){ System.out.println(e.paramString()); e.getWindow().dispose(); } public void windowClosed(WindowEvent e){ System.out.println(e.paramString()); }
804 :
2/3 :05/01/27 13:03:16
public void windowIconified(WindowEvent e){ System.out.println(e.paramString()); } public void windowDeiconified(WindowEvent e){ System.out.println(e.paramString()); } public void windowActivated(WindowEvent e){ System.out.println(e.paramString()); } public void windowDeactivated(WindowEvent e){ System.out.println(e.paramString()); } //////////////////////////////////////////////////////////// }); } }
805 :
3/3 :05/01/27 13:06:29
改行が多いので分割させていただきました。 上のプログラムを実行したいのですが、下から3行目の 「});」の部分の「;」をつければたくさんエラーが出て、消せば「}」の部分にエラーが出ます。 出てきたエラーは以下のとおりです。 黷ス抽象メソッド WindowListener.windowOpened(WindowEvent) をインプリメントする必要があります。 クラスは継承された抽象メソッド WindowListener.windowActivated(WindowEvent) をインプリメントする必要があります。 クラスは継承された抽象メソッド WindowListener.windowDeiconified(WindowEvent) をインプリメントする必要があります。 メソッド paramString() は型 WindowEvent で未定義です。 メソッド paramString() は型 WindowEvent で未定義です。 メソッド getWindow() は型 WindowEvent で未定義です。 メソッド paramString() は型 WindowEvent で未定義です。 メソッド paramString() は型 WindowEvent で未定義です。 メソッド paramString() は型 WindowEvent で未定義です。 メソッド paramString() は型 WindowEvent で未定義です。 メソッド paramString() は型 WindowEvent で未定義です。 at WindowEvent.main(WindowEvent.java:12) Exception in thread "main" 何故エラーが出るのかわかりません。 よろしければお教えください。
806 :
デフォルトの名無しさん :05/01/27 13:06:39
deiconifyって変だよ。restoreにしろ
807 :
デフォルトの名無しさん :05/01/27 13:10:02
>806 ごめん、間違い?
ふむ、二つともメリットデメリットは有るんですねぃ。 描画順位については、そのオブジェクトが指している画像リソースを一定時間毎に 差し替えて(インデックスをインクリするだけでも良いや) メインスレッドで unitobj.getImage とかで全てのユニットのImageを取って来て描画する、と。 いやぁ、3コマのアニメーションと5コマのアニメーション等のようにコマ数(セル数?) の違うモノを混在させて表示するにはどうしたら良いかと思って、2を考えたんだYO。 フレームのカウンタで計算しろ、というのが面倒だなと思ってさ。
>>803 文法的には問題なさそうだが、
public class WindowEventというクラス名が悪い。
あなたの作ったクラス名がWindowEventであるために、
WindowListener の java.awt.event.WindowEvent を引数に取るべき
メソッドが、未定義のままになっている。
また、java.awt.event.WindowEvent.paramString() などのメソッドも
当然あなたの作ったWindowEventクラスにはないので、未定義と見なさ
れている。
クラス名を適当に変えるか(外から呼び出すpublicクラスだから
ファイル名ごと変える)、どうしてもWindowEventという名前の
クラスとして作りたいなら、WindowListenerを実装する方の引
数のWindowEventを、java.awt.event.WindowEventとFQCNで書く。
810 :
デフォルトの名無しさん :05/01/27 14:07:47
宿題スレで質問したのですが、こちらで質問するようとのことで書き込みます。 ツールバーをコンテナに追加したいのですが、 その際、BorderLayoutで配置させる必要があると調べました。 しかし、コンテナのsetLayoutをnullにしてあるので、 BorderLayoutでの配置ができません。 この場合、どうしたらよいのでしょうか? 宿題スレでは、 BorderLayoutのCENTERの部分のレイアウトをNULLにする といわれたのですが、もう少し詳しく知りたいと思っています。
811 :
803 :05/01/27 14:07:50
>>809 ありがとうございました。
しかし、クラス名・ファイル名共に全く関係なさそうな「Kuma」という名前に変更してみましたが
エラーはなくなりませんでした・・・
未定義の部分が消えないんです。
別のインポート宣言をする必要がありますか?
812 :
bus :05/01/27 14:21:13
以前質問したものですが、Stringで文字列を取得してChar型の配列に変換したところ 日本語の入力をするとエラーが出てしまいます。教えてもらったとおりに やっては見たもののできません。 stext = ttextbox.getText(); char[] text = stext.toCharArray(); このようにしました。どうすればよいのか教えてください
813 :
デフォルトの名無しさん :05/01/27 14:23:02
エラーなのか?
>>812 NullPointerExceptionじゃあるまいな
>>810 ツールバーをaddしたいコンテナ container (getContentPane()の返値とか)に、
container.setLayout(new BorderLayout());
する。(いまsetLayout(null)してるハズ)
で、
JPanel panel = new JPanel();
panel.setLayout(null);
container.add(panel, BorderLayout.CENTER);
して、今コンテナに直接addしている諸々の部品はpanel.addで
panelに載せていく。
ツールバーは
container.add(toolBar, BorderLayout.NORTH);
で。
>>811 こっちではpublic class Kumaにして、問題なく動いてるけど……
Visual J++ 1.0とかだと動かんとは思うが……
817 :
bus :05/01/27 14:57:51
以前質問したんですけどString で取得した文字列をChar配列に変換する際に stext = ttextbox.getText(); char[] text = stext.toCharArray(); のようにしたら日本語を入力するとやはりエラーが出てしまいます。 どのようにしたらうまくいくのでしょうか
>>808 フレーム数でのカウントが面倒とかいってるうちはゲーム作れないと思うぞ
それにオブジェクト数が200こだったらスレッド200個作るのか?
行き当たりばったりで作るよりもなれてないならまずは設計書を書くようにしよう
突然ですがJavaっぽい壁紙ないですか? 昨日からJavaを始める事になったんで、俺はJavaで開発してるんだ~ って意気込みを感じれるような奴。ど~もC++抜けないんで 気持ちを朝一から入れ替えたいの。
821 :
sage :05/01/27 16:17:17
ウホッ
822 :
デフォルトの名無しさん :05/01/27 16:20:48
>>816 ありがとうございます。
コンテナに直接追加することばかり考えていて、
パネルを中間に使うのを見落としていました。目からうろこでした。
これからコード書き換えます。ありがとうございました。
823 :
デフォルトの名無しさん :05/01/27 16:21:33
>820 ホットコーヒーはいかがですか?
初めの頃JavaとHSPの見分けがつかんかった
825 :
810 :05/01/27 16:42:17
>>816 今、コードの書き換えが終わりました。成功しました。
どうもありがとうございました。
Windows標準のに、Javaの旧ロゴにも似た珈琲カップの壁紙があったと思う。
>>818 全く以ってその通り。
いやあ、色々テストがてら簡単なゲーム作っててさ。
まだ言語仕様勉強中の身なわけさ。
多重継承が無いのがちょいと辛い……。
>>827 多重継承が必要な場面ってほとんどないけどなぁ
インターフェースってわかるか?
すいません先生方、JAVA3Dで物体を連続して直線移動させたいのですが・・ うまくいきません。直線移動だけならばPositionInterpolatorを使えば できるのですが、直線に移動するだけに終わってしまいます。 なんとか右に3移動した後上に5移動する・・といった 簡単なものでよいので作りたいのですが、 方法などご存知なかた居られましたら是非ご教授くださいませ。
830 :
デフォルトの名無しさん :05/01/27 19:49:23
今、マルチエージェントシミュレーションのプログラムを書いているのですが、 すべてのエージェントが同じ行動をしてしまうという現象が起こっていて、 原因がわかりません。簡単に書くと、次のようなプログラムになります。 →次へ
831 :
830 :05/01/27 19:50:15
エージェントクラス public class CAgent { private Random m_rn = new Random(); private int m_rand; private int m_change; public int m_value; private int m_action; public void setAgentState(int num) { m_value = 100 * num; m_change = 0; } public void setAction(int i) { m_rand = m_rn.nextInt(3); m_action = m_rand; System.out.println("agentID : " + i + "\t" + "action : " + m_action); switch(m_rand) { case 0 : m_change = 0; break; case 1 : m_change = 1; break; case 2 : m_change = -1; break; } } public void takeAction() { m_value += m_change; } }
832 :
830 :05/01/27 19:50:46
メインクラス public class Test2 { private static final int NUM_AGENT = 100; private static final int NUM_STEP = 10; public static void main(String[] args) { CAgent[] agent = new CAgent[NUM_AGENT]; for(int i=0;i<NUM_AGENT;i++) { agent[i] = new CAgent(); agent[i].setAgentState(i+1); } for(int step=0;step<NUM_STEP;step++) { System.out.println("step : " + step); for(int j=0;j<NUM_AGENT;j++) { agent[j].setAction(j); agent[j].takeAction(); } } } }
833 :
830 :05/01/27 19:52:01
エージェントをNUM_AGENT個作り、それぞれのエージェントに初期値を与えます。 ステップごとにそれぞれのエージェントは行動をランダムに選択(setActionメソッド)し、 値を更新(takeActionメソッド)するというものです。 しかし、このプログラムを実行結果は、 step : 1 agentID : 0action : 1 agentID : 1action : 1 (省略) agentID : 99action : 1 step : 2 agentID : 0action : 0 agentID : 1action : 0 (省略) agentID : 99action : 0 ステップごとにはランダムに選択されるのですが、 それぞれのステップではすべてのエージェントが同じ行動になってしまっています。 自分では原因が分からないので、どなたか教えてください。 それぞれのステップでエージェントが違った行動をとるには、どうすればいいのでしょうか…?
>>799 おお!何々、そうなのか。どうやらオレはとんだ勘違いをしていたようだ・・・
StringBuffer#toString()はオーバーライドしたメソッドってことなんだね
いや、
>>792 さんスマソ、間違ってました
ところでハッシュコードって何だ?バイトコードとは別のもの?何に使うの?
835 :
デフォルトの名無しさん :05/01/27 20:03:39
CAgent() { m_rn = new Random(System.currentTimeMillis()); try { Thread.sleep(1); } catch (InterruptedException e) { } } このコンストラクタを入れてくだふぁーい
おっと、割り込んじゃってごめんね
これ? m_rand = m_rn.nextInt(3);
>>828 C++みたいな多重継承が必要な場面は多くないけど
RubyのモジュールみたいなMixinあればいいなと
思うこともちょっとある。
別クラスに委譲すればいいだけの話なんだけど
委譲ってコード書くのが少しめんどう。
>>834 ネタだよな?と思ったがメール欄はsageか。
Object#hashCode();
コマンドを呼んでコマンドの実行が終了するまでに時間がかかるような処理を JAVAのプログラムで呼んでいます。その待機状態になるときの、一行目に表示 されるものをbr.readLine();(read()もためしました)ですぐに取得したいのですが, どうやってもコマンドが終了したあとにしか取得できません。 [test @test test]コマンド testtesttest ← コマンド実行と同時に表示される 実行が終わるまで空白 testtesttestを実行が終わる前にどうにか取得したいと思っています。 困りはてているので、もし何か手がありましたらご教授いただけるとうれしいです。
Javaというよりeclipseなんだけど、それらしきスレが見つからないのでスマソ・・・ 本家から最新版3.0.1はダウンロードできたんだけど、日本語化に必要な NLpack-eclipse-SDK-3.0.x-win32.zip ってのがさっぱり見当たらない。 日本語化を解説してるサイトの説明にはみんな普通に載ってるんだが、消えてしまったんだろうか?
>>763 sizeof()するのってシリアライズしてデータ量測定
してオーバーヘッド分マイナス する、として
オーバーヘッドの計算式どっかにないカニ。
複数行のテキストを1行にするコードを書いている者です。
>>793 ,799 さんありがとうございました。
実際にコードを組んで、複数行のテキストSampleEV_3d.txt
SampleEV -40.73947 -39.38199
-19.25768 -17.72609 -17.31405
End
を読み取りみましたが、
C:\j2sdk1.4.0_01\java_tests>java Trim3_4b
EV = 9711210186454855575545575149571045575055564555555457455551525310110-1
というエラーになりました。原因が分かりません。
実際のコードは
http://haiiro.info/up2/file/3531.txt に、うpしています。
ご指摘願います。
848 :
デフォルトの名無しさん :05/01/27 22:41:47
Mavenはまだかなり改良の余地あるけど、Antでやるよりは楽だね。
>835 解決しました!ありがとです。 乱数のシードの問題だったんですね…
>>846 シリアライズしたのは実際のサイズとは全然関係ないよ。それなら以下のほうがいい。
一度GCしてから空きメモリ量を測定する。
10000個ほど測定したいクラスのインスタンスを作る。
もう一度GCしてから空きメモリ量を測定する。
空きメモリ量の差分を10000で割る。
フィールドに別オブジェクトを持ってるクラスだと多少ややこしいけど
Object 一個だと 8 バイトほどなのがわかる。
853 :
デフォルトの名無しさん :05/01/28 00:21:09
int 型変数を double 型に変換したいのですが、 Double.parseDouble(num); とすると、parseDouble は int 型に適用できないと言われてしまいました。 他に int > double と変換する方法はあるのでしょうか?
855 :
デフォルトの名無しさん :05/01/28 00:29:38
>854 なるほど、C と同じように double(xxx) でうまくいかなかったのでちょっとハマってしまいました^^; 助かりました、ありがとうございました^^
いや、その文法ではCでも無理じゃないか?
その文法はMLとかか?
858 :
794 :05/01/28 00:51:32
>>828 インタフェースだと、変数を継承出来ないでしょ?
>>858 そういうのはゲッターセッターメソッド作るわけだが
変数を継承って・・・極めて危険な使い方してる可能性高いな
改めて質問します。 SampleEV -40.73947 -39.38199 -19.25768 -17.72609 -17.31405 End などという、複数行のTextを一行にするにはどうすればいいでしょうか? JDKバージョンは1.4です。なお最終的には一行にした後に、数字以外を消し、 数値間にカンマを入れて、 -40.73947,-39.38199,-19.25768,-17.72609,-17.31405 という形にします。
>>862 こんな俺が答えていいのかわからないけど
StringTokenizerと正規表現使えばいいんじゃ・・・
>>863 ありがとうございます。
ついさっき、改行問題(1番の課題)は append()を使って後段の行
を前の行に追加する、という手法で解消しました。
どうも、お騒がせしました。
865 :
デフォルトの名無しさん :05/01/28 09:12:12
あるDOS窓のプログラムAに対して入出力を行いたいのですが、 この場合パイプで処理をしたらどうなるでしょうか。
866 :
デフォルトの名無しさん :05/01/28 09:52:03
クラス名の後にextends JWindowとextends JComponentを同時に使用したい場合はどうしたらいいでしょうか?
多重継承はできません
>>867 ありがとうございました。
どちらか一つに絞るしかないんですね・・・_| ̄|○
869 :
866 :05/01/28 10:03:40
改めて質問します。 フレームレスウィンドウで画像のみを表示することは可能でしょうか? ヒントだけでもいいのでお教え願えれば幸いです。
870 :
ふぁsf :05/01/28 10:18:33
double型もしくはfloat型で定義された少数を、少数第一位までだけで表示したいんですが どうすればよいでしょう?
うーん、どう言ったら良いかな。 例えば任意の描画クラスと任意のコントロールクラスがあったとする。 あるコントロールにイベントが発生したときに、それと対になったグラフィックス にある特定のアクションを起こさせたいとする。 そして、そのアクションは、基本的に共通動作だが、コントロールごとに実装がやや違うとする。 多重継承あると、楽だろ? setActionClass((ActionClass)ac); こんなバインド(リンク?)をしなくても済むわけだし。 いや、「こういう方法でやればいい」ってんじゃなくて、「多重継承があったらなぁ」 と思う場面が偶に有るという話だ。 俺はC畑出身だからJAVAのデストラクタが無いのとか、いまいち『気持ち悪い』感じが まだ抜けてないから、まだ慣れてないだけなのかとも思うが。 スレ違いな話になってきてるみたいでゴメム。
SAXでXMLを解析したら、コメントが無視されてしまいました。 コメントを文字列として認識できるXMLパーサってありますか?
>>869 コンポーネントに任せる方法
・JWindowのLayoutをBorderLayoutに
・JLabelをCENTERにadd
・JLabelにsetIconでImageIconを設定
自分で描画する方法
・JWindowでpaintメソッドをオーバーライドし、
Graphics#drawImageで、画像を描画
ちなみに1.4以降ならば、JWindowの代わりにJFrameつかって、
setUndecorated(true)とすることで、タイトルバーは消せる。
874 :
デフォルトの名無しさん :05/01/28 12:52:55
あなたのコメントの定義がわかりません。
>>871 >そして、そのアクションは、基本的に共通動作だが、コントロールごとに実装がやや違うとする。
それってインターフェースで共通化するんじゃないの?
List list = new Vector();
List list = new ArrayList();
のように
>>875 いや違うよ。俺が言ってるのは
描画機能とアクション機能の二つを備えたオブジェクトを多種作成するって
事なんだよ。
で、描画、アクションともに全オブジェクトに共通する基本動作があるから
二つの基本クラスを継承するのは不可欠だって事なんだよ。
インターフェースで共通化したら、基本メソッドまでコピペしなきゃ
いけなくなるじゃん。
自分のようにビジュアルアクション系で複雑なプログラムを組む者には
多重継承がないのはマジでつらい。
JavaにしろC♯にしろ単一継承にしたのは問題の先送り、解決の放棄と
しか思えない。だから何時までもソフトウェアの生産性が上がらないんだな。
最近のOOPじゃ、継承よりも委譲によるクラス拡張を重視してるが
これはクラス機能間の構造をさらにややこしくしてしまう。
結局、委譲重視に走ったのは多重継承を放棄したが故の副産物と
言わざる得ない。単一継承言語が主流となってしまったOOPの未来は
暗いな。
>>874 すいません。
Javaソースコードのコメントです。
// や /* */ で定義される。
878 :
デフォルトの名無しさん :05/01/28 13:13:28
xmlのコメントは <!-- -->なんですが・・・
多重継承が必要な場合は大体設計がおかしい場合が多いけどな 基本メソッドをコピペって・・・
多重継承ではなく、多次元継承みたいな感じにすればいいじゃん 継承に構造を持たせるの まぁオレの論文の事なんだけど
は?
は
>>878 そのとおりです。
<!- -> を内を、文字列として認識できるXMLパーサってありますか?
↑ <!-- --> に訂正
つーかJAXPって普通にコメント扱えるはずだが そもそもその文字列に意味があるのならコメントにすなとかおもっちまうが
もう、勝手なんだから
888 :
デフォルトの名無しさん :05/01/28 16:42:36
Javaに(C++でいう)templateやoperatorはないの?
templateは5.0で追加された 演算子オーバロードはない
890 :
デフォルトの名無しさん :05/01/28 16:54:13
教えて下さい。JSP初心者です。 inputのvalueの値を変数に入れたいのですが 下記のような事ではだめですか? <input name="box1" type="text" value="あいうえお"/> <c:set var="tmpset"> <c:out value="${box1.value}"/> </c:set>
>>889 サンクス。
なんかトータルで見るとC++の方が使いやすい気がするなぁ…
あほな質問になるかもしれませんが、グローバル変数や定数ってどこで宣言するんですか? GlobalClassみたいなのを作って、その中でstatic finalして、それを各クラスでimportするのでしょうか?
↑ 「static final」は定数か…間違いました。
897 :
デフォルトの名無しさん :05/01/28 17:41:29
>>895 それがいいかも。
static importすればそのまま使えるし。
でもスコープはできるだけ狭い方がいいと思います・・。
>>897 ありがとうございます。
GlobalClass作ってみます。
ageてしまった。。
すいません、QuickTime For Java をやりたいのですが、 どこかにおすすめのページありませんか?英語でも大丈夫です!
901 :
デフォルトの名無しさん :05/01/28 18:55:48
>>891 <c:set var="tmpset" value="${param.box1}" />
としませう
>>900 あれ基本的にただのラッパーだからQuickTime SDKが
理解できてないとだめ。for Javaを勉強するのはそれから。
つーか、SDKわかってればfor Javaなんて勉強するまでもない。
903 :
デフォルトの名無しさん :05/01/28 20:27:50
booleanって扱いづらくないですか? int型のBOOL型を作りたいんだけど、どうやって作ればいいのでしょうか。
>>903 よくわからん癖に独自の型を作ろうとするのはヤメレ。素直に
boolean hogeflag=true;
とかやっとけ。
念のため言っておくが、Java の boolean 型は C でよく使うような
#define BOOL int
#define TRUE 1
#define FALSE 0
みたいなインチキブーリアンじゃないぞ。
>>904 >念のため言っておくが、Java の boolean 型は C でよく使うような
では、それに期待してboolean使うことにします。
ありがとうございました。
>>905 「もしかして全くのド素人じゃなかったら失礼かも」とか思って念のため
書いておいてヨカタw
補足すると、boolean 型の変数には true/false しか代入できない。
数値との比較をしようとするとエラーになる。
C++の BOOL よりはずっと素直(とおいらは思った)。
>>906 なるほど、参考になります。
でもその素直さが自分には受け入れられないかもしれません。
booleanで演算(boolean*intとか)できないと痛いので、その辺を色々試してみる事にします。
C++ に BOOL なんてねーよ
> C でよく使うような
C++ にあるのは bool だったような。 でもC++のboolも簡単にintに成り下がるんだよね。
明日の学校のプログラミングの試験すげえ不安…
すみません、やっぱりboolean使いにくいです。 新しい原始型(?)を作るにはどうすればいいのでしょうか?
>>913 郷に入っては郷に従え
Javaの型や表記にも馴染んでみてくれ。
なんで推奨されないかが後々解ってくるよ。
'Write once, Run anywhare' の意味が解ってくるよ。
そうですか…じゃあ頑張ってみます。(Cのboolは死ぬほど使い辛かったけど)
boolean hoge; hoge = true; (hoge)?1:0; こうだろ?
unionはないの?
true/falseを1/0にキャストできんことには文句を言うくせに nullを0にキャストできんことには文句を言わない不思議。
>>876 コントロールクラスでイベントが発生したら、画像用オブジェクトの特定の
メソッドを呼ぶようにしたAbstractクラスを作ったらいいだけじゃん。
コントロールクラスのコンストラクタで勝手に画像オブジェクトをnewして
所有するようにしておけば問題ないだろ。画像のクラスは内部クラスとしておく。
コントロールクラスの動作を変えたいならコントロールクラスを継承して
イベント処理用メソッドをオーバーライドする。画像側の動作を変えたい場合も
やっぱりコントロールクラスを継承して、内部クラスとして画像クラスを継承した
クラスを定義して、コンストラクタでその継承画像クラスをnewして所有するように
変えるだけ。
だいたいコントロールクラスと画像クラスを分けてる段階で、コントロールクラスの
コンストラクタに任意の画像クラスを渡せるようにした方がよっぽど素直な実装だ
と思うけどね。コントロールクラスの継承クラスをつくらなくても画像クラス差し替え放題だし。
921 :
デフォルトの名無しさん :05/01/29 00:25:43
エンクロージング型とはなんでつか?
jarに入っているクラス郡がどの外部ライブラリに依存しているか調査するツールってないすかね?
多重継承の良し悪しはおいといて Javaで例えばHogeクラスとFugaクラスを多重継承させるように扱いたい場合は ・Hoge、Fugaをインタフェースにして ・もともとのHoge、Fugaの実装をHogeImpl implements Hoge、FugaImpl implements Fugaにしてから class HogeFuga implements Hoge, Fuga { private Hoge hoge = new HogeImpl(); // Hogeインタフェースのメソッドはhogeに全部委譲 private Fuga fuga = new FugaImpl(); // Fugaインタフェースのメソッドはfugaに全部委譲 ... } のようにするのが常套手段。委譲メソッドを書くのがめんどくさいが。 しかし「インタフェースにすると実装をコピペしなきゃいかん」とか思ってるようじゃアホすぎるぞ。
Eclipse使うと委譲メソッドは楽々書ける。
argsってなんて読むんですか?
素直にアーギュメンツでいいんじゃねーの? argumentsの略だし。 もしくは「引数」だな。
>>922 内部クラスを取り囲んでいる(enclosing)外側のクラスのこと。
930 :
デフォルトの名無しさん :05/01/29 02:17:24
Image image; [ⅰ] image=Toolkit.getDefaultToolkit().getImage("hoge.jpg"); [ⅱ] image=Toolkit.getImage("hoge.jpg"); [ⅱ]の方だとgetImageがstaticでないので無理なのはわかるのですが[ⅰ]だと大丈夫 getDefaultToolkit()の戻り値はToolkit型だからメモリ確保されて出来るようになるんですかね? あと、getImageって抽象メソッドなのに何でそのまま使えるの? 以上二つ、ご教授お願いします
漏れはアーグスって読んでる
>getDefaultToolkit()の戻り値はToolkit型だからメモリ確保されて出来るようになるんですかね? Toolkitクラスのインスタンスを作ってるように誤解してるっぽいが違うぞ。 「何らかのToolkitのサブクラス」のインスタンスが戻ってくるだけだ。 >あと、getImageって抽象メソッドなのに何でそのまま使えるの? 戻ってきた「何らかのToolkitのサブクラス」ではちゃんと実装されているから。
Toolkit.getDefault() (staticメソッド)の中で、 プラットフォーム固有のWindowsToolkitとかMacOSToolkit(名前は適当) とかいったToolkitのサブクラスのインスタンスを返しています。 こいつらにはgetImageの実装があるわけです。
934 :
デフォルトの名無しさん :05/01/29 03:52:36
>>922 正確には enclosing instance のことでは?
内部メンバクラスはそれを字句的に直接取り囲むクラスのインスタンスがなければ生成できません.
例えば
class Outer { public class Inner { public class InnerMost { } } }
のクラス Outer.Inner.InnerMost を生成するには,
class Test {
public static main(String[] args) {
Outer outer = new Outer();
Outer.Inner inner = outer.new Inner();
Outer.Inner.InnerMost im = inner.new InnerMost();
}
}
としなければならい.以下のように継承しておくと,変な構文が隠蔽されていいかも,って誰も使わんよこんな機能.
class C extends Outer.Inner.InnerMost {
public C() { ((new Outer()).new Inner()).super(); }
}
まあスコープの問題はあるにせよ実質的には class Outer { private Inner inner; public Outer(Inner inner) { this.inner = inner; }} class Inner { private InnerMost im; public Inner(InnerMost im) { this.im = im; }} class InnerMost {} で InnerMost im = new InnerMost(); Inner inner = new Inner(im); Outer outer = new Outer(inner); とするのと同じだからな。 >以下のように継承しておくと,変な構文が隠蔽されていいかも それじゃ他からnew Outer()、new Inner()したインスタンスにアクセスできないだろ。
>>935 逆.外から中のインスタンスへの参照は無い.
* Outer にとって Inner は Inner という名で参照できるクラス Outer.Inner にすぎない.
* Inner にとって Outer は Outer.this という隠れたフィールドで参照されているインスタンス.
class Outer { }
class Inner { private Outer outer; public Inner(Outer outer) { this.outer = outer; }}
class InnerMost { private Inner inner; public InnerMost(Inner inner) { this.inner = inner; }}
Outer outer = new Outer();
Inner inner = new Inner(outer);
InnerMost im = new InnerMost(inner);
>>以下のように継承しておくと,変な構文が隠蔽されていいかも
>それじゃ他からnew Outer()、new Inner()したインスタンスにアクセスできないだろ。
メンバクラスの最適の用途は Adapter パターン(外部インタフェースに現存のクラス適合させるためのラッパー)だから,
アクセスできなくてもかまわないケースはあると思うけど.
まあいずれにしてもメンバクラスを囲むクラス以外から弄るなんて無いな.
class Outer {
private class Inner implements ISomeInterface {
// Outer のフィールド,メソッドにはフリーアクセス
}
public ISomeInterface getAdapter() { return new Inner(); }
}
普通はこんな感じ.
Javaで階層的・非階層的クラスタリングアルゴリズムクラスを実装してソース公開してる ところってご存じありませんか?K-means法とか 無ければ自分で実装するのですが、既に誰かが作って公開してるのなら 車輪を再発明するのは馬鹿馬鹿しいので…
938 :
930 :05/01/29 14:22:03
>>931-932 有難うございます
ソースの定義だけ見ると戻り値は普通のツールキットだと思ってました
デフォルトのツールキット=プラットフォーム固有のツールキット=ツールキットクラスのサブクラス
そしてそれには抽象メソッドが実装されている、この考えてOKですかね?
public static Toolkit getDefaultToolkit(){・・・}
デフォルトのツールキットを返します。
"awt.toolkit" という名前のシステムプロパティがある場合、そのプロパティは、
Toolkit のサブクラスであるクラスの名前として扱われます。
戻り値:
デフォルトのツールキット
超初心者です。質問させてください。 ボタンを押したらpdfファイルが表示される画面を作りたいのですが、方法が分かりません。 試しに以下のように書いたのですが、うまくいきません。 OutputStream out = response.getOutputStream(); FileInputStream in = new FileInputStream("C:/sample.pdf"); response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment; filename=sample.pdf"); int c; while ((c = in.read()) != -1) { out.write(c); } out.close(); in.close(); ちなみにpdfではなくjpgファイルだとうまく表示されました。 どのようにしたらいいのでしょうか? ご教授お願いします。
940 :
初心者です。 :05/01/29 17:13:12
今現在、Eclipseを使用しTomcatを立ち上げ JSPの勉強をしているのですがなぜか 私の購入した【EclipseではじめるJavaプログラミング入門】 のP271において JSPソース上に <%=new java.util.GregorianCalender().getTime() %> と入力すれば正常に 例:Thu May 13 15:01:05 JST:2004 といった具合に表示されるハズなのですが >The server encountered an internal error () that prevented it from fulfilling this request. と表示されてしまいます。一体なぜなのでしょうか? 誰か詳しい人教えて下さい。お願い致します。
>>939 response.setHeader("Content-Disposition", "attachment; filename=sample.pdf");
を
response.setHeader("Content-Disposition", "inline; filename=sample.pdf");
にする。
あと、ストリームへの書き込みはバッファ使え。
>>940 その行じゃない部分が違っている可能性は?
また、他のJSPは実行可能か?そのソースじゃなくて環境の問題は無いのか?
943 :
初心者です。 :05/01/29 17:20:02
org.apache.jasper.JasperException: JSP??????????????? JSP????: /mysql_1_f.jsp ???14????????????? ?????????????????: [javac] Compiling 1 source file C:\eclipse\workspace\mysql_1\work\org\apache\jsp\mysql_005f1_005ff_jsp.java:56: ????????????? ????: ??? GregorianCalender ?? : util ? ????? out.print(new java.util.GregorianCalender().getTime() ); ^ ??? 1 ? org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:127) org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:351) org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:415) org.apache.jasper.compiler.Compiler.compile(Compiler.java:458) org.apache.jasper.compiler.Compiler.compile(Compiler.java:439) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:553) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:291) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248) javax.servlet.http.HttpServlet.service(HttpServlet.java:856) こんな意味不明のエラーが表示されます。 なぜか全然検討が付かないです(´Д⊂ モウダメポ 。
944 :
初心者です。 :05/01/29 17:22:08
>>942 さん
一応、
<%=new java.util.GregorianCalender().getTime() %>
を抜いてhtml文を書き込む文には問題無く表示されるのですが
なぜか<%= *** %>を付けるとおかしくなってしまいます。
>>937 あります。英語の情報源も対象に含めて検索してみよう。
>>941 解決しました。
どうもありがとうございました。
>>940 うろ覚えで申し訳ないけど
CalendarクラスのgetTime()メソッドは昔はprotectedで最近publicになった経緯があったような気がします。
古いJDK使ってない?
assert文を含めたソースはJavadocでエラーになるのですが、なぜ? なんかこんなエラーでした。 警告: リリース 1.4 では assert はキーワードなので識別子として使うことはできません。 だれか知ってる方、納得いくように説明して。
昔protectedだったのはCalendar#getTimeInMillis()だったわ。 で。エラーの原因分かった。 GregorianCalend"e"r じゃなくて GregorianCalend"a"r
950 :
デフォルトの名無しさん :05/01/29 20:44:43
Javaに限らず何ですが、自作クラスでどこまでエラートラップかけていいのか分からない…。 予期せぬエラーとかあんまりないでしょ?
とりあえず例外投げるようにしとけばいいだろ。 そうすれば上位のプログラムがエラー処理できるから。
局所的に処理できるものは処理する それ以外は投げまくる
サーブレットのことで質問させてください。 get,post両方から呼ばれる可能性がある場合、書籍ではdoPostからdoGetをそのまま呼び出したりしているのが多いです。 こういった方法を使うとシンプルでわかりやすいのですがこれで後々に問題が起きるようなことはないのでしょうか?
>>953 どいういう問題が起きることを想定している?
何が不安なのかさっぱりわからん
まあ後々getとpostで動作を変えたくなったら問題が起きるかもしれん。
957 :
デフォルトの名無しさん :05/01/29 23:56:54
StringクラスのreplaceAll()を使うと、正規表現に一致する文字列の置換が行われますが、 正規表現を使わない置換をするのに良い方法はないでしょうか?
>>958 言いたいことがよく分からんが。。
string.replaceAll("abc","def");
ってこと?
>>953 ,955
個人的には投げまくった例外をどこで受け止めるかがうまく
切り分けられないんですが、なんか指標ってあるんですかね?
たとえばDBアクセス、データ取得、bean、データ加工、業務、表示みたいにMVCを
もうちょっと細かくパッケージングしたときとか、DBの例外をどこで誰が受け止めるか
とかよく悩む。モデリングはうまく行っているけれども処理ロジックの切り分けができてないからだ
ってよく言われるんですがね。その通りだと頭でわかってても・・・。
>>950 ファイル、ネットワーク、データベース等は
予期せぬ(プログラム側では防げない)エラーだと思うけど。
>>959 レスありがとうございます。
abcの部分に正規表現が使ってあっても、正規表現の機能を使わず
単純に指定された文字列を置き換えたいんです。
例えば、
"[abc]".replaceAll("[abc]","def")
の結果を、
[defdefdef]
ではなく、
def
にしたいんです。
なぜそうしたいかと言うと、 my name is [name] と書いたテンプレートを作っておいて、"[name]" を "Yamada"に置き換えたいんです。 これをreplaceAll("[name]","Yamada") としてしまうと、期待する結果にならないので。 置換対象の文字列を、正規表現になってしまうような形にしなければ良いのでしょうが、 他に良い書き方が思いつきません。 もしこういうケースで、一般的に使われる書き方があれば教えて下さい。
>>963 "[ABC]".replaceAll("\\[ABC\\]","def")
JavaDocちゃんと読め。
>>963 []はメタ文字だぞ?それやるならこうだろう。
"[abc]".replaceAll("\[abc\]","def")
>>965 >>966 ありがとうございます。
たしかにそうなのですが、\\[ABC\\]の部分を[ABC]と入力して置換出来るようにしたいんです。
つまり、置換文字列を指定する人が、正規表現を知らなくても使えるように、
単純な文字列の置換機能にしたいんです。
そういう考え方が間違ってるのかも知れませんが。。。
>>968 正規表現の特殊文字を先に置き換えるか、自分で実装するか。
[ABC]を他の書き方にしようと思いましたが、良い書き方が思いつきません。 例えば、{ } ( ) だとやはり正規表現で使われるようですし、 #ABC#にしてしまうと開始と終了が同じ記号なのでイマイチな気がします。
971 :
デフォルトの名無しさん :05/01/30 00:53:51
>>958 Java1.5の新メソッドに、String#replace(CharSequence c1, CharSequence c2)
がありますが・・・
>>969 >>971 Java1.4では、自分で作るしかないようですね。
Java1.5も見てみます。
他のレスをくれた方もありがとうございました。
>>968 もとの文字列=my name is [***]の*以外が固定の文字列なら、
Tokenizerで"["までパースしてってのは駄目かな。
Tokenizerじゃないにしろ、一気にやろうとしないで、最初に[]の中身を取り出すようにしたらいいと思う。
>>973 [ ] は固定なので、そんな感じに一つずつ検索して置換するような処理を書くことになりそうですね。
ありがとうございます。
975 :
940 :05/01/30 01:16:11
>>947 さん
そうなのですか?知りませんでした。
今のJDKは参考書に付属のCDからのコピーを使用して
いる為古いかもしれません。(´A`|||)
Calend a r が原因の様でした。申し訳ありません。
そしてありがとうございました(o^o^o)¥
プログラミングにはあまり関係ない質問なんだけど・・ SunのサイトでJ2SE 1.4の日本語版ドキュメントをダウンロードしようと思ったら、 英語版のファイルしか見つかりませんでした。 どなたか、ありかを教えてくださいませ。
978 :
デフォルトの名無しさん :05/01/30 03:38:34
2分も遅れてかぶった...orz 寝る.
JAVAってメタ文字に\付けてくれる関数なかったっけ? なんかの言語にあったんだよな。
あ、メタ文字を先にreplaceしてから、本番のreplaceする手はどう?
class Sample6 { public static void main(String args[]) { System.out.println("10進数の10は"+10+"です。"); } } 学習で上記の文をコンパイルしたのですが C:\javac sample.java C:\>java sample6 Exception in thread "main" java.lang.NoClassDefFoundError: sample6 (wr Sample6) at java.lang.ClassLoader.defineClass1(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) このようなエラーが出てしまいます・・・なにか間違っているのでしょうか・?
>>977 >>978 おはようございます
いやいや、そのページにはもう何度となく飛んだんですよ。
でも、そこの「日本語版 J2SE 1.4.0 ドキュメント Download」というのを押しても、
ダウンロードできるファイルが英語版のドキュメントしかないんです。
がんばって英文を読んでみても、言語を指定できるような項目はなさそうだし、
これは俺の探し方が悪いのか、それとももとから存在しないのかと疑問に思って質問しました。
いっそのこと、HP巡回ソフトで必要な部分だけもらってくべきでしょうか?
>>984 "LICENCE AGREEMENT"の次のページに
(j2sdk-1_4_0-doc-ja.zip, 33.13 MB)
というリンクない?
986 :
mysql :05/01/30 11:02:38
を勉強しているのですけれど、大文字・小文字は どうやら関係無いのでしょうか? テーブルを作成(大文字)し 小文字でinsert文を使用しても何ら問題無く動きます。。
987 :
958 :05/01/30 12:05:47
>>981 そうですね。こんな感じなら、コードは短くて済みそうです。
preReplace("[abc]").replaceAll(preReplace("[abc]"),"def")
public static String preReplace(String s) {
return s.replaceAll("\\[","#FROM").replaceAll("\\]","#TO");
}
ありがとうございます。
>>983 ファイル名を Sample6.java にする。(sample6.java ではNG)
>>983 すまん間違えた。
java Sample6
でもファイル名も Sample6.java にした方がいい
>>984 ファイルはあるけどリンクが間違ってる。
英語のページに飛ばされたあと、もう一度そこから選ぶと出てくる。
>>986 Windows版MySQLはテーブル名の大文字小文字も区別しない
(というか全部小文字に揃えられてしまう)。
しかしLinux版MySQLはテーブル名の大文字小文字を区別するので注意。
どっちもSQLは大文字小文字を区別しないけど(selectでもSELECTでもいいという意味で)。
>>989 >>990 簡単な質問に回答して頂いてありがとうございました。
大文字、小文字の違いに気付けなかった・・・・orz
997 :
986 :05/01/30 15:43:58
>>995 丁寧にどうもありがとうございます(^-^)¥
そうだったんですか。何かおかしぃーなぁーと思っていました。
自分の今持っているSQLの本は因みにACCESS(SQL)様
の本を見て今勉強しています。
ありがとうございましたo(^o^)o
よくわかりませんが1000近いので挨拶にきました。
こんにちは
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。