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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
過去ログ、関連スレッド、よくある質問とその回答、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/

これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。

よくある質問
・「コマンドまたはファイル名が違います」
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 http://www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」

前スレッド
【初心者】Java質問・相談スレッド98【大歓迎】
http://pc11.2ch.net/test/read.cgi/tech/1171787388/

/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。

JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc10.2ch.net/hp/

次スレは>>980あたりで。
2デフォルトの名無しさん:2007/03/05(月) 01:37:20
ずるしてらくしてかれいに2げっとかしらかしら〜
33get:2007/03/05(月) 11:59:08
     ∧_∧
ピュ.ー (  ^3^) <エェー これからも僕を応援して下さいNE(^3^)。
  =〔~∪java~〕
  = ◎――◎                      java&サン

4デフォルトの名無しさん:2007/03/05(月) 12:09:12
Javaからウェブカメラの映像を取得するには
JNIとか使わなきゃむりぽ?
5デフォルトの名無しさん:2007/03/05(月) 12:16:58
>>4
ローカルのカメラならドライバ次第では?
ネット上の映像ならソケットで取れないか?
6デフォルトの名無しさん:2007/03/05(月) 12:21:08
>>4
JMF
74:2007/03/05(月) 12:32:02
>>5
ローカルなんだ。
いろんなカメラに対応させたいんだが。

>>6
調べてみる。
トンクス
8デフォルトの名無しさん:2007/03/05(月) 13:25:35
このエフェクトはどうやって作られているのでしょうか?
画像を縦方向に1ドット単位で刻む→それらをx軸の画面中央から離れた分だけ縦に拡大処理→再結合して表示、
なんていうのしか思いつきませんorz

http://couples.jp/cgi-bin/ht_panorama_dsp.cgi?hotelcode=221&panorama=front_top&ptn=2
9デフォルトの名無しさん:2007/03/05(月) 13:47:11
アプレットに表示されている線や複数の画像を、
一つの大きな画像と見て拡大縮小等の処理を行いたいのですがどんな感じで作れば良いでしょうか?
10デフォルトの名無しさん:2007/03/05(月) 14:38:41
>>9
Graphics2DとImage使ったらできないかな?
11デフォルトの名無しさん:2007/03/05(月) 15:10:27
>>10
ご回答ありがとうございました。
恥ずかしながら、その単語は初めて聞きました。調べて勉強してみます。
12デフォルトの名無しさん:2007/03/05(月) 15:25:28
ラストスレおめでと。
残り少ないけどよろ。
(:D)| ̄|_
13デフォルトの名無しさん:2007/03/05(月) 18:37:22
JAVAにおける文字コードについて質問なのですが、こちらでよろしいでしょうか?

OutputStreamWriterなどで文字コードを指定のうえ
ファイルを読み込み、読み込んだファイルをそのまま出力する処理を
作成していますが機種依存文字(丸1や(株))が文字化けしてしまいます。
「MS932」を指定するだけでは足りないのでしょうか?

動作環境はREDHUTでTOMCATのバージョンは5.5です。
なおWindows環境での動作確認ではうまく処理できました。
1413:2007/03/05(月) 18:39:22
// ファイル読込準備
InputStream istream = null;
BufferedReader br = null;
istream =formFile.getInputStream();
br = new BufferedReader(new InputStreamReader(istream,"MS932"),65535);

// ファイル出力準備
File uploadFile = new File("ディレクトリ名", "ファイル名");
OutputStreamWriter bos = null;
bos = new OutputStreamWriter(new FileOutputStream(uploadFile.getAbsolutePath()), "MS932");


boolean flg = true;
String fileText = new String();
StringBuffer sb = new StringBuffer();

while (flg) {
fileText = br.readLine();
if(fileText==null){
flg=false;
}else{
if(!fileText.equals("")){
sb.append(fileText + "\r");
}
}
}

bos.write(sb.toString());
bos.close();
istream.close();
15デフォルトの名無しさん:2007/03/05(月) 18:42:35
>>1のWikiroomが403なんだけどたまたま?
それともつぶれた?
16デフォルトの名無しさん:2007/03/05(月) 18:46:30
>>13
まずはTomcat関係無しに、Redh a tのjavaで文字化けせずに
Windows-31Jの文章が読み書きできるか確認。

それと、MS932ではなく、Windows-31Jにしておいた方がいいですよ。
Windows-31Jは、IANA登録名ですから。
17デフォルトの名無しさん:2007/03/05(月) 18:53:51
すみません、eclipseなんですが、中括弧の付く位置が初期設定では
メソッド() { こんな感じになってるんですが、
メソッド()
{
こんな感じにする事はできないのでしょうか?見難くってやってられません。
もし設定を変える方法を知っていたら教えてください。お願いします。
18デフォルトの名無しさん:2007/03/05(月) 19:20:46
>>17
Window>Preference
Java>Code Style>Formatter
19デフォルトの名無しさん:2007/03/05(月) 19:28:05
質問1)
テキストファイルに書かれた数字を配列にいれるにはどうすればいいの?
hoge.txtは以下のとおり

12
34
56
78

ってかいてあって、java hoge.txtと実行すると
配列aa[0]〜aa[3]に上から順に数字が入るようにしたい。教えて

質問2)
配列に入った数値a[0]=12, a[1]=34, a[2]=56, a[3]=78を
nag.txtに順番に
12
34
56
78
と書き込みをしたい。どうすればできるの。一つでもいいから誰か教えて
20デフォルトの名無しさん:2007/03/05(月) 19:29:58
>>13
System.out.println(java.nio.charset.Charset.foName("MS932").getClass());

とかやって、実装してるクラスを確認してみるとか。
2117:2007/03/05(月) 19:30:52
一応設定は上手く行きました。教えてくれてありがとうございます。
22デフォルトの名無しさん:2007/03/05(月) 19:31:17
>>19
宿題は宿題スレに。

★★ Java の宿題ここで答えます Part 60 ★★
http://pc11.2ch.net/test/read.cgi/tech/1169300052/
2313:2007/03/05(月) 19:40:14
>>16
Windows-31J指定の件了解です。
またJAVAにて読み書きできるかについてですが可能でした。

以下コードをREDHAT上にて実行。
(input.txtはSJISにて丸1と全角ハイフンを記述、output.txtに正しく出力)

FileInputStream fis = new FileInputStream("input.txt");
InputStreamReader ir = new InputStreamReader(fis , "MS932");
BufferedReader br = new BufferedReader(ir);
String msg = br.readLine();

FileOutputStream fos = new FileOutputStream("output.txt");
OutputStreamWriter osw = new OutputStreamWriter(fos , "MS932");
BufferedWriter bw = new BufferedWriter(osw);
bw.write(msg);
24デフォルトの名無しさん:2007/03/05(月) 19:50:21
>>23
何だろうねぇ?
Tomcatの起動オプションに強制指定入れてみる?
-Dfile.encoding=MS932
これ。
25デフォルトの名無しさん:2007/03/05(月) 20:00:11
>19やさすぃいJavaにそのまま書いてあるお
(:D)| ̄|_
26デフォルトの名無しさん:2007/03/05(月) 20:51:47
>>19
package hoge;
public class txt {
private static final String aaa = "hoge.txt";
private final String aaaa = "nag.txt";
private static int[] aa = new int[4];
private int[] a = new int[4];
public static void main(String[] a) throws Exception {
java.io.BufferedReader b = null;
try {
b = new java.io.BufferedReader(new java.io.FileReader(aaa));
for (int i = 0; i < 4; i++) aa[i] = Integer.parseInt(b.readLine());
new txt().a();
} finally {
if (b != null) b.close();
}
}
private void a() throws Exception {
for (int i = 0; i < 4; i++) a[i] = aa[i];
java.io.BufferedWriter b = null;
try {
b = new java.io.BufferedWriter(new java.io.FileWriter(aaaa));
for (int i = 0; i < 4; i++) { for (char c : String.valueOf(a[i]).toCharArray()) b.write(c - '0' + '0'); b.newLine(); }
} finally {
if (b != null) b.close();
}
}
}
27前スレ976 :2007/03/05(月) 21:11:21
前スレ>>987
Linuxの設定、Java version関係なく
sendする直前に、recv処理をすることで対応できました。
回答どもです。
2819 :2007/03/05(月) 21:20:03
>26
2919 :2007/03/05(月) 21:21:25
>26 ありがとう、ところでこれコンパイルは通るけど、実行すると以下のようなエラーがでる

Exception in thread "main" java.lang.NoClassDefFoundError: txt (wrong name: hoge
/txt)
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)
30デフォルトの名無しさん:2007/03/05(月) 21:33:02
もう涙が出ちゃう。・゚・(ノД`)・゚・。
31デフォルトの名無しさん:2007/03/05(月) 21:37:30
なるほど、スレタイ通りだ。wwwww
32デフォルトの名無しさん:2007/03/05(月) 21:38:21
>>29
そのファイルの拡張子はどうなってる?
3319 :2007/03/05(月) 21:42:49
javac txt.java
java txt
で実行しているわよ
34デフォルトの名無しさん:2007/03/05(月) 21:47:27
とりあえず>>1は読んだか?
35デフォルトの名無しさん:2007/03/05(月) 21:48:55
>>33
hoge ってディレクトリ掘って、そん中に txt.class をつっこめ。
そのあと java hoge.txt ね。

>>19
> ってかいてあって、java hoge.txtと実行すると
ってのが原因。
3619 :2007/03/05(月) 21:50:11
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 http://www.wikiroom.com/java/?path,classpath
これでしょ。これは前から知っててとっくに解決済み。そもそも
これ解決してないなら他のプログラムとかは通らないでしょ。
eclipseでやあっている
37デフォルトの名無しさん:2007/03/05(月) 21:53:01
パッケージ宣言とっちゃえば?
38デフォルトの名無しさん:2007/03/05(月) 21:54:09
>>36
そこに書いてあるのはパッケージ使わない場合だけだから、
今回は参考にならんよ?
39デフォルトの名無しさん:2007/03/05(月) 21:54:55
> パッケージ宣言とっちゃえば?
>>19 の仕様に反するんだけど。
4013:2007/03/05(月) 22:00:31
ちょっと確認したのですが、この方法でサーバに生成されたファイルの
文字コードを確認したらEUCになっていました。これってサーバ依存の
文字コードがデフォルトで選択されているってことですよね。
ただ「OutputStreamWriter」でエンコーディングの指定をしているにも
関わらずそのようになってしまったのはなんでだろう…。
41デフォルトの名無しさん:2007/03/05(月) 22:06:43
>>40
> この方法
それって >>14>>23

EUC って丸付き数字あったっけか?
4219 :2007/03/05(月) 22:12:09
>>37 俺も思った
43デフォルトの名無しさん:2007/03/05(月) 23:23:40
synchronized修飾子を指定したメソッドなんですが、
スレッド名.wait()を使用するとjava.lang.IllegalMonitorStateException: current thread not ownerが出ます。
この場合どんなことが原因だと考えられるのでしょうか?
44デフォルトの名無しさん:2007/03/05(月) 23:44:52
wait() を用いたこと
45デフォルトの名無しさん:2007/03/06(火) 00:07:06
>>43
エラーメッセージの通り。
もしくは、モニターの所有権について >>43 が理解できてない事。
46デフォルトの名無しさん:2007/03/06(火) 00:08:25
>>44-45
失礼しました。勉強しなおしてきます。
47デフォルトの名無しさん:2007/03/06(火) 00:09:48
>>43
Objectのwaitメソッドを使っているわけだからその辺のドキュメント漁れば答えが見えてくるはずなんだけど…

> このメソッドを呼び出すのは、このオブジェクトのモニターを所有するスレッドだけでなければ
> なりません。スレッドがオブジェクトのモニターのオーナになる方法については、notify メソッド
> を参照してください。

直接的ではないにせよ最低限のヒント位は出ているから、普段からAPIドキュメントみるクセをつけた方が良いかと。
48デフォルトの名無しさん:2007/03/06(火) 01:50:04
すんません。
http://homepage2.nifty.com/igat/igapyon/diary/2005/ig051228.html
ここ見て、swtからwin32APIが扱えることを知ったんだけど、
キーイベントやウィンドウのリサイズきかなくない?
ウィンドウは拾えてるみたいなんだけど…
49デフォルトの名無しさん:2007/03/06(火) 02:11:29
え?ここJNIあり?
幅広いね
50デフォルトの名無しさん:2007/03/06(火) 06:49:35
GUIで質問があります。
JComboBoxで選択した文字を、JLabelに出力するようしたいのですが、
どのようにやれば良いのでしょうか?
このGUI(ttp://www.uploda.org/uporg718906.jpg.html)の場合、
『output』というところにTokyo, Osaka, Nagoyaと選択したら出力されるようにしたいです。
51デフォルトの名無しさん:2007/03/06(火) 07:19:39
>>50
addActionListenerかaddItemListenerを使う。
簡単なのはActionListenerのほうかな。
編集可能か否かでちょっと違うかもしれないが。

JComboBoxのAPIを見ること。
52デフォルトの名無しさん:2007/03/06(火) 08:57:45
なんでそんなことが分からないレベルで2chに質問しようと思いつくのか。
それとも釣りか。
5313:2007/03/06(火) 09:04:58
>>41
14の方です。23の方はうまくいってます。EUCに丸文字ないので
ばけていたのだと思います…。が、14の方法で何故EUCファイルが
できてしまったのでしょう…。現在それを調べています。
54デフォルトの名無しさん:2007/03/06(火) 13:29:19
//クラスのインポート
import java.util.*;
public class Hiduke {
public static void main(String[] args){
//インスタンス化
Calendar now = Calendar.getInstance();

int y = now.get(now.YEAR); //年を取得
int m = now.get(now.MONTH) + 1; //月を取得
int d = now.get(now.DATE); //日を取得

//日付を表示
System.out.println(y+"年"+m+"月"+d+"日");
}
}
この場合、引数ってのはどれにあたるのでしょうか?
55デフォルトの名無しさん:2007/03/06(火) 13:33:54
String[] args
now.YEAR
now.MONTH
now.DATE
y+"年"+m+"月"+d+"日"

メソッドに渡してるものは全部引数
56デフォルトの名無しさん:2007/03/06(火) 13:34:56
何の引数?
コマンドライン引数ならmainメソッドのargsだが、プログラム中では利用
されていないね。
getの引数はnow.YEARとかだな。
printlnの引数はy + ... + "日"という式。

本筋とは関係ないけど、Calendarは日時を表すオブジェクトではないので
nowという誤解させるような名前を付けるのは好ましくない。
57デフォルトの名無しさん:2007/03/06(火) 14:13:12
>>55-56
迅速な対応ありがとうございます。また質問なのですが
上の日付の書式を書くとなるとどう書けばいいのでしょうか?
58デフォルトの名無しさん:2007/03/06(火) 14:18:06
SimpleDateFormat
59デフォルトの名無しさん:2007/03/06(火) 14:28:21
何も知らない俺がiアプリで計算機程度のソフト作れるようになるには
どのくらいの時間かかりますか?
60デフォルトの名無しさん:2007/03/06(火) 14:52:25
そんなことを2chに聞きに来るような人には一生無理だと思います。
61デフォルトの名無しさん:2007/03/06(火) 14:54:04
>>59
「作る時間」じゃなくて「作れるようになるまでの時間」って事?
今からでも作れるよ。君に足りないのは技術力じゃなく決断力だ。
62デフォルトの名無しさん:2007/03/06(火) 14:55:32
>>15
普通に見られるぞ。
63デフォルトの名無しさん:2007/03/06(火) 14:56:19
>>13
native2asciiとか使ったことある?
64デフォルトの名無しさん:2007/03/06(火) 14:57:37
>>17
Eclipseは専用スレがあるから、一応、そちらで。

【初心者】EclipseでJavaの勉強 2時間目【大歓迎】
http://pc11.2ch.net/test/read.cgi/tech/1147444414/
【Java/C/PHP/Perl/Ruby/Python/TeX】Eclipse M22
http://pc11.2ch.net/test/read.cgi/tech/1168166588/
65デフォルトの名無しさん:2007/03/06(火) 14:59:48
>>29
でたー、これわざとやってるとしか(ry
ファイル名.java.txtになってたってやつかー
66デフォルトの名無しさん:2007/03/06(火) 15:01:41
>>40
コンパイルオプションで指定した文字コードは?

だめならとりあえずnative2ascii

Stringオブジェクトを使うとき、文字コード指定していないとかでは?
JISAutoDetectとか昔、懐かしいことしていた記憶がある・・・・
67デフォルトの名無しさん:2007/03/06(火) 15:02:56
質問に答えればいいのにプログラマってごちゃごちゃうるさいね。

>>59
適当だけど40時間(8h/日なら5日間、4h/日なら10日間)ぐらいじゃない?
計算機ロジック自体は簡単だけど、
開発ビルド環境、iアプリの作り方、サーバへのアップとダウソでハマると思う。
68デフォルトの名無しさん:2007/03/06(火) 15:03:48
69デフォルトの名無しさん:2007/03/06(火) 15:03:56
思うんだが、丸文字丸文字いうてるやつは
丸文字の意味を間違えてないか? と突っ込んでみる。

70デフォルトの名無しさん:2007/03/06(火) 15:04:50
>>67
つうか、お前がプログラマなんだろ。
俺はプログラマじゃないから答えてやらないよ。
71デフォルトの名無しさん:2007/03/06(火) 15:06:17
丸文字といえば、やはりこれ

丸文字書体の手書き風TrueTypeフォント「ことり文字ふぉんと」v1.0が公開
先端が尖っていない滑らかな女の子らしい運筆で書かれている

http://www.forest.impress.co.jp/article/2003/01/08/kotorimojifont.html
72デフォルトの名無しさん:2007/03/06(火) 15:07:14
>>67
おまえは、場合によっては、質問者に
余計なお世話だと思われることだろう。
73デフォルトの名無しさん:2007/03/06(火) 15:08:01
そもそも>>67の発言はあくまで推測だし。
単なる丼勘定

74デフォルトの名無しさん:2007/03/06(火) 15:08:34
>>67
相手は「何も知らない」って言ってるんだぜ?
あの質問から読み取れる情報は「日本語は理解できている」程度なんだぜ?
75デフォルトの名無しさん:2007/03/06(火) 15:19:03
>>67
お前の解答って「作る時間」じゃねーの?w
質問は「作れるようになる時間」だぞ。
『質問に答えればいいのに』答えられてないじゃんwwwww
76デフォルトの名無しさん:2007/03/06(火) 15:19:30
>>70>>72-74
必死すぎ
77デフォルトの名無しさん:2007/03/06(火) 15:23:37
>>76
本人乙
78デフォルトの名無しさん:2007/03/06(火) 15:28:52
何この自作自演連レス
79デフォルトの名無しさん:2007/03/06(火) 15:39:01
>>67
あれてるけどさんくす。

環境は整いました。
アップダウンは昔HP作ってたからたぶん問題なし。

が、プログラム自体に戸惑って止まってます。
BASICはやったことあったけど、javaとは全然違うね。難しい。
80デフォルトの名無しさん:2007/03/06(火) 15:53:14
1.4対応の本は虎対応本に買い換えたほうがいいの?
81デフォルトの名無しさん:2007/03/06(火) 16:10:42
使えなくなるわけではないが、別途Tiger(つーかいまはその次のMustangが最新)
の知識を得る必要はある。
82デフォルトの名無しさん:2007/03/06(火) 16:13:11
コンパイルはでける。
実行すると、下記の表示される↓

[Fatal Error]:1:5: Invalid byte 1 of 1-byte UTF-8 sequece.

実行ソースは、やさしげなJava活用編、XML文書をDOMによって読み書きする(p291)です。
83デフォルトの名無しさん:2007/03/06(火) 16:26:22
JOptionPane.showInputDialogのダイアログに出てくるテキストフィールドに、
初期状態から文字を表示させておくことはできないのでしょうか?
84デフォルトの名無しさん:2007/03/06(火) 16:31:24
>>82
いきなりなんの話だ?

XML中に表明しているエンコーディングと実際のエンコーディングが
食い違ってるんじゃないの?
85デフォルトの名無しさん:2007/03/06(火) 16:37:53
>>83
初期値を指定できるshowInputDialogを使う。
1.4以降なら3つあるはず。
86デフォルトの名無しさん:2007/03/06(火) 16:40:28
>85
〜Dialog("Your Name?","65")
87デフォルトの名無しさん:2007/03/06(火) 17:04:38
>>85-86
ありがとうございました。無事解決しました。
88デフォルトの名無しさん:2007/03/06(火) 17:06:44
>82は解決しませんでした。
諦めました、スルーして下さい。
89デフォルトの名無しさん:2007/03/06(火) 17:39:16
>>76
質問者本人か?

質問する前に日本語を勉強しようや。

さもなければ、半島に帰りな
90デフォルトの名無しさん:2007/03/06(火) 17:40:05
>>79
また自演だ。コテハンぴゅあとかいうドトネト厨の荒らしだろお前w
91デフォルトの名無しさん:2007/03/06(火) 19:12:15
>>88
諦めるもなにも読んだまんまだが?
まずはxmlの仕様を勉強しろ

>>84
正確には文字コードが指定されてなかったんでパーサがサポートするデフォルトの文字コードで読みに行ったらテキストのエンコードがUTF-8じゃなかったから仕様に従って致命的なエラー扱いにしたんだな。

何も考えてない奴が一番初めにコケるテンプレ嫁以前の問題だな。ググれば幾らでも出てくる。
92デフォルトの名無しさん:2007/03/06(火) 20:10:53
>>82
バイナリエディタで開いて1byte目にBOMついてないか確認しろ。
93デフォルトの名無しさん:2007/03/06(火) 21:14:39
javaファイル、xmlファイル、どっちがBOM付きでどっちがUTF-8?
94デフォルトの名無しさん:2007/03/06(火) 21:21:59
mustangからBOM付きUTF-8扱えるようになってたような。
95デフォルトの名無しさん:2007/03/06(火) 21:29:15
javaファイル
→BOM付きshift_jis
xmlファイル
→BOM無しshift_jis
ですよね?よね?
96デフォルトの名無しさん:2007/03/06(火) 21:35:55
BOMってのはUTF-16の話だ。
97デフォルトの名無しさん:2007/03/06(火) 21:52:34
>>96
http://unicode.org/faq/utf_bom.html#29
> Q: Can a UTF-8 data stream contain the BOM character (in UTF-8 form)?
> A: Yes, UTF-8 can contain a BOM.

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6378911
UTF-8 decoder handling of byte-order mark has changed
98デフォルトの名無しさん:2007/03/06(火) 23:01:15
原因がわかりまちた。
xmlファイルの文頭にこれ→<!--注釈-->をつけたことが原因でしたぁ〜ん
(:D)| ̄|_ ごめんなご
99デフォルトの名無しさん:2007/03/06(火) 23:45:51
ソケットのストリームにおいて、コネクションを維持しながら
文字ストリームで通信した後にオブジェクトストリームで通信をしたいのですが、
文字ストリームのcloseメソッドの呼び出しって行う必要はあるのでしょうか?
100デフォルトの名無しさん:2007/03/06(火) 23:50:43
らくしてかれいにスレッド99コメント99げっとかしらかしら〜
(:D)| ̄|_
10199:2007/03/07(水) 00:16:57
それは気がつかなんだ。
(:D)| ̄|_ ごめんなご
10248:2007/03/07(水) 01:50:52
すれ違いだったんだろうか…
ここまで見事にスルーされるとは思ってなかったぜ。
103デフォルトの名無しさん:2007/03/07(水) 02:19:25
>>102
SWT関連なら専用スレがあるよ
ttp://pc11.2ch.net/test/read.cgi/tech/1164877399/l50
104デフォルトの名無しさん:2007/03/07(水) 03:42:07
StreamTokenizerで
自然対数表示で書かれたdouble値を読み込むことってできないでしょうか?

例えば、2.52224e-005という文字列を読み込んだときに
0.00025224 と認識させたいのですが、

double a = st.nval;

とすると、a=2.52224となってしまいます。
105デフォルトの名無しさん:2007/03/07(水) 03:52:52
>>103
そこGUIだから
106デフォルトの名無しさん:2007/03/07(水) 03:58:56
>>106
それ、常用対数。
107104:2007/03/07(水) 04:00:20
>自然対数表示で書かれたdouble値を読み込むことってできないでしょうか?

自然対数表示じゃなくて、指数表示の間違いでした
108デフォルトの名無しさん:2007/03/07(水) 04:17:32
(:D)| ̄|_
メインOSとデータをフォーマットしてしまったぜ!
イェィ( ̄ー ̄)b
109デフォルトの名無しさん:2007/03/07(水) 04:23:40
>>105
だから何?
110デフォルトの名無しさん:2007/03/07(水) 04:40:06
111デフォルトの名無しさん:2007/03/07(水) 05:04:04
>>105
??GUIだから誘導されてるんじゃ・・・
112104:2007/03/07(水) 05:25:00
>>110
ありがとうございます、解決しました〜
113デフォルトの名無しさん:2007/03/07(水) 09:08:49
なんだよ1日たってみたら自演扱いかよ。
しかもわけわからんコテ扱い。
初めてこの板来てこれだしな。

プログラマってのはこんなにレベル低いのか?
それともアホがここにすみついてんのか?
114デフォルトの名無しさん:2007/03/07(水) 09:24:53
自分が馬鹿なのを認識できないクズが一匹いますね
115デフォルトの名無しさん:2007/03/07(水) 09:56:02
誰?
>>67か?
116デフォルトの名無しさん:2007/03/07(水) 12:25:35
うっすら涙目の>>113登場。
117デフォルトの名無しさん:2007/03/07(水) 14:08:47
入力ファイルから値を受け取りそれぞれのクラスで処理してその結果を
出力ファイルにだすっていうプログラムを作りたいんですけど
入力ファイルはどういうふううに作成すればいいのでしょうか?
メモ帳からではないですよね?
118デフォルトの名無しさん:2007/03/07(水) 14:20:27
>>113
ん、母体が大きくなるとアホも居ますわ。すまんこやけどスルーしたってください。
119デフォルトの名無しさん:2007/03/07(水) 14:23:30
>>117
> 入力ファイルから値を受け取りそれぞれのクラスで処理して
の部分が曖昧なのでなんともいえない。

メモ帳でも作れるかもしんないし、作れないかもしれない。
120デフォルトの名無しさん:2007/03/07(水) 14:23:44
>>117
入力ファイルがテキストファイルならメモ帳で作っても問題ないんじゃない?

というか、やりたいことに対して、その意味が自分で分かってないってことは
・・・・宿題?
宿題が分からない場合は
1.友人に相談
2.教師に相談
3.宿題スレで相談
こんな感じでリアルをもう少し活用してみましょう。
121デフォルトの名無しさん:2007/03/07(水) 14:30:31
レス、ありがとうございます。
すみません言葉たらずでした…
レコード形式?みたいにデータを入力していってその
値を受け取るって形にしたいのですがこういうのは
メモ帳で作れます?
122デフォルトの名無しさん:2007/03/07(水) 14:37:56
レコード形式って?
123デフォルトの名無しさん:2007/03/07(水) 14:39:15
>>121
作れるかどうかメモ帳起動してみればいいんじゃないのかな?
124デフォルトの名無しさん:2007/03/07(水) 15:54:56
>>113
ならプログラマやめれば?
125デフォルトの名無しさん:2007/03/07(水) 16:07:27
Javaを用いて、既存のファイルやフォルダのコピー、移動を行いたいのですが、
どのような方法がありますか?

Fileクラスにロードしたファイルを、renameTo()メソッドで移動をしてみたのですが、
ディレクトリをまたいだり、ルートフォルダが異なったりするとうまくいきません。
API仕様書には、環境に大きく依存すると書いてあり、確かにそのような気配がします。
(ちなみに、環境はWindowsXPです。)

Runtime.exec()や、ProcessBuilderを用いてバッチ処理のような形で実現させるしかないのでしょうか?
あるいは、java.ioパッケージを駆使するしかないのでしょうか?
その場合は、どのクラスを使うと便利か、示唆していただけないでしょうか。
126デフォルトの名無しさん:2007/03/07(水) 16:21:55
Jakarta Commons IOあたりにあるかとも思ったが、ないね。
127デフォルトの名無しさん:2007/03/07(水) 17:53:12
Swing関係のAPIに書かれてる
「警告: このクラスの直列化されたオブジェクトは、今後のSwing リリースと・・・略・・・XMLEncoderを参照してください。 」
の意味がよく分かっていないのですが
「XMLで書け」って意味でしょうか?
128デフォルトの名無しさん:2007/03/07(水) 18:11:25
>>XMLEncoderを参照してください
とりあえず嫁。なぜ読まん?
129デフォルトの名無しさん:2007/03/07(水) 18:14:28
>>128
既に何度も読んだ。マジで意味が分からん・・・。
130デフォルトの名無しさん:2007/03/07(水) 18:17:51
シリアライズしてもいいけど、Serializableを使うとバイナリ互換問題が
ついて回るので、RMIみたいな短期の場合にのみ使ってくれ。保存して
おいて別バージョンのSwingで読めなくてもしらないよ。そういう用途に
はXMLEncoder/Decoderを使ってくれ。

131デフォルトの名無しさん:2007/03/07(水) 18:26:48
各環境に合わせてコンパイルし直せ
さもなくばXMLEncoder使え

って事であってます?
132デフォルトの名無しさん:2007/03/07(水) 18:30:41
ちゃうちゃう
シリアライズしたものをファイルとかに保存して、それ読み込んで使ったりすると
JREのバージョンが変わったときに読めなくなる/使えなくなるよってこと。
133デフォルトの名無しさん:2007/03/07(水) 18:34:29
>>131
うーん、そうじゃなくて、他のバージョンのJVM上にオブジェクトの
シリアライズイメージを送ったとき、問題出るかもしれんよ、ということ。
コンパイルし直ししても、

JDK6の javax.swing.Hogehoge
をJDK8 のJVM上に送ったとき、そこでインスタンスが復元出来ないかもしれないってこと。
具体的には、そのクラスの serialVersionUID が将来変えられる可能性があるということかな。
134デフォルトの名無しさん:2007/03/07(水) 18:34:56
>>132
お手数掛けました。
ありがとうございました。
135デフォルトの名無しさん:2007/03/07(水) 19:37:58
>>126
あるだろう。コピーくらいなら。


Runtimeなんていらない。

java.ioだけでどうにかできるはず。
根性いるかも知れないけど。

まずFileクラスでフォルダを指定して、
フォルダの中をdir()で再帰的に調べて記憶しておく。

つぎに移動やコピー。
ここでは、移動(コピー)先フォルダを指定したら。
移動(コピー)先フォルダ名のパス文字列をつかってFileクラスでディレクトリ作成。
あとは同じディレクトリにファイルやサブディレクトリなどを再帰的にコピー。

136デフォルトの名無しさん:2007/03/07(水) 19:38:41
>>129
SerializableがXMLEncoderに変わっただけ。

つうかググれ。
137デフォルトの名無しさん:2007/03/07(水) 19:39:51
138デフォルトの名無しさん:2007/03/07(水) 19:52:07
>>135
ファイルの中身だけコピーするならなんとかなると思うけど。

属性とか所有者とか、シンボリックリンクではコピー先にシンボリックリンクを作るとか、
そーゆー事まで考え出すと java.io だけじゃ無理のような。
139デフォルトの名無しさん:2007/03/07(水) 20:43:09
>>136
おまえはその前に、リロード汁w
140デフォルトの名無しさん:2007/03/07(水) 22:38:44
Mac OS X使ってます。
OS XにはAPIドキュメントというものはないんでしょうか?
Eclipceで日本語のホバー表示をするために、
MergeDoc(http://mergedoc.sourceforge.jp/)というのを入れたいんですが、
APIドキュメントというのが必要らしいです。
141デフォルトの名無しさん:2007/03/07(水) 22:47:18
>>140
/System/Library/Frameworks/JavaVM.framework/Versions/バージョン/
Home/docs/
142デフォルトの名無しさん:2007/03/07(水) 23:02:33
>>141
/System/Library/Frameworks/JavaVM.framework/Versions/バージョン/
Home/
まではあるんですが、docsフォルダがないです。。。
143デフォルトの名無しさん:2007/03/07(水) 23:10:40
ああ、ADCからダウンロードしないとないかも。
144デフォルトの名無しさん:2007/03/07(水) 23:13:57
145デフォルトの名無しさん:2007/03/08(木) 00:00:56
ActionListener等ってFrameとかにimplementsして使うのが普通ですか?
この方法だと自分のやりたい事がどうもスッキリとできないんです
146デフォルトの名無しさん:2007/03/08(木) 00:10:24
オセロや将棋のプログラムを作りたいのですが、どのプログラム言語が適しているのか教えてください。
プログラムの知識は、どの言語でも使うif文とかfor文とかを最近覚えた程度の全くの初心者です。
数学は独学だけど大学程度の数学なら分かるつもりです。論文や専門書もかなり読みました。
アルゴリズムとか超興味あります。
しかし何から手をつければ良いのか検討が付かないのアドバイスをください。
ちなみに学生なのでPCを買うお金が無いので学校の5〜10年ぐらい昔の古いPCが開発環境です。
147デフォルトの名無しさん:2007/03/08(木) 00:13:18
オセロや将棋程度ならなんでもOK。
強いて言えば、VBがユーザインタフェースを作りやすいけど、開発環境にお金がかかる。
Javaなら無料だけど古いPCでは厳しいか。
148デフォルトの名無しさん:2007/03/08(木) 00:13:53
lisp
149デフォルトの名無しさん:2007/03/08(木) 00:15:38
>>145
- 複数箇所で使い回すならクラス(場合によってはメンバークラス)。
- その場限りなら匿名クラス。
にしている。
150145:2007/03/08(木) 00:22:34
>>149
具体的に言えば、

Aボタンを押したらBテキストフィールドから値を受け取り
Cテキストフィールドを更新するといった処理を複数作る

という事をしたいんですが、この場合はメンバクラスとして作るのがスマートですかね?
おそらく匿名クラスや普通のクラスではややこしい書き方をしないと出来ないと思うので
151デフォルトの名無しさん:2007/03/08(木) 00:33:13
>>150
フレームのメンバーになっているボタンやテキストへのアクセスが出来た
ほうが便利だろうから、メンバークラスがよいように見える。
152145:2007/03/08(木) 00:40:31
>>149,151
レスありがとうございます
その辺りのスコープの問題はメンバクラスにする事で何とかするのが普通なんですね

ボタンやラベルを一つのパネルに纏めてしまって、そのパネルもメンバクラスに・・・
なんてすればさらにコードが読みやすくできるのかなぁ
153デフォルトの名無しさん:2007/03/08(木) 02:11:06
>>138
パーミッションだけならJavaでもできる。

他は・・・
Runtimeとかかねえ

Jakarta Commons VFSでにたようなことできなかったかな・・・
154デフォルトの名無しさん:2007/03/08(木) 02:17:36
>>145,152
乗り遅れた…
個人的にはオブジェクトの役割が比較的きっちり分かれるMVCが好み

ttp://java.sun.com/developer/technicalArticles/javase/mvc/
↑英語ですが…日本語でも山ほど資料はあるのでググってみて

ちゃんと設計すればプラガブルになるので変更や拡張が楽だしぃ

155デフォルトの名無しさん:2007/03/08(木) 03:55:02
>>111
よく読め。
GUIの話題なんて一言も振ってない。
156デフォルトの名無しさん:2007/03/08(木) 04:03:14
その通り
キーイベントやウィンドウのリサイズが利かないって話題なんだからCUI関係だよ
GUIと間違えちゃいかん
157デフォルトの名無しさん:2007/03/08(木) 04:21:08
APIリファレンスって印刷して使うものなの?
ものすごい量になる悪寒
158デフォルトの名無しさん:2007/03/08(木) 04:46:51
>>157
お前の想定している状況がイマイチ分からん。

シリアライズの話だけどそもそもアプリケーションプログラマがSwingコンポーネントをシリアライズするってどういう場合?

元々シリアライズってファイルシステムなんかに永続的にオブジェクトの状態を保存する目的のものじゃないでしょ?
ネットワーク超えてたれ流すためでしょ?

シリアライズを永続的な保存目的に使いだしたからXMLEncoder/XMLDecoderが出てきたの?
159デフォルトの名無しさん:2007/03/08(木) 07:10:33
永続的な目的云々もそうだが、ことさらSwingのAPIにだけシリアライズに
よるバージョン問題のことが書いてある理由も謎だ。
160125:2007/03/08(木) 08:04:27
>>126
>>135
>>153
返答ありがとうございます。
手間が掛かりそうなので、簡単に実現できそうなRubyに乗り換えることにしました。
Swingが使えないのが残念ですが。
ちなみに作ろうとしていたのはエロ画像の自動整理プログラムでした。
161デフォルトの名無しさん:2007/03/08(木) 10:01:01
ひとつのつながったテキストを区切って別々のページに保存したいときって
どうすればいいですか?
162デフォルトの名無しさん:2007/03/08(木) 10:02:30
>>153
6.0 のパーミッション操作も全部じゃないよ。

外部ライブラリ使うなら、JConfig 使うとかした方が楽かも。
163デフォルトの名無しさん:2007/03/08(木) 10:03:34
>>161
「別々のページに保存」ってのが具体的に何したいのかわからん。
164デフォルトの名無しさん:2007/03/08(木) 10:10:33
えと、100行のテキストがあったとして、10行ずつ区切って
別のファイルに保存ってことです。
165デフォルトの名無しさん:2007/03/08(木) 10:16:31
言ってる事をそのままコードにするだけだからどこがどう出来てないのか情報がないと教えようがない
166デフォルトの名無しさん:2007/03/08(木) 10:19:44
http://java.sun.com/javase/ja/6/download.html にAPIドキュメント追加されてる。
167デフォルトの名無しさん:2007/03/08(木) 10:55:36
今クローラーってのを作る課題なんですけど、リンク先をページから
拾ってきて、ページごとに保存しなくちゃいけないんです。
で、リンク先抜き出してソース落とすとこまではできたんですけど、
全部つながってひとつのファイルに保存されちゃうんで、それを
区切って保存したいってことです。
168デフォルトの名無しさん:2007/03/08(木) 11:03:08
>>167
再帰的にやればいいんじゃね?
169デフォルトの名無しさん:2007/03/08(木) 11:18:38
>>167
> 全部つながってひとつのファイルに保存されちゃうんで
……。つなげなければ良いんじゃね?
170デフォルトの名無しさん:2007/03/08(木) 11:46:43
何でつながるのかわかってないんじゃね?
171145:2007/03/08(木) 12:33:17
>>154
レスありがとうございます

>ちゃんと設計すればプラガブルになるので変更や拡張が楽だしぃ
確かにメンバクラスにすると再利用が難しくなるかなぁと思ってました

そこでMVCという単語を絡めて検索した所
まさに今考えていた事が既に話し合われていた場所を発見する事ができました
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=18201&forum=12&7

まだしっかりとは読んでいないのですが、これで気持ちよく開発が進めれそうです
本当にありがとうございました ;D
172デフォルトの名無しさん:2007/03/08(木) 14:10:21
商品番号、日付、単価、数量
0001,20070308,1200,50
とテキストファイルに記入。

日付の値は日付の処理を行うメソッドに渡し、単価と数量の値は
計算する処理を行うメソッドに渡す。
ということをしたいのですが可能でしょうか?
可能ならばやり方を教えていただきたいです。
173デフォルトの名無しさん:2007/03/08(木) 14:10:59
>>167
そもそもなんで繋がってんのか分からんがクローラー作るならWWW Wanderer(Wandex),
Aliweb, WebCrawlerを調べてみな?

まあ、見つけられたらの話だが・・・国内鯖で見つからんなら

ttp://en.wikipedia.org/wiki/

で調べりゃあるから、ちゃんと探せば技術文書も論文も化石が埋まってるから。(但し殆どがwwwの歴史の論文だけど)

AliwebとWebCrawlerは存命の筈だけど

#あと鯖に迷惑だから素人にそんなもん作らせるなと糞講師に言っとけ!(-Α-")
174デフォルトの名無しさん:2007/03/08(木) 14:13:46
>>172
屑仕様な宿題は出しても不可能な仕様の宿題を出す訳ないでしょ?
宿題スレのテンプレ持ってお引っ越ししましょうね?
175デフォルトの名無しさん:2007/03/08(木) 14:14:21
>>172
split
176デフォルトの名無しさん:2007/03/08(木) 14:17:22
2chに宿題訊きにくるような奴と将来一緒に仕事したくないなあ
177デフォルトの名無しさん:2007/03/08(木) 15:09:13
>>168
そして再帰的にやって
相互リンクで永久ループにハマってあぼーん
178デフォルトの名無しさん:2007/03/08(木) 15:11:00
>>176
たんと礼儀とルールと一般常識をわきまえて聞くなら良いけど
質問に答えてくれないと逆ギレするようなやつとは一緒に仕事したくないよな〜
179デフォルトの名無しさん:2007/03/08(木) 17:30:50
>>177
基底条件ってもんくらい分かってるだろ?
でなきゃループ内で再帰やったとき止まらんw
180デフォルトの名無しさん:2007/03/08(木) 18:32:06
1つのjavaファイルに、複数の public class を記述すると、
コンパイルしたときに、$付きの class ファイルが生成されます。
こんな書き方ありなんでしょうか?
181デフォルトの名無しさん:2007/03/08(木) 18:47:22
>>180
JVMの身にもなってみろ
182デフォルトの名無しさん:2007/03/08(木) 19:16:30
>>180
あり。

> 1つのjavaファイルに、複数の public class を記述すると、
入れ子になったクラスなら $ とかがつくし、
トップレベルに public なクラスが複数あったら
コンパイルエラーにしないと言語仕様に反する。
183デフォルトの名無しさん:2007/03/08(木) 19:57:55
Javaのことはまったくわかりません。
場違いだったら構わず指摘してください。よろしくお願いします。

http://www.strangepuzzle.com/jnetcube.html

このサイトにあるルービックキューブ用のタイマーを
動かしたいのですが、ダウンロードしたあと
何をしたらいいのかまったくわからないんです。

どうすればタイマーを動かすことができるのでしょうか。
184デフォルトの名無しさん:2007/03/08(木) 21:09:20
>複数の public class
コンパイラ通るのか!?
185デフォルトの名無しさん:2007/03/08(木) 21:10:26
質問させてください。

例えば、DBの1レコードごとに一つのHTMLページのソースが入ってる状態があります。


1レコード目 1 トップページ
2レコード   2 サブページ1
3レコード   3 サブページ2

HTTPリクエストに応じたレコードをJSPで表示で表示しているとします。

通常ならリクエストの形は
http://hogehoge.jsp?id=2
とかだと思います。

これをクエリを使わないで/で区切ったリクエストに応じて表示する方法はないでしょうか?
例えば
http://hogehoge.jsp/2/

↑のリクエストの形で2レコード目の要求として扱う方法はないでしょうか?
2ちゃんねるみたいに
http://pc11.2ch.net/test/read.cgi/tech/1173026128/
というふうにクエリ使わないで/だけでやる方法をさがしています
186デフォルトの名無しさん:2007/03/08(木) 21:46:42
javax.servlet.http.HttpServletRequest#getPathInfo()
187デフォルトの名無しさん:2007/03/09(金) 00:14:40
javaで英単語教材を作ってます。
今は、ボタンを押すごとに

//空所補充問題文
The rocket launch had to be ( ) because of unexpected bad weather.

//空所に入る選択肢
・aborted
・allotted
・ascribed
・accumulated

といった感じで、50個ぐらいある問題文と選択肢のセットをテキストファイルから画面に
readLine()で表示させているのですが、今の方法だとテキストファイルに並んでいる
順番でしか表示されません。やりたいことは次のとおりです。

1.この問題文と選択肢のセットをランダムな順番で表示させたい。
2.選択肢も、常に同じ4つの単語ではなくランダムな組み合わせで表示させたい。

ちなみに今は問題文と選択肢のテキストを別々のファイルに保存しているのですが
これも問題ありでしょうか?よろしくお願いします。
188デフォルトの名無しさん:2007/03/09(金) 00:45:19
import java.io.*;
import java.util.*;
public class EnglishTest1 {
public static void main(String[] args) throws IOException {
String dataBody = "The rocket launch had to be ( ) because of unexpected bad weather.;aborted;allotted;ascribed;accumulated;other word1;other word2\n"
+ "The missile launch had to be ( ) because of unexpected bad weather.;aborted;allotted;ascribed;accumulated;other word1;other word2\n"
+ "The Vista launch had to be ( ) because of unexpected bad weather.;aborted;allotted;ascribed;accumulated;other word1;other word2\n";
ArrayList<Question> questions = new ArrayList<Question>();
BufferedReader r = new BufferedReader(new StringReader(dataBody));
try {
for (String line; (line = r.readLine()) != null;) {
ArrayList<String> data = new ArrayList<String>(Arrays.asList(line.split(";")));
Question q = new Question();
q.questionText = data.remove(0);
q.choices = data;
q.correctAnswerNumber = 0;
questions.add(q);
}
} finally {
r.close();
}
Random random = new Random();
while (questions.size() > 0) {
Question q = questions.remove(random.nextInt(questions.size()));
System.out.println(q.questionText);
}
}
}
class Question { String questionText; ArrayList<String> choices; int correctAnswerNumber; }
189デフォルトの名無しさん:2007/03/09(金) 00:46:11
あとは自分で。
190デフォルトの名無しさん:2007/03/09(金) 00:59:52
すまん Collections.shuffle(List) の方がいいな
import java.io.*;
import java.util.*;
public class EnglishTest2 {
public static void main(String[] args) throws IOException {
String dataBody = "The rocket launch had to be ( ) because of unexpected bad weather.;aborted;allotted;ascribed;accumulated;other word1;other word2\n"
+ "The missile launch had to be ( ) because of unexpected bad weather.;aborted;allotted;ascribed;accumulated;other word1;other word2\n"
+ "The Vista launch had to be ( ) because of unexpected bad weather.;aborted;allotted;ascribed;accumulated;other word1;other word2\n";
ArrayList<Question> questions = new ArrayList<Question>();
BufferedReader r = new BufferedReader(new StringReader(dataBody));
try {
for (String line; (line = r.readLine()) != null;) {
ArrayList<String> data = new ArrayList<String>(Arrays.asList(line.split(";")));
Question q = new Question(data.remove(0), data, 0);
questions.add(q);
}
} finally {
r.close();
}
Collections.shuffle(questions);
for (Question q : questions) {
System.out.println(q.questionText);
for (String choice : q.choices) System.out.println(" - " + choice);
}
}
}
class Question {
final String questionText; final List<String> choices; final int correctAnswerNumber;
public Question (String questionText, List<String> choices, int correctAnswerNumber) {
this.questionText = questionText; this.choices = Collections.unmodifiableList(choices); this.correctAnswerNumber = correctAnswerNumber;
}
}
191デフォルトの名無しさん:2007/03/09(金) 01:09:34
Generics関係でArrays.sortの質問です。
やじるしのところで警告が出てしまいます。
抑えるにはどうすればいいでしょうかよろしくお願いします。<(_ _)>

ArrayList<Sensyu> al = new ArrayList<Sensyu>();
al.add(new Sensyu("tako", 20 ));// ArrayListにデータを追加
al.add(new Sensyu("yuura", 30 ));
al.add(new Sensyu("ponko", 53 ));

Object[] oa = al.toArray();// 配列に変換

DataComparator dcom = new DataComparator();
Arrays.sort( oa, dcom); //←‥ここで警告:[unchecked] 無検査変換が出てしまいます。

---- ---- ---- -----
public Sensyu(String namaeMoji, int ten ){
namae = namaeMoji;
tokuten = ten ;
}
---- ---- ---- -----
public class DataComparator implements java.util.Comparator{
public int compare(Object o1, Object o2){
return ((Sensyu)o2).tokuten - ((Sensyu)o1).tokuten;
}
}
192デフォルトの名無しさん:2007/03/09(金) 01:31:39
>>191
public class DataComparator implements java.util.Comparator<Sensyu> {
193デフォルトの名無しさん:2007/03/09(金) 02:41:11
>>192さんありがとうございます。
でもまだうまくいきません‥
public class DataComparator implements java.util.Comparator<Sensyu> {
になおして中身を
public int compare(HairetuArraysTest.Sensyu o1, HairetuArraysTest.Sensyu o2) {
return o2.tokuten - o1.tokuten;
}
---- ---- ---- -----

Arrays.sort( oa, dcom);
の部分を ↓
Arrays.sort( (Sensyu[]) oa, dcom); //この行番号でエラーメッセージが出てしまう。
するとコンパイル時に何の警告も出ません。しかし、
実行すると

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [LHairetuArraysTest$Sensyu;
というメッセージが出てしまうのですが、どうしましょ?(o・・o)/~
194デフォルトの名無しさん:2007/03/09(金) 02:49:47
toArray で Object[] に変換してるから。
Sensy[] に変換するよう引数をとる toArray の方を使いましょう。
195193:2007/03/09(金) 03:05:33
>>194さんありがとう
toArray
public <T> T[] toArray(T[] a)
のことですね、

Sensyu[] oa = al.toArray( ここがわかりませんどうしましょドジですいません );
196デフォルトの名無しさん:2007/03/09(金) 04:09:57
>>195
new Sensyu[0]でも何でもいいからSensyu[]型を放り込んでおけば、
もしサイズが足りなければ新たに確保してくれる。
APIリファレンスのtoArrayの項目をきちんと読むんだ。
197193:2007/03/09(金) 04:29:14
>>196さんありがとうございます。
でっ、できました。ヽ(^o^)丿
難解だけどAPIリファレンス出来るだけ読むようにします。
つきあってくれてありがとう‥
198デフォルトの名無しさん:2007/03/09(金) 04:48:13
音声の再生についての質問です。
好きなタイミングで音声を鳴らしたり消したりしたいのですが、
スレッド処理を用いている場合はどう書いたらいいのでしょうか?
startメソッドにac.loop;と書くと延々鳴ってしまいますし、
runメソッド内に書くとやはり音声の冒頭部分だけが繰り返し再生されてしまいます。

ソース
http://sourcepost.sytes.net/sourceview.aspx?source_id=29248

startメソッドに再生部分を記述
http://www.za.ztv.ne.jp/yosi-h/Java_Ski.html
199デフォルトの名無しさん:2007/03/09(金) 10:26:18
どなたかご存知でしたら教えてください。
JavaでPDFを作成するiTEXTにて
テーブルを作成するときに途中でページからはみ出そうなときは
次ページに改ページしてくれる方法ってないでしょうか?
よろしくおねがいします。
200デフォルトの名無しさん:2007/03/09(金) 11:21:38
>>198
アプレットは単音鳴らすか鳴らせ続けるかだからループさせつつ任意のタイミング止めて再開とかしたいなら適当なサウンドエンジン使った方が良いよ。

>>199
どっかで制御方法見た気がするが・・・javadocくらい叩き込んだ?
201デフォルトの名無しさん:2007/03/09(金) 11:30:17
>200
javadocはよくわかりませんが
こちらのサイトでiTEXTのコマンドについては大体わかったのですが
ttp://itextdocs.lowagie.com/tutorial/
質問した内容のサンプルコードが無かったので悩んでます。
202デフォルトの名無しさん:2007/03/09(金) 11:36:18
>200
ありがとうございます。
iTEXTのJAVAdoc見つかりました。
理解できるか分かりませんがちょっと読んでみようと思います。
203デフォルトの名無しさん:2007/03/09(金) 11:39:01
table.tableFitsPage
きっとコレジャン!
200サンクス!
204デフォルトの名無しさん:2007/03/09(金) 13:53:33
>>191
いろいろ解決方法はあるみたいだが、

al = Collections.checkedList(al, Sensyu.class);

を使いたくなってくるなあ。これならObjectなど他の型に渡しても
警告が出なくなる。

@SupressWarning("unchecked")でもいいけどさ
205デフォルトの名無しさん:2007/03/09(金) 14:54:12
https://sdlc6e.sun.com/ECom/EComActionServlet/DownloadPage:~:com.sun.sunit.sdlc.content.DownloadPageInfo;jsessionid=A232C894EA5C4D2F03723CB5357D7872;jsessionid=A232C894EA5C4D2F03723CB5357D7872
まとめ見てここからダウンロードしようとしてるんですけどこの後どうすればいいんですか?
206デフォルトの名無しさん:2007/03/09(金) 16:47:43
>>205
Accept License Agreement してから
Java(TM) SE Development Kit Documentation 6, Japanese 選べば?
英語版欲しいなら、English の方選んで。
207デフォルトの名無しさん:2007/03/09(金) 16:50:25
>>206
サンクス
208デフォルトの名無しさん:2007/03/09(金) 19:47:33
英語読めない奴が英語版欲しいと思えんが、jdk6のl10n終わって良かったな。
相変わらず変な訳だが
209デフォルトの名無しさん:2007/03/09(金) 20:04:01
そういやなんでJavaって日本語版あるんだろ?
210デフォルトの名無しさん:2007/03/09(金) 20:18:14
むしろ英語マニュアルのが読みやすい俺ガイル
211デフォルトの名無しさん:2007/03/09(金) 21:09:04
>>208
i10n って、日本語訳終わっただけで中国語訳とかまだじゃない?
212デフォルトの名無しさん:2007/03/09(金) 21:37:28
>>209

1. 市場が大きい。
2. 訳の需要が大きい。

日本語は造語力が大きいので高等教育で用いられる用語も訳すことが出来、
結果として日本語しかできなくても高等教育が受けられる。
アジアの準先進国の言語などでそれほど造語力が高くない場合、そこまで
できないので、英語で高等教育を行わざるを得なくなり、結果として高等
教育を受けた人はみな英語が出来るので、英語で困らなくなってしまう。

という意見を聞いたことがある。
213デフォルトの名無しさん:2007/03/09(金) 21:43:59
日本だろうと曲がりなりにも高等教育を受けたら普通英語ぐらいできると思うのだが

もし高等教育の意味が文字通り高卒の事だったのなら謝る
214デフォルトの名無しさん:2007/03/09(金) 21:49:04
>>213
学校教育英語に幻想持ってないか?
215デフォルトの名無しさん:2007/03/09(金) 21:52:08
ただ単にi18nの一環でかつ日本人は母国語版を欲しがる人種ってだけじゃね?

技術文書の翻訳版を欲しがるのは日本人くらいだし
216125:2007/03/09(金) 22:32:27
Rubyでは簡単に実現できたので、再びJavaに戻ってきて作成しています。

ファイルのコピー、移動はFileクラスとFileInputStream,FileOutputStreamあたりを使うことで、簡単に実現できました。

ところでお聞きしたいのですが、InputStreamのread( byte[] buffer )、OutputStreamのwrite( byte[] buffer )で使用する
配列サイズというのは、どれくらいが適しているのでしょうか?
バッファーが大きければ処理が早く済むがメモリの消費量が大きくなる、ということはなんとなくわかるのですが、
適量のバッファーサイズの見当がつきません。

現在主流となっているマシンスペックだと、適量のバッファーサイズとはどれくらいなのでしょうか?
217187:2007/03/09(金) 22:37:51
>>190
返事が遅くなってしまってすみません。
提示していただいたコードを参考にやってみます。
ありがとうございました。
218デフォルトの名無しさん:2007/03/09(金) 22:40:22
>>213
英語で小説読もうとして三日であきらめたことを思い出した
資料としてなら読み進めるのは大して苦じゃないが大量になるとかなりウザい
メインで英語使うなんて信じられん
219デフォルトの名無しさん:2007/03/09(金) 22:54:05
>>216
セオリーは無いと思う。
俺はなんとなく 4kB 〜 16kB あたり取ってるが。
220デフォルトの名無しさん:2007/03/09(金) 23:01:30
>>218
小説と技術文書は全然違うでしょ。
語彙空間がまるで違うよ。
俺自分の専攻の論文ならすらすら読めるけど、
一般向けの小説(ハリウッド映画の原作)は
3ページで挫折しかけてるw
221デフォルトの名無しさん:2007/03/10(土) 00:26:59
jarファイルをダブルクリックしても反応してくれません。
(Test.classファイル)
class Test{
    public static void main(String[] args){
        System.out.println("aaa");
    }
}
これを
 jar cf Test.jar Test.class でjarファイル生成
 jar xf Test.jar でjarを解凍
 マニフェストファイルにMain-Class: Testを追加して保存
 jar cfm Test.jar META-INF\MANIFEST.MF Test.class で再びjarに圧縮
こいつをダブルクリックしてもコマンドプロンプトが出てきてくれないです。
エラーメッセージも出ず無反応です。
ただし、コマンドプロンプトから
 java -jar Test.jar と打ち込むと
aaa と表示されます。
どなたかお助けください。
222デフォルトの名無しさん:2007/03/10(土) 00:47:21
関連付けの問題か、あるいはコマンドプロンプトが一瞬出ているのに気付かないかのどっちか
223デフォルトの名無しさん:2007/03/10(土) 01:00:44
3つの整数をキーボード入力させてそこから計算させるプログラムを作っているのですが、
入力させた文字列の中に英字または小数がある場合、「○個目には整数を入力してください」という
メッセージを表示させたいのですが、Integer.parseIntでの例外をNumberFormatException
で拾うという手段を取ってみたのですが、この場合何個目の入力が整数でないのかを個別に
表示することが出来ません。どの入力が間違っていても同一のメッセージ表示しか出来ません。

この方法以外に入力された文字列の中で整数以外の入力を判別して、どの入力がエラーなのかを知らせる方法はありますか?
224デフォルトの名無しさん:2007/03/10(土) 01:02:50
ちとその部分のコード書いてみ?
225デフォルトの名無しさん:2007/03/10(土) 01:10:12
>>221
Windowsだとjavaじゃなくjavawに関連づけられてるかもしれない。
226デフォルトの名無しさん:2007/03/10(土) 01:31:23
>>222
>>225
ありがとうございます。今見てみましたが、javawなってました。
javaにかえて再びwクリックしてみると一瞬だけコマンドプロンプトが表示されましたが、すぐに消えてしまいました。
これはこういうものなのでしょうか?コマンドプロンプトの画面をずっと表示させておくことは出来ますか?



227デフォルトの名無しさん:2007/03/10(土) 01:45:48
BufferReaderか何か使ってキーボード入力待ちにするのが一番お手軽w
228デフォルトの名無しさん:2007/03/10(土) 01:50:28
今ならjava.util.Scannerを薦めたい。
ttp://www.javadrive.jp/start/scanner/index1.html
229デフォルトの名無しさん:2007/03/10(土) 02:04:30
なるほど。勉強になりました。ありがとうございました。
230デフォルトの名無しさん:2007/03/10(土) 03:57:05
空の文字列 "" と、null の違いがよくわからない。。。
231デフォルトの名無しさん:2007/03/10(土) 04:16:57
>>230
空の文字列は、長さは0だけど文字列。つまり、Stringのオブジェクトが存在する。
nullは、何もないということ、オブジェクトがないという状態を表す。
232デフォルトの名無しさん:2007/03/10(土) 04:20:30
>>221
パッケージ作っといて修飾名でクラス指定してないって訳じゃなさそうだね。

winの関連づけはjavawだからそれはいじらないでコマンドプロンプトから打て。

CUIプログラムをクリックしても動きません!って発想が既におかしい。プロンプト立ち上げてからならjavaが終了してもプロンプトが残ってて消えないはず。

OSのしくみとかそこら辺を分かってないだけだからまずそこら辺を勉強した方が良い。
てか独学?専門生?

>>230
MS VMだと同義w
nullはObject派生型なんだけど値は何にも関連付けられてない。

空文字列は"\u000000"になるんだっけ?
他言語やってて言語によって定義が違うから掴めないの?
ただ単にjavaのnullが分かってない?
後者ならjavaの本見ればいい。
233デフォルトの名無しさん:2007/03/10(土) 04:39:01
>>232
> MS VMだと同義w
そんな話は聞いた事がない。

> nullはObject派生型なんだけど値は何にも関連付けられてない。
Java では null は null型だよ。空型とか訳される事もあるけど。
Object からは派生してない特別な型。

> 空文字列は"\u000000"になるんだっけ?
は?

薀蓄語りたいなら、ちゃんと言語仕様ぐらい見てからやれ。
234デフォルトの名無しさん:2007/03/10(土) 04:39:56
>>232
>nullはObject派生型なんだけど値は何にも関連付けられてない。

null は null 型のただ一つの値。
Object 派生型でもないし値が関連付けられていないわけでもない。
235デフォルトの名無しさん:2007/03/10(土) 05:39:34
>>232
何か自分の知識を語りたいのは分かるんだが
その表現をする言語力が伴っていないようで少し哀れ
相手の理解力を超えた表現しか出来てないよ・・・・
236223:2007/03/10(土) 06:45:41
>>224
遅いレスで申し訳ありません。

try{
timeAtBat = Integer.parseInt(str1);
sacrifice = Integer.parseInt(str2);
hit = Integer.parseInt(str3);


average = (double)hit / (timeAtBat - sacrifice);

NumberFormat formatter = NumberFormat.getNumberInstance();
formatter.setMaximumFractionDigits(3);

System.out.println("打率は" + formatter.format(average) + "です。");
}
catch (NumberFormatException e) {
System.out.println("数は0〜1000の整数で入力ください");
}

str1,2,3はBufferedReaderを使って読み込んでいます。
System.out.println("数は0〜1000の整数で入力ください");の部分を
打席数、安打数、犠打数のどの入力が整数でないのかを"〜数は0〜1000の整数で入力ください"
でそれぞれメッセージを表示させたいのです。

助言をいただけたら幸いです。
237デフォルトの名無しさん:2007/03/10(土) 09:01:07
>>236
parseInt を3つまとめてtry-catchするんじゃなくて、
ひとつづつtry-catchすればわかるじゃん。
あとはカウンタ変数でも作って、今何番目のparseIntやってるかわかるようにするとか。
238223:2007/03/10(土) 09:06:27
>>237
ひとつずつキャッチする手はもうやってみたのですが、やっぱりそれが一番早いですかね?
カウンタ変数のほうをチャレンジしてみたいと思います。
ありがとうございました!
239223:2007/03/10(土) 09:17:34
>>237
忘れてました。ひとつずつtryのすぐあとでcatchしていくと例外は拾えるんですけど、
処理をそこで終われないですよね?その後にある計算式は例外でも実行されてしまって
エラーになってしまいました。
もし、ひとつずつtry-catchしていくのであれば、どこに計算式などを入れるべきですか?
240デフォルトの名無しさん:2007/03/10(土) 09:41:12
>>236
入力ください
で吹いたw
241デフォルトの名無しさん:2007/03/10(土) 09:42:37
>処理をそこで終われないですよね?
return;
242デフォルトの名無しさん:2007/03/10(土) 10:39:34
>>239
try-catchだと記述が長ったらしくなるから、parseをラップするメソッドを作る手もある。
引数は文字列、戻り値はInteger但しparse失敗時はnull。
そのメソッドの中でtry-catchを使う。
.NETにあるTryPaseの亜流みたいなもん。
243デフォルトの名無しさん:2007/03/10(土) 10:55:31
HashMapを使って文字列と数字を扱いたいのですが
HashMap<String, int>はintがObjectじゃないからできないんでしょうか?
この場合HashMap<String, Integer>とするべきですか?
244221:2007/03/10(土) 10:59:49
>>232
スクールに通ってましたが素人同然です('A`)
関連付けはjavawを変更できないとすると、
結局>>221のプログラムはwクリックでは実行出来ないということでしょうか?
誰かにこのプログラムを使ってもらう時に
「コマンドプロンプトからjava -jar Test.jarって入力してね」
と言うのはちと苦しいです。
245デフォルトの名無しさん:2007/03/10(土) 11:03:57
>>243
プリミティブ型は入れられないのでそうする必要がある。
使うときはautoboxing/unboxingが効くので直接プリミティブを使う
コードを書いてもOK。コンパイラがこっそりIntegerに入れたり出したり
してくれる。

246デフォルトの名無しさん:2007/03/10(土) 11:05:08
@echo OFF
java -jar Test.jar

なバッチを一緒に置いておいてもダメだっけか?

最近WindowsでJava使ってないから忘れたわ。
247デフォルトの名無しさん:2007/03/10(土) 11:15:38
>>245
ありがとうございます
色々調べたり実験したりでちょっと遅れてしましました

宣言だけIntegerにすれば、他ではintとして扱っても問題ないんですね
248デフォルトの名無しさん:2007/03/10(土) 11:52:50
>>244
ダブルクリックみたいなGUIど真ん中なことやりたかったら、普通はswingとか使う。
コマンドプロンプトがどうしても必要な場合は>>246の言うとおりバッチでラップすればおk。
249デフォルトの名無しさん:2007/03/10(土) 14:31:28
>>219
ありがとうございます。
調べてみたら、Javaの上位IOクラスは内部バッファとして8192byteつかっていることがわかりました。
その値に統一して使いたいと思います。
250デフォルトの名無しさん:2007/03/10(土) 14:34:43
バッチファイル使うんなら、pause で入力待ちすればOKか。
251221:2007/03/10(土) 15:47:13
バッチファイルというのは初耳でした。
>>246をTest.jarのあるフォルダにa.batとして保存してこれをwクリックで無事実行できました!
皆さんに感謝します。
252230:2007/03/10(土) 17:44:56
なるほど、ヌル文字列とヌルポインタの関係みたいなもんですね(`・ω・´)
遅レスですが、ありがとうございました。
253デフォルトの名無しさん:2007/03/10(土) 17:55:32
Cのようなポインタを使用するプログラムだと常識として覚えてるものだが、
JAVAのようなオブジェクト指向だとポインタ意識しなくていいから知らない人が増えてきたな。
便利になると共に起こる、知識不足の弊害だな。
254デフォルトの名無しさん:2007/03/10(土) 18:10:00
>>253
>JAVAのようなオブジェクト指向だとポインタ意識しなくていいから
んなアホな
255デフォルトの名無しさん:2007/03/10(土) 18:13:10
>>254
ポインタ操作って普通に使わないでしょう。
256デフォルトの名無しさん:2007/03/10(土) 19:23:16
ポインタ演算とか冗長な書き方を許容してないだけでポインタを使ってることを意識しないわけじゃないだろ
257デフォルトの名無しさん:2007/03/10(土) 19:27:04
意識しなくていいというと語弊があるが、
実際に意識していない初心者が増えてきたってことだと思う。
258デフォルトの名無しさん:2007/03/10(土) 21:02:20
private int id;
public int getId(){return id;}
public void showId(){
  System.out.println("idは" + ● + "です。");
}
この場合、●に入れるのはidかgetId()のどっちがいいんかな。
好みの問題でおk?
259デフォルトの名無しさん:2007/03/10(土) 21:03:49
>>216
つうか、他のIOクラスでデコレートすれば
サイズなんて気にしなくても良いはずだが。
260デフォルトの名無しさん:2007/03/10(土) 21:06:24
>>246
つうか、マニフェストとJava Web Start使えよ
261デフォルトの名無しさん:2007/03/10(土) 21:22:11
>>258
getId() がいいと思う。
262デフォルトの名無しさん:2007/03/10(土) 21:27:19
>>261
thx
263デフォルトの名無しさん:2007/03/10(土) 21:39:39
>>261
おなじ暮らすないならidでもいいとは思うけど。
264デフォルトの名無しさん:2007/03/10(土) 23:06:13
>>261
うーん、悩ましい問題だなぁ…好みというか、目的による?
けど、まぁ、getId()のほうが良いと思う。

例えばそのクラスのサブクラスでgetId()をオーバーライドして
getId() { return "00" + id; }
とかしたときに・・・
265デフォルトの名無しさん:2007/03/10(土) 23:11:29
>>264を風呂入る前に訂正

まず、アンカーは>>258に。

あと、
×getId() { return "00" + id; } 
○getId() { return "00" + super.getId(); }
266デフォルトの名無しさん:2007/03/10(土) 23:13:02
>>265
…駄目だ俺(笑

getId()は int なのな。
まぁ意図は汲み取ってください(汗
267デフォルトの名無しさん:2007/03/11(日) 01:21:31
抽象化はその部分における汎用性・再利用性を増すが
同時に複雑さが増し、保守が難しくなる。

また、よく考えられていない抽象化は、
結局それを使う場合に1から考え直す必要があり、
無駄な労力になる。むしろ、誤解を生む弊害すらある。

そして、「よく考える」とは言っても難しく、的外れになることが多く、
無駄な抽象化がプログラム中に散乱することになりやすい。

そこで、アジャイル的には、まず単純に作って、
例えば顧客に叩いてもらって、抽象化が必要なところを早期に発見する。
(テスト駆動なら、まずテストに叩かれるだろう)

その観点から見ると、
必要と分かるときが来るまで getId() よりも id を使うのがいい。
268デフォルトの名無しさん:2007/03/11(日) 03:00:38
外から見ることを基準に考えちゃ駄目なのかな。
getId で取得した値と showId で表示した値は、大抵の場合で一致しなければおかしいから、
直感的に考えた場合は id より getId のほうが適切だろうと思う。たとえ getId が final だったとしてもね。
269デフォルトの名無しさん:2007/03/11(日) 03:05:07
追記:「外から見る」ってのは、id が private であって外から見れないことも含めてる。
外から見た場合、id を使うと 『何かよく分からないけど ID の内部表現を showId が表示している』 ってなって分かり難いんじゃないかと。
270デフォルトの名無しさん:2007/03/11(日) 08:53:30
>>268-269
同意

使う側の視点で考えるのがいいと思う
idという情報をを操作したい人のためのものなのだからその人のことを
考えなければ、悪く言えば独りよがりな実装になってしまうと思う
271デフォルトの名無しさん:2007/03/11(日) 09:06:40
俺の経験から言うと、極力生のフィールドは使うべきではない。
ボトルネックになる可能性、どうしても生フィールドでなければできない処理などは
例外的に使用を許可する、くらいの縛りを加えるようにする方が良い。
トラブル対応、仕様変更対応には絶対にこの方針が必要。無いと死ぬ。大規模だとね。
272デフォルトの名無しさん:2007/03/11(日) 09:19:12
使う場所によってフィールドを直接参照したりgetter経由だったり
まちまちなのは良くない。
273デフォルトの名無しさん:2007/03/11(日) 11:09:41
モジュール結合度の観点から考える結合度は低い方が独立性が高いため、
データ結合で単一のデータを引数として渡すべき。
274デフォルトの名無しさん:2007/03/11(日) 11:29:20
iを打てば補完できるのでid。
getterはgetIまで打たないと補完が面倒。
275デフォルトの名無しさん:2007/03/11(日) 12:02:11
>>271
同意!

>>274
開発時に面倒臭がって楽しようとすると後々痛い目にあったりする予感
276デフォルトの名無しさん:2007/03/11(日) 12:32:01
30個近くのclassファイルをjarにコンパイルするにはどうすればいいんですか?
277デフォルトの名無しさん:2007/03/11(日) 12:49:20
>>276
jar cf foo.jar *.class
詳しくはここを読め。
ttp://java.sun.com/j2se/1.5.0/ja/docs/ja/tooldocs/windows/jar.html
「jarにコンパイル」と言われると違和感を覚えるな。
278デフォルトの名無しさん:2007/03/11(日) 13:17:31
>>274
getまで打てば、そのクラスのアクセッサが一覧出来るのでむしろ便利。
フィールド名だとごちゃごちゃしてる。
>>271
んだんだ。
それに、遅延初期化の為にも入れているかな。
private Hogehoge hogehoge;
public Hogehoge getHogehoge(){
if( hogehoge==null ){
hogehoge = new Hogehoge();
}
return hogehoge;
}

(synchronized はどうしたとかややこしい話は取りあえず抜きな、初心者スレだと荒れそうだから)
279デフォルトの名無しさん:2007/03/11(日) 13:25:43
>>278
フィールドが20個あればgetまで打っても20個出てきてそこから選ばないといけない。
変数名なら頭文字打つだけで絞り込める。
まあ俺はthis.をつけるのでそこまで打つだけでOKのときもあるが。
280デフォルトの名無しさん:2007/03/11(日) 13:26:13
>>277
j2re1.4.2_13 をDL、インストールしてみたのですがこの後がわかりません
コマンドプロンプトに打ち込んでも

'jar' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

とでてきてしまいます;;
281デフォルトの名無しさん:2007/03/11(日) 13:59:17
パスが通ってない
>>1を読め
282デフォルトの名無しさん:2007/03/11(日) 14:06:44
>>280
j2re だと jar 入ってないような。 j2dk か jdk 使え。
283デフォルトの名無しさん:2007/03/11(日) 14:07:40
>>280
コマンドプロンプトに
java -version
って打ってみ?
284デフォルトの名無しさん:2007/03/11(日) 14:45:08
フィールドが20個あったらthis打っても20個候補が出るだろうによw
285デフォルトの名無しさん:2007/03/11(日) 14:48:50
JAVAでもプロパティ導入すればいいのに・・・
わざわざ毎回アクセッサメソッドつくるとフィールド参照からメソッド記述にするのめんどくさい。
286デフォルトの名無しさん:2007/03/11(日) 14:49:35
>>284
getと3文字打つのが怠いんだろうね。
って、どんだけwwww

まぁ、publicアクセス不要なフィールドにはgetter付けないから
20個フィールドがあってもホントはもっと絞れるんだけどね。
287デフォルトの名無しさん:2007/03/11(日) 14:55:29
>>285
リファクタリング機能がある開発環境使えば良いじゃん。
288デフォルトの名無しさん:2007/03/11(日) 14:56:56
>>285
jdk7の議論でプロパティは話題に上っている。

[mustang/Java SE 6] 次世代Javaの動向 4 [dolphin]
ttp://pc11.2ch.net/test/read.cgi/tech/1163986696/
の中に、情報へのポインタがあるよ。

まだ本決まりじゃなくて構文は揺れてるだろうけど、
クロージャよりは揉めずに入りそうな気がしてる。
289デフォルトの名無しさん:2007/03/11(日) 15:19:31
>>258
つ もしかして "自己カプセル化"
290デフォルトの名無しさん:2007/03/11(日) 15:38:54
>>265
同じクラスないであればthis.idで良いジャマイカ

スーパーなときだけgetId()
291デフォルトの名無しさん:2007/03/11(日) 15:40:32
>>278
Factory MethodパターンやFlyweightパターンで
改造したくなってくるなあ。
292デフォルトの名無しさん:2007/03/11(日) 15:41:42
>>284
どういうクラスなんだか。委譲も集約を
ちゃんと使っていれば極力減らすこともできよう
293デフォルトの名無しさん:2007/03/11(日) 15:42:06
>>285
IDEで自動生成しろよ
294デフォルトの名無しさん:2007/03/11(日) 16:42:11
>>292
たとえば携帯電話のスペックをオブジェクトで表現しようとしたら
20なんて軽く超えると思うけど。どうやって削るの?

高さ

厚さ
質量
連続待受時間静止時
連続待受時間移動時
連続通話時間音声通話時
連続通話時間テレビ電話時
液晶サイズメインディスプレイ
液晶サイズサブディスプレイ
液晶最大同時発色数メインディスプレイ
液晶最大同時発色数サブディスプレイ
液晶解像度(ドット数)メインディスプレイ
液晶解像度(ドット数)サブディスプレイ
名前最大登録件数
電話番号最大登録件数
メールアドレス最大登録件数
メール保存容量送信メール
メール保存容量受信メール
iアプリ保存件数
ミュージックプレーヤー
バックグラウンド再生
連続再生
iメロディ・着信メロディ
バーコードリーダー
赤外線通信対応
Bluetooth通信
FOMAプラスエリア対応
295デフォルトの名無しさん:2007/03/11(日) 16:49:44
携帯電話という込み入ったものをひとつのクラスで完結させようとするという発想が恐ろしい気がする
液晶が別のメーカーのだったら一気に変えないといけないんだよな、そのクラス……
296デフォルトの名無しさん:2007/03/11(日) 16:54:28
>>294
なんで無理して一つのクラスでやるんだよw
297デフォルトの名無しさん:2007/03/11(日) 16:54:52
いやいや、例ですよ。車でも住宅でもなんでもいいけど変数が20なんて珍しくない。
298デフォルトの名無しさん:2007/03/11(日) 17:00:53
>>295の言葉を借りるが、
車でも住宅でもなんでもいいけど込み入ったものをひとつのクラスで完結させようとするという発想が恐ろしい気がする
299デフォルトの名無しさん:2007/03/11(日) 17:02:24
オブジェクト指向なんだから、きちんと設計してから作らないとね。
まず、デザインパターンを覚えるといいかな。
300デフォルトの名無しさん:2007/03/11(日) 17:08:54
だー、論点そこじゃねえええ。
1つのクラスですべてを完結させるなんて一度も書いてねえ。
親クラス、子クラスのように抽象化していったって
20以上の変数を持つクラスはありえるってことです。
301デフォルトの名無しさん:2007/03/11(日) 17:15:42
あったらあったで仕方ないだろ。
おれならまず分けることを考えるが。
302デフォルトの名無しさん:2007/03/11(日) 17:18:16
そりゃjava.awt.Componentとか持ち出してきたら50個くらい持ってるようなのもあるわ
しかし普通はそんなのはないぞ
303デフォルトの名無しさん:2007/03/11(日) 17:22:12
よくこんなどーでもいい話題にがんがんレスが付けられるな
304デフォルトの名無しさん:2007/03/11(日) 17:33:27
あったら、あきらめる。

以上。
305デフォルトの名無しさん:2007/03/11(日) 18:08:06
どっちみち「エディタで候補を絞るのがメンドイから」なんて理由でクラス設計したらあかん罠w
306デフォルトの名無しさん:2007/03/11(日) 18:18:15
private int hogehoge;

って書いたら、内部で使うために

private int getHogehoge() {
 return hogehoge;
}

て書かなきゃいけないん?
307デフォルトの名無しさん:2007/03/11(日) 18:29:53
内部なら直にアクセスしろよ
308デフォルトの名無しさん:2007/03/11(日) 18:30:40
自己カプセルフィールドって考えもある
309デフォルトの名無しさん:2007/03/11(日) 18:44:40
さすがにそういうあたりは必要なときにリファクタリングすればいいようにおもうなあ
310デフォルトの名無しさん:2007/03/11(日) 18:54:48
privateなら変更することになっても影響範囲は閉じてるし、
必要になってからメソッドにするでいいよ。
311デフォルトの名無しさん:2007/03/11(日) 19:31:02
あるURL
[1] http://www.hogehoge.ho.ge/aaa/bbb/index.html
からのHTMLの(?)相対アドレス
[2] "bbb.html" に対応するURLは
[3] http://www.hogehoge.ho.ge/aaa/bbb/bbb.html
だと思うのですが、

[1]と[2]から[3]を得る機能はJavaSE6にはありますか?
312デフォルトの名無しさん:2007/03/11(日) 20:23:39
>>311
java.net.URI uri = java.net.URI.create("http://www.hogehoge.ho.ge/aaa/bbb/index.html").resolve("bbb.html"); とか。
313デフォルトの名無しさん:2007/03/11(日) 20:56:28
>>294
配列

or


ハイスペック携帯電話のみサポートに切り替えて解決
314デフォルトの名無しさん:2007/03/11(日) 21:00:53
>>300
『分割し、統治せよ』

『アジャイルソフトウェア開発奥義』にはそう乗っている。


だが、
どうしてもクラスを分割できなければ、
やれることはまだまだある。
ディスプレイのサイズなんぞstaticでやれ。
そんなに苦しいなら配列でやれ。
315デフォルトの名無しさん:2007/03/11(日) 21:02:53
>>311
そういう機能


とはいわん気がするが。


そういうAPIはありますか、だろ。

機能というとまるで言語仕様のことみたいだ。

その手のAPIは言語仕様とは別だしな
316デフォルトの名無しさん:2007/03/11(日) 21:28:56
クラスの設計についての本読み始めたところだから結構興味がある。
VCのMFCなんか数十個の関数や変数を含んでいるクラスが普通だから
そこまで分割する必要があるのかどうか、
分割するといいことがあるのか知りたいところ。
317デフォルトの名無しさん:2007/03/11(日) 21:37:17
ソースファイルの数が増えてリッチな気分が味わえます。
318デフォルトの名無しさん:2007/03/11(日) 21:39:55
保守性に強くなるとかそんなんだろ
コピペが減るとか
319デフォルトの名無しさん:2007/03/11(日) 21:51:43
>>314
すまんが、何ページ?
320デフォルトの名無しさん:2007/03/11(日) 22:07:18
MFCはDocumentViewアーテクチャだからあまり参考にするべきでないけど。
変数や関数の数自体は気にするべきではない。
気にするべきはモジュール結合度と強度、クラス設計で委譲・継承などのデザインパターンといったところを気にするべき。
321デフォルトの名無しさん:2007/03/11(日) 22:19:18
質問よろしくです。
tiffファイルを操作する簡易エディタを作りたいと思っています。
やりたいこと
・複数のtiffファイルを結合して保存する。
・複数頁のtiffファイルを1ページ毎に分けて保存する。
・画像の上にテキストを挿入する
Java Advanced Imaging(JAI)を使えば簡単に作れますか?
他に便利なAPIがあれば教えてください?
322デフォルトの名無しさん:2007/03/11(日) 23:36:16
質問です。
Javaのメソッドで、C++でいうところのconstなクラス関数を作りたいのですが、可能なのでしょうか?
つまり、そのメソッドはメンバー変数の書き換えを行なわないということを保証させたいのです。

色々調べてみたところ、Javaにconstはないとのこと。
似たような機能か?と思ってfinalについても調べてみましたが、期待した内容ではありませんでした。
323デフォルトの名無しさん:2007/03/11(日) 23:37:58
>>322
>finalについても調べてみましたが、期待した内容ではありませんでした。

kwsk
324デフォルトの名無しさん:2007/03/11(日) 23:43:08
>>323
・finalとついたメソッドは、オーバーライドされなくなる
・finalとついた変数は、書き換えられることがなくなる(配列の中身などは書き換えられるので注意)
・finalとついたクラスは、継承されなくなる
といった効果のようでした。
325デフォルトの名無しさん:2007/03/11(日) 23:53:29
>>322
static
326デフォルトの名無しさん:2007/03/11(日) 23:56:46
>>322
enumじゃダメなん?
327デフォルトの名無しさん:2007/03/11(日) 23:58:04
322の内容が理解できない人が多くてワロタw
328デフォルトの名無しさん:2007/03/11(日) 23:59:59
>>325
ああ、なるほど。確かに。
でも、ちょっと別の制限が強くなりすぎますね。

やりたいことは

abstract class IScene
{
abstract void Task();
abstract void Draw();
}
として、これをオーバーライドさせてゲームのシーンを作らせたいのです。
その際、Drawではメンバー変数の書き換えを禁止させたいのです。
329デフォルトの名無しさん:2007/03/12(月) 00:07:51
staticだと、インスタンス内の変数書き換えは不可能になるが、読み込みも不可能になっちまうか・・・
330デフォルトの名無しさん:2007/03/12(月) 00:14:34
メンバー変数を、参照は出来るが変更は不可にしたいということなら、
変数はprivateで宣言しておいて、publicもしくはprotectedなアクセサメソッドを
公開しておけばいいんじゃない?
331デフォルトの名無しさん:2007/03/12(月) 00:18:13
>>330
それ全然『メンバー変数の書き換えが行なわれないこと』が保証できてねーじゃん
継承する側がいくらでも間違いを犯せる
C++でもconst_castしちまえばメンバー変数いじれるけどなw
332デフォルトの名無しさん:2007/03/12(月) 00:19:41
public interface Const{
  public static final 〜
}

じゃダメなの?
333デフォルトの名無しさん:2007/03/12(月) 00:24:07
>>322
基本的に無理。
標準APIのメソッド呼び出した時に、そのメソッドがインスタンスの状態を変更しない事まで考えるなら。
JSR-308 のサンプルにある @ReadOnly が それっぽいけど、早くてもJDK7にならないと入らない。

自分のクラスのメンバ変数の書き換え禁止だけなら、@Const みたいなアノテーション自作して、
@Const処理するようなAPTまで自作すれば出来なくはないけど……
334デフォルトの名無しさん:2007/03/12(月) 00:24:44
>>331
なんで?

abstract class IScene
{
private var1;


abstract void Task();
abstract void Draw();

public getVAr1(){
return var1;
}
}

ということだけど。
「Drawではメンバー変数の書き換えを禁止させたいのです」
という要求には答えてると思うけど。
もっとも、Task()メソッドからも書き換えは出来ないけど。
335デフォルトの名無しさん:2007/03/12(月) 00:24:53
>>332
すいません、>>328がinterfaceで書くべきものだということは分かるのですが、
それでメンバー変数が書き換えされないことが保証される理由がわかりません。
>>332のfinalは何に対してついているものなのでしょうか?(変数?メソッド?)
336デフォルトの名無しさん:2007/03/12(月) 00:27:05
>>334
質問者じゃねーけど、やりたいことくらいは推測できる。お前も少しは推測して書いてやれよw
継承元の変数をいじらせたくないって要望じゃねーだろ。
継承先の変数であってもいじらせたくねーんだろ。
337332:2007/03/12(月) 00:33:37
>>335
constというか不変変数って意味で回答したんだけど
どっからでもアクセスできるしあなたが求めてるものとは違うと思う。
俺には難しくてついていけてないw
一応意図したものは↓みたいなもの。

public interface Const{
  /** 1ページの表示件数 */
  public static final int COUNT_PER_PAGE = 10
  /** 全ページに共通のタイトルプレフィックス */
  public static final String TITLE_PREFIX = "[HOGEHOGESERVICE]";
}
338デフォルトの名無しさん:2007/03/12(月) 00:33:54
>>336
そういう意味か?
自分で定義した変数を読み取り専用にするなんて、
C++でもできないだろ。

スーパークラスで管理する状態などを、サブクラスで勝手に
書き換えられるのが嫌なんじゃないのかな。

だから>>334でいいかと思うのだが。
339デフォルトの名無しさん:2007/03/12(月) 00:38:14
えっとすいません。情報が交錯しているようなので再度説明します。

public interface IScene
{
void Task();
void Draw();
};

ゲームにおいて、全てのシーンは上を継承することを複数人プロジェクトにおいて義務づけます。
そして、このシーンを適切に毎フレーム呼び出す機構は私が作ります。

TaskとDrawは基本的に交互に呼ばれるのですが、フレームスキップが発生した時Drawの呼び出しが飛ばされる可能性もあるのです。
その際、Drawの中でメンバー変数の書き換えをするようなプログラムをされると、わかりにくいバグに繋がります。

C++の時は
class IScene
{
void Task() = 0;
void Draw()const = 0;
};
で大丈夫だったのですが…。
という相談です。
>>333については今ぐぐりながら理解しようとしているところです…。
340デフォルトの名無しさん:2007/03/12(月) 00:39:20
>>338
>自分で定義した変数を読み取り専用にするなんて、
>C++でもできないだろ。
できるよハゲw
const関数は何のためにあんだ。
341デフォルトの名無しさん:2007/03/12(月) 00:43:20
C++のconstメンバ関数が何なのか知らない奴がレスしてるな。
342338:2007/03/12(月) 00:43:38
悪い、別に断言したつもりはなかったんだが。
「C++でもできないだろ」
じゃなくて
「C++で出来たっけ?」だな。
C++はずいぶんやってないんで忘れた。

343デフォルトの名無しさん:2007/03/12(月) 00:56:05
てか、なんでJavaにはconstがないのか不思議でならない。
キーワードだけは定義されてるって書いてあるけど、なんで削られたん?
344デフォルトの名無しさん:2007/03/12(月) 01:15:37
C# には const あるけど const 関数は無いな。
345デフォルトの名無しさん:2007/03/12(月) 01:18:40
>>343
お馬鹿なJavaプログラマにはまともに使いこなすことができないだろうという判断から。
346デフォルトの名無しさん:2007/03/12(月) 01:23:46
むしろその逆で過剰な安全装置と見なされて削られたって話じゃないの?
C++をメインで使ってる身からすると全然過剰だとは思わないけど。
347デフォルトの名無しさん:2007/03/12(月) 04:47:35
const関数で呼び出されたら、その中から変数にアクセスする際に
やはり const として宣言されていない関数は呼び出すことができないのかな
348デフォルトの名無しさん:2007/03/12(月) 06:43:57
コンパイル時に「変数が変更される可能性があります」とエラーが出る
呼び出せたらconstの意味がない
349デフォルトの名無しさん:2007/03/12(月) 09:19:31
JavaってC#におけるXmlSerializerのようなものは無いんでしょうか?
オブジェクトを丸ごと渡してやればXMLファイルに書き出してくれて、
XMLファイルを丸ごと渡してやればもとのオブジェクトを生成してくれるという
350デフォルトの名無しさん:2007/03/12(月) 09:34:33
>>349
近いのは java.beans.XMLEncoder と java.beans.XMLDecoder かな?
保存できるのは beans のプロパティだけになっちゃうけど。
351デフォルトの名無しさん:2007/03/12(月) 16:33:01
String s;
if(s = "")
{

}

間違えて上のコードを入力したとき s = "" の部分に「型の不一致: String から boolean には変換できません。」
というエラーメッセージが出てきました。
自分にはどう見ても右辺左辺ともにString型としか思えないのですが、なぜこのようなメッセージが出たのですか?
352デフォルトの名無しさん:2007/03/12(月) 16:39:02
まず、javaでは比較する場合は==を使う
=だと代入になってしまい、ifの中にはbooleanを入れなきゃいけないのにStringになってしまう
次に、==にしてもお前の期待する動作はしない
java String 比較 でググれ
353デフォルトの名無しさん:2007/03/12(月) 17:03:10
>>352

Stringの比較はequals()メソッドで行うということですね
簡潔でわかりやすいレスありがとうございます
354デフォルトの名無しさん:2007/03/12(月) 17:19:32
>>353
そっちはどちらかというとこの質問においてはオマケ。
=を比較のつもりで使っているほうが本質的な間違い。
355デフォルトの名無しさん:2007/03/12(月) 17:26:02
>>354
すみません。はじめの時点で言葉足らずでした

比較に = を使ってはいけないのは知っていたのですが、

VBの癖でついやってしまい、エラーが出て、

>>351の疑問が出たので質問させていただきました。
356デフォルトの名無しさん:2007/03/12(月) 17:30:11
Javaでアプリケーションを作成しています。
二重起動を防止する案を考えているのですが
File.createTempFile(String prefix, String suffix)でファイルを生成して
File.deleteOnExit()で削除指定
ファイルの有無で起動中かどうかを判断するという処理にしようかと思ってます。

『もっと良い案があるよ』
『そのやり方だとこういう問題が発生する』
等御意見頂けますでしょうか。
357デフォルトの名無しさん:2007/03/12(月) 18:51:39
>>356
createTempFile だと、
prefix + "java.io.Fileが勝手に付加する文字列" + suffix って
名前のファイルを作っちゃわない? 二重起動防止にならんと思うけど。

あと、deleteOnExit だと、正常に終了できなかった場合はファイル残ったままになるよ。
もっとも、正常に終了できなかった場合にファイルを削除する方法は
今のところ提供されてないので二重起動の場合はダイアログだして
ユーザが選択できるようにした方が良いかも。v2c がやってるみたいに。
358デフォルトの名無しさん:2007/03/12(月) 18:55:11
>>355
Java では、 if(式) の式の部分は boolean じゃないとエラーになる。

if(s = "") の 「s = ""」って代入式の型は String なので、
コンパイラに boolean じゃないと怒られただけ。
359デフォルトの名無しさん:2007/03/12(月) 19:00:25
あらかじめ決めておいたポート番号のソケットをオープンできたら起動、
というのを見かけた。レースコンディションにはならないような気がする。

・異常終了したときの後始末はうまくできるんだろうか。
・ユーザー単位でのみ複数起動を禁止して別ユーザーなら起動を許す、
みたいなのは工夫が必要になるな。

RMI Registry(Activation)やJMXでなんかやれそうな気がしないでもない。
360デフォルトの名無しさん:2007/03/12(月) 19:11:37
>>357
ありがとうございます。
Preferences+ユーザー選択って感じにしようかな・・・。
361デフォルトの名無しさん:2007/03/12(月) 19:13:45
>>359
なるほど・・・ソケットは思いつかなかった。
362デフォルトの名無しさん:2007/03/12(月) 20:30:57
synchronizedのブロックの適用が及ばない範囲、及ぶ範囲、そしてその理由について
わかりやすく教えてもらえませんか('A`)

同時に動くスレッド2個ぐらいで、、
HP5箇所ぐらい見たんですがいまいち理解できません

363デフォルトの名無しさん:2007/03/12(月) 20:57:50
>>357
俺は nio のファイルロックで判定した。
364デフォルトの名無しさん:2007/03/12(月) 20:58:59
356あてだった・・
365デフォルトの名無しさん:2007/03/12(月) 21:05:56
HashMapでClass<T>とList<T>を関連付けたいのですがいい方法はありませんか?
366デフォルトの名無しさん:2007/03/12(月) 21:07:40
>>365
HashMap<Class<T>, List<T>>
367デフォルトの名無しさん:2007/03/12(月) 21:14:41
>>366
あの……それだとHashMapをnewするときにTになにか入れないといけないけどそういう使い方を意図しているのではなくて。
T.classをキーにしてgetしたらList<T>型のオブジェクトが返ってくるようにしたいんです。
もしくはList型オブジェクトをなんかしてList<T>型にキャストするとか。
368デフォルトの名無しさん:2007/03/12(月) 22:02:31
>>367
「関連づけたい」という曖昧な言葉を使ったことへの反省はしないのね。
369デフォルトの名無しさん:2007/03/12(月) 22:52:46
>>368
反省しました

……ってなんて答えりゃいいかわからんそのあてつけみたいなのやめてくれよ……
一回で伝わらなかったら何度か説明する機会くらい与えてくれよ……
人格攻撃して話題そらしたいのか?

無理なら無理でいいよ別の方法考えるから……
370デフォルトの名無しさん:2007/03/12(月) 22:55:18
>>367
HashMapを継承した新しいクラスを作ればいい。
371デフォルトの名無しさん:2007/03/12(月) 23:03:31
>>370
Class<T>とTのときはそれでできたんだけど、(内部でHashMap<Class<?>,Object>に委譲して出口でclazz.cast(map.get(clazz))を返すようにした)
List<T>のときはどうやって実装すればいいかわからないんです。
Reflection周りでいろいろ探してはいるんですが……
372デフォルトの名無しさん:2007/03/12(月) 23:06:28
>>371
public <T> List<T> get(Class<T> c) {
 return (List<T>)get(c);
}
373デフォルトの名無しさん:2007/03/12(月) 23:07:22
間違えた。
return (List<T>)super.get(c);
374デフォルトの名無しさん:2007/03/12(月) 23:17:47
>>372
いけました。
ここで出る未チェックのキャストはアノテーションで強制的に黙らせる他ないんですよね?
375デフォルトの名無しさん:2007/03/12(月) 23:52:35
switchの条件にlong型が使えないのはなぜなんでしょうか
char,short,int,enumは使えるのに

何か歴史的な理由があったりしますか?
効率?
376デフォルトの名無しさん:2007/03/13(火) 00:10:08
long は int に暗黙的にキャストできないから。
377365:2007/03/13(火) 00:31:52
ありがとうございました。
何とかうまくいきそうです!
378デフォルトの名無しさん:2007/03/13(火) 03:06:04
//入力データ読み込みオブジェクトの

作成
BufferedReader myReader=new BufferedReader(
new InputStreamReader(System.in),1);
//敵出現メッセージ
System.out.println("敵が現れた。");
//味方、敵初期値
int mikata=5;
int teki=5;
while(teki>0){
//数値入力
System.out.println("どうする?1:攻撃、2:回復");
System.out.println("行動:");
//数値を読み取り、変数に代入
Int mystring =myReader.readLine();
Int koudou = Integer.parseInt(mystring);

と思われる部分で;が足りませんというエラーが出ました、どう修正すればいいのですか?
379デフォルトの名無しさん:2007/03/13(火) 03:10:28
・エラーメッセージはそのまま書く。改変されると推測が困難。
・ソースは必要な箇所を可能な限り原文に忠実に記述する。
 Int とか、「作成」から始まる行とか、何が正しいのか分からない。
380デフォルトの名無しさん:2007/03/13(火) 16:28:12
interface と abstract class の違いが良くわかりません。
interface でなければならない(もしくはその方がよい)場合、
また逆にabstract class でなければならない場合とは、
どんな場合なのでしょうか??
381デフォルトの名無しさん:2007/03/13(火) 17:26:30
Javaでは多重継承できないから属性を表すような実装はInterface
一方、デフォルト実装を与えたい場合などはabstract class
382デフォルトの名無しさん:2007/03/13(火) 17:47:50
このクラスは○○というメソッドを持っているよ→interface
このクラスをベースに○○というメソッドを使って機能拡張してね→abstract class
383デフォルトの名無しさん:2007/03/13(火) 22:58:08
型の継承 → interface
実装の継承 → abstract
384デフォルトの名無しさん:2007/03/13(火) 23:05:27
>>380
・ある性質に特有の処理が存在する。部分的に実装を共有できる。
 もしくはどうしてもある種の実装が必要だ。
(interface は実装をもてない。abstract class はもてる。)
・その性質の出現する場面が予想できる。もしくは限定した局面でしか使用しない。
(あとから再利用を試みる場合、interface の方が制約が少ない。
 abstract class だと、別のクラスの継承が必要な時にはもう使えない。)

上記を満たすなら abstract class。
制限をかけることによって(考えることを減らすことで)実装を容易にしたい場合も。

それ以外は interface。
interface の方がより純粋。制限が少なくて柔軟性が高い。
反面、実装の手間が多くなる。

最近は「とりあえずinterfaceにしとけ」な気がする。
実装に関してはヘルパークラスやテンプレートクラスを内包して、
そっちに処理を転送する方法で、継承と大差ない手間で済む。
その上で拡張性を保てる。

GUIフレームワークの基本部品なんかは abstract class ベースのものが多い。
画面表示に関する基本実装がどうしても必要とかそんなんだろうか。
385デフォルトの名無しさん:2007/03/13(火) 23:08:57
非オブジェクト指向言語だからといって
オブジェクト指向的にプログラムがかけないことはないように、
abstract class を interface代わりに使ってプログラムは書けるだろうけど、
そんな悲しいことは普通はしない。
386デフォルトの名無しさん:2007/03/13(火) 23:27:22
x64で動作するeclipseってあったっけ?
もしくはjava用のIDE
387デフォルトの名無しさん:2007/03/13(火) 23:34:38
>>380
interfaceを作って、abstract で骨格実装(デフォルトの実装)を作って、
多くの実装クラスを骨格実装を継承するようにすると
柔軟な構造になるよ。ひと手間掛かるけど
388380:2007/03/14(水) 00:14:01
なるほど…
デフォルト実装の必要性と、プログラムの柔軟性との兼ね合いってことでつね。
みんなありがd
389デフォルトの名無しさん:2007/03/14(水) 00:38:02
>>333
不変クラスつくればいいだけだろう。
あれでconstなクラスは作れる。
無理って事は無い。
390デフォルトの名無しさん:2007/03/14(水) 00:39:26
>>324
配列の中身が書き換えられないように、
Collections.unmodifiableList()を使うとか、

clone()を使うとか、考えようぜ。
IBMのdwで、不変クラスで検索してみ。
constに相当するものを作る方法がのってる。
Wikipediaの「イミュータブル」でも検索してみると良い。
391デフォルトの名無しさん:2007/03/14(水) 00:39:54
>>327
しばらくスレを見ていなかったので>>322のことにまだ気づかなかっただけだ。
392デフォルトの名無しさん:2007/03/14(水) 00:41:03
>>332
それは、Effective Javaでは禁じ手とされているものだぞ。

攻めて、enum型にせよ。enumが駄目ならfinalでコンストラクタがprivateなクラスを。
393デフォルトの名無しさん:2007/03/14(水) 00:41:49
>>337
定数インタフェースは、勝手に実装されることがあるからやめとけ。
394デフォルトの名無しさん:2007/03/14(水) 00:41:58
public class Hello
{
public static void main(String args[])
{
System.out.println("Hello!");
}
}
395デフォルトの名無しさん:2007/03/14(水) 00:43:43
>>343
代替手段があるからいらないんだよ。
constは余計なゴミなんだよ。ゴミ。
全てを不変にしたくないときはfinalのほうが柔軟性が効くんだよ柔軟性が。
部分的に可変にしたほうがよいこともあろう。


>>345みたいな浅はかでお馬鹿なC言語厨には理解できないが。
396デフォルトの名無しさん:2007/03/14(水) 00:44:43
>>351
FindBugsを使え。そういう問題が起きても
困惑することは無くなるだろう
397デフォルトの名無しさん:2007/03/14(水) 00:47:22
>>375
switchは総ナメ野郎の糞だから
398デフォルトの名無しさん:2007/03/14(水) 00:53:34
>>395
防御的コピーって知ってる?
代替手段がないからこんなことしないといけないんだけど。
399デフォルトの名無しさん:2007/03/14(水) 01:06:51
質問なんですが、下記のようにジェネリクスを使ったインタフェースを使って
実装クラスを書くと意図したように実行まで行えるのですが、
アノテーションを入れるとメソッドのオーバライドをしていないと怒られてしまいます。
これはアノテーションが間違っているのでしょうか?
それともアノテーションを使っていない方はたまたま実行まで出来てしまっただけで、
本来ならコンパイルが出来ないはずなのでしょうか。

public interface Base<T>{
    public void print(T data) ;
}

public Derived implements Base<Integer> {
    public void print(Integer data ) {
        System.out.println(data.toString() ) ;
    }
}
400デフォルトの名無しさん:2007/03/14(水) 01:23:52
>>399
Derived のメソッド定義に @override をつけたものとして話を進めるけど
それはオーバライドじゃないから怒られる。ジェネリクス関係ない。
401デフォルトの名無しさん:2007/03/14(水) 01:42:18
>>398
不変じゃなかったら、constつけてても防御コピーしなきゃだめだろ
402デフォルトの名無しさん:2007/03/14(水) 01:56:36
>>401
残念ながらC++のconstは防御的コピーする必要はない。
403デフォルトの名無しさん:2007/03/14(水) 02:20:34
勝手にコピーされるから?
不変でないオブジェクトは、明示的にせよ暗黙的にせよコピーしないと、
中にしまいこんだはずのオブジェクトを勝手に編集される可能性がある。
404デフォルトの名無しさん:2007/03/14(水) 02:42:49
不変バージョンと可変バージョンが1つのクラスで定義でき、
const つけると不変クラスとして使えるってことか?

たしかに、両方のバージョンをそれぞれ作るのは面倒
405デフォルトの名無しさん:2007/03/14(水) 02:43:16
超初心者です。。midiを内部で生成して再生するプログラムを作ろうと、ググっていて
http://java-house.jp/ml/archive/j-h-b/039552.html
の話を見つけました。確かに
  static byte test [] = new byte [] {0x7f, 0x80};
とやってみると、0x80以上を代入しようとすると「精度が落ちている可能性 期待値int」
とか言われてしまいます。

リンクにあるようにjpgBuff[j] = (byte)jpgBuff_i[j];で変換すると正しく扱えるようなのが不思議です。

>しかし int に入れておいて byte にするというのは、意味がないように
>思います。というか、int でできるなら byte でソースに埋めこんでも
>できなきゃおかしいですよね。ただ代入しているだけなんだし。何か
>その辺もおかしいのでは?
とあるように0xffまではbyteで扱えるはずですよね?

0x80以上をbyteな配列に代入するにはどうすればいいんですか?

何か勘違いをしているようでしたらご指摘をお願いします。。
406デフォルトの名無しさん:2007/03/14(水) 02:58:05
byte は 0 〜 255 じゃない



-128 〜 127 なんだよ……
407デフォルトの名無しさん:2007/03/14(水) 03:04:54
>>405
> とあるように0xffまではbyteで扱えるはずですよね?
違う。byteは -128〜127まで。
キャストを使って符号を無視するように明示しないかぎり byte では 255(0xFF) は扱えない。

> 0x80以上をbyteな配列に代入するにはどうすればいいんですか?
直接的にはキャストを使う。

間接的には String から byte配列に変換するようなユーティリティメソッド作るとか
"\u007F\u0080".getBytes("ISO8859-1"); みたいに文字列リテラル使ってみるとか。
408デフォルトの名無しさん:2007/03/14(水) 03:21:44
>>406-407
ありがとうございます。

>直接的にはキャストを使う。
http://java-house.jp/ml/archive/j-h-b/026824.html
を参考に  byte b = (byte)0xff;
でエラーが出ないことは確認できました。

配列の場合は
 static byte test [] = (byte []) new int [] {0x7f, 0x80};
とかやってみたんですが、どうもうまく行きません(変換できない型)
これは後出しで変換するしかないんでしょうか?
409デフォルトの名無しさん:2007/03/14(水) 03:24:00
static byte[] test = new byte [] { (byte)0x7f, (byte)0x80 };
410デフォルトの名無しさん:2007/03/14(水) 03:33:54
なるほど、確かにうまく代入されています。

ただ毎度面倒くさいし、見掛けも悪いのであらかじめ
-128 〜 127 の数値で扱うようにしておいたほうが
良いかも、と思いました。。。

ありがとうございました。
411デフォルトの名無しさん:2007/03/14(水) 04:26:00
UByte 型作っちゃいなYO
412デフォルトの名無しさん:2007/03/14(水) 05:30:50
ejbってもう誰も使ってないの?
みんなjspで力つきたのか? phpレベルの底辺が好きなんだね。
413デフォルトの名無しさん:2007/03/14(水) 08:25:06
>>412
ばかめ!EJB2は死んだわ!
414デフォルトの名無しさん:2007/03/14(水) 09:01:03
誰かこれを解説してください。
>3個の数字の並び替えの場合、その並び替えは 3! = 3 * 2 * 1 = 6通り、
>ですが、1回だけ shuffleを行う際に使っている j、k の選び方は 36 通りです。
>つまり、これが6通りの並び替えのどれかに対応します。
>しかしながら、 (36 ) ÷ ( 3 ! )は割り切れないのでどれかの並び方に偏ってしまうということがわかります。
http://blogs.sun.com/javaev/
415デフォルトの名無しさん:2007/03/14(水) 09:31:16
>>414
実際に並べかえてみりゃわかるよ。小学生並の解き方だけど。

例えば、
> for (int i = 0; i < a.length; i++)
を削った場合、j,k は 9通り(3^2)で、実際に並べ替えてみると
j=1::k=1:A、B、C, k=2:B、A、C, k=3:C、B、A
j=2::k=1:B、A、C, k=2:A、B、C, k=3:A、C、B
j=3::k=1:C、B、A, k=2:A、C、B, k=3:A、B、C

出現確率はこんな感じに偏る。
A、B、C::3/9,
A、C、B::2/9,
B、A、C::2/9,
B、C、A::0/9,
C、A、B::0/9,
C、B、A::2/9

続きは自力で。
416414:2007/03/14(水) 09:37:37
>>415
ありがとうございます。助かりました。
417デフォルトの名無しさん:2007/03/14(水) 16:24:34
作成したjarファイルを、JREが必要無い状態で、exe形式で実行したいと考えています。
検索してみたところ「JET」なるコンパイラが見つかり、
「パーソナルエディション」なら個人に限り無料で使用できると聞いたのですが、
公式サイト内を探してみてもパーソナルエディションが見つかりません。
ひょっとして配布終了してしまったのでしょうか?
418デフォルトの名無しさん:2007/03/14(水) 16:36:12
>>398
知っとるわい馬鹿
419デフォルトの名無しさん:2007/03/14(水) 16:37:18
>>402
constするとその内部にあるものまですべてfinalになるなら
部分的にconstにできるfinalのほうが柔軟性が良いんだけどね。

420デフォルトの名無しさん:2007/03/14(水) 16:38:42
>>417
ないっぽいね。exe化はあきらめて、JSmoothかexewrapあたりにしておくのが吉。
421デフォルトの名無しさん:2007/03/14(水) 16:52:00
double型からint型に変えるやり方はあるのですが
逆にint型らdouble型にかえるやり方があるのでしょうか?
一応double型からint型に変えるやり方を参考にして
やってみたのですがどうもエラーがでるようで・・・」
422デフォルトの名無しさん:2007/03/14(水) 17:00:15
何をやった。
意図していた結果 / 実際の結果

を具体的に書くといいぞ。

double doubleValue = (double)100; と書いたらコンパイル時に〜という
メッセージが出ました、とか。
423デフォルトの名無しさん:2007/03/14(水) 17:16:08
public class Henkan{
public static void main(String[] args) {
double s = 5.0;
int i = (int)s;
System.out.println(i);
}
}

これを参考にしてdoubleをint、intをdoubleにすれば変換できると
思いやってみたのですが結果
Henkan.java:3: 精度が落ちている可能性
検出値 : double
期待値 : int
int s = 5.0;
^
エラー 1 個

になってしまいまして、どうすればいいのがわからないです。
424デフォルトの名無しさん:2007/03/14(水) 17:26:26
425デフォルトの名無しさん:2007/03/14(水) 17:27:15

intとdoubleを入れ替えたということは
int s = 5.0; // A
double i = (double)s;
としたわけだな?

今回の目的はintをdoubleに変換することなんだよな?
Aの行で確かに精度が落ちている。
intなんだからただの5でないといけない。
426デフォルトの名無しさん:2007/03/14(水) 17:27:40
>>423
> int s = 5.0;
5.0 は浮動小数点リテラルで、型は double だから、
int に代入するにはキャストしないとダメ。
int s = (double)5.0;

もしくは、整数リテラルを使って
int s = 5;
427デフォルトの名無しさん:2007/03/14(水) 17:28:32
× int s = (double)5.0;
○ int s = (int)5.0;
428デフォルトの名無しさん:2007/03/14(水) 17:39:05
解決できました!みなさま即レスで返していただきありがとうございました!
429デフォルトの名無しさん:2007/03/14(水) 17:43:22
doubleにintを代入するときはそのまま入っちゃうのは、
情報欠落がないから。

プリミティブの
ワイドニング変換(widening primitive conversion)
ナローイング変換(narrowing primitive conversion)
というのを調べるといいかも。
430デフォルトの名無しさん:2007/03/14(水) 17:53:17
431デフォルトの名無しさん:2007/03/14(水) 18:19:30
>>417
gcjとかはどうよ?
432デフォルトの名無しさん:2007/03/14(水) 18:40:46
> doubleにintを代入するときはそのまま入っちゃうのは、
逆?
433417:2007/03/14(水) 19:24:05
>>420
>>431
ありがとうございます。>>431さんがおっしゃっているgcjを試してみたいと思います。
プログラム自体はSwingなんですが、gcjはSwingはダメなんですね。
この機会にSWTも勉強してみようかと思います。
ご親切にありがとうございました。
434デフォルトの名無しさん:2007/03/14(水) 21:46:31
>>433
JRE無しでないと駄目な理由は?
たぶん他の代替手段も、各種DLLが必要になってくると思うけど・・・
435デフォルトの名無しさん:2007/03/14(水) 23:13:15
>>429
doubleにlongを代入するとき、そのまま入っちゃうのは何故?
情報欠落があるのに。
436デフォルトの名無しさん:2007/03/14(水) 23:23:36
>>435
int→floatでも情報損失があるけど言語規定上問題なく拡大変換される。
プリミティブ型の拡大変換は情報損失の有無に関わりなくコンパイル時も実行時もエラーを発生させない。
だから、変換の可否は情報損失とは関係なく、言語仕様でそうなっていると言うべき。
437デフォルトの名無しさん:2007/03/15(木) 00:59:22
double d = Double.valueOf(args[i]);とdouble d = Double.valueOf(args[i]);の違いって何かあるんですか?
438デフォルトの名無しさん:2007/03/15(木) 01:08:10
>>437
その2つ、全く同じに見えるけど。
439デフォルトの名無しさん:2007/03/15(木) 01:08:24
なにもない
440デフォルトの名無しさん:2007/03/15(木) 03:31:34
他スレで質問したのですが、
スレの進行が滞っているのでこちらに書きます。

class C1{
}

class C2 extends C1{
  void f(){
    System.out.println("f() is executed.");
  }
}

class Example{
  public static void main(String args[]){
    C1 obj = new C2();
    obj.f();
  }
}

上記のプログラムをコンパイルすると、
「メソッド f() はclass C1 で見つかりません。」
というメッセージが出てコンパイルエラーとなりました。

あるクラスの変数によってサブクラスのオブジェクトを参照する場合、
そのオブジェクトが呼び出すメソッドは、スーパークラスでも宣言されている
オーバーライドメソッドでなければならないということですか?
441デフォルトの名無しさん:2007/03/15(木) 03:51:11
>>440
>    C1 obj = ほげほげ
>    obj.f(); 

2行目は、C1 の f() を探す。
442440:2007/03/15(木) 04:33:07
>>441
なるほど、あくまでその変数のデータ型に基づいてメソッドを選択するってことですね。
どうもありがとうございました!
443デフォルトの名無しさん:2007/03/15(木) 09:46:06
見つかって呼ばれるメソッドは変数のほうではなく、
オブジェクトに定義されているもの。
444デフォルトの名無しさん:2007/03/15(木) 12:12:22
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(name)));
try {
...
} finally { reader.close(); }

とかって、素直で読みやすいコードだと思うんですが、
InputStreamReader や BufferedReader のコンストラクタで例外が発生したら
name のファイルが開きっぱなしになってしまいますよね?
(実際はもっと複雑なフィルタがかぶさってます。)

↓みたいに FileInputStream だけ別の変数にしとかないといけないんでしょうか?

FileInputStream file = new FileInputStream(name);
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(file));
try {
...
} finally { reader.close(); }
} finally { file.close(); }

close() がダブってるんでキモイのと、これだともしかしてさらに
InputStreamReader でもう一段 try しないといけないのかも・・・と、
なんだか釈然としないです。
445デフォルトの名無しさん:2007/03/15(木) 12:27:25
以下のようなソースがあった場合、
readerでIOExceptionを発生させるには読み取り権限がないファイルを渡すことでテスト
FileNotFoundExceptionを発生させるには存在しないファイルを渡すことでテストしようと思いますが
writerでIOExceptionやclose()メソッドでIOExceptionが発生した場合、
JUnitでどんなコードを書いたらよいのかがわかりません
よろしくお願いします
public String read(String name) {
  Reader reader = null; StringWriter writer = null;
  File file = new File(name);
  try {
    reader = new InputStreamReader((new FileInputStream(file)));
    writer = new StringWriter();
    int c;
    while ((c = reader.read()) != -1)
      writer.write(c);
    return new String(writer.toString());
  } catch (FileNotFoundException e) { System.out.println(e.getMessage());
  } catch (IOException e) { System.out.println(e.getMessage());
  } finally {
    try {
      if (writer != null)
        writer.close();
    } catch (IOException e) { System.out.println(e.getMessage()); }
    try {
      if (reader != null)
        reader.close();
    } catch (IOException e) { System.out.println(e.getMessage()); }
  }
  return null;
}
446デフォルトの名無しさん:2007/03/15(木) 12:29:56
>>444
tryブロックの外で、closeすべき変数を null を初期値とし、まとめて宣言する。
finally で、null チェックして逆順に close を呼び出す。というのはどうでしょう

ラップしてる変数の close 処理がうまくいくことを前提にするなら、
if文をネストして、null ではない一番外側の変数だけでcloseを呼び出す。
と言うのもありかも?
447デフォルトの名無しさん:2007/03/15(木) 12:33:56
>>444
1.5 以降なら、
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=36027&forum=12&start=15
の、かつのり氏の StreamUtils#close みたいなユーティリティメソッド作って、

FileInputStream file = null;
BufferedReader reader = null;
IOException e = null;
try {
 file = new FileInputStream(name);
 reader = new BufferedReader(new InputStreamReader(file));
 //....
}catch(IOException ex){
 e = ex;
}finally{
 StreamUtils.close(e, reader, file);
}
みたいにするとか。

1.4までだと java.io.Closeable がないから この方法は使えないんだけどね。
448デフォルトの名無しさん:2007/03/15(木) 12:45:55
>>445
InputStream を渡すメソッドだったら簡単だけど。
djUnit の Virtual Mock Objects 使ってみるとか?
449デフォルトの名無しさん:2007/03/15(木) 14:13:34
質問です

画面に文字列を出力させるときに、その表示を一文字ずつ
順番に表示させるのって可能ですか?

例:ありがとう
と出力させるとしたら、「あ」が表示されて、少し待って「い」
みたいな感じです
450デフォルトの名無しさん:2007/03/15(木) 14:21:45
可能不可能でいえば可能。

画面てのがコマンドプロンプトなどのキャラクタ表示装置なのか
ウィンドウなのか、ウィンドウの中のテキストフィールドなのか
などによってやり方は違う。
451デフォルトの名無しさん:2007/03/15(木) 14:43:08
アプレット上にパネルを置いて、そのパネルでmouseWheelMovedイベントを拾うプログラムを作っているのですが
アプレットの外の部分(HTMLで文字などを表示してるところ)をマウスクリックすると
パネル上でマウスホイールを回してもmouseWheelMovedイベントが来ません。
何が問題なのでしょうか?
452デフォルトの名無しさん:2007/03/15(木) 17:20:00
Java 1.6.0のソースのStringの部分を眺めていたら、public String toUpperCase(Locale locale)の部分(2556行)に

/* Now check if there are any characters that need to be changed. */
scan: {
for (firstLower = 0 ; firstLower < count; ) {
(ry
}

という部分があったのですが、このscan: {}はどういう意味ですか?
453デフォルトの名無しさん:2007/03/15(木) 17:38:36
>>451
自分のウインドウの外の出来事を、しかもアプレットが知ることが出来たらやばくね?

>>452
ラベル:
ループの中でbreakやcontinueしてたりしない?

454デフォルトの名無しさん:2007/03/15(木) 17:53:03
>>453
そうでなくて
パネル上にカーソル移動→マウスホイール動かす→イベント上がる
のに
パネルの外をクリック→パネル上にカーソル移動→マウスホイール動かす→イベント上がらず
ってことです。
455デフォルトの名無しさん:2007/03/15(木) 18:14:23
マウスホイールって入力フォーカスのあるコントロールに通知されるんじゃなかったっけ?
なんかそれを変更するツールがあったよーな。
456デフォルトの名無しさん:2007/03/15(木) 19:29:56
すみません、質問なのですが。自分、去年末あたりからプログラミング(java)
を学び始めたのですが、DBをjavaのプログラミングで弄る技術は必須でしょうか?
457デフォルトの名無しさん:2007/03/15(木) 19:37:35
>>456 使わないなら不要、使うなら必要。
458デフォルトの名無しさん:2007/03/15(木) 19:50:43
何故こんな質問が出るか想像してみた。
 1.誰かからできないといけないと言われた
 2.その手の本を読んで、「javaでDBを使ってみよう」という所で詰まっている
 3.ネットでDBを使う例をよく見かけるので必要かと思った
 4.面接で「javaはひととおりできます」と言ってしまったので入社前に「ひととおり」というのはどの程度か知りたい

で、>>456が聞きたいのは「javaでDBを弄る技術がないと役立たずなのか」って事ではないだろうか。
459デフォルトの名無しさん:2007/03/15(木) 19:58:17
>>456
ヒント:いまどきRDB使わない業務アプリはほとんどない。
460デフォルトの名無しさん:2007/03/15(木) 20:02:45
>>456
その質問はこんな感じ。
「すみません、質問なのですが。自分、駅前商店街のあたりで料理屋を探していて、さて
これから適当な店に入ろうというところなのですが、食前にワインを注文すべきでしょうか」

吉野家でワインを注文するひとは少ないと思われ。
461デフォルトの名無しさん:2007/03/15(木) 20:04:50
>>458ええ、最近とうとうeclipseを導入したのですがHSQLDBを起動するためのソースが
eclipse上で上手く動かないのです。んで考えた末に出た結論がHSQLDBplugin
テキストエディタの時は上手く動いたのに何でだろorz クラスパス等の考慮は
完璧なんですが・・・
462デフォルトの名無しさん:2007/03/15(木) 20:12:45
やっぱり、eclipse破棄してテキストエディタでソース組むようにします。
eclipse使ってると技術が退化する。
463デフォルトの名無しさん:2007/03/15(木) 20:18:42
>>462
作業効率が落ちると消化できる量も当然減るわけで一概に技術が退化するとは思えない。
要するに
「コアな部分を解釈するか」
「作業効率を上げて色々な技術に触れるか」
方向性の違いじゃない?
464デフォルトの名無しさん:2007/03/15(木) 20:23:53
eclipseもプログラム言語もプログラマーにとっては道具
どのような道具を使えば望んだ結果が得られやすいのかが一番重要
465デフォルトの名無しさん:2007/03/15(木) 20:30:16
そうですね。eclipseは構文エラーなどをした時、その場で教えてくれるので
とても便利ですよね。じゃあ、どういった種類のソースを組むのかによって
使い分けることにします。
466デフォルトの名無しさん:2007/03/15(木) 20:51:53
経験の浅いプログラマは、たまにはテキストエディタで書いて
いろいろ振り返ってみるのも良いと思う。
「退化する」ってのは、本当は退化じゃなくて基礎があやふやになるということ。
ある程度の経験があって基礎がしっかり固まっている人はIDEを使ったところで
「退化」なんてしないし作業効率が上がるので、どんどん使えばいい。
そういう人は仮にIDEが使えない環境下で作業しなければいけない場面でも
問題なく普通に対応できる。
467デフォルトの名無しさん:2007/03/15(木) 20:54:21
要するに何が言いたいかっていうと
>>462は半年ROMってろってことですね
468デフォルトの名無しさん:2007/03/15(木) 20:56:02
IDE使うと楽にコーディングできるからテキストエディタには戻れなくなる。
覚えていなくてもいいことは人は忘れるものだ。
469461:2007/03/15(木) 21:06:35
すみません、続報ですが、テキストエディタで組んだ奴は上手くDBに接続できたので、
そのソースをeclipseにコピーして実行したら上手く接続できました。
どうやら原因は私がeclipseに甘えていたことのようです。orz
470デフォルトの名無しさん:2007/03/15(木) 21:07:47
>>466
文法をしっかり覚えている=プログラマとしての経験が豊富
みたいな口ぶりだな。
471461:2007/03/15(木) 21:16:25
下らない審問ばかりで申し訳ないのですが、私まだjavaしか使えないので
これからc,c++学ぶ予定なのですが、もしそれらの言語でGUIプログラムを組むとき
流れは( ContentPaneを拾得したり、JButtonなどを宣言する流れは同じなのでしょうか?
472461:2007/03/15(木) 21:33:22
c,c++学ぶときのお楽しみって事で。Σ(´∀`;)

さっきの原因が分かりました。hsqldb/libにあるjarファイルを2つとも
importしてたのが原因だったようです。盲点でした・・・
473デフォルトの名無しさん:2007/03/15(木) 21:36:28
>>470

いや、>>466の言いたいことは文法だけじゃなく開発全般にわたっての事ではないかと。
IDEでやっていることをIDEなしでもちゃんとできるようになろうよ、と。
それができれば自ずとプログラマとしての力もつくんでないの?
IDEなしで開発していると思いがけずいろんなものが見えてくることもあるし…
474デフォルトの名無しさん:2007/03/15(木) 22:30:44
C++でGUIプログラム組む時は基本的にMFCまたはWTL/ATLを使う。
詳細はググるように。
.NETの場合はFormsとWPFがあります。
FormsはVBの流れをくんだ開発手法でWPFはJSPやASPの流れを組んだ開発手法と思えば良いと思う。
475デフォルトの名無しさん:2007/03/15(木) 22:34:04
俺C++がメインでJavaは素人だからトンチンカンなこと言ってるかもしれないけど……
例えばある変数がintだったかlongだったかで手が止まるとか、
20文字の変数名を手入力して間違えてコンパイルエラーとか、
ある関数の内容を確認するときにいちいち検索が必要になるとか、
もうナンセンス極まりない話だと思う。
それじゃ自分が常に全体を把握できる程度の規模のプログラムしか書けないよ。
断言できる、統合環境と技術力とは一切関係がない。
476461:2007/03/15(木) 22:38:01
さっきのHSQLDBのことですが、pc再起動してもう一度実行してみたら
IllegalStateExceptionと出てまた失敗しました。
成功してたのに・・・バグ?(´・ω・`)
477デフォルトの名無しさん:2007/03/15(木) 22:44:00
>>476
APIでは、
public class IllegalStateException
extends RuntimeException
不正または不適切なときにメソッドが呼び出されたことを示します。
すなわち、Java 環境または Java アプリケーションは、要求されたオペレーションに適した状態ではありません。

設定ファイルやOSセキュリティなどで
サーバ・データベースの連携がうまくいってないのでは?
478デフォルトの名無しさん:2007/03/15(木) 22:56:05
全自動洗濯機があるんだから洗濯板の使い方なんてどうでもいいよ
479デフォルトの名無しさん:2007/03/15(木) 23:02:05
そういう奴は全自動洗濯機の性能評価・製品評価もできず、
自分が何をやっているのかも理解できない
いわれるがままに作業する全自動ロボットでしかないわけだが。
480475:2007/03/15(木) 23:11:34
>>479
比喩を比喩で返すのは別にいいんだけどさ、
それは一体何を言わんとした比喩なの?
ある変数にカーソルを合わせたら「int」と出た、
じゃあこれはintなんだなと理解し、それに応じたコードを書き進めることが、
あるいはある関数で右クリックしてメニュー出して左クリックして
その関数の宣言されている場所に一気にジャンプして編集することが、
果たして「言われるまま作業する全自動ロボット」とまで
蔑まれるほど程度の低い行為だとはどうしても思えないんだけど。
君の言う「本当の」プログラミングって何よ?
481デフォルトの名無しさん:2007/03/15(木) 23:18:55
>>444
>InputStreamReader や BufferedReader のコンストラクタで例外が発生したら
ドキュメントには何も書いてないけど、
チェックされない例外やエラーが発生するかもしれないん?

closeは一番外側を閉じると、元まで伝播するんじゃなかったけ。
482デフォルトの名無しさん:2007/03/15(木) 23:21:56
>>480はコードアシストやジャンプ機能だけがIDEの機能だと思っているバカ。
483デフォルトの名無しさん:2007/03/15(木) 23:23:40
そんな基本的な機能まで放棄してテキストエディタかよって話だろ
484475:2007/03/15(木) 23:28:41
>>482
VS様は(少なくとも個人で買える範囲では)最高の統合環境だと思います
それで何の話でしたっけ
485デフォルトの名無しさん:2007/03/15(木) 23:29:03
まあ、NetBeansあたりを使ってWebアプリ開発やっていると
・Servletコンテナのインストール方法を知らなくて良い
・それどころか、Servletコンテナの存在すら意識しなくて良い
・Servletをweb.xmlへ設定する方法を知らなくて良い
・それどころか、web.xmlの存在すら意識しなくて良い
・webアプリケーションのデプロイ場所・ディレクトリ構成を知らなくて良い。意識しなくて良い
・実行時クラスパス・ビルド時クラスパスを意識しなくて良い
・ソースディレクトリとデプロイ先ディレクトリが違うことを意識しなくて良い
等々のメリットだかデメリットだかが得られるわけだが、
どうなっているのか知らずに作業できる全自動ロボットという見方も出来るかもね。
486デフォルトの名無しさん:2007/03/15(木) 23:30:21
自分の目的に合ったものを探せばいいと思うよ
487デフォルトの名無しさん:2007/03/15(木) 23:30:32
>君の言う「本当の」プログラミングって何よ?

誰か「本当の」プログラミング なんて話してるのか?
488デフォルトの名無しさん:2007/03/15(木) 23:33:23
俺、真のスーパープログラマーになるんだ!!!11
489デフォルトの名無しさん:2007/03/15(木) 23:34:35
本当のプログラミング(笑)ってなんだよ
490デフォルトの名無しさん:2007/03/15(木) 23:37:15
>>488
Shiftキー離してるぞw
491デフォルトの名無しさん:2007/03/15(木) 23:44:13
自動的にエンコード・デコードしてくれるテキストエディタなんて使ってると、
技術が退化するぞ。

バイナリエディタを使うんだ。
492デフォルトの名無しさん:2007/03/15(木) 23:46:42
高級言語なんて使ってると、
技術が退化するぞ。

機械言語を使うんだ。
493デフォルトの名無しさん:2007/03/15(木) 23:47:17
>>447
外側が閉じれないのに、内側を閉じちゃっていいん?
494デフォルトの名無しさん:2007/03/15(木) 23:53:49
ソフトウェアなんて組んでいると、
技術が退化するぞ。

チップセットを自作するんだ。
495デフォルトの名無しさん:2007/03/15(木) 23:54:37
それが>>480の言うところの「本当の」プログラミングかwww
496デフォルトの名無しさん:2007/03/15(木) 23:55:19
いま洗濯物を干したところ。
そうなんだ。乾燥機がないんだよ。。。
497デフォルトの名無しさん:2007/03/16(金) 00:00:07
PCのスペックにうるさいやつがいるのはわかるけど
全自動洗濯機の性能評価とかいちいちするやついるんだな
JBuilderほどひどくなければ何でもいいだろ
498デフォルトの名無しさん:2007/03/16(金) 00:01:39
全自動洗濯機しか使えない奴は、洗濯物の干し方を知らないからな。
壊れたときに途方に暮れる。

ちゃんとシワ伸ばしたか?
色物は裏返したか?
型くずれする物をハンガーに掛けたりしてないか?
499デフォルトの名無しさん:2007/03/16(金) 00:02:12
JBuilderのどこがひどい?
eclipseとかNetBeansよりよっぽど使いやすいけど。
ああ、eclipseベースにした新しいやつのこと?
500デフォルトの名無しさん:2007/03/16(金) 00:02:34
>>497
価格.com あたりに行ってみ。
家電マニアという人種は意外と多い。
501デフォルトの名無しさん:2007/03/16(金) 00:05:05
502デフォルトの名無しさん:2007/03/16(金) 00:06:39
>>498
それはない。自動でやってくれない部分については人はおぼえるよ。

IDEがお客さんとメールのやりとりまで勝手にやってくれるようになったら
メールも打てなくなるかもねw
503デフォルトの名無しさん:2007/03/16(金) 00:08:26
洗濯の初心者は、たまには洗濯板で洗ってみるのがいい。
504デフォルトの名無しさん:2007/03/16(金) 00:10:17
kakaku.comのリンクを貼るのはロングテールを利用してるだけ。
実際は性能評価なんてしてるやつはゼロに近いだろ。
まわりの人間からトシちゃんのファンをみつけるのはほぼ不可能だけど
トシちゃんのディナーショーにいけばトシちゃんのファンばっかだぞ。
505デフォルトの名無しさん:2007/03/16(金) 00:11:08
>>503
うおっ。洗濯板か。さすが2chだ。何でもありだな。
できれば板アド教えてプリーズ。
506デフォルトの名無しさん:2007/03/16(金) 00:11:36
>>493
閉じていいかどうかは、内側による。

FileInputStream の場合は開きっぱなしだと、
他のファイル開く時に OS で開けるファイルの上限にひっかかったりとか、
後で FileOutputStream で同じファイルを開けなかったりする可能性もあるので放置しない方が良いかも。

今回のは InputStream だったけど、
例えば OutputStream とかで close() 呼んだら DB に commit する、
とか、そーゆー実装になってる場合は閉じたら拙いだろうし。
507デフォルトの名無しさん:2007/03/16(金) 00:23:44
本当のプログラミングはこれからだ!
508デフォルトの名無しさん:2007/03/16(金) 00:24:17
まわりの人間から家電マニアを見つけるのは
トシちゃんファンを見つけるよりもたやすい。
509デフォルトの名無しさん:2007/03/16(金) 00:25:18
「ロングテール」言いたいだけちゃうかと
510デフォルトの名無しさん:2007/03/16(金) 00:25:26
javaでjcomboboxで選択したものを表示させるにはどうしたらいいですか?
511デフォルトの名無しさん:2007/03/16(金) 01:13:51
つ【やさしいJava本】
512デフォルトの名無しさん:2007/03/16(金) 02:18:23
>>508
やっぱりモーターは日立だよな。
513デフォルトの名無しさん:2007/03/16(金) 02:41:10
↓マブチとタミヤの争い
514デフォルトの名無しさん:2007/03/16(金) 02:54:32
>>513
模型オタの俺がマジレスするとタミヤはモーターは作ってないよ。あくまでも模型の会社だから。
タミヤの強みは金型とかでしょ。逆に、マブチは小型モーターに強み。
家電のことは詳しくないけど、マブチやタミヤって家電に絡んでるのか?
515デフォルトの名無しさん:2007/03/16(金) 02:57:11
クソスレであってもこーゆー>>514みたいなレスがあるのが2chの醍醐味だと思う。
516デフォルトの名無しさん:2007/03/16(金) 03:05:10
クソなのはこのスレじゃなくてこの流れなんだが、
その点を除けば同意
517デフォルトの名無しさん:2007/03/16(金) 06:36:34
つ【同意】(:D)| ̄|_ =3=3
518デフォルトの名無しさん:2007/03/16(金) 10:05:20
>>512
日立は「モートル」だろ。
519デフォルトの名無しさん:2007/03/16(金) 16:32:25
昨日の>461ですが皆様のお陰で解決しました。
どうもありがとうございました。
520デフォルトの名無しさん:2007/03/16(金) 19:02:48
エラー:パッケージ javax.servlet.http は存在しません。
どうしたらいいですか?
Tomcat 6.0
java1.6.0
521デフォルトの名無しさん:2007/03/16(金) 19:09:53
ググれ
522デフォルトの名無しさん:2007/03/16(金) 19:24:13
>>519
結局、原因はなんだったんだ?
523デフォルトの名無しさん:2007/03/16(金) 19:30:11
>>520
クラスパス確認すれ
524デフォルトの名無しさん:2007/03/16(金) 19:31:20
>>520
コンパイル時なのか実行時なのかくらい書け。
環境もなるべく詳しく書け。
525デフォルトの名無しさん:2007/03/16(金) 20:35:13
>>524
コンパイル時です
>>523
通ってませんでした

servlet.jarが入ってなかったので名前が似ているservlet-api.jarをJAVA_HOME/jre/lib/extに入れたのが原因でしょうか?
526デフォルトの名無しさん:2007/03/16(金) 20:48:54
>>525
よほどのことが無い限り ext とかはいじらん方が良かれ。

開発環境は何使ってます?
Eclipse や NetBeans なら
ターゲットの実行環境(tomcat6)から適切な jar を参照するんで
その辺りの煩わしさは皆無ですよ。
(tomcat6 に対応してたかはちと自信なし。)

テキストエディタだけでガリガリやってるなら
javac する時のクラスパスに、
実行環境のライブラリをまとめて指定したら
コンパイルは通ると思う。
527デフォルトの名無しさん:2007/03/16(金) 21:50:19
>>526
jcpad231を使ってプログラムを書いています
528デフォルトの名無しさん:2007/03/16(金) 22:10:22
>>522 結局原因はHSQLDB側のコマンドライン?を2つ起動してなかった事が原因
です。Σ(´∀`;)ちんけな原因orz
529デフォルトの名無しさん:2007/03/16(金) 22:13:37
>>526 ベータ版だけど最新のtomcatpluginならtomcat6使えますよ。
個人的にはtomcat5.5の方が良いです。
530デフォルトの名無しさん:2007/03/16(金) 23:12:15
CSVファイルって空白のデータもありえますよね?
最終列が空白の場合、splitでできるString配列のlengthが
異なってしまい処理が煩雑になります。みなさんどうしてますか?
自分は下記のようなデータがあったとき、

1,音原田九郎,
2,渋井丸拓男,事故死
3,LIND L TAILOR,

//いったん最終列に空白を追加して最終列を認識させる
text = text+" ";
String[] splitArray = text.split( "," );
処理1( splitArray[0] );
処理2( splitArray[1] );
//追加した空白はtrimで消去してから処理する
処理3( splitArray[2].trim() );

こうしているのですが、もうちょっとスマートなやり方ないですか?
531デフォルトの名無しさん:2007/03/16(金) 23:30:29
","つけるといいよ
532じゅん:2007/03/17(土) 02:22:13
ネットを開いてお気に入りを開くとフォルダがあるのですが、隠しファイルにしてしまい消えてしまいました。もう一度表示させるにはどうすればよいのでしょうか(>_<)
533デフォルトの名無しさん:2007/03/17(土) 02:44:52
コントロールパネル→ツール→フォルダオプション
で隠しファイルを表示する設定にできます。

その状態でお気に入りを開けば半透明のフォルダが
出てくるはずなんで、右クリックしてプロパティから
隠しファイルを解除してください。
534デフォルトの名無しさん:2007/03/17(土) 02:47:13
それJavaなん?
535デフォルトの名無しさん:2007/03/17(土) 02:47:45
>こうしているのですが、もうちょっとスマートなやり方ないですか?
末尾データが無いからとカンマを削る事がそもそもスマートじゃない
536デフォルトの名無しさん:2007/03/17(土) 04:14:15
何の説明も無いまま空白を半角空白と空文字列の二つの意味で使ってることに驚く。
537デフォルトの名無しさん:2007/03/17(土) 04:24:36
>>530
予め最大の列数が決まってるなら

String[] splitRecord(String record){
 String[] splitted = record.split(",");
 String[] result = new String[3];
 System.arraycopy(splitted, 0, result, 0, splitted.length);
 return result;
}

みたいな処理を通せば配列のサイズは統一される。

けれども、普通はクラスを定義して
CSVレコード1行からインスタンス1コを生成するファクトリメソッドを用意する。

そんなにも文字列で処理したい理由って何?
538デフォルトの名無しさん:2007/03/17(土) 10:21:01
import java.io.*;

public class File {
public static void main(String[] args) {
try{
FileReader f = new FileReader("test.txt");
BufferedReader b = new BufferedReader(f);
String s;
while((s = b.readLine())!=null){
System.out.println(s);
}
}catch(Exception e){
System.out.println("ファイル読み込み失敗");
}

}

}

ここのソースのwhileの部分がすこし理解ができないので
教えてください。
539デフォルトの名無しさん:2007/03/17(土) 10:24:48
s = b.readLine() は一行読んで代入
で、それが !=null の間だけ実行ってことは読み込めなくなったら終了ってこと
540デフォルトの名無しさん:2007/03/17(土) 10:37:54
>>538
大雑把に言うと、b.readLineメソッドの戻り値がnullになるまで繰り返すんだけど、
その読み出した値を処理で使いたいからsに代入してる
541デフォルトの名無しさん:2007/03/17(土) 10:46:23
理解できました!ありがとうございます。
また質問があります

Syouhizei syouhizei1 = new Syouhizei();
syouhizei1.a = 9600;
syouhizei1.b = 1.05;
syouhizei1.kakezan();
       ↓

class Syouhizei {
double a;
double b;
double c = a*b;

void kakezan()
{
System.out.println(c);
}
}

とやるとどうしても結果が0,0になってしまいます。
理由ががわからないので教えてもたらいたいです。

542デフォルトの名無しさん:2007/03/17(土) 10:53:45
処理の順番を考えろ
543デフォルトの名無しさん:2007/03/17(土) 10:54:15
>>541

cが計算されるのはSyouhizeiがインスタンス化されたときの一回だけ
syouhizei1.keisan()を呼び出す時点でa,bになにが設定されていても既にcは
初期値で計算済だから0.0が表示される、と。

それ以前にaやbを外部から直にいじるのはちょっといやだな
パラメータで渡そうよ。
544デフォルトの名無しさん:2007/03/17(土) 11:07:28
順番が違っていたんですね、わかりやすく説明していただいて
ありがとうございました!
パラメータで渡したほうが見栄えがいいってことでしょうか?
545≠543:2007/03/17(土) 11:14:44
>>544
見栄えっつーか安全性の問題
デバッグもしやすいしね

コンストラクタとか勉強汁
546デフォルトの名無しさん:2007/03/17(土) 13:30:11
import java.io.*;

public class Kingaku {
public static void main(String[] args) {
try {
FileReader f = new FileReader("test01.txt");
BufferedReader b = new BufferedReader(f);
String s;
while((s = b.readLine())!=null){
String st[] = new String[4];
st[0] = s.substring(0,8);
st[1] = s.substring(9,13);
st[2] = s.substring(14,22);
st[3] = s.substring(23,31);
String t = st[2];
String t2 = st[3];
int nu = Integer.parseInt(t);
int nu2 = Integer.parseInt(t2);
int nu3 = (nu*nu2);
double nu4 = (nu3*1.05);
FileWriter fw = new FileWriter("test02.txt");
fw.write(st[0]+","+st[1]+","+nu4);
fw.close();
}
}catch(Exception e){
System.out.println("ファイル読み込み失敗");
}
}
}
入力ファイルに3行文字列がはいってるのですが
出力ファイルには3行目の文字列しか出力してくれません。
これを3行まるまる出力させるにはどうすればいいいのでしょうか?
547デフォルトの名無しさん:2007/03/17(土) 13:42:32
buffer は怠惰だから flush しないと仕事を全うしない。
548デフォルトの名無しさん:2007/03/17(土) 13:45:42
アホか。ループ内で毎回ファイルを開きなおしてるからだ。
549デフォルトの名無しさん:2007/03/17(土) 13:48:18
>>546

斜め読みの脊髄反射で申し訳ないが fw.close()の前にfw.flush()
違ってたらすまん

ところで、try〜catchをException一つで受けるのって乱暴じゃね?
せめてファイル入出力系、数値変換系、その他で分けないと問題起こったとき原因の
切り分けができんぞ
550デフォルトの名無しさん:2007/03/17(土) 13:52:07
テストのために書くコードならよくやるなあ、めんどくさいし
551デフォルトの名無しさん:2007/03/17(土) 13:53:48
>>549
Exception e の内容を表示すれば問題ないと思われ。
552デフォルトの名無しさん:2007/03/17(土) 13:59:23
>>546
正しいこと言ってるのは>>548だけだからな。
553デフォルトの名無しさん:2007/03/17(土) 14:18:47
対処法がわからないです…教えていただけないでしょうか?
554デフォルトの名無しさん:2007/03/17(土) 14:26:54
めんどいから、これでいいじゃん
FileWriter fw = new FileWriter("test02.txt", true);
555デフォルトの名無しさん:2007/03/17(土) 14:42:22
>>553
BufferedReader b = null ;
FileWriter fw = null;
try {
b = new BufferedReader(new FileReader("test01.txt"));
fw = new FileWriter("test02.txt");
String s;
while((s = b.readLine())!=null){
// 略
fw.write(st[0]+","+st[1]+","+nu4);
}
b.close();
b = null;
fw.close();
fw = null ;
}catch(Exception e){
System.out.println("ファイル読み込み失敗");
}finally{
try{if(b!=null)b.close()}catch(Exception e){}
try{if(fw!=null)fw.close()}catch(Exception e){}
}

Exceptionのハンドリングは適当だし、動作は確認してないぞ
556デフォルトの名無しさん:2007/03/17(土) 14:49:32
>>554
ファイルがなかったらExceptionがThrowされなかったけ?
557デフォルトの名無しさん:2007/03/17(土) 14:58:15
あそっか。じゃあ先頭にorg.apache.commons.io.FileUtils.touch("test02.txt")
かなんかで空ファイル作成追加
558デフォルトの名無しさん:2007/03/17(土) 16:13:07
ものすごい勢いで本末転倒だなw
559デフォルトの名無しさん:2007/03/17(土) 20:31:36
JMSの仕様について勉強できるサイトや本ってないですか?
できれば日本語で・・・。
オライリーのJavaメッセージサービスは所持してます。
560デフォルトの名無しさん:2007/03/17(土) 20:43:49
クラスローダを独自に用意すれば、並行処理で同じstatic変数にアクセスしても値が違う
みたいなことが出来るのでしょうか?
561デフォルトの名無しさん:2007/03/17(土) 20:51:40
>>559
仕様はSUNのAPI仕様読むのが一番じゃないでしょうか。
仕様そのものはシンプルでキレイだけど
実装によるクセが大きいので、勉強はそこそこに
実装の調査に入った方が良い気がします。
562デフォルトの名無しさん:2007/03/17(土) 21:16:56
>561
利用する側でなく、JMSプロバイダを作る側なため、
仕様をきちんと理解してからでないときついかなと思った次第です。

オープンソースとか参考にするのがいいんですかねぇ・・・。
563デフォルトの名無しさん:2007/03/17(土) 21:16:56
VISTAでJAVAは使えますか?
564デフォルトの名無しさん:2007/03/17(土) 21:20:54
とりあえず使えます
565デフォルトの名無しさん:2007/03/17(土) 21:31:18
>>562
であるならなおのことSpecification読むしかないのでは。
あれが最終にして完全(であるべき)ですから。

差しさわりがなければMQ作ることになった理由を聞かせて欲すぃ・・
566デフォルトの名無しさん:2007/03/17(土) 21:39:02
> であるならなおのこと

おとこのこなら

に読めてしまったので眼科行ってくる
567デフォルトの名無しさん:2007/03/17(土) 21:42:51
アッー!
568デフォルトの名無しさん:2007/03/18(日) 14:13:19
SwingでBeanを編集するためのよいバインドツールみたいなものはありませんか?
569デフォルトの名無しさん:2007/03/18(日) 14:36:53
仕事関係です。SOAという言葉が大好きな人がいまして・・・。
まあまだ作ると決まったわけではないんですが。
英語大嫌いなんでキツイ(;´Д`)
570デフォルトの名無しさん:2007/03/18(日) 14:41:34
SOAと英語にどういう関係が、つーか誤爆か?
571デフォルトの名無しさん:2007/03/18(日) 14:43:18
そあー大変だな
てか別に英語関係なくね?
572デフォルトの名無しさん:2007/03/18(日) 14:45:12
http://kajuhome.com/tomcat5.shtmlを見てTomcatをセットアップしているのですが、起動時にはTomcatが起動していません。
起動後、コマンドラインから/etc/rc.d/init.d/tomcat5 start(中でcatalina.sh startを呼んでいます)で起動すると問題なく起動します。
catalina.outを見ると、停止時に

致命的: プロトコルハンドラの一時停止に失敗しました
java.net.SocketException: Network is unreachable

というエラーが出ています。また、起動時の表示を見ていると、上記のtomcat5より先にhttpdが起動しています。
上記URLには「必ずtomcat→apacheの順で起動すること」とありますので、ここも気になるところです。

以上二点、何かお気付きの点があれば御指摘ください。よろしくお願いします。ちなみに環境は
・CentOS 4.4
・jdk-1_5_0_11-linux-i586-rpm.binからインストールしたJDK1.5.0_11
・apache-tomcat-5.5.23.tar.gzから解凍したtomcat5.5.23
・jakarta-tomcat-connectors-jk2-2.0.4-src.tar.gzからmakeしたmod_jk2.0.4
です。他に必要な情報があれば御指摘ください。
573デフォルトの名無しさん:2007/03/18(日) 15:09:04
>>572
CATALINA_HOMEとかが読まれてないんじゃないか?

しかし、/etc/profileを更新するとは強引だな

あと、jk2は終わってるぞ
574デフォルトの名無しさん:2007/03/18(日) 15:23:40
JAVA勉強してるのですが、将来的にもLG3Dを取り敢えずインスコしといたほうがいいですか?それともBistaにしとく?
575572:2007/03/18(日) 15:29:14
>CATALINA_HOMEとかが読まれてないんじゃないか?
>
>しかし、/etc/profileを更新するとは強引だな

解決策&お勧めの方法などありましたら、「ここを見ろ」でOKですのでご教授ください(;´∀`)
ちなみにmod_jkも試してみたのですが、まったく同じ問題が出たのでクリーンインストールしなおしたとです……。
576デフォルトの名無しさん:2007/03/18(日) 15:32:46
今eclipseでdbを利用した簡単なアプリケーションを作っているのですが、
eclipseにhsql pluginを導入しました。しかし、
作ったアプリケーションをいざプラウザで表示しようとすると
HTTP????? 500 -

--------------------------------------------------------------------------------

type ??????

?????

?? The server encountered an internal error () that prevented it from fulfilling this request.

??

javax.servlet.ServletException: org.hsqldb.jdbcDriver
ってエラーが出るのですが。ちなみにDBへの接続は別のクラスがやるようになってます。
解決策分かる方、教えてください。お願いします。
577デフォルトの名無しさん:2007/03/18(日) 15:41:48
その別クラスからのDBへの接続は大丈夫でした
578569:2007/03/18(日) 15:56:03
>570-571
565への返信です。
SOA→JMSという流れらしくて・・・。
で、JMSの仕様書英語しかなさそうなんで面倒だなと。
579デフォルトの名無しさん:2007/03/18(日) 15:57:47
ならまぁ、「SOAだから」じゃなくて単に英語苦手だからだな。
つ エール
580デフォルトの名無しさん:2007/03/18(日) 16:01:17
581デフォルトの名無しさん:2007/03/18(日) 16:13:55
今 Sun のサイトから
jdk-1_5_0_11-windows-i586-p.exe をダウンロードしてインストールしたのですが、
bin フォルダ内に javac コマンドがありません。
何か変更があったのですか?
javac に替わるコンパイルコマンドはどれでしょうか。
582 :2007/03/18(日) 16:26:28
キーボードから任意の数値nを入力させて、1からnまでの和を表示させるプログラムです。
たとえばnが7であれば、「1+2+3+4+5+6+7 = 28」という具合に表示させます。
本に載っている模範解答だと、この処理部分を

int sum = 0;

for (int i = 1; i <= n; i++) {
System.out.print(i + " + ");
sum += i; // sumにiを加える
}
System.out.println("= " + sum);

としているのですが、これだと「1+2+3+4+5+6+7+ = 28」になって、最後の余計な"+"が入っちゃうと思うんです。
そこで、この処理部分を

  int sum = 0;

  for (int i = 1; i <= n; i++){
   if (i != n){
   sum += i;
   System.out.print(i + "+");
   }

   else{
   sum += i;
   System.out.print(i);
   }

  }
  System.out.println("=" + sum);

というふうに修正してみたんですが、これって一般的な方法と言えるんでしょうか?
583デフォルトの名無しさん:2007/03/18(日) 16:30:10
Project Looking Glassに参加してる方は2chなんかにいないですよね?
584デフォルトの名無しさん:2007/03/18(日) 16:41:17
仮に居たとしても会話したくないだろうな
585581:2007/03/18(日) 17:05:34
JDK のインストールの後の JRE のインストール先を JDK と同じフォルダにしたため
bin が上書きされてしまっていました。
失礼ぶっこきました。
586デフォルトの名無しさん:2007/03/18(日) 17:38:47
>>575
解決策はエスパーでもない限りわからん
スクリプトにechoでも埋め込んで確認するとかで調べるとかして原因を特定

お薦めは
ttp://ichimura.chi.its.hiroshima-cu.ac.jp/webdb/tomcat.html
の方法
ただし、内容は少し古いから適時読みかえること
jsvcのマニュアルも読んで適切にスクリプトを書き換えること
587572:2007/03/18(日) 18:45:18
>>586
アドバイスありがとうございました。結論からいうと
>CATALINA_HOMEとかが読まれてないんじゃないか?
で大当たりでした。
/etc/rc.d/init.d/tomcat5の先頭にechoを入れると、起動時に環境変数まわりのエラーメッセージがドカンと表示されたので、
先頭に(/etc/profileとはまた別に、フルパス直書きで)環境変数を設定したところ、うまく起動できました。
また、念のためinit.dによる自動起動を停止し、/etc/rc.d/rc.localに記述する方法で明示的にtomcat→httpdと起動するようにしておきました。

大変助かりました。アドバイス、ありがとうございました。
588デフォルトの名無しさん:2007/03/18(日) 22:02:10
>>587
RH系なら、起動スクリプトの「# chkconfig」の行に、起動する順番を書けばいいでしょ。
「linux chkconfig 順番」でググってみたら?とりあえず1件見つけてみた。
ttp://www.geocities.co.jp/SiliconValley-Cupertino/9120/startup.html
589デフォルトの名無しさん:2007/03/18(日) 22:06:08
>>582
sum+=i;が重複してるからif-elseの外に出した方がいいな。
けどそれ以外はみんなそんな感じに書くと思うぞ。
逆に変態的な書き方があったらぜひ教えて欲しいもんだ。
590デフォルトの名無しさん:2007/03/18(日) 22:12:10
for (int i = 1; i <= n; i++) {
    sum += i;
    System.out.print(i);
    if (i != n) {
        System.out.print("+");
    }
}
591デフォルトの名無しさん:2007/03/18(日) 22:19:27
java -jar foo.jar としたときにシステムプロパティ java.class.path って
確実に実行モジュールである foo.jar のみが表示されるのかな?
仕様や実行結果を見るにどうもそうらしいんだけど。

絶対パスならそのまま、相対パスなら user.dir を付加すれば Win32 のGetModulePath の代わりになる?
592582:2007/03/19(月) 00:42:19
>>589-590
そうですね。その方がスマートですね。
ありがとうございました!
593デフォルトの名無しさん:2007/03/19(月) 01:44:21
>>582
まぁ、あえて違う書き方をしたいと思ったら、

int sum = 1;
System.out.print(1);
for(int i = 2; i <= n; i++ ) {
 sum += i;
 System.out.print(i + "+");
}
System.out.print(" = " + sum);

ぐらいかな? あまりこういう書き方はしないと思うけど・・・。
594デフォルトの名無しさん:2007/03/19(月) 01:45:29
ごめん間違った

> System.out.print(i + "+");
System.out.print(" +" + i);

に修正
595デフォルトの名無しさん:2007/03/19(月) 02:16:02
>>589
普通に
for (int i = 1; i <= n; i++) {
sum += i;
System.out.print(i + (i != n ? " + " : " = "));
}
System.out.println(sum);
みたいなのを考えたけど、希望してるのならこんなの
for (int i = 1; i <= n; i++) {
System.out.print(i + " + ");
sum += i;
}
System.out.println("\b\b= " + sum);
596デフォルトの名無しさん:2007/03/19(月) 09:22:24
>>595
\bとはマニアックな・・・。
けどこうしてみるとifもないしスマートに見えるな。
機会があれば使ってみよう。
597デフォルトの名無しさん:2007/03/19(月) 14:01:53
開発はユニクソ?リヌクス?の方が多い?
598572:2007/03/19(月) 15:25:20
>>588
フォロー、ありがとうございます。これでinit.dの下で管理できそうですね。
大変参考になりました。重ねて御礼申し上げます。
599デフォルトの名無しさん:2007/03/19(月) 21:11:24
新人教育でJavaを教えることになりました
知らないやつを基準に変数からクラス、オブジェクトまで教えるのですが
これだとすでにJavaやプログラミングを知っている人が退屈してしまうので
そいつらむけの適当な自習課題を用意しようと思います。
(簡単なゲームとかメモ帳作成とか)
参考になりそうなページはないですか?
600デフォルトの名無しさん:2007/03/19(月) 21:40:06
お前が作れよ
601デフォルトの名無しさん:2007/03/19(月) 22:01:06
ゲームとかメモ帳ってGUI方面だろ。
Webアプリ作らせたほうが実用的かと。
602デフォルトの名無しさん:2007/03/19(月) 22:24:57
Java知ってるやつにはDB使ったアプリを教えろ
603デフォルトの名無しさん:2007/03/19(月) 22:29:40
>>601
知らないやつ基準ということなのでそういう人が大多数という前提だと、
新人研修の自習でWebアプリ作るほどの力があるならそのまま現場投入で
たたき上げた方がよほど本人及び会社の為ではないかと
604603:2007/03/19(月) 22:50:47
あ、現場投入云々はあくまで技術者として、ね。
社会人としてどうとかはまた別の話。
605デフォルトの名無しさん:2007/03/19(月) 22:59:07
6061/2:2007/03/20(火) 00:17:04
import java.awt.*;
import java.awt.event.*;

class Awt10{
Frame frame;
Button button;
TextField text;

public Awt10(){
frame = new Frame( "フレーム" );
button = new Button( "クリックするとダイアログ表示" );
text = new TextField();

button.addActionListener( new ActionListener() {
public void actionPeformed(ActionEvent e){
new Dialog01( frame );
}
} );

frame.add( button, BorderLayout.NORTH );
frame.add( text, BorderLayout.SOUTH );
frame.pack();
frame.setVisible( true );
}

public static void main( String[] args ){
Awt10 awt10 = new Awt10();
}
}
6071/2:2007/03/20(火) 00:21:12
class Dialog01{
Dialog dialog;

public Dialog01( Frame frame ){
dialog = new Dialog( frame, "ダイアログ", true );
Label label = new Label( "ラベル" );
dialog.add( label );
dialog.pack();
dialog.setVisible( true );
}
}


これでコンパイルすると、
Awt10.java:15: <anonymous Awt10$1> は abstract でなく、java.awt.event.ActionList
ener 内の abstract メソッド actionPerformed(java.awt.event.ActionEvent) をオーバ
ーライドしません。
public void actionPeformed(ActionEvent e){
こういうエラーが出てきてしまいます。
javaの入門本のコードそのまま打ち込んでいるんですが、どうしたらいいんですか?
608デフォルトの名無しさん:2007/03/20(火) 00:26:22
> actionPeformed
performed?
609デフォルトの名無しさん:2007/03/20(火) 00:36:55
>>607
>class Awt10{

これ本当?コピペ間違ってない?
このソースであのエラーが出るとは思えんが…
610デフォルトの名無しさん:2007/03/20(火) 00:40:10
うわーありがとうございました。
performedのスペルが間違ってました。恥ずかしい。

>>609さん
コピペは間違いはないと思います。。。
こういうエラー見たことなかったのでスペルちゃんと見てませんでした
611609:2007/03/20(火) 00:49:21
すまん。勘違いだった(汗)
普段の自分のコーディングスタイルと違うので(と言い訳してみる)
612デフォルトの名無しさん:2007/03/20(火) 10:26:06
*=ってどういう意味?
613デフォルトの名無しさん:2007/03/20(火) 10:27:42
a = a * b; と a *= b; が同じ
614デフォルトの名無しさん:2007/03/20(火) 10:38:18
さんくす。
615デフォルトの名無しさん:2007/03/20(火) 11:38:00
a *= bってスタックに積む数が少ないから実行速度a = a * bより早いのかな?
616デフォルトの名無しさん:2007/03/20(火) 11:44:40
>>615
> スタックに積む数が少ない
そもそも、この違いがない、はず。
617デフォルトの名無しさん:2007/03/20(火) 12:44:50
単なる表記法の違いだよね…?
618デフォルトの名無しさん:2007/03/20(火) 13:04:47
a #= b と a = a # b の違いは、aが評価される回数。

x[func()] += y; と x[func()] = x[func()] + y;
だとfunc()の性能によっては大きな速度差が出ることがあるし、
func()が副作用を持つ場合は動き自体が違う可能性もある。
619デフォルトの名無しさん:2007/03/20(火) 13:18:13
a, b をメタ変数と考えるなw
620デフォルトの名無しさん:2007/03/20(火) 14:37:53
完全なインタープリタならいざ知らず、バイトコードまではコンパイルしてるのだから
式の評価順の解析(スタックや逆ポーランドといった)はコンパイル時におわってる。
より短くコードを書くことを良しとしていたCの文法を受け継いでるだけだ。
621デフォルトの名無しさん:2007/03/20(火) 16:16:30
>>620
要するにコンパイラが勝手に最適化するから気にするなでおk?
622デフォルトの名無しさん:2007/03/20(火) 19:12:20
WebappClassLoaderをサーブレット側から手動で動かすにはどうしたらいいですか?
623デフォルトの名無しさん:2007/03/20(火) 20:48:28
eclipseでワークスペース使ってコンソールから窓を開いて3DCGを表示するアプリ作ったのですが

それをアプレットに落とし込むにはどうしたらいいでしょか。
やり方教えて下しア
624デフォルトの名無しさん:2007/03/20(火) 20:52:01
C/C++ だと _ で始まる名前や場所を問わず __ を含む名前はシステムで予約されてるけど、Javaではどうなん?
625デフォルトの名無しさん:2007/03/20(火) 21:09:19
_については制限なし。

$も使えるが、機械生成されたものなど、用途を制限されている。
ただし、「それが望ましい」程度の縛り。
626デフォルトの名無しさん:2007/03/20(火) 21:09:25
>>624
Character#isJavaIdentifierStart も Character#isJavaIdentifierPart も true を返すから '_' 自体は使える。

_ で始まる名前とか __ で始まる名前とかで、予約はされてないはず。

コーディング規約で使わないのを推奨してたか、は忘れた。
627デフォルトの名無しさん:2007/03/20(火) 21:16:04
>>625-626
サンクス。自分でそんな名前を進んで使うつもりはないけど、
いま弄ってるソースでバンバンそんな名前が使われてたから気になってた。
628デフォルトの名無しさん:2007/03/20(火) 21:41:28
>>617
どこにレスを付けるのか迷ったけど、ここにレス付けるわ。
例A
short x = 0;
int i = 123456;
x += i; // エラーなし
x = x+ i; // エラー 精度が落ちている可能性

例B
Object o = "Hoge";
String s = "Test";
o = o + s;// エラーなし
o += s; // エラー 互換性のない型

元ネタ 書籍「Java Puzzlers」
629デフォルトの名無しさん:2007/03/20(火) 22:06:08
>x += i; // エラーなし
なんで?
630デフォルトの名無しさん:2007/03/20(火) 22:18:46
JLS15.26.2を読んでみた。

前者は、複合代入演算
E1 op= E2
の意味するところは
E1 = E1 op E2
ではなく、
E1 = (T)(E1 op E2) // TはE1の型
すなわち、複合代入演算子は暗黙のうちに代入される側の方へのキャストを
行うというのがポイント。

後者は、複合代入演算子が使えるのはプリミティブ型/そのラッパー型、そして
+=については左辺がStringの場合のみ、文字列連結が行われる。
(右辺はどんな型でもよい)
631デフォルトの名無しさん:2007/03/20(火) 22:22:58
>>629
例えば

byte b = 0;
b += 2; // 2 は int型

とかがコンパイルエラーになったらウザいでしょ。
632デフォルトの名無しさん:2007/03/20(火) 23:34:47
JPanelにCanvasをはりつけてCanvasにイメージを描画しようと思ってます。
JPanel内に↓のようなMyCanvasクラスを定義してpaint()を実装しました。

 private class MyCanvas extends Canvas {
  public void paint(Graphics g) {
   g.drawImage(resultImage, 0, 0, null); // resultImageはJPanelのインスタンス変数
  }
 }

JPanelでresultImageが変更されたときにmyCanvas.repaint()を呼んでいるのですが
Canvasのイメージが更新されません(一度、最小化して戻すと表示されてます)
再描画がうまくいってないようなのですがどのようにすればよいでしょうか。
633デフォルトの名無しさん:2007/03/20(火) 23:39:03
- MyCanvasはCanvas(AWTコンポネント)を継承せず、代わりにJPanelを継承
- paintではなくpaintComponentをオーバーライド

でどうか?
634デフォルトの名無しさん:2007/03/20(火) 23:51:18
アドバイスありがとうございます。
ただそれでもだめでした。
paintComponent()でSystem.out.println()やるとちゃんと表示されてるのでrepaint()で
メソッドは呼び出されてはいるようです。
ただはりつけたJPanelに表示はされません・・・

もとのパネル(MainPanel)では
setLayout(new BorderLayout());
imagePanel= new MyPanel();

add(imageCanvas, BorderLayout.CENTER);
ではりつけてます。
635デフォルトの名無しさん:2007/03/20(火) 23:52:10
add(imagePanel, BorderLayout.CENTER)
の間違いでした
636デフォルトの名無しさん:2007/03/20(火) 23:58:52
自己レスです

はりつけたMyPanelのpaintComponent()にsuper.repaint()を入れたらすぐ再描画されました。
貼り付け元のJPanelも再描画する必要があるってことでしょうか・・・
637デフォルトの名無しさん:2007/03/21(水) 00:02:58
関係ないかもしれないけど、
paintComponentでsuper.paintComponentは呼んでる?
638デフォルトの名無しさん:2007/03/21(水) 00:19:55
呼んでます・・・

JFrameの上にJPanelを貼り付けた場合は、paintComponent()ですぐ再描画されてたんですが、今度はJPanelの上にJPanelを貼り付けたからかと疑ってるんですが、関係ないかな。
639デフォルトの名無しさん:2007/03/21(水) 00:25:58
超初心者です。
本を見ると
「swingはAWTと異なり、コンテンペインを取得し、そこにコンテンツを配置する。」
というように書いております。
で、そのとおりgetContentPane()してaddしたらもちろん上手くいきました。
流れとしてはこんな感じで。→new JFrame().getContentPane().add(new JPanel());
その後もしかしてと思って、
new JFrame.add(new JPanel())
ってやっても普通にうまくいきました。
コンテンツペインを取得する必要ってあるんでしょうか?
640デフォルトの名無しさん:2007/03/21(水) 00:35:17
>>638
自己レスですが
g.drawImage(resultImage, 0, 0, this);
で解決したようです。null->thisにしました。
641デフォルトの名無しさん:2007/03/21(水) 00:37:44
>>639
最近のJFrameでは不要。必要に応じて内部でgetContentPane()した先に
要求をたらい回ししてくれる。

642デフォルトの名無しさん:2007/03/21(水) 00:41:07
643639:2007/03/21(水) 00:48:04
おお、、ありがとうございます。
getContentPane()は面倒だけどswingの構造を理解するのに役立ってたので
ちょっと複雑な気分です。
644デフォルトの名無しさん:2007/03/21(水) 13:28:38
jarファイルからカレントディレクトリにある任意のJDBCドライバを読み込ませるようにしたいのですが、
MANIFESTのクラスパスには何と記述すればよいのでしょうか?
.や*.jarでは認識しませんでした。
直接名前指定 or jre/lib/extにドライバを格納するしかないのでしょうか?
645デフォルトの名無しさん:2007/03/21(水) 13:39:51
記述部さらしてみ
646644:2007/03/21(水) 13:49:58
Manifest-Version: 1.0
省略
Class-Path: *.jar xxxx.jar xxxx.jar

Manifest-Version: 1.0
省略
Class-Path: . xxxx.jar xxxx.jar

という感じです。記述の仕方に問題ありますか?
647ひょこたんだお(^ω^ ◆E9k1wjKgHI :2007/03/21(水) 16:21:36
ごめんなすm(^ω^#)m

static Class forName(String className)

の使い方がわかんなひ(;ω;)おっおっお
簡単なソースをいくつかキボンヌッ
(#^ω^)ノたのんだうお
648デフォルトの名無しさん:2007/03/21(水) 16:43:35
>>644
必要なものを明示的に指定するという観点から、
ワイルドカードは使えないんじゃないのかねぇ。

http://java.sun.com/javase/ja/6/docs/ja/technotes/guides/jar/jar.html#Main%20Attributes
使えるとは書いてない。使えないとも書いてない。
649デフォルトの名無しさん:2007/03/22(木) 03:33:29
>>647
ここの
ttp://blog.goo.ne.jp/akubi_2005/m/200601

Mainクラスがいっぱいの時
にソースがあった。
650デフォルトの名無しさん:2007/03/22(木) 10:34:01
独学で苦戦している超初心者です。
自分でもいろいろ調べてみたのですが、困り果てて皆さんのお力に頼ることになりました。
今、コマンドラインに数字を一行で 10,24,35,40 のような形で入力させてそれぞれの数字を表示させるものを作っているのですが、コンパイルをして実行までは出来るのですが、数字を入力したあとにエラーが出ます。
エラーメッセージをググってみたのですが、検索には引っかかるものの「これだ!」というものが見つからなかったのでココに質問させていただきました。
以下にコードの一部とエラーメッセージを記載します。
public static void main(String[] args) throws IOException {
int input[];

System.out.println("数列はカンマ区切りの文字列で入力してください。");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
String numbers[] = str.split(",");

int i=0;
input = new int[i];
while(i < numbers.length){
input[i] = Integer.parseInt(numbers[i]);
System.out.println(i + "つめは" + input[i]+ "です。");
i++;
}

}

以下エラーです。
java.lang.ArrayIndexOutOfBoundsException: 0
at Test.main(Test.java:28)
Exception in thread "main"
*ココでいう28というのがコードの28行目であれば
input[i] = Integer.parseInt(numbers[i]);が28行目にあたります。

どなたか、お助けください。
651デフォルトの名無しさん:2007/03/22(木) 10:39:17
> int i=0; 
> input = new int[i]; 
だれが見てもここだ
652デフォルトの名無しさん:2007/03/22(木) 10:40:31
>650
右辺の numbers[i] ではなく、恐らく input[i] から出ている例外かと。

int i=0;
input = new int[i];

この時点で input[] の要素数はゼロになっているが
それ以降 input[] の要素数を増やしていない以上 input[] の要素数はゼロのままだ。

input = new int[i];



input = new int[numbers.length];

にしてみたら?
653650:2007/03/22(木) 11:07:57
>>652
どうもありがとうございます!解決しました!
答えだけでなく、どこがどのように間違っているかまで答えていただいて
大変勉強になりました。
654デフォルトの名無しさん:2007/03/22(木) 13:47:44
これってどうよ?
http://ja.wikibooks.org/wiki/Java
655デフォルトの名無しさん:2007/03/22(木) 14:13:36
>>654
個人的には、「Javaをはじめよう」以下は要らないような気もする。

char が -32768〜32767になってたり、
「リファレンス型というのは、クラスのことです」とか、間違いもちらほらあるし。

文法とかは、JLS へのリンク貼って終わりで良いとか、
入門者用のコンパイル手順を示すんなら、テキストでやるより
flash movie とかでやった方が親切なんじゃないか、と思ったり思わなかったり。
wikibook に flash 置けるのか知らんけど。
656デフォルトの名無しさん:2007/03/22(木) 15:35:54
>>514
おやおや? Java家電時代の到来か?

将来は、Javaで家電制御を企んでいるのかねー? Jiniかねー?

657デフォルトの名無しさん:2007/03/22(木) 17:43:49
まずはおいしいご飯からお願いします
658デフォルトの名無しさん:2007/03/22(木) 17:45:39
すみませんが、質問です。

HttpServlet のソースコードは、どのソフトに含まれているのでしょうか?
たぶんTomcatにあるのだろうと思っていたのですが、うまく見つけられません。
利用中のTomcat は4.1です。
659デフォルトの名無しさん:2007/03/22(木) 17:59:27
質問です。
HTTP Get のクエリ文字列から、パラメータ名とその値の組み合わせの集合を取
得するには、どうしたらいいでしょう?
660デフォルトの名無しさん:2007/03/22(木) 18:18:15
>>658
classならcommon/lib/servlet-api.jarの中。ソースは入ってないよ。
661658:2007/03/22(木) 18:37:21
>>660
> classならcommon/lib/servlet-api.jarの中。ソースは入ってないよ。

ありがとうございます。ソースはどこで手に入るのでしょうか?
オープンソースですから、どこかで配布はしているはずなのですが。

実は>>659も私なのですが、以下の処理の参考にしたかったのです。
目的:URL文字列からクエリパラメータを手動で取り出す

URL文字列を与えられて、
String url = "http://www.youtube.com/watch?v=pd74BKx0x-w";
ここからクエリ文字列を取り出し、
String qstring = new URL(url).getQuery();
//qstring = "v=pd74BKx0x-w"

ここまではできるのですが、それをパラメータと値に分解する方法が分かりません。
正規表現などで愚直に分けるしかないのでしょうか?
何か既存のAPIがあるのではないかと思うのですが。
662デフォルトの名無しさん:2007/03/22(木) 18:50:24
>何か既存のAPIがあるのではないかと思うのですが。

request.getParameter( "v" )で一発だ。

ソースではなくAPIドキュメントを利用するのがJavaでは普通。
http://sdc.sun.co.jp/java/docs/j2ee/sdk_1.3/ja/techdocs/api/javax/servlet/ServletRequest.html
http://sdc.sun.co.jp/java/docs/j2ee/sdk_1.3/ja/techdocs/api/javax/servlet/http/HttpServletRequest.html
663658:2007/03/22(木) 19:06:03
>>662
ありがとうございます。
HttpServletRequestは与えられていなくて、ただURL文字列だけがあるのです。
だから「手動で」取り出す必要があります。
説明不足ですみません。
664デフォルトの名無しさん:2007/03/22(木) 19:16:22
>>663

ほいっhttp://www.google.com/codesearch
?hl=ja&q=show:WeBMAMCdhTg:T67KRquB4ao:axPaDrtTH9s&sa=N
&ct=rd&cs_p=http://download.nextag.com/apache/
tomcat/tomcat-5/v5.5.17/src/apache-tomcat-5.5.17-src.tar.gz
&cs_f=apache-tomcat-5.5.17-src/container/catalina/src/share/
org/apache/catalina/core/ApplicationHttpRequest.java

このvoid parseParameters()あたりから辿ってけばいんじゃね?
665デフォルトの名無しさん:2007/03/22(木) 19:17:47
ソース tarballには入ってないの?

svnならhttp://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk/
中は見てない。
666658:2007/03/22(木) 20:20:55
>>664
ありがとうございます。どうやら↓のparseParameters()のようです。
これはどのjarファイルにあるのかなあ。
どうも探し方が分かりません。

http://src.opensolaris.org/source/xref/sfw/usr/src/cmd/tomcat/
apache-tomcat-5.5.17-src/container/catalina/src/share/org/apache/
catalina/util/RequestUtil.java

>>665
> ソース tarballには入ってないの?
実装クラスは入っていますが、HttpServletRequest自体のソースは無いようです。
667デフォルトの名無しさん:2007/03/22(木) 20:26:32
質問です。
server.xmlの<context>のreloadable属性が
falseかtrueかの情報を
クラスから取得する方法はありますか?
668デフォルトの名無しさん:2007/03/22(木) 20:26:38
javax.servlet.http.HttpServletRequestはinterfaceだから、
ソース見ても実装情報はないよ。
669658:2007/03/22(木) 20:36:56
>>668
> ソース見ても実装情報はないよ。
それはそうなのですが、ソースが無いと、Eclipseで追いづらいと思います。

なお、RequestUtil.class は catalina.jar に含まれていました。
publicクラスですが、一般ユーザが利用することが適切なのか、よく分かりません。

ところで、どのクラスがどのjarに含まれるのかを簡便に知るにはどうしたらい
いでしょう?

・1つ1つJarコマンドで表示
・拡張子をzipに変えて検索
・片端からEclipseのプロジェクトに組み込んでみる

これらよりもっといい方法はあるでしょうか?
670デフォルトの名無しさん:2007/03/22(木) 20:45:49
>>669
Eclipseで追うだけなら、jadclipseを入れておくとソースがないものは
jadで逆コンパイルしたものを表示してくれたりする。

jar探しは、コマンドラインに苦痛を感じないヒトなので、
jar tfで探すかなー。Eclipseに組み込むのはいい方法だと思います。

671デフォルトの名無しさん:2007/03/22(木) 21:42:42
String url = "http://foo.bar.com/hoge.cgi?a=b&x=y&foo=bar";
String[] params = url.substring(url.lastIndexOf('?')+1).split("[&=]");
これで{"a","b","x","y","foo","bar"}っていう配列ができる。
後は、配列の偶数と奇数で分けて適当に処理すればいけるだろ。
672デフォルトの名無しさん:2007/03/22(木) 21:53:10
>>671
フラグメントがあったら最後の要素が "bar#hoge" みたいにならんか?
673デフォルトの名無しさん:2007/03/22(木) 22:06:09
>>672
なるほど。じゃあこれでどだ。無理矢理1行。
String[] params = url.substring(url.lastIndexOf('?')+1, url.indexOf('#') > 0 ? url.indexOf('#') : url.length()).split("[&=]");
674658:2007/03/22(木) 22:50:29
>>670
ありがとうございます。参考になります。
できたら配布元のサイトでドキュメント化してくれていたら楽なのですが。

>>671-673
標準のAPIには存在しないらしいので、自分もそれなりに書いてみました。

String url = "http://www.youtube.com/watch?v=pd74BKx0x-w";
String q = new URL(url).getQuery();
Map<String, String> map = new HashMap<String, String>();
for (String pv : q.split("&")) {
    String[] p = pv.split("=");
    map.put(p[0], p[1]);
}
675デフォルトの名無しさん:2007/03/22(木) 22:53:43
a=&x=yみたいに値がないパラメタがあったらうまくいかない気がする。
676デフォルトの名無しさん:2007/03/22(木) 22:55:13
675は>>673ね。

>>674
たいていはそれでいいけど同じキーの値が複数あったらうまくいかないので注意。
677デフォルトの名無しさん:2007/03/22(木) 22:58:46
パラメータ間の区切りに最近は;も使うので、汎用性から言ったらこれも認識する
とよい。
>>675のケースを回避するために、まず &(および; )だけで区切り、そののち=で
分解するといいだろう。
>>676を考慮するならmapの値側をコレクションクラスにする必要がある。
678デフォルトの名無しさん:2007/03/22(木) 23:26:33
書式指定子について教えてください。
ある本で↓みたいなのがでてきたんですが、%が多くて何やってんのかよくわかりません。

System.out.printf(String.format("%%2d | %%%dd\n", n), r, x);

%dで10進数に変換。2は2桁の長さを表す。ということはわかったのですが、
引数に対して書式指定子がやたら多いような気が・・・
メソッドが入り子になってるからややこしいんでしょうか?
そもそもformat()の第2引数 n は何に変換されるんでしょう?
679658:2007/03/22(木) 23:27:54
>>675氏のケースに対応
String[] p = pv.split("=");

String[] p = pv.split("=", 2);

自分の用途には>>676氏のケースはなさそうなので、これで何とかなりそうです。
ありがとうございました。
680デフォルトの名無しさん:2007/03/22(木) 23:35:52
%%が%そのものになるというのは理解してる?

順番に書くと、
String format = String.format("%%2d | %%%dd¥n", n);
System.out.printf(format, r, x);

たとえばnが5だと最終的には System.printf("%2d | %5d¥n", r, x) を行う。

# 一つ指摘しておくと、フォーマット指定として改行を記述するには¥n
# ではなく%nを使うべき。
681デフォルトの名無しさん:2007/03/23(金) 01:30:23
すみません、XPathAPIを使って、以下のXMLから<media:thumbnail> のurl属性
を取得するには、どのようにXPathを記述したらいいでしょうか?

http://video.google.com/videofeed?fgvns=1&fai=1&docid=507732229697832036&hl=en
(以下、抜粋)
<rss>
<channel>
<item>
<media:group>
<media:thumbnail
  url="http://video.google.com/ThumbnailServer2?app=vss&contentid=
c5ed681df175c4b0&offsetms=5000&itag=w320&lang=en&sigh=8GjvM1prox25GC-jte15jydXiAA"
  width="320"
  height="214" />
</media:group>
</item>
</channel>
</rss>

以下のページなどを参考にしているのですが、具体的な記述が無くて困っています。
http://msugai.fc2web.com/java/XML/XPath.html
682デフォルトの名無しさん:2007/03/23(金) 02:18:50
java関係ないね。と言っても該当スレがここしか見当たらない。

ttp://pc11.2ch.net/test/read.cgi/tech/1133280488/l50

683681:2007/03/23(金) 02:31:04
>>682
すみません、XPathAPIに固有の問題もあるかと思い、こちらで質問しました。
例えば、.NETならこんなページがありますが、
http://www.atmarkit.co.jp/fdotnet/easyxml/easyxml05/easyxml05_03.html
この内容(addNameSpace)はJavaでは使えないようです。
684デフォルトの名無しさん:2007/03/23(金) 02:39:18
XmlNamespaceManager site:w3c.org
に該当するページが見つかりませんでした。

おや?
685デフォルトの名無しさん:2007/03/23(金) 04:58:49
>>681
>どのようにXPathを記述したらいいでしょうか?

こういう事聞くレベルなら仕様を理解してない。実装されたAPI以前の問題。て言うかW3Cの仕様に対してMSの実装出してくるなんて釣りにしか見えないんだが・・・。

>XMLから<media:thumbnail> のurl属性
を取得する
ロケーションパスの書き方は分かるのか?

>>684
.NETのクラス名がw3cのページでヒットするわけ無いだろ。煽るならもっと頭使え。
googleくらい使えるようになろうな

xpath site:http://www.w3.org/
    ~~~~~~~~~~~~~~~~~~~~~~~~
686681:2007/03/23(金) 05:12:15
すみません。
>>685
>
> こういう事聞くレベルなら仕様を理解してない。実装されたAPI以前の問題。
> て言うかW3Cの仕様に対してMSの実装出してくるなんて釣りにしか見えないん
> だが・・・。

おっしゃるとおり、よく理解しておりません。

> >XMLから<media:thumbnail> のurl属性
> を取得する
> ロケーションパスの書き方は分かるのか?

おそらく、
/rss/channel/item/media:group/media:thumbnail/@url
ではないかと思うのですが…。
687681:2007/03/23(金) 05:18:48
追記です。
よく分かっていないのは、名前空間の扱いです。
.NETの実装を見て、JavaのXPathApiにも、addNameSpace にあたる関数があるの
だろうと考えたのですが、それを見つけられなくて困っていました。
688デフォルトの名無しさん:2007/03/23(金) 09:54:40
>>685は、XmlNamespaceManagerなんぞw3c標準にないのに知るかよ!
という回答するつもりだった人からのピーデーの某氏へのイヤミです。
689デフォルトの名無しさん:2007/03/23(金) 09:55:34
×という回答するつもりだった人からの
○という、回答するつもりだった人からの

「、」いっこ抜けて意味が変わってるしorz

690デフォルトの名無しさん:2007/03/23(金) 12:06:23
ログを解析するアプリケーションを作りたいのですが、SwingやAWTで
UI部分を作り、エンジン部分をC言語で作る事は出来るのでしょうか?

出来る場合、JAVA側(UI)とC側(エンジン)とのやりとりはどのような
感じになるのでしょうか?

C言語は少し経験ありますが、JAVAはまったくの初心者です。
よろしくお願いします。
691デフォルトの名無しさん:2007/03/23(金) 12:11:49
出来る。

やりとりはソケットを使う/JNIを使うなど。
692デフォルトの名無しさん:2007/03/23(金) 12:15:33
>>691
即レスありがとうございます
その単語でぐぐったら期待通りのAPIがHITしました!
693681:2007/03/23(金) 12:54:47
自己フォローです。

Java XPath API
http://www-06.ibm.com/jp/developerworks/java/060906/j_x-javaxpathapi.shtml
> しかし、pre という接頭辞を、http://www.example.com/books という URI
> にマップする必要があります。NamespaceContext インターフェースが
> JDK(Java software development kit) や JAXP にデフォルトで実装されてい
> ないのは多少ばかげた話ですが、実際にないのです。

この後、記事は「名前空間マッピングクラスを自作する」ことになります。ど
うなってるの?何か意見の対立と混乱があるように見えます。

ちょっと使おうと思っただけなのに。弱りました。
694デフォルトの名無しさん:2007/03/23(金) 13:05:58
PS3でFolding@homeが利用可能になりました!
タンパク質解析プロジェクトFolding@homeで病気で苦しむ人達を救えるかも。

PS3でFolding@homeしようぜ(Team 2ch)
http://ex22.2ch.net/test/read.cgi/ghard/1174030817/

チーム番号:162
チーム名:Team 2ch
http://fah-web.stanford.edu/cgi-bin/main.py?qtype=teampage&teamnum=162

☆PS3での参加方法
PS3からFolding@homeを起動し、チーム番号162に入力すればOK。
ユーザ名は何でも良いが、http://folding.stanford.edu/japanese/download.html
にて、名前が既に使われているかどうか確認する事を推奨。
参加の確認としては、「オプション(△)」→「関連サイト」→「チーム処理統計量」と開き、
「Team 2ch」(上記URLのページ)が表示されればちゃんと参加できている。
☆Folding@homeについて
http://folding.stanford.edu/japanese/
695デフォルトの名無しさん:2007/03/23(金) 14:02:20
File#mkdirsが失敗した場合に
その原因を取得する方法ってありますか?
696デフォルトの名無しさん:2007/03/23(金) 14:23:47
>>695
無いよ。
SecurityManager が許可しない場合だけは例外もらうから分かるけど。

mkdir() する前に、作ろうとするディレクトリが既に存在しても失敗するし、
同名ファイルがあってディレクトリ作れなくても失敗するし、
ディレクトリの名前が不正な場合 名前が長すぎたり名前に使えない文字が含まれたり でも失敗するし、
ファイルシステム上の権限がなくてディレクトリを作れなくても失敗する。
697デフォルトの名無しさん:2007/03/23(金) 14:28:48
>>696
そうなんすか…orz
一応isDirectory()で存在しない時だけ作るようにはしてるんですが
何で失敗したのかわからないとどうしようもない…
698デフォルトの名無しさん:2007/03/23(金) 20:47:55
>>693
そもそもAPIは何使ってんだ?JAXP1.3以上?

名前空間のバインディングなんてアプリケーションによっては必要ないし
バインドするプレフィックスの数によってデータ構造なり検索アルゴリズムの
最適な実装が変わるから汎用な物は作れないから実装を用意するのは無駄。

バインダくらい自分で書け。愚痴しか書いてないじゃないか?
699デフォルトの名無しさん:2007/03/23(金) 23:10:02
よろしくお願いします。完全に手詰まってしまいました。

環境-
マシンA(開発機):Windows XP Pro、IIS6、WebLogic8.1、JavaSDK1.4.13
マシンB(評価機):Windows Server 2003、IIS6

マシンAで開発、デバッグしてOKなものをマシンBに置き換えています。
それぞれにサーブレットクラス1と固定値が書いてあるfinal staticメンバがいるクラス2があります。
マシンAとマシンBではクラス2のfinal staticメンバは違う値が書いてあります。

マシンAでリコンパイルしたクラス1をマシンBに置き換えます。
その後WebLogicを再起動後、マシンBを動かしてみると
マシンBでクラス1が参照しているクラス2のfinal staticメンバ変数が
マシンAの値となり、エラーが出てしまいます。
クラス2は置き換えていないのに、エラーになってしまいます。

どこかに値がキャッシュされてるとしか思えない動きなのですが、
APサーバを再起動しているのにそういうことがありうるのか、まったくわかりません。

700デフォルトの名無しさん:2007/03/23(金) 23:16:48
キャッシュでハマることはまああるけどそのパターンならキャッシュ以前の話。
マシンA.クラス2をマシンBに"一度も"持っていったことがないはずなのに
マシンA.クラス2の値を参照しているなんておかしい。
なんらかの形でいっしょに持っていってしまったとしか思えない。
701デフォルトの名無しさん:2007/03/23(金) 23:16:54
最適化されてクラス1にその定数の値が埋め込まれちゃってんじゃないの?
702デフォルトの名無しさん:2007/03/23(金) 23:22:43
703デフォルトの名無しさん:2007/03/24(土) 01:13:54
質問です。サーブレットとJAVAって違うの?
704デフォルトの名無しさん:2007/03/24(土) 01:24:06
>>703
質問です。ゴキブリと害虫って違うの?
705681:2007/03/24(土) 01:59:52
XPathについての自己フォローです。おそらく解決しました。

何が分からないのか自体をよく分からず調べていたのですが、まとめるとこう
なります。

・XPathの名前空間と接頭辞のバインディングの設定の、Javaでの標準的な方法
 は何か?
→完全には決まっていない。それを規定するNamespaceContextは、インター 
 フェースだけしかなくて、実装がない。

・なぜ決まっていないのか?
→単にまだ出来ていないだけ。JAXPは現在1.3だが、1.5までには何とか。

・じゃあ、どうしたらいいのか?
→自分で非標準の実装を作るか、privateな内部クラスで使い捨てにするか、ま
 たは有志の作ったライブラリを利用するか。

・こういう大事なことがXPath単体でできるようになっていないのはなぜか?
→XPathはもともとXSLTのためのもので、XSLT自体がXMLだから、XSLT内に名前
 空間宣言をそのまま書けば済んでしまう。

実はXPathを知ったの自体がつい一昨日で、うまく調べられず、ずいぶん無駄な
回り道をしてしまいました。結局、

http://norman.walsh.name/2006/03/28/jaxpNamespaceContext
http://www-06.ibm.com/jp/developerworks/java/060906/j_x-javaxpathapi.shtml
初見では分からなかったのですが、これらにほぼすべてが書かれていました。

解決に当たって、このスレのやり取りも非常に参考になりました。ありがとう
ございます。特に>>685, >>698さんには深く感謝します。
706デフォルトの名無しさん:2007/03/24(土) 02:27:26
質問者の見本みたいな人だ
707デフォルトの名無しさん:2007/03/24(土) 02:33:26
>>681以外の質問者のほとんどがクズに見えてきた
708デフォルトの名無しさん:2007/03/24(土) 03:49:46
お前ら冷静になって良く見てみろ。箇条書きにしてるだけで結局は

仕様が定める範囲と実装がサポートする範囲と自分で実装しなきゃいけない部分を理解してないし

そもそもどのコンテキストでXPathを使いたいのか一度も言ってないんだぞ?
XSL内でロケーションを表すのに使うのかプログラム中に直接叩きたいのかすら分からず仕舞だぞ?何を教えろと?

事後報告は当然の事だ。


#XPointerの事もたまにで良いので思い出してあげて下さい。
709デフォルトの名無しさん:2007/03/24(土) 10:37:35
できて当然のことでも褒めないと人は伸びない
710デフォルトの名無しさん:2007/03/24(土) 12:03:27
>709ごめんなさい…
711デフォルトの名無しさん:2007/03/24(土) 12:13:29
               |/
          _., .,、._,r hh.、 y...u,_ 、 、.,.,
        .yl!).彳}゙.^゙冖^^^゙゙'⌒゙゙「{ .〕:!|ァ_ l.r.
       .rl!.「.゙.′            .゙.^゙「.|^|'!.,.ri,、
    _,.u:l 「″        _,..vv-─--v、、.,__゙ ´「 リ゙ .r
  .-i(┴^        ,.v‐ ′    i!、  厂^'ー、_ .'゙/
 .,l|         .,.‐'゙r  '=,  .|ト!  ..     /_ ┘ _,
.[.′      .,r(,,vv!冖h厂 _,、、、,_ ¨゙()   .゙゙il|リ冖ミ(ミ,.l|/レ'
.||     _,yr!^″    [.zli》ニ《)ミ|l;, |ノ冖ーu「.,zzzzy,{丁′
.!ミ   .yr(l「′      〔″    `.,i^   .〔.!!干「「)v)《フ
i|  __,/′.}     .    \,,,,,_,,,,,,vr″    .゙)z    ,メ゙'ly
|゙/|レr》!  }     .}..       /,v--r ,、u_:rフ'¬ー^″ ゙ミ
》゙|′ .ミ .|     .∨   ,、    {lzトrr┘ \从,,)     }:! .《
}}.,rー ミ,,ェ    ,     .'|フ      .,,zu厶  ̄     ゙'^ l!
゙|从  》″    | r          -:(工ェ」zミv_   n.    〔   
.》ト  .′    ∨       7vv=(干=─干ミl||l,_,z ″    》
.《l,_ .'|!                 .__     , . ゙̄..      〕
 《^¨′                 .゙冖'^^'''冖   v\    }
 [      、        .           〕   〔 .′ .」_ .ll′
 .|      | 」       ._}         .hノ   .:| ,.. .,.トト 〕
 .}     .^′      ゙《,_           .、,ノ ...厂、 .il
  }          _  .、 .゙゙'〜 .y,_      _,r;|¨ <、、‐ . ノ
  .{,         〔 」  ´ ‐ 「ilリiアアァァァ;lllllli(リ゙} ┌ 冫.. .ア
   \        ∨゙ . _ .- . ' .`゙厂¨厂゙厂'. .゙ 、' .゙. ヽ‐,r|
   .ノy           .´ 、 .: ' ..:  .、 ' ` ' _ . .冫 -.',y;|^
712コン:2007/03/24(土) 13:30:20
jsp試したいのにトムキャットの設定がむずくてだめです。
エクリプスは動くし、しかしエクリプスでトムキャットはだめ、
どこかいいサイトあったら教えてください。

713デフォルトの名無しさん:2007/03/24(土) 14:25:14
>712
オレかよ(:D)| ̄|_ =3=3
714デフォルトの名無しさん:2007/03/24(土) 14:30:17
NetBeans使えばバンドルされてるからそれ使えばいいと思う。
設定が難しいってのには?だが、まあやりたい事の主品はそこじゃないだろうしね
715デフォルトの名無しさん:2007/03/24(土) 17:01:50
マウスカーソル消す方法ご存知ないですか?
Cursorクラス見てもそれらしい設定がないです・・・:
716デフォルトの名無しさん:2007/03/24(土) 17:53:52
>>715
カーソルを消したいComponentでjava.awt.Component#setCursor(Cursor cursor)を使え。
cursor = Toolkit.getDefaultToolkit().createCustomCursor(new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB), new Point(), "");
与えるImageについては別にこれでないといけないということはない。

Cursorクラスのドキュメントから全て辿れるぞ。もっとドキュメントの読み方を勉強汁。
Component#setCursorはクラス説明の関連項目から。
Toolkit#createCustomCursorはコンストラクタの説明から。
717デフォルトの名無しさん:2007/03/24(土) 17:54:18
>>715
java.awt.Toolkit#createCustomCursor(Image, Point, String); に透明な Image 渡す
718デフォルトの名無しさん:2007/03/24(土) 18:31:05
初歩的な質問で恐縮ですが、

<head>内に<link rel="stylesheet" type="text/css" href="css/style.css">

と入れるとjavaが動いてくれません。
色々手は尽くしてみたのですが・・
原因はなんでしょうか?

よろしくお願いします。

<link rel="stylesheet" type="text/css" href="css/style.css">
↑の一行を外すと動作してくれます。
719デフォルトの名無しさん:2007/03/24(土) 18:36:25
>>718
style.cssの中でアプレットを無効化してない?
720718:2007/03/24(土) 18:44:59
>>719さん
早速のご返答ありがとうございます。
今確認してみましたが、無効となるような設定はしていないようです・・
721デフォルトの名無しさん:2007/03/24(土) 18:58:38
実は動いているけど見えないだけとか。
APPLET {
width: 0%;
}
こんなあからさまなのは無いと思うけど。
もう少しcssやhtmlの中身が分からないと何とも言えない。
linkタグやスタイルシートの有無でアプレットの動作が変わるなんて、どちらかというとweb製作板向きの話題かもしれんね。
少なくともその1行が無ければアプレット自身は動作しているわけだし。
もしくは、linkタグやcssの中身をアプレットで検知して動作を変えてるとか…はさすがに無いか。
722デフォルトの名無しさん:2007/03/24(土) 20:08:06
というかCSSファイルの内容の一部を削除していけば、どこが原因かわかるでしょ?
ファイル名に/が入ってもいうんだっけ?
723715:2007/03/24(土) 21:01:33
>>716
>>717
アドバイスありがとうございます。
無事消せました。
724デフォルトの名無しさん:2007/03/24(土) 21:10:57
>>718
css晒せ
725デフォルトの名無しさん:2007/03/25(日) 10:14:55
>>712
TOMCAT_HOME\bin\startup.bat
だけで動くじゃん。ハマるぐらいならeclipse経由で起動する必要ない。
726じゃぎ:2007/03/25(日) 11:22:28
こんにちわ。

同一Webアプリケーション内の二つのサーブレット間で
同じ情報を共有したり、同じ情報を恒久的に持っていたりという意図に、
どちらかのサーブレットクラス内、あるいはその他、アクセス可能な
クラス内のStaic変数を使ったりするのはいけないんでしょうか。
また、Static変数内のものがSerializableかどうかの有無にも関係
ないんでしょうか。

ここのページのリスト3のように
ttp://www.atmarkit.co.jp/fjava/rensai2/jspservlet07/jspsevlet07_2.html

application.setAttribute("counter",intCnt);
として、applicationや、ServletContextのset(get)Attiributeを使う例を
良く見るんですが、モヤモヤしていて迷っています。。よろしくお願い致します。

過去ログでもうまくみつけられなかったんですが、もし関連したページが
あるようでしたら、二言、三言キーワードのようなものを投げて頂ければ
ありがたいですます。
727デフォルトの名無しさん:2007/03/25(日) 11:34:40
public static int
728デフォルトの名無しさん:2007/03/25(日) 11:39:47
そのServletクラスに属するべき情報かどうかで使いわけるべき。
「特定のServletクラスが持つ情報」ではなく、
あくまで「複数Servletクラス間で平等に共有するべき情報」なのであれば
ServletContextを使うほうがいいだろうね。
729じゃぎ:2007/03/25(日) 11:50:02
早速ありがとうございます。
ちょっと心配だったのは、Static変数にした場合、一時的には良くても、
ガベージコレクションなどが行われた際に、必ずしも値が保障されなく
なったりするのかな。。とか思ったりしてましたが、心配しなくても良い
ものなのでしょうか。
あつかましくて申し訳ありませんが、よろしければ、そのあたりのご教授
も頂ければ幸いに思います。
730デフォルトの名無しさん:2007/03/25(日) 11:51:50
GCがstatic破壊するなら何を信じればいいんだろう
731デフォルトの名無しさん:2007/03/25(日) 11:51:59
お願いします。例えば
if (list != null && list.size() > 1) {...}
でlistがnullの場合、以降の条件式は評価されないようなことに
名称はありますか?
また、他の言語では違ったりしますか?
732デフォルトの名無しさん:2007/03/25(日) 12:02:25
GCがクラスローダを回収したらstatic修飾子つきも回収されるけどな
733デフォルトの名無しさん:2007/03/25(日) 12:08:09
>>731
>以降の条件式は評価されないようなこと
特に名称は無い。
が、言い方としては「評価が打ち切られる」などと言われることが多い。

>他の言語では違ったりしますか?
C言語なども || や && に限ってはJavaと同じく左から評価される。
ただし、+-*/などの評価順はC言語では不定(決まっていない)。
右から評価されたり、ランダムに評価される実装の言語もあると思う。
734デフォルトの名無しさん:2007/03/25(日) 12:08:40
>>731
ショートサーキット評価
735デフォルトの名無しさん:2007/03/25(日) 12:11:48
>>734
ショートサーキット評価 の検索結果 約 988 件中 1 - 10 件目 (0.17 秒)

知名度は低いな。
736デフォルトの名無しさん:2007/03/25(日) 12:13:19
そうじゃない言語があるとしたら
わざわざif文を入れ子で書かないといけないのか。つらいな
737デフォルトの名無しさん:2007/03/25(日) 12:19:26
>>736
VBとか、そうなんじゃなかったっけ
738デフォルトの名無しさん:2007/03/25(日) 12:19:33
>>736
ヒント: ( )で括ればそれが先に評価される

if (((a=1) || b=1) && c=1) foobar;
739731:2007/03/25(日) 12:21:18
>>733 >>734
ありがとうございます。
昔勉強したときに名前が付いていた気がしていたのですが、
質問される立場になったときに、思い出せず、もやもやしてました。
やっとスッキリしました。
740デフォルトの名無しさん:2007/03/25(日) 12:22:34
>>738
いやいや、カッコでくくってもc=1は評価されてしまうから
>>731の例だとぬるぽじゃん?
741デフォルトの名無しさん:2007/03/25(日) 12:55:59
http://en.wikipedia.org/wiki/Short-circuit_evaluation
俺もショートサーキットという言い方で覚えていたので、
ぐぐったら少なかった(1000行かない)というのは意外。

742じゃぎ:2007/03/25(日) 13:52:34
>>730 >>732
ありがとうございます。setAttributeのほうが、特別推奨される理由が
あるとすれば、ガベコレのようなところかなと、つたない頭で考えてました。
>>728さんにも、スッキリさせて頂きまして、ありがとうございました。
これで安心してサーブレットいじれます。
743デフォルトの名無しさん:2007/03/25(日) 14:09:49
ショートサーキット評価 988件
ショートサーキット演算子 618件
短絡評価 590,000件
短絡演算子 27,500件

訳したら増えたw
744デフォルトの名無しさん:2007/03/25(日) 14:12:28
>>743
しむらー、ぶんかつぶんかつー
745デフォルトの名無しさん:2007/03/25(日) 14:33:32
""でくくったら激減。

"ショートサーキット評価" 224件
"ショートサーキット演算子" 213件
"短絡評価" 304件
"短絡演算子" 124件

こんなもんなのか。
746デフォルトの名無しさん:2007/03/25(日) 16:23:20
バイナリファイルを比較する簡単な方法はないでしょうか? ……まぁ、

(1)サイズを比較して違ってたら無条件でOUT
(2)サイズが同じだったらストリームを二つ開いて、バイト単位で順次比較

とすればいいだけの話ですが、こんなの誰かが作ってるような気がしまして(汗)
747デフォルトの名無しさん:2007/03/25(日) 16:25:18
MD5で比較
748デフォルトの名無しさん:2007/03/25(日) 16:38:31
java.security.MessageDigest(のサブクラス)もありますな。
749デフォルトの名無しさん:2007/03/25(日) 16:51:17
ダイジェスト作る時間があれば順次比較が終ってるだろw

>>746
バイト単位の比較でもいいけど、int単位とかで、もっとまとめてやってもいいかもね
750デフォルトの名無しさん:2007/03/25(日) 16:55:03
てきとーなブロック単位でダイジェスト比較していくと効率がいいかもな。
751デフォルトの名無しさん:2007/03/25(日) 17:05:39
>>749
>>746は簡単に実装できる方法を求めてるから速度は二の次なんじゃないかね?
そういう意味でAPI使ってハッシュを求めさせるのはコーディングが簡単だし悪くない方法だと思う。
でも、コリジョンの可能性があるから、同一ハッシュ=同一バイナリとは言い切れないのが問題。
752デフォルトの名無しさん:2007/03/25(日) 17:14:11
>>750
お前、馬鹿だろ。

>>751
ハッシュ求めるより順次比較のほうが簡単じゃないか?
753デフォルトの名無しさん:2007/03/25(日) 17:23:44
あらかじめ MD5ハッシュが算出してあれば、それ比較してもいいけどね。
754デフォルトの名無しさん:2007/03/25(日) 17:27:46
>>751
無駄な上に不確実で最悪な方法だと思うが。
755デフォルトの名無しさん:2007/03/25(日) 17:28:33
質問主は誰かもう作ってるんじゃないか?
っていう質問してるのにお前等ときたら…
756デフォルトの名無しさん:2007/03/25(日) 17:41:56
ハッシュ算出してあるときの話じゃない。
ハッシュを算出するには算出する範囲のビットを全部見る必要がある。
それなら見た時点でお互いを比較すれば済む話。
757デフォルトの名無しさん:2007/03/25(日) 17:50:16
>>755
commons IO の org.apache.commons.io.IOUtils.contentEquals(InputStream,InputStream)
758デフォルトの名無しさん:2007/03/25(日) 17:57:35
これでいいじゃん。MessageDigestも使ってるし、みんなはっぴー。
標準APIじゃなくていいのならapache.commonsにあったと思うが。
public static void main(String[] args) throws Exception {
File file1 = new File(args[0]);
File file2 = new File(args[1]);
boolean flag = true;
if (file1.length() == file2.length()) {
FileInputStream in1 = new FileInputStream(file1);
FileInputStream in2 = new FileInputStream(file2);
byte[] buf1 = new byte[1024];
byte[] buf2 = new byte[1024];
while (in1.read(buf1) >= 0) {
in2.read(buf2);
if (! MessageDigest.isEqual(buf1, buf2)) {
flag = false;
break;
}
}
in1.close();
in2.close();
} else flag = false;
System.out.println(flag);
}
759758:2007/03/25(日) 18:00:02
書かれてたorz
760デフォルトの名無しさん:2007/03/25(日) 18:02:56
>>758
一致しないときもストリームをcloseした方が綺麗
761758:2007/03/25(日) 18:05:47
ん?閉じてると思うけど?まあ途中で例外出たらだめだけど。
762デフォルトの名無しさん:2007/03/25(日) 18:11:49
>>761
すまんwhileの外だった
}の数を見誤った
でもそれはMessageDigestを使ってるといえるのかw
763デフォルトの名無しさん:2007/03/25(日) 18:37:18
ハッシュ(MD5)は予めそれがわかっている場合やそれを保存しておいて
後から再利用するってことならまだ分るんだが、そんな前提もなしに
ハッシュを勧める莫迦がなんでこんなにいるんだ?
764デフォルトの名無しさん:2007/03/25(日) 22:06:41
Stringクラスの説明で
「文字列は定数です。この値を作成したあとに変更はできません。」
ってあるんですけど、

String str = new String("123456789");
str = "1";

こんなふうにあとから代入しても、コンパイルエラーも出ず、代入した文字列が表示されるんですけど
変更できないってどういう意味なんですかね?
765デフォルトの名無しさん:2007/03/25(日) 22:14:57
>>764
"abcde"="12345"
ってできないってことだ
1=3と同じ
766デフォルトの名無しさん:2007/03/25(日) 22:19:50
>>764
それは、変数の参照先オブジェクトが入れ替わっただけ。
"123456789"で初期化したオブジェクトそのものの内容は変更できない。
767デフォルトの名無しさん:2007/03/25(日) 22:54:13
>>764

str → "123456789"

だったのが

    "123456789"

str → "1"

になるってこと。元のインスタンスは破壊されない(参照が無くなればガベコレはされるけど
768デフォルトの名無しさん:2007/03/25(日) 23:15:47
HttpURLConnectionでHTMLソースをUTF-8でゲットしてくる際に
文字化けしてるかどうか判定する事ってできますか?
769デフォルトの名無しさん:2007/03/25(日) 23:29:55
>>763
> ハッシュ(MD5)は予めそれがわかっている場合やそれを保存しておいて
> 後から再利用するってこと
だとしても分かっちゃだめだろ。ファイルが一致することの証左にはならん。
770デフォルトの名無しさん:2007/03/26(月) 00:07:21
ネットでダウンロードするときに付属してることのあるハッシュコードは
飽くまでパリティチェック的な意味合いでしか使われてないと思う
771デフォルトの名無しさん:2007/03/26(月) 01:31:26
>>768
httpのヘッダ見れば良いんじゃね?
772デフォルトの名無しさん:2007/03/26(月) 01:47:51
Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version n
umber in .class file
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)
続行するには何かキーを押してください . . .

知り合いに聞いたところjavaとjavacのverをあわせれば良いといわれたんですが
よくわからない・・誰かたのんます!
773764:2007/03/26(月) 01:58:19
回答ありがとうございます。理解できました。
String型の疑問がまだあるんですが、よければ回答お願いします。

メソッドに引数として参照型を与えて、その値を変更すると、int等の基本データ型とちがって
参照先の値が変更されますよね。
そこでメソッドの引数をString型にして、値を変更しても、参照変数が指しているオブジェクトは
変わらないんですが、これは値渡しみたいな事が行われてるんですかね?
それともまだ何か勘違いしているんでしょうか

static void method( String str ){
str = "java";
}
main{
String str = new String("123456789");
method( str );
System.out.println( str );//123....が表示される
}

説明下手だったらすいません。
774デフォルトの名無しさん:2007/03/26(月) 02:08:03
JavaはCと同じくすべて値渡しだ。
参照型であろうとC++のような参照渡しはないので
変数の「指し先」が関数呼び出しで変化することはない。
当然「指し先の内容」が変化することはありえる。
775デフォルトの名無しさん:2007/03/26(月) 09:35:53
カエレ!
776デフォルトの名無しさん:2007/03/26(月) 09:42:26
>>774
ネタで言ってるんだよな?
777デフォルトの名無しさん:2007/03/26(月) 09:59:07
Javaはすべて値渡し。これはもはや常識!
778デフォルトの名無しさん:2007/03/26(月) 10:41:15
参照を値渡しする、と言わないと分からない人は一生分かりませんよ。
779デフォルトの名無しさん:2007/03/26(月) 10:47:12
参照を値渡しするのとは違うだろ
Javaはこの辺りが変
780デフォルトの名無しさん:2007/03/26(月) 10:53:44
コネクションプーリング使うにはネット使わないといけないのね。orz
コネクションプールができなくて、3日も鬱になったジャマイカ。
781デフォルトの名無しさん:2007/03/26(月) 11:12:57
じゃばでぱけっとのもにたりんぐはできますか?
782デフォルトの名無しさん:2007/03/26(月) 11:28:53
>>779
どう違ってどう変なのか説明plz
783デフォルトの名無しさん:2007/03/26(月) 11:34:34
C++の参照もあれはあれで参照を狭い意味で使ってるから、
あれしか知らないで参照を語られても困るよな。
784デフォルトの名無しさん:2007/03/26(月) 12:05:48
>>773
> str = "java";
その例だと参照型の値を変更してるのではなくて、
参照先そのものを変更してる。

// 甲
static void method(Calendar c){
 c.add(....);
}

// 乙
static void method(Calendar c){
 c = Calendar.getInstance();
 c.add(....);
}

甲を呼び出した場合、呼び出し元の c は値が変更されてるが
乙を呼び出した場合、呼び出し元の c は値が変更されない。
乙内で参照される c は新たに別の Calendar オブジェクトを参照してるため、
呼び出し元の c に影響を与えないから。
あなたの例は乙に近い。

なお、String には Calendar の add に相当するような、内部の状態を変更するメソッドはない。
(あると不変オブジェクトではなくなってしまう。)
replace も substring も、返り値として String を返す。
元の String を参照しても、replace、substring される前の値と全く変化ない。
785デフォルトの名無しさん:2007/03/26(月) 12:11:28
>>783

C++でオブジェクトA,Bに関して
A=Bとやると痛い目にあう、それは動的アドレスのコピーであるから(純粋な参照)。
JAVAの場合はポインタの概念は無い。
JAVAの場合、A=Bはオブジェクトの代入を示す。
非常に荒っぽい言い方だと、JAVAのソースではオブジェクトの代入はstrcpy、すなはち代入。
だが、JAVAの場合、参照先の値を変えてやると参照元の値も自動的に変わってくれるという、
Cの参照とも純粋な値渡しともつかない擬似参照になる。
おそらく参照元が値を使用する時、毎回値渡しを使用してるのか。
JAVAの参照は便利だがあやふやではある。
786デフォルトの名無しさん:2007/03/26(月) 12:13:25
訂正
非常に荒っぽい言い方だと、JAVAのソースではオブジェクトの
参照は
~~~~~
strcpy、すなはち代入。
787デフォルトの名無しさん:2007/03/26(月) 13:50:09
>>773
>new String("123456789")

関係ないけど"123456789"自体がString型のインスタンスだからそれは冗長
というかなんで不変オブジェクトにコピーコンストラクタがあるのか謎なんだけどたぶん設計ミスだな
788デフォルトの名無しさん:2007/03/26(月) 14:14:05
>>785
> オブジェクトの代入はstrcpy
え?
789デフォルトの名無しさん:2007/03/26(月) 14:21:00
少し前のレスくらい読めよ・・・
790デフォルトの名無しさん:2007/03/26(月) 14:26:30
とっても初心者なのですが
戻り値の意味がわかりません
return文とか適当に使っていたもので…
791デフォルトの名無しさん:2007/03/26(月) 14:42:42
>>789
わからない。代入がstrcpyてどこ読めば理解できる?
792デフォルトの名無しさん:2007/03/26(月) 14:43:22
ああ、代入じゃなくて参照てことか。
どっちみちわからん。
793デフォルトの名無しさん:2007/03/26(月) 15:01:00
>>787
new で明示した場合は文字列リテラルが同内容でも共有されなくなる。
結局JITで最適化される気がするけど・・・

お前ら丁度いいとこ見つけたからここ嫁!
ttp://javafaq.jp/S008.html

ちなみにJavascriptの文字列リテラルにメソッド適応した場合インタプリタが内部で文字列リテラルをStringオブジュクトにラップして捨てる。

つまり、javaと違って文字列リテラルとStringオブジェクトは違う。javaのStringBufferの感覚だ。
ていうかプリミティブ型の単純値は全部Object型のラッパー持ってる。

名前が似てるけど別物って良い例。
ttp://developer.mozilla.org/ja/docs/Core_JavaScript_1.5_Guide:Predefined_Core_Objects:String_Object
794デフォルトの名無しさん:2007/03/26(月) 16:53:39
>>784
丁寧な説明ありがとうございました。
メソッド内で新しいオブジェクトへの参照が変数に代入されているので
呼び出し元では元のオブジェクトを指しているままなんですね。
795デフォルトの名無しさん:2007/03/26(月) 17:20:55
>>794
そういうことです。

Stringだけなんとなく特別な印象を受けてしまいがちだけど、
"=" の意味は他の参照型(Object派生型、配列)と変わりません。
796デフォルトの名無しさん:2007/03/26(月) 18:41:46
>>785
参照先の値を変えたら参照元の値を自動的に変えるって・・・本気で言ってんのか?w
Javaにポインタが無いって言葉に騙されてるとしか思えない。
797デフォルトの名無しさん:2007/03/26(月) 19:29:14
Java の参照は C/C++ のポインタそのものじゃなかろうか。
ポインタ演算を隠してるだけで。

C++の参照(type&)は言語仕様的には別名(alias)と同義で、
内部実装は制約のある参照的なことやってます、だったような。
798デフォルトの名無しさん:2007/03/26(月) 19:36:23
たった今始めたばかりの初心者です。

ビルドをしたら、「環境変数JDK_HOMEにJDKをインストールしたディレクトリを設定してくだい」と表示されました。
なので、変数を「JDK_HOME」、値を「C:\Program Files\Java\jdk1.5.0_11」にしたのですが、また同じことが表示されます。
どうしたらいいですか?
799デフォルトの名無しさん:2007/03/26(月) 19:47:17
オブジェクトの渡し方で混乱している奴も多いだろうから、簡単な例を挙げとく。
コピーコンストラクタが正しく定義されていると仮定してくれ。

// C++の値渡し。交換できない。
void swap(Hoge x, Hoge y) {
Hoge temp = x; x = y; y = temp;
}

// C++のアドレス渡し。交換できる。
void swap(Hoge* x, Hoge* y) {
Hoge temp = *x; *x = *y; *y = temp;
}

// Cの参照渡し。交換できる。
void swap(Hoge& x, Hoge& y) {
Hoge temp = x; x = y; y = temp;
}

// Javaの『参照の値渡し』。交換できない。
public static void swap(Hoge x, Hoge y) {
Hoge temp = x; x = y; y = temp;
}
800デフォルトの名無しさん:2007/03/26(月) 19:48:24
>>798
開発環境を示さないと何とも言えない。
システム環境変数のJDK_HOMEをJDKディレクトリに設定したのか、
それともIDEの環境変数をJDKディレクトリに設定したのか
いくらでも解釈できるから
801デフォルトの名無しさん:2007/03/26(月) 22:18:39
>>800
あれ?もう1回やったらなぜかできました。
ありがとうございました。
802デフォルトの名無しさん:2007/03/26(月) 22:27:25
こらこら。
システム環境変数を書き換えたら、IDE(またはコマンドライン)は立ち上げ直さないと駄目だぞ。
803デフォルトの名無しさん:2007/03/26(月) 22:59:46
>>783
C++における参照の意味は狭いかもしれないけど
値渡し、参照渡しの意味はどの言語でも同じ。
本当の参照渡しを体験したかったらFortranをやるといいだろう。
804デフォルトの名無しさん:2007/03/26(月) 23:04:48
JavaでPCに送られてくるパケットをフィルタリングすることは可能でしょうか?
可能だったら、役に立ちそうなクラスなんかも教えていただけるとありがたいです。
805デフォルトの名無しさん:2007/03/26(月) 23:12:07
>>804
標準APIだけじゃ無理。
パケットキャプチャじゃなくて、パケットフィルタリングなのか。
それだと jpcap みたいな外部ライブラリ使っても無理のような。
806デフォルトの名無しさん:2007/03/26(月) 23:14:50
>>799
それJavaにアドレスの中身を指示する演算子が無いだけちゃうんかと
たとえばx.valueとかを交換すれば交換できるだろ
807デフォルトの名無しさん:2007/03/26(月) 23:31:36
>>806
値の交換とオブジェクトそのものの交換は違うだろう。
808デフォルトの名無しさん:2007/03/26(月) 23:36:06
>>807
そこが本質じゃないって。
JAVAの場合、オブジェクトはアドレスしか指せない。プリミティブは値しか指せない。
Cは中身もアドレスも指定できる。だからオブジェクトの交換という荒業が出来る。
809デフォルトの名無しさん:2007/03/26(月) 23:43:12
>>799
> // C++のアドレス渡し。交換できる。
これで交換できるってんなら、

static void swap(Object[] x, Object[] y){ Object temp = x[0]; x[0] = y[0]; y[0] = temp; }

とかすれば交換できるって話になっちまうんだが。
「アドレス渡し」とやらは Hoge* 自体の交換ができてないんだから交換できない、とした方が説明が楽。
810デフォルトの名無しさん:2007/03/26(月) 23:44:45
質問者の意図とずれた話を続ける事に意味があるのかと問いたい。
811デフォルトの名無しさん:2007/03/26(月) 23:46:45
>>809
参照渡し/値渡しの説明の文脈では、な。
812デフォルトの名無しさん:2007/03/26(月) 23:56:53
一般的にはパラメータへの再代入は無意味と覚えときゃいいよ。
なんなら全部のパラメータにfinalをつけてもいいくらい。(Javaのfinalは再代入不可を明示するシンボル。念のため。)
コンパイルエラーが出ないのは、互換性のためだろうけど……
813デフォルトの名無しさん:2007/03/27(火) 00:07:25
参照渡し/値渡しに関しては
間違ったことを書いているサイトが少なくないな。
2chでは、本は買うな、Webで十分だ、みたいな意見がよく出るけど
それも考え物だな。
814デフォルトの名無しさん:2007/03/27(火) 00:11:06
>>813
俺は実際にプログラミングやっててわかったけどな。
つうか本は参考程度にしか買わないしポインタ関連なんて一冊も買ってない
815デフォルトの名無しさん:2007/03/27(火) 00:11:51
>>812
>一般的にはパラメータへの再代入は無意味と覚えときゃいいよ。

呼び出し側では意味がないけど、呼び出された側では意味があるんじゃ?
816デフォルトの名無しさん:2007/03/27(火) 00:12:50
>>809
> static void swap(Object[] x, Object[] y){ Object temp = x[0]; x[0] = y[0]; y[0] = temp; }
まかり間違って こーゆーのが普及したりなんかすると
「配列渡し」っていう新語ができるわけだな。たぶん。
817デフォルトの名無しさん:2007/03/27(火) 00:16:44
「プログラミングやった」程度で理解した気になる奴ばかりだから、
今までバラバラな見解の悲惨なレスが繰り返されてたんだろ…
利用できるのと仕組みをおさえるのは違う
818デフォルトの名無しさん:2007/03/27(火) 00:17:30
>>815
意味はあるけど可読性を下げるから推奨しないな

>>816
むしろコンテナ渡しかと
819デフォルトの名無しさん:2007/03/27(火) 00:46:03
>>808
なんで本質じゃないんだよw
オブジェクトの中身を書き換えるんじゃなくてポインタ交換ができる/できないの話だよね?
820デフォルトの名無しさん:2007/03/27(火) 00:49:13
なんで言語の仕組みに関してこんな大議論になってんの?
質問している初心者ならまだしも、回答者側の人間は
信頼できるソースを自分で確認して終わりだろ?
まさか皆が皆
>俺は実際にプログラミングやっててわかったけどな。
とか言っている馬鹿と同じなのか?
821デフォルトの名無しさん:2007/03/27(火) 00:58:19
よくわからないところは俺様解釈で乗り切って
他人にも押し通す、これがJava厨。
こういうテキトーな態度でもなんとなく扱えてしまう言語、それがJava。
822デフォルトの名無しさん:2007/03/27(火) 01:10:38
>>813
雑誌の記事で Java は参照型は参照渡し…… とか書いてあるの、結構見たような。
823デフォルトの名無しさん:2007/03/27(火) 01:32:16
core JAVAには、
Javaは参照渡しだとかほざいちゃってる著者が
未だに地球上に存在していてウザイ早く氏ね
って書いてある
824デフォルトの名無しさん:2007/03/27(火) 02:07:04
3人の死刑囚がいます
王様は3人の死刑囚に言いました
「ここに白い帽子3つと黒い帽子が2ある、白か黒どちらかをお前たちにかぶせ
白い帽子をかぶったものが逃げたらそのまま逃がしてやろう、ただし黒い帽子をかぶった
ものが逃げたらその場で射殺する」
死刑囚は自分がなに色の帽子をかぶっているかはわかりませんが
他の二人がかぶっている帽子の色はわかります
王様は3人とも白い帽子をかぶせました
3人はしばらく考えた後、自分が白だと確信していっせいに逃げました
さて、なぜ自分が白だと確信できたのでしょう?
※アイコンタクトとかそういう答えじゃない
825デフォルトの名無しさん:2007/03/27(火) 02:17:29
全員植草教授だった
826デフォルトの名無しさん:2007/03/27(火) 03:10:40
>>824
A, B, C の3人の一人Aはこう考える:

(1)自分Aが黒だったとしよう。

(2)B,Cはそれぞれ、黒(A)と白(BまたはC)を見るはずだ。
 そこで彼らはこう考えるはずだ:
   もし自分B(またはC)が黒だったら、黒は2つしかないのだから、
   相手C(またはB)は一人で速攻で逃げるに違いない。
   そうではないので、自分は白である。

(3)そこまで考えの至ったBおよびCの二人は自分Aを置いて一斉に逃げるはずだ。

(4)そうではないので、最初の仮定(1)が間違っていて、自分は白である。

そこまで考えの至った3人は一斉に逃げた。
827デフォルトの名無しさん:2007/03/27(火) 03:16:14
わざわざこのスレに投下したのは
プログラマに論理的に考えさせようとしたのか。
それなら俺はあえて逆をいく。

 どうせいずれ死刑になるんだからここで射殺されたところで大差ない。
 だからいちかばちかで逃げ出してみた

でも、これだと「自分が白だと確信して」を満たさないか・・・
828デフォルトの名無しさん:2007/03/27(火) 03:22:22
主人公がこんなところで死ぬはずないから、では
829デフォルトの名無しさん:2007/03/27(火) 03:23:10
王様が黒い帽子をふたつ手に持っていた。
830デフォルトの名無しさん:2007/03/27(火) 03:25:22
3人は日ごろの顧客とのやりとりにより
エスパー能力を鍛えられているプログラマーで、
なぜか、自分が白だということを、本能的に過信した。
831デフォルトの名無しさん:2007/03/27(火) 03:38:37
magcup便利でし。感動しマスタ
832デフォルトの名無しさん:2007/03/27(火) 03:42:53
死刑囚である3人全員がそこまで頭が切れるはずがない
833デフォルトの名無しさん:2007/03/27(火) 03:51:12
Aは>>826のように考察し逃げることとした。
Bは黒と白の帽子を前にどうしてよいかわからなかった。
Cは黒と白の帽子を前にどうしてよいかわからなかった。
Aが逃げ出したのでBはつれられ逃げ出した。
Aが逃げ出したのでCはつれられ逃げ出した。
Aは射殺された・・・
834デフォルトの名無しさん:2007/03/27(火) 04:21:24
>>772
まさに「javaとjavacのverをあわせれば良い」

解決策1

   % java -version
    でJREのバージョンを確認。
   % javac -version
    でJDKのバージョンを確認。

  JREと同じバージョンのJDKを入れてコンパイルしなおす。


解決策2
  javacのバージョンと同じバージョンのjavaをフルパス指定で明示的に呼ぶ。
835デフォルトの名無しさん:2007/03/27(火) 04:25:29
A=自分が白
B=他二人が白
P(A)=3/5
P(B)=(3/5)*(2/4)=3/10
P(A,B)=(3/5)*(2/4)*(1/3)=1/10
P(A|B)=P(A,B)/P(B)=(10/3)*P(A,B)=1/3
だから確率的には逃げたら負け
836デフォルトの名無しさん:2007/03/27(火) 08:10:09
BufferedReaderのreadLineのブロックを解除したいのですが、どうしたらよいでしょうか
837デフォルトの名無しさん:2007/03/27(火) 08:59:10
初心者スレでくだらねえクイズごっこやって楽しいか?
838デフォルトの名無しさん:2007/03/27(火) 11:43:27
>>824
とりあえず最初にテストしろと言われてるので逃げ出すテストをしてみた
839804:2007/03/27(火) 13:30:57
>>805
外部ライブラリ使っても無理ですか……。
Javaでは難しい(というか無理)なんでしょうか?

同じことを2度聞くような形になりますが、どうしても諦めきれないので返答お願いします。
840デフォルトの名無しさん:2007/03/27(火) 13:39:48
>>839
JNI使って奮闘してくれ。
841デフォルトの名無しさん:2007/03/27(火) 16:29:57
;;;;彡                   ミ;;;;;;;;;;;;;;;ミ
;;;チ'  ィ''' ヽ、_         ___,,,,,、`ヾ、;;;;;;ヾ
〃 ./ア三三三三ヾ     タィ三三三ッ、 `y;;;;チ
  ~"  ,,=r≡ァ、 ..~      _,,二、 ̄ヾキ };;ネ
   ー''"` kオッ' ,ヾ';;;,    /,,ヒェア,≧ー" };;;ト
    '"  ー‐''" ,;;;;   ::'~ヾ…‐ ´~  {;ツ
        ...,,,;;;;;;;::   ::::...       キ::}
|       ,,' ,r"'、::::  __、      {|ィ/.        __
;      .:: :;!、_   | 支 |`ヾ、. . : : : レ'         | 力 | _ ,ィ=ヽ、 ,
'、     ..::    ̄`ー.__| 点.|_ ヽ.: :  リ        ._| 点 |_[_ `ヽ  ヾ、
 、     tェ--ニ二~_.\  /ァ  ッ /         \  /Y   l、    `
. i      `ヾ‐'ー'ーL_~≧≦二二二二二二二二二二二ナく__,ム    ヽ
  }   `、  ` 、 ̄ ¨ ¨ "ノ    '/            `ヽ、  `、y-‐ヾヽ´¨
 ,,〉    、    `ー = - '     /              ヾ、  ゞ、___人_
/ \ 、  :::.            /                ヽ、  ヾ ̄´ ̄
   \ :::::::::::....       ...::::リ}                  、  `
     \::::::::, `ー---- '::::::::/ .ト、                 ー _
      ¨\;:,,      /    | `ヽ、                 `ヾt、_
         \,,......,,,イ      ト、   `ヽ、‐―- - - 、、_      !t_
842デフォルトの名無しさん:2007/03/27(火) 17:00:56
java.io.File#listFiles()ではArrayListをFile[]に変換しているようですが
1.0にコレクションがなかったから互換性のためという解釈でよいでしょうか。
843デフォルトの名無しさん:2007/03/27(火) 17:03:58
>>840
了解です。ありがとうございました。
844デフォルトの名無しさん:2007/03/27(火) 17:12:35
>>842
どのように解釈しようが その人の勝手で良いと思われ。
845デフォルトの名無しさん:2007/03/27(火) 17:13:17
Vectorはあったので、そのつもりがあればVectorにしてたと思う。
配列使うのかコレクション使うのかは、統一とれてないねえ。
真っ当な総称型があるならコレクションで決まりだろうけど
erasureなんて導入して・・・アホか。
846デフォルトの名無しさん:2007/03/27(火) 17:14:07
>>845
Vector があっても、中身が File ってのを保証できないんだがな。1.4 までは。
847デフォルトの名無しさん:2007/03/27(火) 17:16:07
>>697
isExists()もつかうべき
848デフォルトの名無しさん:2007/03/27(火) 17:17:06
849デフォルトの名無しさん:2007/03/27(火) 17:20:34
なぜここに来てそんな遅レスを
850デフォルトの名無しさん:2007/03/27(火) 18:34:00
問1
パラメータから得た値をnとして、2のn乗を求めて表示してください。
nの上限は62として、63以上が入るとメッセージを表示するようにしてください。
int型だと2の30乗までになってしまいます。

って問題なんですけど

import java.io.*;
public class kadai13{
public static void main(String[]args)throws IOException{

@

int i=1;
long a=2;
while(i<myAnswer){
a*=2;
i++;
}
if(myAnswer<=62){
System.out.println("2の"+myAnswer+"乗は"+a+"です。");
}else if(myAnswer>=63){
System.out.println("2の2乗までしか計算できないよ。");
}
}
}


この@のところに
int a=Imterger.parse Int(args[0])
ってのを使って解かなければならないんですが
分かる方教えてください。
851デフォルトの名無しさん:2007/03/27(火) 18:45:23
この時期に慌てて宿題の丸投げなんかするなよ
単位落としてしまえ
852デフォルトの名無しさん:2007/03/27(火) 18:52:26
宿題スレなんてのもあるのにアレだけど、
宿題に答えてやる奴ってなんなのかね?
ソフトウェア業界に対するいやがらせ?
853デフォルトの名無しさん:2007/03/27(火) 20:45:42
いいじゃん。どうせお前ら技術と給料は学生並みなんだから
854デフォルトの名無しさん:2007/03/27(火) 20:58:30
JConsoleにリモートで接続できません。
「接続に失敗しました」という味も素っ気も無いメッセージしか出てこないので、「どのあたりを調べればいいのか」で結構ですのでアドバイスを下さい。

調べたいのはTocatで動いているサーブレットの動作状況です。
サーバのOSはLinux(CentOS)、クライアントはWindowsXPです。
サーバ側でのローカル(Localhost:0)では接続できましたが、やはり可能ならクライアントで監視できれば嬉しいです。
オプションは、JAVA_OPTSに
-Dcom.sun.management.jmxremote.port=18080
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
としています。
使っていないポート番号ということで、8004と18080の二つを試したのですが、いずれも×でした。ファイアーウォールはテスト用サーバなので設定していません。

以上、よろしくお願いします。
855デフォルトの名無しさん:2007/03/27(火) 22:05:25
初めて質問します、場違いだったらすみません(´・ω・`)
昨日からwinXPでJavaを始めた者なのですが
EclipseとNetbeans、どちらの開発環境が使いやすいのでしょうか?
また人気なのはどちらか教えて頂けませんか?
宜しくお願いします。
856デフォルトの名無しさん:2007/03/27(火) 22:07:28
初心者なら迷わずeclipse
857デフォルトの名無しさん:2007/03/27(火) 22:15:36
SwingやりたいならNetBeanもいいな。
858デフォルトの名無しさん:2007/03/27(火) 22:24:07
つかSwingバリバリの事務アプリならNetBeans一択。
手書きでできる程度のウィンドウだけならeclipseも可。
他の部分はeclipseの方が洗練度が高いと思うけど好み次第かな。
859デフォルトの名無しさん:2007/03/27(火) 22:28:19
おお、沢山のお答え有難う御座います><
Swingのことはまだ考えていないので
まずはeclipseで慣れてみようと思います。
教えて頂き有難う御座いました。
860デフォルトの名無しさん:2007/03/27(火) 23:46:13
クライアントアプリならC++使えよ。
Javaは3層アーキテクチャのファンクション層が一番の強みなんだから。
Swingでクライアントアプリを発注するアホなクライアントなんてそんなにいないだろう。
861デフォルトの名無しさん:2007/03/28(水) 00:43:28
初心者にC++すすめるのはアホではないの?
862デフォルトの名無しさん:2007/03/28(水) 00:46:27
場合によるが、この場合はアホだと言わざるを得ないな
863デフォルトの名無しさん:2007/03/28(水) 00:56:52
C++が難しいわけではない。
コーディング規約で制限しないから複雑怪奇なコードを量産する人が多いだけだ。
アドレスやメモリの概念なら基本情報処理程度の知識があるなら普通に理解できるだろう。
C++・C#・Javaを最低限使いこなすのはプログラマなら当たり前のことだ。
864デフォルトの名無しさん:2007/03/28(水) 00:57:28
>>861
とりあえず、安直にそう考えたお前はアホ。
865デフォルトの名無しさん:2007/03/28(水) 01:01:09
>>863
質問者のことをもっと考えてやろうな。
ってかC++が難しいとか誰が言ってるのよ?
866デフォルトの名無しさん:2007/03/28(水) 01:01:52
>>863
だから初心者だっつの
867デフォルトの名無しさん:2007/03/28(水) 01:05:00
>>863
>俺はC++をマスターしてるんだぜ!どうだすごいだろ!
まで読んだ
868デフォルトの名無しさん:2007/03/28(水) 02:24:27
Swingって言ってるから画面の話なんだろうけど
C++は何使って画面作るのを想定してるんかな。
MFCでやれって言われたら俺は逃げるけどな。
非質問をスルーできない俺は素人。
869デフォルトの名無しさん:2007/03/28(水) 03:58:34
swingといえばオラクルのごみくずマネージャー
870デフォルトの名無しさん:2007/03/28(水) 08:24:53
>>868
Swingのことは考えてないって言ってんだろ。よく読もうな。
871デフォルトの名無しさん:2007/03/28(水) 11:58:24
sunのjava認定試験申し込もうと思ったら会社名とかの入力が必須なんだけど無職だと受けれないの?
872デフォルトの名無しさん
>>871
俺、会社名は入力しなかった