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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc10.2ch.net/hp/

過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下の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質問・相談スレッド111【大歓迎】
http://pc11.2ch.net/test/read.cgi/tech/1200151522/

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

次スレは>>980あたりで。
2デフォルトの名無しさん:2008/02/08(金) 19:49:30
**** 関連スレッド案内 ****
■ AWT と Swing は --
Java標準低速GUI 6 AWT/Swing
ttp://pc11.2ch.net/test/read.cgi/tech/1190807478/l50
■ SWT は --
Java 高速GUI SWT 3
ttp://pc11.2ch.net/test/read.cgi/tech/1164877399/l50

■ NTT DoCoMo の iモード携帯電話用 Java (iアプリ) は --
iモード携帯電話用Java(iアプリ) Part16
ttp://pc11.2ch.net/test/read.cgi/tech/1198816379/l50
■ DoCoMo 以外は --
CLDC+MIDP+携帯電話用Javaスレッド part 7
ttp://pc11.2ch.net/test/read.cgi/tech/1180010672/l50

■ 課題・宿題は --
★★ Java の宿題ここで答えます Part 64 ★★
ttp://pc11.2ch.net/test/read.cgi/tech/1196543694/l50
3デフォルトの名無しさん:2008/02/08(金) 20:57:15
ダウンロードできてインターネットに繋がって無くても読める
javaの入門書のようなものありませんか?
4デフォルトの名無しさん:2008/02/08(金) 21:14:42
テンプレのリンクを探せばどこかにあると思ったよ。
動画で見るJava入門、みたいなのを。
どこかの大学のサイト
5デフォルトの名無しさん:2008/02/08(金) 22:58:31
6デフォルトの名無しさん:2008/02/08(金) 23:30:09
staticって何ですか?
クラスをオブジェクトするときに使いやすいだけ?
7デフォルトの名無しさん:2008/02/09(土) 00:11:24
>>6
newしなくても呼び出せるメソッドみたいな感じ?
8デフォルトの名無しさん:2008/02/09(土) 00:11:56
>>1
9デフォルトの名無しさん:2008/02/09(土) 00:29:00
charAt()でバイナリ取得はできました。
以下の2つは分かりませんでした。
System.out.println(String.codePointAt((int)s.charAt(0)));
System.out.println(s.getBytes(s.charAt(0)));
10デフォルトの名無しさん:2008/02/09(土) 00:37:52
codePointAtは1.5系みたいなのであきらめました。
11デフォルトの名無しさん:2008/02/09(土) 00:51:44
JDKをインストールしたいのですが、ダウンロードするページで

Windows x64 executable
jdk-6u4-windows-x64.exe 38.88 MB

Windows Online Installation
jdk-6u4-windows-i586-p-iftw.exe 0.36 MB

Windows Offline Installation
jdk-6u4-windows-i586-p.exe 71.28 MB

のように3つ選択肢があるんですが何が違うのでしょうか?
2番目はインストーラーをダウンロードせずにネットから直接インストール?
3番目はインストーラーをダウンロード?ってことですかね
1番上は何でしょうか…
12デフォルトの名無しさん:2008/02/09(土) 00:51:50
getBytes("ASCII")ですか。そのままでしたね。
13デフォルトの名無しさん:2008/02/09(土) 01:22:25
javaで自分のパソコンのグローバルIPとホスト名って取得できますか?
またどのような関数を使えばいいのかわかりません><

ググってみるとjava以外ではいろいろ書いてあるのに、javaになるとヒットしないので。。
よろしくおねがいします!
14デフォルトの名無しさん:2008/02/09(土) 01:26:36
InetAddress.getAllByName(InetAddress.getLocalHost()); とか何とか
15デフォルトの名無しさん:2008/02/09(土) 01:27:35
やっべー、
InetAddress.getLocalHost().getAllByName()
16デフォルトの名無しさん:2008/02/09(土) 01:38:46
>>15
ありがとうございます!!
無事できましたー!
17デフォルトの名無しさん:2008/02/09(土) 08:30:29
昨日は勝手にjavaのアップデートが勝手にダウンロードされました
調べてもプログラミング言語がウンヌンで、javaとは何なのか必要なのかわかりません
PCでインターネットや、画像や動画視聴しかしない僕には必要なのかどうか教えてください

18デフォルトの名無しさん:2008/02/09(土) 10:29:36
>>17
気にしないでおk
19デフォルトの名無しさん:2008/02/09(土) 10:33:36
>>11
1番上のは64ビットWindows用
2番目と3番目は32ビットWindows用
オンラインインストールはインストーラの皮だけ、実際にインストール開始したときに必要な中身を都度ダウンロードしてくる
オフラインインストールは中身全部込みのインストーラ、インストール時にネット接続不要
どっちでも好きなほうをどうぞ
2017:2008/02/09(土) 12:31:56
>>18
わかりました ありがとう
削除します
21デフォルトの名無しさん:2008/02/09(土) 14:03:12
質問です。参考書などでは【2つほど】変数の型(intやchar)などとは別に
stringの解説がされています

認識として両方変数の型でchar=1文字変数 string=文字列と理解しているんですが、理解が間違っているんでしょうか?
22デフォルトの名無しさん:2008/02/09(土) 14:08:02
stringは無いがStringなら有る
大文字小文字の区別は重要
charは1文字、Stringは文字列、ってのは合ってる
23デフォルトの名無しさん:2008/02/09(土) 14:18:06
文字変数でなく、文字な。
Stringは文字列。

String str = "a";
char c = 'a';
人間にとっては同じだけど、プログラム上は違うので注意。
24デフォルトの名無しさん:2008/02/09(土) 14:30:17
>>22>>23
ありがとう、つまり同じような認識で使ってもいいわけですね。

もう一つ聞きたいのですが
class a1{
   public static void main(String args[]){
     if(args.length>=1) 〜以下命令文
〜以下略

上のプログラムのargs.length ここの部分がいまいちよくわからないのですが、
argsはただの配列なのにクラス名の部分に書かれています。

length関数が特殊なんでしょうか?それともargsがクラス名?
お願いします
25デフォルトの名無しさん:2008/02/09(土) 14:46:49
>>24
入門書1冊やってからこい
26デフォルトの名無しさん:2008/02/09(土) 14:56:38
>>24
lengthは配列オブジェクトのフィールド
argsオブジェクトのlengthフィールドが1以上かどうかを判定している
ってかクラス名の部分ってなんだよ
27デフォルトの名無しさん:2008/02/09(土) 15:01:32
>>24
この場合、args は配列型の変数で、length は、配列型の public final なフィールド。
28デフォルトの名無しさん:2008/02/09(土) 15:22:22
激しくすれ違いだが 「バカでも使えるように」 を仕様書で伝えるときどう表現してる?
29デフォルトの名無しさん:2008/02/09(土) 15:23:47
フールプルーフ
30デフォルトの名無しさん:2008/02/09(土) 15:25:27
>>26>>27
ありがとう
インスタンス化したメソッド.メソッド名();
の形式だと理解していた。
よくわからないから読み返してきます。
31デフォルトの名無しさん:2008/02/09(土) 15:26:30
フューエルセーフか?ちとちがうかw
前のユーザーはバカよけいれといてねとか言ってたけどw
32デフォルトの名無しさん:2008/02/09(土) 15:30:43
Stringは文字列の変数と考えていいんですよね
変数名.メソッド;
でも問題ないんですか?
33デフォルトの名無しさん:2008/02/09(土) 15:31:22
スレ移ります
すみませんでした
34デフォルトの名無しさん:2008/02/09(土) 15:34:09
>>32
問題って何がだ
何がわからんのかわからん
35デフォルトの名無しさん:2008/02/09(土) 15:35:05
>>32
ここは初心者スレだが、初心者に一から言語仕様を教えるスレじゃねーんだよ
この本一冊読んでから来い
http://www.amazon.co.jp/dp/4798107972/
36デフォルトの名無しさん:2008/02/09(土) 15:38:13
>>31
安全そうな燃料ですね。
37デフォルトの名無しさん:2008/02/09(土) 15:54:12
>>34
>>35
38デフォルトの名無しさん:2008/02/09(土) 16:15:32
スレのレベルが低下してる
住人も然り
プログラマって10聞いて1しか返ってこないやついるから困る
出世できないのもよくわかるよな
39デフォルトの名無しさん:2008/02/09(土) 16:17:55
まるで昔はレベルが高かったような言い草だが。
40デフォルトの名無しさん:2008/02/09(土) 16:23:36
1聞いて10理解すれば問題なし
41デフォルトの名無しさん:2008/02/09(土) 16:32:22
理系の人間はみんなそうだ
特にプログラマは酷いなwww
何年もがんばった自分の知識を基準にして話し出す
文系の女の子が可哀相だ
42デフォルトの名無しさん:2008/02/09(土) 16:34:38
スイーツ板?でどうぞw
43デフォルトの名無しさん:2008/02/09(土) 16:36:14
女の子なら何時間でもかけて親切丁寧に教えてあげるよ!
野郎どもは死ぬ気でがんばれ
44デフォルトの名無しさん:2008/02/09(土) 17:04:33
普段、コンストラクタの引数が要らない場合はコンストラクタを省略してフィールド宣言時に初期化してるのですが、
フィードル初期化は宣言時にするのとコンストラクタ内でするのとでは、タイミングなどの違いがあるそうですが
どんな感じで使い分けるものなんでしょうか?
45デフォルトの名無しさん:2008/02/09(土) 17:09:45
タイミング違ったっけ? フィールド宣言時に初期化するコードを逆コンパイルしてみ。
スーパークラスのコンストラクタが終了した後に初期化するのと変わらない。
46デフォルトの名無しさん:2008/02/09(土) 17:10:12
一緒
フィールドの初期化のコードはバイトコードレベルで見るとコンストラクタの中に入っている
見た目とか気分の問題
4744:2008/02/09(土) 17:19:47
一緒ですか!ならば宣言時にやるほうが簡潔ですね。
どうもありがとうございました。
48デフォルトの名無しさん:2008/02/09(土) 18:26:15
private static *** instance = new ***();
public static *** getInstance(){return instance;}
private $$$ data;

public ***(){data = $$$.getInstance()}
public $$$ get$$$(){return data;}

$$$も同様にシングルトン

と言う感じで、シングルトンのフィールドにコンストラクタで
シングルトンを植え付ける連鎖を何回か行うと
get$$$()でnullが返ることがあります。何故なんでしょうか?
クラスが参照されると同時にinstanceにインスタンスが入るはずなのに…

public get$$$(){return $$$.getInstance();}
だとそう言う事は起こりません
4948:2008/02/09(土) 18:27:16
済みません間違えました。
コンストラクタはprivateです
private ***(){data = $$$.getInstance()}
50デフォルトの名無しさん:2008/02/09(土) 18:33:14
質問です
UMLより機能的なツールなんか使ってますか
参考までにお願いします
51デフォルトの名無しさん:2008/02/09(土) 19:26:44
一番自由度が高くて表現力のあるツールは
紙とペンかな・・・・
自由度が高いので使い手の能力に左右されがちだがな。
52デフォルトの名無しさん:2008/02/09(土) 19:27:12
連想配列で、キーと値を交互に配列に入れる簡単な方法はありますか?
ソースのa,b,c,d,e,f(文字列)からAという配列を作りたいです。
A[a] == b
A[c] == d
A[E] == f
53デフォルトの名無しさん:2008/02/09(土) 19:32:06
HashMap でも使え
54デフォルトの名無しさん:2008/02/09(土) 19:56:27
main関数の実行時に与える引数についてですが、
1種類のString配列では表せない情報を与えたい時はどうすればいいのでしょうか?
例えば、複数の文字列とオプションを実行時に指定させたい場合、
プログラム側では文字列とオプションの区別が付けられません。
55デフォルトの名無しさん:2008/02/09(土) 20:07:39
>>54
順番で区別するとか、
先頭に '-' や '@' や '/' がついてたらオプションとか、
文字列は "文字列" みたいに引用符で括るとか、
やり方はいろいろある。好きな方法を使え。
56デフォルトの名無しさん:2008/02/09(土) 20:17:55
その引用符の使い方だとシェルに取り払われるような。
57デフォルトの名無しさん:2008/02/09(土) 20:24:07
javac ?で参考になるべ
argsをパースするのは自力で作る
58デフォルトの名無しさん:2008/02/09(土) 20:25:24
HashMap の方は同期がとられず、というのは簡単に言うとどういう意味ですか?
HashMap はJDK1.2に対応していますか?
59デフォルトの名無しさん:2008/02/09(土) 22:01:26
>>58
ttp://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/util/HashMap.html
> 導入されたバージョン:
> 1.2

同期云々の話も上のリンク先の記述からだと思うのだが、文章そのまま。
逆に、Hashtable の方は同期がとられて、null の場合はない。
> HashMap クラスは Hashtable と同じと見なしてもかまいませんが、
> HashMap の方は同期がとられず、null の場合もあります。

何故同期が取られないのか、については、設計上の方針。
Collections.synchronizedMap(Map) を使う。
更に、iteratorを使う場合には、更に同期処理が必要。詳しくは API 仕様に。
60デフォルトの名無しさん:2008/02/09(土) 22:20:53
>>58
HashMap が同期(synchronized)されない、というのは、簡単に言うと、
複数のスレッドから同時にアクセスすると壊れるよ、という意味です
61デフォルトの名無しさん:2008/02/09(土) 22:30:36
>>51
ありがとう
でも一挙動でコーディングできれば最適なんですがねえ
62デフォルトの名無しさん:2008/02/09(土) 22:32:42
>>48
なんだろうねぇ。
とりあえず、遅延初期化をする必要が無ければ、instance を
public static final *** INSTANCE にするのはどうだろう。
63デフォルトの名無しさん:2008/02/09(土) 22:32:55
Java SE Development Kit 6 Update 3をとろうと思うのですが無料なんですか?
64デフォルトの名無しさん:2008/02/09(土) 22:36:06
>>50
UML は確かに機能的な面も強調される表記法でもあると思うが、
そもそもの目的は、数ある表記法を名の通り"統一"したものだしなぁ
65デフォルトの名無しさん:2008/02/09(土) 22:40:12
>>59,>>60 ありがとう、いい配列です。
66デフォルトの名無しさん:2008/02/09(土) 23:15:05
>>62
ありがとうございます。やってみましたがダメでした
うまくいかないソースを削ってサンプルを作ってみました

class A {
final static A INS = new A();
private B b;
private A(){b = B.INS;}
B getB(){return b;}
public static void main(String[] args) {
System.out.println(A.INS.getB().getC().getA().toString());
}
}

class B {
final static B INS = new B();
private C c;
private B(){c = C.INS;}
C getC(){return c;}
}

class C {
final static C INS = new C();
private A a;
private C(){a = A.INS;}
A getA(){return a;}
}
67デフォルトの名無しさん:2008/02/09(土) 23:16:15
字数の関係でAに便宜的にmainを載せましたが
class D {
public static void main(String[] args) {
System.out.println(A.INS.getB().getC().getA().toString());
}
}
としてもやはりjava.lang.NullPointerExceptionでした
68デフォルトの名無しさん:2008/02/09(土) 23:21:02
>>66
そりゃ無理だ
new A();
をやってる途中にB.INSが必要で、
B.INS = new B();
には C.INS が必要で、
C.INS = new C();
の中では A.INS が必要だがまだ new A() やってる途中なので A.INS は代入されてないから null
69デフォルトの名無しさん:2008/02/09(土) 23:40:00
>>66
単に循環参照
コレだけみると設計再検討だが、なんか理由があるとして…

ま、getAやらの部分で、a を遅延初期化すれば問題ない。
if (a == null) { a = A.INS; } return a;

仮にマルチスレッドでまわしても、A.INS は確定した後で、常に一つだから
null チェックで二度三度上書きしたところで得られる値は変わりはしない。
70デフォルトの名無しさん:2008/02/09(土) 23:42:19
>>68
なるほどエラーが発生する原因は分かりました
>>69
ありがとうございます

staticフィールドにインスタンスを作るシングルトンという事で気軽に使いすぎてました。反省
71デフォルトの名無しさん:2008/02/09(土) 23:45:35
先生!Stringがfinalであるヌリットを教えてください!!
StringBuffer使えってのはなしで。
72デフォルトの名無しさん:2008/02/09(土) 23:47:50
73デフォルトの名無しさん:2008/02/09(土) 23:54:04
すいません、エロい人教えてください。。。

クラスは、インスタンス化によりオブジェクト(実体)となって
はじめて使用できると思うのですが、
main()を持つクラスは、コンパイルされた時点で
インスタンス化されるのでしょうか?
74デフォルトの名無しさん:2008/02/09(土) 23:56:02
>>73
staticメソッドとstaticフィールドはインスタンスではなくクラスに属するのでインスタンスがなくても使える
75デフォルトの名無しさん:2008/02/10(日) 00:19:54
>>48
コンストラクタ以外で data に値を設定するコードを書いてないのに発生するなら
コンストラクタが完了してない状態で呼んでんじゃねーのか。final 付けてないのに
その部分だけ出されてもどっかで設定してんじゃねーのとしか言えないが。
76デフォルトの名無しさん:2008/02/10(日) 01:16:43
>>74
早速のご回答ありがとうございます。
新しい考え方をゲットできました。
「インスタンスに属する」と「クラスに属する」
77デフォルトの名無しさん:2008/02/10(日) 01:43:33
Stringの中のスラッシュの数を計算するメソッドのサンプルをください。
s = "aa//a/aa"; から3を取得するものです。
78デフォルトの名無しさん:2008/02/10(日) 01:52:43
文字列を最初から調べていって"/"と一致した時にint変数をインクリメントすればいいだけじゃないの
79デフォルトの名無しさん:2008/02/10(日) 02:20:26
>>77
横着。先頭と尻尾に "/" を追加して確かめてください。
何にもマッチしないときは、長さ1の配列が返るので、負数にはならない、はず。
System.out.println(s.split("/", -1).length - 1);
// 一応、何が起きてるかを表示
System.out.println(java.util.Arrays.toString(s.split("/", -1)));
80デフォルトの名無しさん:2008/02/10(日) 02:52:07
String s = "123";
int i = (int)s;
数値にするにはどうしたらよいですか?
81デフォルトの名無しさん:2008/02/10(日) 02:54:37
>>80
int i = Integer.parseInt(s) でおk
82デフォルトの名無しさん:2008/02/10(日) 03:09:09
Javaでコールバック処理を行いたいんですが、どうするのが
一般的ですか?
83デフォルトの名無しさん:2008/02/10(日) 03:12:37
>>81 ありがとう
84デフォルトの名無しさん:2008/02/10(日) 03:53:37
ttp://blog.livedoor.jp/mikuriyahiroto/archives/50829394.html
のページにあるプログラムをEclipseで実行するとエラーが出てしまいます

ちなみにエラーの文章は
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at org.apache.commons.httpclient.HttpClient.<clinit>(HttpClient.java:66)
at Logintest.main(Logintest.java:20)
とでて、
Logintest.java:20の内容は
HttpClient client = new HttpClient();
です。

java素人なので全然わかりません。。。よろしくおねがいします!
85デフォルトの名無しさん:2008/02/10(日) 03:54:45
JARをパスに追加しろ
86デフォルトの名無しさん:2008/02/10(日) 03:59:16
eclipse3.3で初めてJUnit(4)のテストコードを書いています。
このテストコードをマウスを使わずに
キーボードだけで素早く実行するにはどうしたらいいのでしょうか?
8784:2008/02/10(日) 04:07:18
>>85
お返事ありがとうございます
外部jarの追加でしっかり追加したはずなんですが

できてなかったのですかね。。。
88デフォルトの名無しさん:2008/02/10(日) 04:46:10
>>87
OROが足りないんだろ。
追加しろ
89デフォルトの名無しさん:2008/02/10(日) 05:11:25
↑俺なんてかっこいいんだと思ってるwww
90デフォルトの名無しさん:2008/02/10(日) 06:37:26
>>88
oro追加してみましたけどインポートされた org.apache.oro は一度も使用されていません。と出てしまいます。
コンパイルエラーの文章も依然変わりません...('A`)ウムム
91デフォルトの名無しさん:2008/02/10(日) 08:33:24
Javaをググッてみました
初心者向けということなのでNetbeansをインストールしましたが
使い方がさっぱり分かりません。
最初は普通のエディタの方が良いでしょうか?
92デフォルトの名無しさん:2008/02/10(日) 10:49:56
>>84
commons.logging パッケージのクラスが見つからないというエラー。
ということで、そやつを取ってきてパスに入れれば…進展があるはず
93デフォルトの名無しさん:2008/02/10(日) 11:08:39
質問です。
JAVAから外部のアプリケーションに対して操作を行うにはどのようにすればよいでしょうか。
例えばWindows標準のメモ帳に対して文字列"abc"を入力する、といったものです。
よろしくお願いします。
94デフォルトの名無しさん:2008/02/10(日) 11:15:45
Robot
95デフォルトの名無しさん:2008/02/10(日) 11:18:27
あるいは SWT の非公開 API
96デフォルトの名無しさん:2008/02/10(日) 11:25:42
>>93
もっと上手い方法があるのかねぇ。

// 例外はうまく処理してちょ
Runtime.getRuntime().exec("notepad.exe");
Robot robot = new Robot();
Thread.sleep(2000);
robot.keyPress(KeyEvent.VK_A);
robot.keyPress(KeyEvent.VK_B);
robot.keyPress(KeyEvent.VK_C);
97デフォルトの名無しさん:2008/02/10(日) 11:28:11
>>94
!! こんなクラスあったんだ。しかも1.4から標準で。知らんかった……。
98デフォルトの名無しさん:2008/02/10(日) 11:30:51
Robotなんて名前がそのまんまなクラスがあるとは・・・。
私は始めたばかりですが、もっとリファとか読まないといけませんね。
ありがとうございました。
99デフォルトの名無しさん:2008/02/10(日) 13:28:12
>>82

コールバックされるオブジェクトの参照を、する方に渡す。
メソッドのアドレスを渡すような考え方はしない。
コールバックされるクラスがいろいろあるなら、
目的のメソッドを定義した interface を作って、
それらのクラス全員に implements させる。
100デフォルトの名無しさん:2008/02/10(日) 13:35:19
クラスは,C言語における構造体の配列みたいだと思ったのですが、
あっているでしょうか?
101デフォルトの名無しさん:2008/02/10(日) 13:37:44
たぶん間違い。
構造体のような使い方もできるがもっと色々できる。

PCはゲーム機の本体のようなものですか?のような質問。
102デフォルトの名無しさん:2008/02/10(日) 13:42:27
何で配列?
103デフォルトの名無しさん:2008/02/10(日) 14:50:59
>>92
エラーが表示するライブラリを順に追加していったら動くようになりました!
ありがとうございます。
104デフォルトの名無しさん:2008/02/10(日) 19:40:54
こんばんは。質問よろしいですか。
Linuxコマンド(diff)を実行し、その結果を出力するだけのプログラムなのですが、
なぜかその実行結果がNULLになります。
ソースは以下の通りです。宜しくお願いします。
fileA,fileBは共にテキストファイルで、コマンドの誤りは何度も試したのでないと思います。

public class b {
public static void main(String[] args) {
try {
// プロセスオブジェクトを生成
String str ="diff fileA fileB";
// System.out.println("command:"+str);
Process process = Runtime.getRuntime().exec(str);
// process.waitFor();
// 外部コマンドの標準出力を取得するための入力ストリームを取得
InputStream is = process.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
// 標準出力を1行づつ取り出します
String line = br.readLine();
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
105104:2008/02/10(日) 19:57:29
申し訳ありません。自己解決しました。
原因は、もしかすると、fileAとfileBの場所が遠かった(コマンドが長すぎた)せいだと思います。
ご迷惑をおかけしました。
106デフォルトの名無しさん:2008/02/10(日) 20:34:38
アニキ、Ant から起動したら XML パースが使えなくなりやしたぜ。どうしやしょう。
107デフォルトの名無しさん:2008/02/10(日) 21:16:06
放置しとけ
108デフォルトの名無しさん:2008/02/11(月) 01:05:22
Log4j って作者抜けてから開発停滞してね? J2SE 5.0 に対応させるとか言ってた
2.0 とかの開発今どうなってんの?
109デフォルトの名無しさん:2008/02/11(月) 01:22:17
log4jメーリングリストのアーカイブ嫁
110デフォルトの名無しさん:2008/02/11(月) 01:32:18
このスレ並の質問ばっかで開発状況の話なんて全然ねーじゃん。
111デフォルトの名無しさん:2008/02/11(月) 02:08:30
秘密の漏えいを期待してるのか?
かね出さずに?
112デフォルトの名無しさん:2008/02/11(月) 09:40:34
Javaをアンインストールしたらどうなりますか?
windows vista
113デフォルトの名無しさん:2008/02/11(月) 10:18:26
削除されます
windows vista
114デフォルトの名無しさん:2008/02/11(月) 10:25:58
Javaをアンインストールても、windows vistaは正常に作動しますか?
115デフォルトの名無しさん:2008/02/11(月) 11:59:33
SOAPってスレッド使ってもいいの?
仕様的に。
116デフォルトの名無しさん:2008/02/11(月) 13:21:47
プログラムを実行するごとにint型の変数の値を1ずつインクリメントするのってどうやったらできるんですか〜−−;
117デフォルトの名無しさん:2008/02/11(月) 14:02:08
>>116
プラシーボで良ければ、int型の値を確保し、それをインクリメントするだけのプログラムを。

でなければ、実行されるプログラムが使用するメモリ以外の部分に、実行時の値を保存する。
レジストリやらHDDなど外部記憶装置やら。

参考
ttp://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/util/Properties.html
ttp://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/util/prefs/Preferences.html
118デフォルトの名無しさん:2008/02/11(月) 14:09:32
>>117
ありがとうございます!
今からちょっと用事があるので帰ってきてから実装してみたいと思います。
119デフォルトの名無しさん:2008/02/11(月) 15:03:20
必ず表示されるフォントってありますか?
120デフォルトの名無しさん:2008/02/11(月) 15:05:47
今のところ
Calendar.SUNDAY == 1
Calendar.MONDAY == 2
 (略)
Calendar.SATURDAY == 7
みたいですが、これを前提にコード書いたらやっぱまずいですか?
SUNDAYからMONDAYまでがこの順に連続した整数であることも
全く保証されて……ないんですよね、やっぱり。
SUNDAY→0, MONDAY→1, ..., SATURDAY→6 を得たいんですけど、
いちいち走査するしかないのかなあ。
121デフォルトの名無しさん:2008/02/11(月) 15:05:51
String s = ?(97);
s.equals("a")にするための?の部分を教えてください。
122デフォルトの名無しさん:2008/02/11(月) 15:09:44
>>119
どの環境でも使えるフォント名ってことなら"Serif"、"SansSerif"、"Monospaced"、"Dialog"、"DialogInput"
123デフォルトの名無しさん:2008/02/11(月) 15:13:23
>>121
Character.toString( (char)97 )
124デフォルトの名無しさん:2008/02/11(月) 15:16:57
>>120
作法としてまずいかどうかは知らないが
将来バージョンアップで値が変わったりとかはしないはずなので大丈夫かと
(そんなことしたら既存のプログラムが動かなくなるし)
125デフォルトの名無しさん:2008/02/11(月) 15:39:47
qa3765663
126デフォルトの名無しさん:2008/02/11(月) 16:52:34
質問です。

JNIで呼び出すCのライブラリの中でファイルを参照するのですが、
ファイルの読み込みは一度だけにして常にメモリ中に展開しておき、
2度目以降は読み込み処理をやらなくてすむようにはできるでしょうか?
127デフォルトの名無しさん:2008/02/11(月) 17:34:06
>>120
APIドキュメントで対応する数値が明記されていない以上、
変更されて機能しなくなる可能性がないとはいえないが、
まあたぶん変えられることはなさそうだし前提にしてもいいんじゃないかな。
Calendar.SUNDAYとかはpublic static final intで宣言された定数なので、
使用側のコードに直接値が埋め込まれるため、
変更されるような事態になったら全部コンパイルし直しになるので。
128デフォルトの名無しさん:2008/02/11(月) 18:05:38
>>125
okwaveとのマルチか
129デフォルトの名無しさん:2008/02/11(月) 18:17:05
>>128
どこかがつぶれてもいいような分散技術を使った高度な質問技。
しかし技を使ったことがバレると回答されにくくなる諸刃の剣。
130デフォルトの名無しさん:2008/02/11(月) 19:02:29
ただのクロスポストだろ。なにが高度なんだ
131デフォルトの名無しさん:2008/02/11(月) 20:29:06
>>120
必要が無ければやるべきではない印象を持つが、必要として考えると…

定数の値は公開されて確認ができるので、クラスの使用条件を
「Calendar.SUNDAY から Calendar.SATURDAY が連続した整数値を取ること」
としていれば、Java のバージョンが変わったときも、それを確認するだけで使えると思う。

もしくは、static の初期化子などでそれらが連続することを確認し、
そうでは無い場合には何らかの処置をする、とか
132120:2008/02/11(月) 22:28:27
レスありがとうございました。
書いた直後に出かけていて返事が書けませんでした、ごめんなさい。

>>124
いくら public とはいえ、SUNDAY と "1" という値とは本来何の繋がりもない、
Calendar クラスの中だけの約束事でしかないので、
定数をこういう風に使っていいのかなぁという疑問がずっと消えなくて。

>>127
やっぱり明記はされてないんですよね。
ただ、「使用側のコードに直接埋め込まれる」には思わず手を打ちました。
定数が変わるときにはどのみちコンパイルし直しになるんだから
そのときにチェックが入るだろう、という考え方ですね。
建国記念の日とか春分とかの「日本の休日」を扱うクラスは
(どうせあと数十年中に休日が増減するから)とりあえず21世紀中だけ
使えることにしておけばいいよ、ってのと似たような話でしょうか。
ちょっと違うかもですが。

>>131
その発想はなかったっ。
どうせ将来にわたっても定数が変更されることはないだろうけど、
もし万が一……というところで悩んでいたので、
その注意書きを選ぶことにします。
お三方ともありがとうございました。
133デフォルトの名無しさん:2008/02/11(月) 23:03:36
>>132
>建国記念の日とか春分とかの「日本の休日」を扱うクラスは・・・
祝日ってDBかファイル持ちだち思うんだ
134デフォルトの名無しさん:2008/02/11(月) 23:06:09
>>132
それなら自分でMap持てば済む話じゃないの?
135デフォルトの名無しさん:2008/02/12(火) 00:59:23
JavaBeansの仕様で質問です。
String a_1 = null;
というフィールドがあった場合、仕様として正しい
geterは
getA_1なのでしょうか?
136デフォルトの名無しさん:2008/02/12(火) 01:09:58
逆に考えるんだ
「get,set,isに続くものをプロパティ名とする」と
フィールド名は関係ない
137デフォルトの名無しさん:2008/02/12(火) 01:27:58
質問です。

クラス名や変数名に「hoge」という文字が頻繁に使われていますが、
なぜ「hoge」なんですか?
138デフォルトの名無しさん:2008/02/12(火) 01:32:23
>>137
ほげを考えるページ
ttp://kmaebashi.com/programmer/hoge.html
139デフォルトの名無しさん:2008/02/12(火) 01:34:19
そんなググれば出てくるような質問を
テレビのイの字と同じようなものだよ
140デフォルトの名無しさん:2008/02/12(火) 01:44:56
javamailを使ってメールの複数送信をしようと思います。
送信先をXMLデータベースから抜き出してループさせたいのですが,
internetaddressクラスの配列使用の場合と
SAXとの組み合わせ方が今ひとつわかりませんのでどなたか解説お願いします。

141デフォルトの名無しさん:2008/02/12(火) 02:19:43
>>138
つまり、名前をつけるのが面倒なときにつけるんですね?
ありがとうございました
142デフォルトの名無しさん:2008/02/12(火) 03:48:51
初歩的なことなんですが、
javaプログラムから新たなテキストファイルを作成するにはどうすればいいのでしょうか?
ファイル作成のためのクラスとかありますか?
143デフォルトの名無しさん:2008/02/12(火) 03:50:55
FileWriter
144142:2008/02/12(火) 04:19:25
>>143
FileWriterで書き込んだりReaderで読み込んだりすることは出来るのですが、ファイルを作成することが出来ないんです。
具体的には、絶対パスではなく自分より二つ上の階層に新しいテキストファイルを作成したいのですが、
ネットで調べてもファイルへの読み書きの仕方しか出てきません。
145デフォルトの名無しさん:2008/02/12(火) 04:25:32
作成したいファイル名で new FileWriter("../../hoge.txt") すれば勝手にできる。
例外が発生するって言うならその例外の意味を調べろ。
146142:2008/02/12(火) 06:47:29
>>145
FileWriterで作成までしてくれるとは知りませんでした。
ありがとうございました。
147デフォルトの名無しさん:2008/02/12(火) 09:41:05
>>135
getterですよ
148デフォルトの名無しさん:2008/02/12(火) 14:05:33
現在メニューバー作成のためにサンプルプログラムを動かそうと
してるんだがコンパイラは通るんだがappletviewerが起動しない・・・。
コンパイラが通る時にMenuFrame2.classと同時に
MenuFrame2$1.class(プログラム中に記載はされてない)
という謎物ができるんだがこれが原因なのか?

↓とりあえずサンプルプログラム
ttp://www.dotup.org/uploda/www.dotup.org2840.java.html
Passはjava
149デフォルトの名無しさん:2008/02/12(火) 14:15:07
>>148
それアプレットじゃないじゃん
普通に java MenuFrame2 で起動してみ
150デフォルトの名無しさん:2008/02/12(火) 14:21:45
そうなんですか。
とりあえずIP抜かせてもらいました(^^v
151デフォルトの名無しさん:2008/02/12(火) 14:23:37
穴があったら入りたいと思ったが穴が無かったので
小さいかまくらを作った。入れなかった。
アプレットだと思ってた俺がバカでした。回答thx。
152デフォルトの名無しさん:2008/02/12(火) 14:53:19
>>150
厨房( ´,_ゝ`)プッ
153デフォルトの名無しさん:2008/02/12(火) 15:08:43
tes01/tes02/tes03/sample.class という階層があって、
sample.classには、package tes03; の宣言がされています。
コマンドプロンプトから実行するとき、
tes02ディレクトリからでは java tes03/sample で実行出来るのですが、
tes01ディレクトリとtes03ディレクトリから実行出来ません。
例えばtes01ディレクトリから、java tes02/tes03/sample としてもエラーが出ます。
どうすればいいのでしょうか
154デフォルトの名無しさん:2008/02/12(火) 15:22:02
>>153
つjava -cp test02 test03/sample
155153:2008/02/12(火) 17:17:22
>>154
ありがとうございます!無事実行できました。
156デフォルトの名無しさん:2008/02/12(火) 17:28:24
JDBCでテーブル一覧を取得したいんですが、
どうやったらいいのでしょうか?
157デフォルトの名無しさん:2008/02/12(火) 18:00:54
Connection#getDatabaseMetaData()
158デフォルトの名無しさん:2008/02/12(火) 18:23:28
JNI で質問なんですけど、C/C++ から呼んだ Java のメソッドで new で確保したオブジェクト
返した場合、JNI でそのオブジェクト参照してても GC の対象になるよね?

public byte[] foo(){ new byte[1024]; }

jobject value = env->CallObjectMethod(clazz, method);
159デフォルトの名無しさん:2008/02/12(火) 19:02:54
>>158
ネイティブメソッドから返るまでは掴んだまま
返れば GC の対象になる
明示的に放したい場合は DeleteLocalRef を呼ぶ
160デフォルトの名無しさん:2008/02/12(火) 19:26:36
おまいら親切過ぎる
職場の上司もこんな優しく教えてくれたらなぁー
161デフォルトの名無しさん:2008/02/12(火) 20:37:22
Threadのrunメソッドに引数を渡すことは出来ないんでしょうか?
スレッドを複数作成してそれぞれのスレッドに異なる情報を渡して違った処理を実行させたいのですが。
162デフォルトの名無しさん:2008/02/12(火) 20:54:41
メンバ変数に持たせときゃいいじゃん
163デフォルトの名無しさん:2008/02/12(火) 21:46:47
>>159
そうなんですか。Java VM が参照見失うかと思ったんですがそうではないんですね。
ひょっとして env->NewByteArray() とかもちょあんt
164デフォルトの名無しさん:2008/02/12(火) 22:00:56
お前のほうが色々見失っているよ
165デフォルトの名無しさん:2008/02/12(火) 22:26:02
「うまいこと言った!」



そう考える 164 であった。
166デフォルトの名無しさん:2008/02/12(火) 22:46:48
馬鹿っぽい質問だけど
インスタンス変数はよくprivateにするのに
クラス変数はどうしてpublicばっかなの?
private static 〜 なんてのはあまり見ない気がする
167デフォルトの名無しさん:2008/02/12(火) 23:29:05
スコープについて学べ
168デフォルトの名無しさん:2008/02/12(火) 23:31:36
>>160
プロとしての自覚を持て
先輩の何十分の1程度の生産性しか出せないくせに
給料は同じくらいもらってんだろ?
169デフォルトの名無しさん:2008/02/12(火) 23:36:06
普通後輩の方が安いはずなんだが
170デフォルトの名無しさん:2008/02/12(火) 23:38:56
何十分の1なのか?w
171デフォルトの名無しさん:2008/02/12(火) 23:40:45
>>169
>>168の書き込みなんて気にすんなw
172デフォルトの名無しさん:2008/02/12(火) 23:44:24
先輩になっても給料変わらん会社にお勤めなんじゃないのか。
173デフォルトの名無しさん:2008/02/12(火) 23:46:37
>>169
おまいも経験積んだら、高い生産性出せるようになるさ
174デフォルトの名無しさん:2008/02/12(火) 23:48:26
今できない香具師はずっとできない希ガス
175デフォルトの名無しさん:2008/02/12(火) 23:55:03
>>169は管理職で残業代出る後輩のが手取りは多い、とか。
176デフォルトの名無しさん:2008/02/12(火) 23:59:00
>>175
それはありそうだな
生産性が低ければそれだけ残業するしな
177デフォルトの名無しさん:2008/02/13(水) 00:12:03
30過ぎて月給25万の俺を慰めてくれよ
178デフォルトの名無しさん:2008/02/13(水) 00:39:15
愚痴るならマ板池
179デフォルトの名無しさん:2008/02/13(水) 00:56:10
25万ももらえば十分だろ
贅沢言ってんじゃねえよカス
180デフォルトの名無しさん:2008/02/13(水) 00:57:54
import,例外処理は省略します
public class ComServer{
private ServerSocket sock; private Socket client;
public final static int portNo = 10500; private BufferedWriter writer;
private BufferedReader reader; private String msg = null;
ComServer() init();
void init(){
if(sock == null){
sock = new ServerSocket(ComServer.portNo,1);
client = sock.accept();
client.setKeepAlive(false);
System.out.println("Client connected");
}
if(reader == null) reader = new BufferedReader( new InputStreamReader(client.getInputStream()));}
String receive(){
if(reader == null)init();
String msg = null;
msg = reader.readLine();
return msg;
}
class s extends Thread {
private BufferedWriter writer;
private String msg;
s(String masg)this.msg = masg;
if(writer == null) writer = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
public void run(){
writer.write(msg,0,msg.length());
writer.flush();
}}}
すいません。たぶん根本的な間違いとおもいますがエラーがでてコンパイルできないです
申し訳ないですがバグを見つけてもらえないでしょうか?おねがいします. 環境はeclipse3.3.1.1 jre1.6.0_03です
181デフォルトの名無しさん:2008/02/13(水) 01:11:43
いやだ。
182デフォルトの名無しさん:2008/02/13(水) 01:13:59
>>180
エラーどこ、main どこ。クラスの先頭は大文字で。
eclipse ならエラーの対処方法も出るでしょうに。
183デフォルトの名無しさん:2008/02/13(水) 01:14:28
>>180
問題点の候補はコンパイラが見つけて教えてくれてるだろ
エラーメッセージを読んで理解しろ
184デフォルトの名無しさん:2008/02/13(水) 02:23:07
reader = new BufferedReader(new FileReader("./hoge"));
で実行ファイルと同じディレクトリのファイルを読み込むGUIアプリを作っているのですが、
実行ファイルが置いてあるディレクトリとは別のディレクトリのファイル(例えばデスクトップ)を引数に
そのアプリを立ち上げると
カレントディレクトリが
C:\Program Files\Common Files\System\MAPI\1041\nt\
と、よくわからないディレクトリになります。
何ででしょうか?

改善するためには、実行ファイルが置いてあるディレクトリを基点に
ファイルを読み込むようにすればいいと思うのですが
そのディレクトリを取得する方法がわかりません。
どうすればよいでしょうか?
185デフォルトの名無しさん:2008/02/13(水) 02:31:52
そんな方法はない。
固定ファイルならリソース使え。設定ファイルなら Preferences 使え。
186デフォルトの名無しさん:2008/02/13(水) 10:35:03
java.class.pathをとって、自分で探索していけば分かるかもしれない。
187デフォルトの名無しさん:2008/02/13(水) 11:28:43
>>180
さらっと見ただけだが、

>ComServer() init();

こんな構文ないだろう
188デフォルトの名無しさん:2008/02/13(水) 11:40:54
>>180
コンパイル出来ないのはバグじゃない。
なんでもバグで片付けようとするなよ馬鹿。
189デフォルトの名無しさん:2008/02/13(水) 12:05:05
>>184
Mainクラスにmain()があるとして、

URL url = (new Main()).getClass().getResource("Main.class");
String dir = url.toString();

みたいなかんじでどう?
jarから起動のときはそこからちょっと処理しないといけないけど
190デフォルトの名無しさん:2008/02/13(水) 12:27:21
Graphicsを画像保存したいのですが
GraphicsオブジェクトからImageオブジェクトに変換できますか?
191デフォルトの名無しさん:2008/02/13(水) 13:20:15
>>190
BufferedImageに描画するようにして、それを保存したらどうよ?
192デフォルトの名無しさん:2008/02/13(水) 13:20:21
>>190
BufferedImage image = new BufferedImage(1000, 1000, BufferedImage.TYPE_INT_RGB);
Graphics g = image.createGraphics();
好きなように g に描く
g.dispose();
image げっと!
193デフォルトの名無しさん:2008/02/13(水) 20:09:53
明解Javaとかいう本、糞すぎる
前半はいいとして後半がめちゃくちゃ
結城さんのプログラミングレッスンのほうがはるかに信頼できるわ
194デフォルトの名無しさん:2008/02/13(水) 20:12:10
悪かったな。じゃあおまえが書けよ。
195デフォルトの名無しさん:2008/02/13(水) 20:59:44
例外オブジェクトって何ですか
196デフォルトの名無しさん:2008/02/13(水) 21:00:30
明解Javaって糞本なのか?
持ってないから解らんがw
197デフォルトの名無しさん:2008/02/13(水) 21:09:19
Java SE なんてどの本も同じだろw
つーかネットの連載とかで十分だし
本を糞と評価する奴が頭悪いだけって方が多いよな
198デフォルトの名無しさん:2008/02/13(水) 21:10:38
TeX で組んでない技術本は総じて糞。
199デフォルトの名無しさん:2008/02/13(水) 21:11:39
オライリは頑張って買ったw
英語版はつらいから日本語版待ってOrz..
200デフォルトの名無しさん:2008/02/13(水) 22:11:16
いみふ
201デフォルトの名無しさん:2008/02/14(木) 00:20:11
oh jesus
my jesus
I pleded my heart
202デフォルトの名無しさん:2008/02/14(木) 00:20:46
>>197
おまえ生意気だな
口の利き方に気をつけろよ
誰に話してると思ってんだ?
知らぬが仏とはいうがたいがいにしとけよ
203デフォルトの名無しさん:2008/02/14(木) 01:40:52
byte[] b;
int i;

//DoJa5.1がコンパイルエラー
try {
byte[] b = new byte[1000];
i = b.length;
} catch(Exception e) {
System.out.println("" + i + e);
}

//DoJa5.1がコンパイル成功
try {
byte[] b = new byte[1000];
i = b.length;
i = 5; //なぜこれを書くとコンパイルが成功するんですか?
} catch(Exception e) {
System.out.println("" + i + e);
}
204デフォルトの名無しさん:2008/02/14(木) 01:55:04
て言うかそもそも b を二回定義してるのがおかしい気が…
205デフォルトの名無しさん:2008/02/14(木) 02:10:55
>>195
検索で大体意味はつかめると思うのだが…

まぁ、言語規定によると「オブジェクトは、クラスのインスタンス又は配列」とある。
当てはめると、「例外クラスのインスタンス又は例外配列」ということになる。

そもそも、オブジェクトを配列の意味で使ってる文は少ないし、
例外は配列としないことが普通だろう。として限定すると、前者の意だろう。

>>203
エラー詳細も張らずに質問とな?
206デフォルトの名無しさん:2008/02/14(木) 02:17:23
>>203
try節の中でbを二重定義しているのはおいておいて、
i=5;をそこに書いてもコンパイルに成功しない気が。
上が失敗するのはi=b.length;を評価する前に例外が発生して、
catch節に飛んでしまう可能性があるから、
その場合はiが初期化されていないのでコンパイルエラーを起こす。
int i;の段階でint i=0;とかで初期化すればエラーは出ないはず。
動作として正しいかどうかは別として。
207デフォルトの名無しさん:2008/02/14(木) 03:40:30
>>204,>>206
2重定義でした。ありがとうございました。
208デフォルトの名無しさん:2008/02/14(木) 03:44:59
そっちかよw
でもiの未初期化でもエラーが起こらなかった?
209 ◆xkgLgN/H4. :2008/02/14(木) 10:24:06
Sun認定Javaプログラマの試験対策問題集で納得できない部分があったので
質問させてください。

----------

問:アサーションの使用方法として適切なものを選びなさい。

【A】
public void method(int data) {
  assert data < 0: "dataが負数";
}

【B】文法間違いなので割愛

【C】
public void method(int data) {
  assert check(data): "checkメソッドがfalseを返した";
}
private boolean check(int data) {
  if (data < 0) {return false;}
  return true;
}

続く...
210209 ◆xkgLgN/H4. :2008/02/14(木) 10:25:50
...続き

【D】
public void method(int data) {
  boolean checked = check(data);
  assert checked: "checkメソッドがfalseを返した"
}
private boolean check(int data) {
  if (data < 0) {return false;}
  return true;
}

正解は【D】なのですが、その解説が

【A】publicなメソッドの引数チェックをアサーションで行うのは不適切
【C】デバッグ時のみ使用し本番では使用しなくなるアサーションで
   メソッドの呼び出しを行うのは不適切
【D】内容は【C】と同じだが、メソッドの戻り値を変数へ格納し、その変数を
   アサーションでチェックしているので適切

というものでした。
【C】も【D】も「publicなメソッドの引数チェックをアサーションで行うのは不適切」に
該当する感じがして納得できないのですが、どう考えるべきですか?

また、【C】の解説が言わんとすることは、
アサーション有効時と無効時で呼び出されるメソッドが違う等の条件の違いがあっては
デバッグ作業として良くない
ということでOKですか?

よろしくお願いします。
211209 ◆xkgLgN/H4. :2008/02/14(木) 10:31:18
訂正
【D】のassert行の末尾にセミコロンが抜けてました。
本来はセミコロンは付いています。
212デフォルトの名無しさん:2008/02/14(木) 10:44:59
Eclipseで製作したプロジェクトをjarファイルにエクスポートする際、
ImgaIconに使った画像や、プラグインとして使用したjarファイルが
含まれずに生成されてしまいます。どうすればよいでしょうか?
213デフォルトの名無しさん:2008/02/14(木) 10:50:09
>>210
しょせん試験なんてそんなもの。
問題作ったやつがアホだったんだろう。
214デフォルトの名無しさん:2008/02/14(木) 10:54:36
>>209
あら、俺は【C】で書いてるよ・・・。
215デフォルトの名無しさん:2008/02/14(木) 10:54:40
long a,b;

aとbを比較したいのですが、a<bではダメなのですか??
216デフォルトの名無しさん:2008/02/14(木) 10:55:33
>>212
jarにエクスポートするとき、含めるファイルと含めないファイルを選択できると思うが
含めたい画像ファイルやjarファイルにチェックマークを付ければいいんでないか
217デフォルトの名無しさん:2008/02/14(木) 10:56:05
>>215
a<bでいいよ
218デフォルトの名無しさん:2008/02/14(木) 11:00:01
>>216
その際、srcフォルダの.javaにはチェックボックスが現れるのですが、
画像やプラグインには現れませんでした
別に設定すべき箇所があるのでしょうか?
219デフォルトの名無しさん:2008/02/14(木) 11:00:32
>>217
それですると
Exception in thread "main" java.io.IOException: Bad file descriptor
でてくるんですけど・・・。
220デフォルトの名無しさん:2008/02/14(木) 11:05:23
>>219
long値a,bの比較は a < b の形式で問題ない。
その周辺のコードが悪いんだろうよ。
221デフォルトの名無しさん:2008/02/14(木) 11:06:37
>>219
longの比較でIOExceptionが出るわけないだろうと思うが・・・
スタックトレースは?
222デフォルトの名無しさん:2008/02/14(木) 11:13:12
>>220.221
すいません、正確には
RandomAccessFile bin1 = new RandomAccessFile(new File(FileName1),"r");
RandomAccessFile bin2 = new RandomAccessFile(new File(FileName2),"r");

if(bin1.length()>=bin2.length())
c=bin2.length();
if(bin1.length()<bin2.length())
c=bin1.length();
としており、long型のcに短い方のファイルサイズをいれたいのです。。
この部分に問題があるのは確かなのですが・・。
223デフォルトの名無しさん:2008/02/14(木) 11:32:53
>>218
ビルドパスに入ってるjarファイルは出ないみたいだけど、画像はなんだろう・・?
ところで、jarにjarを含めても読み込めないよ
そういう場合はFatJarプラグインを使うといいかもしんない
224デフォルトの名無しさん:2008/02/14(木) 12:01:55
jconsoleのリモート接続ができないのですがどんな理由が考えられますでしょうか?
接続対象の環境は
Windows2003
Java HotSpot(TM) Server VM バージョン 10.0-b19
VM引数として
-Dcom.sun.management.jmxremote.port=8888
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
を設定しています。
接続元からportqryコマンドで8888がLISTENING状態になっているのは確認済みです。
225デフォルトの名無しさん:2008/02/14(木) 12:49:51
>>209
CとDとの違いは、Assertionを有効にしない実行時にcheckメソッドが通るか否かという点は理解できているな?

これは試験用のサンプルだからわかりにくいけど、
int result = dao.update(entity);
assert result == 1;
というサンプルならばCはNGでDがOKと解るだろう。
わざわざcheckというメソッドで引数をチェックさせているのは意地悪な引っ掛けだね。
226デフォルトの名無しさん:2008/02/14(木) 12:55:32
>>225
俺は、A を却下してる時点で、C や D も却下されるべきだと思うな。
assertion 使わずに、変な引数にもちゃんと対応しろって言ってるように見えるのに、
C と D のどちらもそのガイドラインに沿っていない。
227225:2008/02/14(木) 12:56:28
追記
>213
アホはお前。
「アサーションの使用方法として適切なもの」であるから、CDは「publicメソッドで引数チェックのやり方は不適切」だがアサーションの使用方法に関してはDが正しい。
228デフォルトの名無しさん:2008/02/14(木) 12:58:14
>>222
その先何をやるのかわからないけど、必要なければ RandomAccessFile を使わない方が無難。
native なメソッドで追跡不能。例えば、ファイル長なら File.length でも可。
229デフォルトの名無しさん:2008/02/14(木) 13:10:20
int型配列の最大要素数はどんだけ?
230デフォルトの名無しさん:2008/02/14(木) 13:21:33
>>229
言語規定によると…
> 配列は,int値によってインデクス付けしなくてはならない。
で、int型の最大値 (Integer.MAX_VALUE) は 2,147,483,647 なので、要素数はその -1 まで。
231230:2008/02/14(木) 13:27:25
自己レス。
要素数が最大値でインデクス値が最大値-1。かな…
まぁ、確保した時点で普通は OutOfMemoryError かと。
232デフォルトの名無しさん:2008/02/14(木) 13:32:03
>>230
ありがとうございます。十分な量です。
233デフォルトの名無しさん:2008/02/14(木) 14:24:53
Jakarta Projectスレがなくなっていたのでスレを立てた

Apache Jakarta Project関連統合【Java】
http://pc11.2ch.net/test/read.cgi/tech/1202966638/
234デフォルトの名無しさん:2008/02/14(木) 16:12:12
質問です。

現在、mainクラスのガベージコレクションを、
多重継承されたインスタンスからコントロールしています。

ただ、Heap領域にアクセスする場合について、
そのコレクションフレームワークからマルチスレッド化させると、
ローカルにremoveしようとしても同期的な排他制御が取れません。
やはりラッパークラスのプリミティブ型は、エレメントのイテレータもhasNext()メソッドもどきで
volatile修飾子のシリアライゼーションをさせるのが絶対条件なのでしょうか。

ちなみに、もしコマンドライン引数によってJava.langのStringBufferまでimportしたとしても、
SetインターフェースのisEmptyメソッドにするとなぜかStackOverflowErrorの例外が発生します。
staticなyield()メソッドを汎用させるため、
throwsで例外ハンドラをコンストラクタなアサーションをしているのですが・・・。

C言語が腐るほど考えたのですが、
バイナリでのファイル操作がなかなかまとまらないため質問した次第ですので、
どうかお答えお願いします。
235デフォルトの名無しさん:2008/02/14(木) 16:15:02
不覚にも吹いたw
プログラミングを何も知らない初心者が見たら、
めちゃくちゃ高度なことに見えるんだろうなぁ
236デフォルトの名無しさん:2008/02/14(木) 16:22:04
未消化な単語ばかり並べてるけど、まあ初心者板なのだから。
やりたいことを自分の言葉やコードで示せば回答もあると思うよ。
237デフォルトの名無しさん:2008/02/14(木) 16:32:42
スイーツ(笑)
238デフォルトの名無しさん:2008/02/14(木) 16:33:08
>>234
まず、「てにをは」だけでも見直してみたらどうか?
239デフォルトの名無しさん:2008/02/14(木) 16:36:31
まるで自動生成したかのような意味の通らなさだ
240デフォルトの名無しさん:2008/02/14(木) 16:38:26
釣られてみる。
多重継承 :無理
GCのコントロール:原則としてできない
Heap領域にアクセス:??
ローカルにremove:??
ダメだ、突っ込みようもないわ
241デフォルトの名無しさん:2008/02/14(木) 18:22:37
JLabelのpaintComponent(Graphics g)をオーバーライドして、
中でg.draw(new Line2D.Double(x, y))

とやると直線が引けました。
この直線を半透明にグラデーションさせたいのですが、どのようにするのがよいでしょうか?
242デフォルトの名無しさん:2008/02/14(木) 18:29:49
AGGへのラッパーを書く。
243デフォルトの名無しさん:2008/02/14(木) 19:22:35
>>222
小さいほうの値を選ぶだけなら static long Math.min(long, long) を。(if文を消せる。
244デフォルトの名無しさん:2008/02/14(木) 19:56:19
>>241
GradientPaint と AlphaComposite を調べろ
245241:2008/02/14(木) 20:19:12
ありがとうございます。
とりあえず直線はおいておくことにして、任意のShapeについて半透明グラデーション
させられるかを考えることにしました。

AlphaCompositeを利用すると一様にアルファ値が適用されてしまうようです(当たり前ですね)。
これを徐々に変化させるような処理というのはどういうプロセスになるのでしょうか・・・

かなり考えたのですが、すみません、ヒントいただけませんか?
246デフォルトの名無しさん:2008/02/14(木) 20:30:35
少し描画して変更して、また少し描画する、あとは適当なタイミングになるように工夫して繰り返せ
247デフォルトの名無しさん:2008/02/14(木) 20:48:02
ああ、少しずつ描画すればいいわけですね。
このY座標までは0.6fで、次からはもっと薄く・・・とか。
ありがとうございます。

しかし、タイミングって関係あるんでしょうか?
ひょっとして「徐々に」というのが時間的に捉えられてたとか・・・
すみません。これは距離的にということでした。
248デフォルトの名無しさん:2008/02/14(木) 21:12:25
GradientPaintとか
249デフォルトの名無しさん:2008/02/14(木) 22:41:53
速度が与えられれば時間的≒距離的だろう。
中学生レベルの理科か算数の話じゃねーか
250デフォルトの名無しさん:2008/02/14(木) 23:09:02
>>244のヒントであとは自力でできないようなら他のことを教えられてもできそうにない
あきらめたほうがいい
251デフォルトの名無しさん:2008/02/14(木) 23:31:23
いや、速度とか言ってるけど何か動かすような話じゃないと思うよ。
要するに図形を半透明にグラデーションさせたいわけだろ?
領域の面積で考えれば済む話じゃないか。しかももう判りかけてるみたいだし。

>>249,250はもうちょっと考えた方がいい。
252デフォルトの名無しさん:2008/02/15(金) 00:14:39
「釣られて見る」 と宣言すればネタに無粋な突っ込みして許されるってもんでもないぞ。
253デフォルトの名無しさん:2008/02/15(金) 00:25:57
すいません、質問です。
ゲームを作っているのですが、方向キーを押したときに画像が
切り替わるようにするにはどうしたら良いでしょうか。
歩いているように見せたいんです。
現在、方向キーを押すと画像が動くようにはできています。
分かりにくかったらすいません。
254デフォルトの名無しさん:2008/02/15(金) 00:29:46
10個以上も上のやつのネタに突っ込みするんだからレス番ぐらいつけなきゃ無粋なんじゃ?
255デフォルトの名無しさん:2008/02/15(金) 00:33:10
>>253
普通に描画するだけなんじゃ?
ていうか質問の件よりは動かすほうが難しいと思うんだが
256デフォルトの名無しさん:2008/02/15(金) 00:33:24
ふと思ったんだが
やっぱり、strutsよりJSFの方が良くないか?
257デフォルトの名無しさん:2008/02/15(金) 00:34:11
Struts が良いものと思ってる奴なんて居るのか?
258デフォルトの名無しさん:2008/02/15(金) 01:14:43
>>255
キャラが左右に滑るだけでまだ手足が動かないということなんじゃ?
259253:2008/02/15(金) 01:23:33
>>258
そういうことです。いいクラスライブラリがあるのでしょうか?
260デフォルトの名無しさん:2008/02/15(金) 01:36:05
JSF って JSTL と何か違うの?
261デフォルトの名無しさん:2008/02/15(金) 01:36:47
>>259
座標を適当な数で割った余りによってキャラを切り替えていくというのは?
262デフォルトの名無しさん:2008/02/15(金) 01:37:17
何を考える余地があるんだ?
ちょっと考えたほうがいいのは241だろ
アルファ値込みでグラデーション設定したGradientPaintをsetPaintで設定したグラフィックコンテクストを使って
drawなりdrawLineなりで直線引けば終わりじゃないか
>>244でGradientPaintってヒントが与えられてるのに
AlphaCompositeで一様にしかアルファを設定できないって言ってるやつが変
263デフォルトの名無しさん:2008/02/15(金) 01:44:13
GradientPaintで力不足ならAPIドキュメントでGradientPaint周りをぶらつけばLinearGradientPaintとかにも行き当たる
264195:2008/02/15(金) 01:47:42
>>205

激しく遅レスでごめんなさい。

言葉足らずだった、というか話が長くなる予定だったので最初は簡単に意向と思ったというか。

Java(というかJVM?)でも、普通にメソッドを呼び出すと引数とかリターンアドレスとか
ローカル変数とかをスタックに積んでいくんだと思うんですよ。

でも呼び出し先で「例外」投げると呼んだメソッドへのリターンではなくって、
メソッド呼び出しを含むtry節に対応したcatchのところに(しかも例外の種類にあったcatchのところ)へ
一足飛びに戻ってくるわけですね。

そしてそこでキャッチした例外のインスタンスには、
そこから上のスタックがごそっと詰まっているように見えるわけです。

そんなこんなで、tryを実行するとJVMがどっかにcatchのアドレスと例外の型を保存していて、
呼び出し先のどこかで「例外を投げる」を行うと、スタックをこれまたどこかに保存したうえで、
もともと保存してあったcatchのアドレスにまで一足飛びにジャンプして、というのを考えると、
それというのはGotoなんかよりよっぽどたち悪くないか、なんて思ったりするんですけど、
それでも例外は使うな、なんて話は別に聞かないですし、そんなもんかとも思うんですが、
例外処理書くときにもやもやするのは確かなのです。

そういう例外処理機構がくわしくわかるようなWebとかないでしょうか。
265デフォルトの名無しさん:2008/02/15(金) 01:49:02
名前空間付きの XML (DOM) に対して:

<foo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns="http://foo-uri"
  xsi:schemaLocation="http://foo-uri foo.xsd">
<bar>...</bar>


XPath でノードを参照してみたんですけどノードと一致しません。

NodeList nl = (NodeList)xpath.evaluate("/foo/bar", doc, XPathConstants.NODESET);
// nl.getLength() == 0 になる

XML から名前空間の指定を取り除くと一致するため、検索時にパスの名前空間が考慮されてない
動きだと思うのですが、XPath に名前空間を意識させるにはどうすれば良いでしょうか?

DOM を構築するときにファクトリへ setNamespaceAware(true) は行っています。
266デフォルトの名無しさん:2008/02/15(金) 01:49:30
>>256
Feedaのほうがいい
267デフォルトの名無しさん:2008/02/15(金) 02:01:33
先ほどスレ立てるまでもない質問スレで質問させてもらったんですが、板違いってことで
こちらで再度質問させてくださいまし。

一昨日からずっとこの問題を考えているのですが、基礎知識があまりに不足していて全くわからないで困っています。
プログラムに詳しい方いましたら長いですが完全解答を導き出していただけませんでしょうか?
以下に掲げたおこずかい帳プログラムの説明を書きなさい。ただし、書き方は次の例
を参考にすること。<form name=f><input type=text name=i value=""><input type=button value="偶奇判定" onClick="check()"></form><script>function chech()
{var a=Number(document.f.i.value);a=a+1;if(evenp(a)) alert("偶数");else alert("奇数");}function evenp(a){return a%2==0}</script>
【説明例】formタグとinputタグによって、画面にテキスト文字表示窓と偶奇判定用のボタンを表示。この際、ボタンをクリックした時、関数check()を呼び出すように設定する。
関数checkは、テキスト文字窓から入力された値(document.f.i.value)を関数Numberによって数値に変換し、これを変数aに代入する。ついで、aの値を1増やし、関数evenpによって変数aの
値が偶数か、奇数か判別し、偶数の時は"偶数"、奇数の時は"奇数"とalertウィンドウに表示する。関数evenpは、与えられた値(a)が偶数かどうか判別(aを2で割った余りが0かどうかで判定)し、結果(trueかfalse)を返す。
268デフォルトの名無しさん:2008/02/15(金) 02:12:47
何だこれ?
読む気しねえ
269デフォルトの名無しさん:2008/02/15(金) 02:13:55
>>267
板違い
Web 作成板池
270265:2008/02/15(金) 02:40:39
XPath の表記に接頭辞付けて、その接頭辞に対する URI (XML のと同じ URI) を返す
NamespaceContext サブクラス作らなきゃいけないみたいですね。
271デフォルトの名無しさん:2008/02/15(金) 03:14:39
>>267
板違いって言われてなお同じ板の別スレに投げるとは
web制作板へ行ってもそのままじゃ誰も読んでくれんぞ
あっちの板で質問するときはせめて改行を入れろ
長くなるようならうpろだにあげろ
272デフォルトの名無しさん:2008/02/15(金) 03:42:55
>>264
お察しの通り、例外が発生した際の手順は見かけ以上に多く、議論の的になります。
例外を使う場面に関する検索キーワードとしては「java 例外 コスト」などでしょうか。

条件分岐目的で例外を発生させる書き方は、好まれていないように思えます。
instanceof とキャストと例外の話も面白い。
273デフォルトの名無しさん:2008/02/15(金) 05:59:57
httpclientを使用してログインが必要なサイトにアクセスしたはいいものの
リダイレクトされて、html情報を取得できません。。。

ググってもリダイレクト先のURLを取得する方法がわかりませんー!
どなたかご存じありませんか><
274デフォルトの名無しさん:2008/02/15(金) 06:04:52
Location ヘッダを取れ。
つかリダイレクトを自動処理する設定くらいないのか。
275209 ◆xkgLgN/H4. :2008/02/15(金) 09:06:24
>>213-214,225-227
レスありがとうございました。
メソッドの事後条件チェックにアサーションを使用した例と
考えることにします。
引数チェックに見えるのが腑に落ちないですが、
そこは問題作成者の思いやりが足りなかったと思うことにします。
276デフォルトの名無しさん:2008/02/15(金) 11:39:42
>>264
処理の重さが気になるって話なら、実際に例外が発生しない限りほとんどノーコストなんだし、
実際に例外が発生した場合にコストが高いのは、まぁエラー発生時のみだからと割り切る。

gotoっぽくてイヤって話なら、returnでエラーコード返す処理を連ねてくのに比べればマシかと。
277デフォルトの名無しさん:2008/02/15(金) 12:30:20
paint(Graphics g)やupdate(Graphics g)のgの部分を他のクラスから使う方法はありますか?

今はエラーを表示するだけなのに、

paint(Graphics g){
 test(g);
}

test(Graphics g){
 ………
 tset_error(g);
}

test_error(Graphics g){
 g..drawString("エラーがでたよ",0,0);
}

こんな感じの入れ子が数段連なってます。
なんだかガベージコレクトも頻発してるみたいなのでGraphics gを無くしたいのです。
278デフォルトの名無しさん:2008/02/15(金) 12:33:26
根本的な使い方が間違っていると思われ
279デフォルトの名無しさん:2008/02/15(金) 12:38:47
エラーに限らずほとんどのクラスにGraphicsが付いてるんですよ。
なんとかしたいでつ(>_<)
280デフォルトの名無しさん:2008/02/15(金) 12:52:03
作ったやつに氏ねと言ってくれ
281デフォルトの名無しさん:2008/02/15(金) 12:57:06
>>277
設計を見直すべきかと
paintの中で描画以外の処理をやってないか?
paintでは描画に集中し、ほかの事はやらない

設計に問題がないのなら、gを渡すのは仕方ない
あとガベージコレクションはgを渡してるのとはおそらく関係ない
282デフォルトの名無しさん:2008/02/15(金) 13:11:25
>>281
Graphicsの入れ子はガベージコレクト的に問題ないと言うことですね。それを聞いて安心しました。
ということはImageや整数配列の入れ子が問題なのかな。

Cみたいな参照変数になってるのか、なってないのかがよく分からなくて。
283デフォルトの名無しさん:2008/02/15(金) 13:22:23
Javaには参照渡ししかない。
284デフォルトの名無しさん:2008/02/15(金) 13:22:26
直線のデータをdに入れます。
dは配列です。1次元目が開始位置、2次元目が終端です。
1次元目、2次元目がそれぞれx,yの座標を持っているので、
int d[][]型です。
int d[][] = new int[2][2];
配列dのメモリ確保はこれでよいですか?
C言語のようにd = new int[2]を実行してから、2次元目はforで回しながら
newしなくてはならないのでしょうか?
285デフォルトの名無しさん:2008/02/15(金) 13:23:32
ごめん、うそついた。
Javaの変数は、オブジェクトについてはすべて参照。
引数はすべて値渡しだが、オブジェクト自身を渡すことはできない。
286デフォルトの名無しさん:2008/02/15(金) 13:26:54
287デフォルトの名無しさん:2008/02/15(金) 13:52:34
>>285
試してみたら、Imageはコピーでした。Graphicsは参照。
全部試してみればよかったんだね。
288デフォルトの名無しさん:2008/02/15(金) 15:39:04
java3級 落ちてきたオイラに一言。
289デフォルトの名無しさん:2008/02/15(金) 15:46:37
java3級ってなに?
290デフォルトの名無しさん:2008/02/15(金) 16:12:36
サーティファイか
291デフォルトの名無しさん:2008/02/15(金) 17:14:19
propertiesファイルで

firstname = taro
lastname = yamada
fullname = ${lastname} ${firstname}

みたいなことって無理ですか?
292デフォルトの名無しさん:2008/02/15(金) 17:44:10
>>234
なんか、完ぺき主義者みたいだな。
ところどころで主語や目的語が抜けて凄いな。
何を多重継承したのかわからんし、何をどのようにコントロールしているのかもわからない。
5W1Hがなっていないというか。
293デフォルトの名無しさん:2008/02/15(金) 18:17:48
>291
無理
294デフォルトの名無しさん:2008/02/15(金) 20:22:43
anko1;;あんこ
anko2;;あんこ2

このような形式の辞書ファイル(100MB)を
ランダムアクセスファイルで分割してメモリに読み込み
検索する辞書検索プログラムを作っているのですが
検索はできるのですが、かなり時間がかかり困っております

ハッシュ系のコレクションフレームワークを使えとヒントをもらったのですが
100MBのデータをハッシュ化すると当然メモリがたりなくなりました

大量のデータをハッシュで高速に検索する方法をおしえていただけないでしょうか



295デフォルトの名無しさん:2008/02/15(金) 20:28:00
>>292
KY
296デフォルトの名無しさん:2008/02/15(金) 20:31:16
>>294
メモリ増設
てか、ヒープを256MBくらいにすればいいだろ
297デフォルトの名無しさん:2008/02/15(金) 20:34:56
>>294
普通にデータベース使え。
それが嫌ならその辞書ファイルにインデックスでも付けろよ。
298デフォルトの名無しさん:2008/02/15(金) 20:49:22
SAX パーサに Schema やなんかの Validator が設定できないみたいなんすけど
解析しながら ヴァリデーション ができるようには作れないんでしょうか。
299デフォルトの名無しさん:2008/02/15(金) 21:29:55
>>294
他の人も書いてるけど、
普通にJavaDBでEmbeddedでやれば何も考えずに楽勝だと思うんだけど。

辞書ファイルがテキスト形式絶対でも
nioだったらヒープ外にバッファが取られるから
それほど遅くならんと思うがなぁ。
コマンドライン引数指定はしないとまずいし、今やってないかもしれないしなぁ、
どの程度のレスポンスで遅いって言ってるか解らないし。
300デフォルトの名無しさん:2008/02/15(金) 23:46:17
アプリの中のデフォルトフォントを設定したい。
Label l = new Label("");
l.setFont(f);
をいちいちインスタンスごとにやるのではなくて、main()が始まったらすぐに
デフォルトフォントを設定して、Label l = new Label("");した時点で
そのフォントが適用されているようにはできませんか?
301デフォルトの名無しさん:2008/02/15(金) 23:49:50
Labelをextendsしたらあかんの?
自前の俺Label作ったらええやん
302デフォルトの名無しさん:2008/02/15(金) 23:52:16
>>300
Javadocには親のフォントを継承するかのように書いてあるから、
FrameにsetFontすればいいんじゃなかろうか
303デフォルトの名無しさん:2008/02/15(金) 23:52:59
Javaのソースコードを構文解析木に変換したいです。
たとえば
a = max(b,c/2);
だったら
  =
/ \
a   max
   / \
  b    /
     / \
    c    2
のような木を得たいです。出力のフォーマットはどのようなものでも構いません。
何かご存知の方いらっしゃいましたらよろしくお願いします。
304デフォルトの名無しさん:2008/02/15(金) 23:56:01
JavaCCでググれ。

BNFが有るのが前提だったら楽。
305デフォルトの名無しさん:2008/02/16(土) 00:34:55
>>301
Label.setFont()がありましたが、setDefaultFont()で解決しました。
306デフォルトの名無しさん:2008/02/16(土) 00:50:02
>>302
ありがとうございます。あきらめました。
public class OrigApp extends IApplication {
 public OrigPanel oPanel;
 public void start() {
  oPanel = new OrigPanel();
  oPanel.setFont(Font.getFont(Font.FACE_SYSTEM | Font.SIZE_SMALL | Font.STYLE_PLAIN));
  Display.setCurrent(oPanel);
307デフォルトの名無しさん:2008/02/16(土) 00:52:49
↑import com.nttdocomo.ui.Font;
が無いとFontのシンボルが解決でないというコンパイルエラーです。
Fontというクラス名が衝突しているのですか?
308デフォルトの名無しさん:2008/02/16(土) 00:55:39
iアプリかよ・・・・・。

>>307
いみがわからん。
インポートしちゃいかんの???
309デフォルトの名無しさん:2008/02/16(土) 00:59:36
>>308
import com.nttdocomo.ui.*
こう書けばFontが使えると思っていましたが、
>>306のソースでは
import com.nttdocomo.ui.Font;
でなくてはコンパイルできない理由が分かりません。
310デフォルトの名無しさん:2008/02/16(土) 01:09:57
なるほど。
じゃぁ、Fontというクラス名の衝突という認識で正しい。

import java.awt.*;
とかやってないかい?
そこのFontクラスがある。

つーか普通Fontっていうとjava.awt.Fontだとおもうんだが。

まぁ、ソースに明示的に
oPanel.setFont(com.nttdocomo.ui.Font.getFont(com.nttdocomo.ui.Font.FACE_SYSTEM | com.nttdocomo.ui.Font.SIZE_SMALL | com.nttdocomo.ui.Font.STYLE_PLAIN));
って書いてもいいけどなw

ま、Eclipseとか使えってことだ。
311デフォルトの名無しさん:2008/02/16(土) 01:17:23
java初心者です
Cだとif文で〜のときは変数○に値□を入れて
ーのときは変数○に値△をいれる

ってのができるのにjavaはスコープの関係上それができません><
一体どうやってやるんですか??
312デフォルトの名無しさん:2008/02/16(土) 01:18:04
>>310
import java.awt.Font;は、携帯用のコンパイラだからエラーでしたが
クラス名の衝突なんでしょうね。?
Eclipse使ってないことまでバレちゃうんだな。
Eclipse使えと言われているんだが。
313デフォルトの名無しさん:2008/02/16(土) 01:20:36
>>311
何を言っているんだ C のスコープも同じだろ (最近の ANSI C/C++ は違うのか?)。

String ○ = null;
if(〜){
 ○ = "□";
} else if(ー){
 ○ = "△";
}
314デフォルトの名無しさん:2008/02/16(土) 01:21:09
>>311
おそらくキャストが間違っている
315デフォルトの名無しさん:2008/02/16(土) 01:22:04
>>311
おそらく再起動したら直る
316デフォルトの名無しさん:2008/02/16(土) 01:23:22
>>311
おそらく激しく勘違い
317デフォルトの名無しさん:2008/02/16(土) 01:25:15
>>312
あーごめん。
おれiアプリとか書いたこと無いから「クラス名の衝突」に関してはウソかもシレン。

IDE使ってないのが解るのは
import java.awt.*;
とかでアスタリスクを使ってるから。
Eclipseだったら使ってるクラスのみをインポートするし
作法的にも衝突が起きないように省略するとかしない。

スタティックインポートとかつかえんよね?iアプリだと。

コンパイルする前からエラー教えてくれるし、俺は初心者であっても使うべきだと思う。
今ならEclipseじゃなくてNetBeansでもいいとおもう。

318デフォルトの名無しさん:2008/02/16(土) 01:26:58
なんか日本語むちゃくちゃだなorz.

まだ会社なんだ・・・・・許してくれ。
319311:2008/02/16(土) 01:28:52
初期化してなかっただけでした\(^o^)/
320デフォルトの名無しさん:2008/02/16(土) 01:37:47
>>317
スタティックインポートって聞いたことがありません。
まだインポがうまく使いこなせていませんが、
「Java謎+落とし穴徹底解明」を読んで、クラス名の衝突なのでは、と思いました。
321デフォルトの名無しさん:2008/02/16(土) 01:45:24
Java5から導入されたんだが、
クラス名から書かなくてもメンバを参照できるってだけ。
この場合だと

import static com.nttdocomo.ui.Font.FACE_SYSTEM

って宣言しておけば
Font.getFont(FACE_SYSTEM ・・・
って書けるってだけ。
あんまり便利でもないし、積極的に使う場面でもないな。
322デフォルトの名無しさん:2008/02/16(土) 03:18:28
<? extends Hoge> と <? super Hoge> とかってどう違うの?
323デフォルトの名無しさん:2008/02/16(土) 03:20:57
Hogeのサブクラスに限定するか、Hogeのスーパークラスに限定するかの違い
324デフォルトの名無しさん:2008/02/16(土) 03:23:09
<? extends T> Tの派生クラスだったらなんでもいい
<? super T> Tのスーパクラスだったらなんでもいい
325デフォルトの名無しさん:2008/02/16(土) 03:58:46
class A{}
class B extends A{}
class C extends B{}

とした場合、

List<? extends B> には B, C が入れられ
List<? super B> には A, B (Object も) が入れられる

って事で良いの? スーパークラスに限定が必要性ってどういう状況で出るんだろ。
326デフォルトの名無しさん:2008/02/16(土) 04:04:25
別にクラスだけじゃなくて、インターフェースも指定できるから、
状況的にはあるとおもうが。
327デフォルトの名無しさん:2008/02/16(土) 04:08:26
ん? ゲネリクス の型チェックってコンパイル時の静的な奴だから
<? super B> としても A にキャストした C のオブジェクトは OK になっちゃうんじゃないの?
328デフォルトの名無しさん:2008/02/16(土) 04:15:07
>>325
たとえば、java.util.Collections#copyとか。
<? extends T>なListの要素を<? super T>なListにコピーするメソッド。
Tのサブクラスが入ったListはTのスーパークラスを入れられるListにコピー可能。
329デフォルトの名無しさん:2008/02/16(土) 04:35:17
List<? extends B> bext1 = new ArrayList<A>(); // エラー
List<? extends B> bext2 = new ArrayList<B>();
List<? extends B> bext3 = new ArrayList<C>();
List<? super B> bsup1 = new ArrayList<A>();
List<? super B> bsup2 = new ArrayList<B>();
List<? super B> bsup3 = new ArrayList<C>(); // エラー

↑これはまぁ分かりますと。

List<? extends B> bext = new ArrayList<C>();
bext.add(new A()); // エラー
bext.add(new B()); // エラー
bext.add(new C()); // エラー

↑何で全滅やねん!

List<? super B> bsup = new ArrayList<A>();
bsup.add(new A()); // エラー
bsup.add(new B());
bsup.add(new C());

↑B のスーパークラスってのは代入の時のみで、
実際に適用するオブジェクトの型を上位に限定するんじゃないのか。
330デフォルトの名無しさん:2008/02/16(土) 04:47:20
>>329
>List<? extends B> bext

List<? extends B> ってことは、たとえば List<D> だったら
add の引数は D でなければならないわけで、
その場合は A も B も C も add 出来ないことになる。
? が確定しない限り、安易に add 出来ない。

>List<? super B> bsup = new ArrayList<A>(); 

こっちは、? が D ではありえない。List<Object> か List<A> か List<B> しかない。
List<B> かもしれないことを考えると、A は add できない。
B だったら、List<Object> でも List<A> でも List<B> でも OK だ。
331デフォルトの名無しさん:2008/02/16(土) 05:06:04
>>330
前半、全て NG なら何のためにそういった書き方が出来るんでしょうか?
さらに別に参照を受け渡すためか class D extends C{} を作って
List<D> dlist = bext; とかしてみましたがエラーでした。

後半、言語設計する側の理屈で言えばそうですね。使う側の立場で宣言だけ見ると
B のスーパークラスだけ add できるリストなのかと思ってしまいそうですが。

何でこうゲネリックウsって消化悪いんでしょうか。誰ですか設計したのは。
332デフォルトの名無しさん:2008/02/16(土) 06:07:25
>>330
なるほど。ありがとうございます。(質問者じゃないけれど)
かなり理解が進みました。

// 代入文を見ると、ついつい右辺の型で考えてしまうのよね…
333デフォルトの名無しさん:2008/02/16(土) 10:25:49
独習Javaをやっているんですが、
本が厚すぎてコードを打っているうちにパタンと閉じてしまいます。
何かいい方法はありませんか?
334デフォルトの名無しさん:2008/02/16(土) 10:33:37
板違い
335デフォルトの名無しさん:2008/02/16(土) 10:55:08
章ごとに小分けして製本する。
336デフォルトの名無しさん:2008/02/16(土) 10:57:36
>>333
独習Javaをやらない。
337デフォルトの名無しさん:2008/02/16(土) 11:01:09
>>333
お買い上げありがとうございます。
ttp://www.amazon.co.jp/dp/B0001CQAAQ

ワニクリップか洗濯バサミか何かでもいいけど。
338デフォルトの名無しさん:2008/02/16(土) 11:25:58
独習Java読んでみたけどあれはひどいね。
J2SE5.0対応を謳ってるくせに、
実際は1.3以前の内容しか載ってない。
例えば、キーワードにassertやenumが無かったり。
よくあんな本が売れるもんだ。
339333:2008/02/16(土) 11:26:25
>>337
今、購入しました。
商品が届くまでは本に「やさしいJAVA」を乗せておくことにします。
340333:2008/02/16(土) 11:34:57
>>338
それを聞くとモチベーション下がるなぁ。まだ第2章だっていうのに。
このスレには独習にお世話になった人はどのくらいいるのだろうか。
341デフォルトの名無しさん:2008/02/16(土) 11:48:09

お世話になったよ。
5.0は対応しているだけで、5.0用ってわけじゃないからなぁ。
1.4系を独習するという事で割り切れば今でも良本。

そもそも5.0系でまともな入門本ってあるかい?
342デフォルトの名無しさん:2008/02/16(土) 12:09:23
>>331
Java言語仕様一通り読んだけど、Genericsまわりははっきり言ってわけわからん。
つか、理解を完全に放棄したw
何らかの数学的背景があって、その範疇で整合性を取っているような感じだったが……。
343デフォルトの名無しさん:2008/02/16(土) 12:18:37
>>341
assertが載ってないから1.3系だよ。
1.4系の独習なら、他にもっといい本があるだろう。
5.0系の入門書は知らないけど、
1.4系なら結城さんの本とかいいんじゃないの?
5.0に対応してたかも知れないし。
344デフォルトの名無しさん:2008/02/16(土) 12:22:00
java(TM)plug-inの致命的エラー

XP IE7 導入

JAVAの再インストール
すべてやってもエラーでみれません
対処方法教えていただけませんか?
345デフォルトの名無しさん:2008/02/16(土) 12:31:02
>>331
>前半、全て NG なら何のためにそういった書き方が出来るんでしょうか? 

それは、get の方を考えてみればわかる。
List<? extends B> の場合、保持してる要素は少なくとも B か
そのサブクラスであることがわかってるから、get は B を返すことができる。
List<? super B> の場合、List<Object> という可能性があるから、
get は Object でしか返せない。

>List<D> dlist = bext;

それは無理。
bext は List<A> かもしれないし。
List<D> の get は D を返すわけだから、A とか入ってたら困るだろう。
346デフォルトの名無しさん:2008/02/16(土) 12:39:20
javaVM1.2以降の時だけGraphics2Dを使いたいのですが、
バージョンをチェックして振り分けてもMSjava1.1だとランタイムエラーになってしまいます。
SUNjava1.1はキチンと振り分けられて動いています。

これって対処できますか?
347デフォルトの名無しさん:2008/02/16(土) 12:39:26
理由を聞けばもっともだとは思うが、あんだけ時間かけといて何でこんなgdgdなんだろうか。
まぁ誰の声が一番でかいかを争ってたんだろうというのは想像に難くないけど。
348346:2008/02/16(土) 12:55:07
具体的にはClassNotFoundExceptionが出ます。
if文で1.1以下の時だけそのクラスを使わない処理にしたら、
sun-java1.1はエラーを吐かなくなりましたが、
ms-java1.1はエラーで止まってしまいます。
349hage:2008/02/16(土) 12:57:37
質問です。(コードは以下に連投します)
キャンバス上に JComboBox を混ぜたプログラムを作ってるのですが、
マウスドラッグ中に JComboBox がちらついてしまうのが嫌なのですが、
なんとかなりませんでしょうか?
import java.awt.*; import java.awt.event.*; import javax.swing.*;
public class Test extends JFrame{
private Image offs; private JComboBox cb; private Point mp;
public Test(){ init(); }
private void init(){
Container c = getContentPane();
c.setPreferredSize(new Dimension(300, 300));
c.setLayout(null); // レイアウト無し

// JComboBox の設定
String[] ss = {"hage", "hige", "huge", "hege", "hoge"};
cb = new JComboBox(ss); c.add(cb); cb.setBounds(30, 30, 100, 20);

pack(); repaint(); setResizable(false); setVisible(true);

// ドラッグで再描画
this.addMouseMotionListener(new MouseMotionAdapter(){
public void mouseDragged(MouseEvent me){
offs = null; mp = me.getPoint(); repaint();
}
});
}
350hage:2008/02/16(土) 13:00:11
public void paint(Graphics g){
if (offs == null){
offs = createImage(getWidth(), getHeight());
Graphics g2 = offs.getGraphics();
g2.setColor(Color.BLUE);
g2.fillRect(0, 0, getWidth(), getHeight());
g2.setColor(Color.RED);
if (mp != null) g2.fillOval(mp.x - 2, mp.y - 2, 4, 4);
cb.repaint();
}
g.drawImage(offs, 0, 0, null);
}

public static void main(String[] args){ new Test(); }
}
351デフォルトの名無しさん:2008/02/16(土) 13:01:23
>>346
Graphics2D を使う部分だけ別のクラスに分けておいて、通常のクラス名で new する代わりに
Class#forName でロードして Class#newInstance でインスタンス化すれば大丈夫かと思うが、、、
(Graphics2D を使うクラスの名前は Class#forName の引数以外には一切書かない)
そんな昔の、切り捨てたら?
352デフォルトの名無しさん:2008/02/16(土) 13:12:32
>>349
とりあえず、JFrameに直接描くな。
JComponentを派生して自前のキャンバスクラスを作り、そのpaintComponentで描け。
353hage:2008/02/16(土) 13:19:04
すいません。書き直しました。本来のプログラムのほうも、構成はこんな感じになっています。
(以下、連投)
import java.awt.*; import java.awt.event.*; import javax.swing.*;
public class Test extends JFrame{
public static void main(String[] args){ new Test(); }
public Test(){ init(); }
private void init(){
MyCanvas canvas = new MyCanvas();
getContentPane().add(canvas);
pack(); repaint(); setResizable(false); setVisible(true);
}
}
354hage:2008/02/16(土) 13:22:11
class MyCanvas extends JComponent{
private Image offs; private JComboBox cb; private Point mp;
public MyCanvas(){ init(); }
private void init(){
this.setPreferredSize(new Dimension(300, 300));
this.setLayout(null); // レイアウト無し
String[] ss = {"hage", "hige", "huge", "hege", "hoge"}; // JComboBox の設定
cb = new JComboBox(ss); this.add(cb); cb.setBounds(30, 30, 100, 20);
// ドラッグで再描画
this.addMouseMotionListener(new MouseMotionAdapter(){
public void mouseDragged(MouseEvent me){
offs = null; mp = me.getPoint(); repaint();}});
}
public void paint(Graphics g){
if (offs == null){
offs = createImage(getWidth(), getHeight()); Graphics g2 = offs.getGraphics();
g2.setColor(Color.BLUE); g2.fillRect(0, 0, getWidth(), getHeight());
g2.setColor(Color.RED);
if (mp != null) g2.fillOval(mp.x - 2, mp.y - 2, 4, 4);
}
g.drawImage(offs, 0, 0, null);
cb.repaint();
}
}
と、途中で気づいたのですが、 paint を paintComponent にすると治りました・・・
paintComponent というのをはじめて知りました orz
勉強になりました。ありがとうございました
355デフォルトの名無しさん:2008/02/16(土) 13:22:14
>>351
Java 系のグループじゃそう言われてるけどなぁ、先日ニュース系の板から秘密で誘導して
統計とって見たら一番多かった Java 6 に続いて 5.0 と MS JVM 1.1 がほぼ同じだったよ。
もっとも、入れてもない奴がダントツだったけど。
356デフォルトの名無しさん:2008/02/16(土) 14:52:42
>>351
ありがとうございました。でもさっぱりわかりません。

>>355
ライバルが1.1サポートなんですよ(^^;

どうやらクラスローダーの挙動が違うのが原因なのかな。
357デフォルトの名無しさん:2008/02/16(土) 15:03:36
xmlをhttpでpostするサンプルをください!
358デフォルトの名無しさん:2008/02/16(土) 15:56:33
本みながらやってるんだけど
Iteratorとかvectorに<E>みたいなのをつけろって
eclipseでやると注意されるのですが
そこにIteretorでStringをあつかうとき<String>みたいに
やったら動きました。
本には書いてないので<>がなにかわかりません。
本だとIteratorでObjectにして好きなクラスを返すみたいになってるけど、
それはできないんですか?
359デフォルトの名無しさん:2008/02/16(土) 16:06:35
5.0で導入されたジェネリクス。
本に従ってやるならば、Eclipseでコンパイラレベルを1.4に汁
360デフォルトの名無しさん:2008/02/16(土) 16:37:08
正規表現で
hoge[0]=○○
という文字列を検索したいのですが
半角[]をどうやって表現すればいいのかわかりません><
361デフォルトの名無しさん:2008/02/16(土) 16:45:53
>>355
http://www.adobe.com/products/player_census/flashplayer/

Flashのアドビの発表でjavaの普及率が84.6%ってなってるけど?
これだけあれば個人的には十分。

2ちゃんねらは過去にFlashのリンクを何度も踏まされてるから
インストール率が高いとかかも。
362デフォルトの名無しさん:2008/02/16(土) 16:57:59
>>350
正規表現としては\でエスケープすればOK
Javaの文字列としては・・・
\\[で[にマッチするということになるな
363デフォルトの名無しさん:2008/02/16(土) 17:33:57
>>356
ClassNotFoundが出たら1.1だと判断すれば?

で、>>351が言うように、1.1に存在しないクラスを直接参照しないようにする。
364デフォルトの名無しさん:2008/02/16(土) 17:40:55
>>362
ありがとうございます!
てっきり\ひとつだけだと思ってました><;
365デフォルトの名無しさん:2008/02/16(土) 17:59:34
Derbyの使い方について教えてください
366デフォルトの名無しさん:2008/02/16(土) 18:23:57
>>365
このスレでDerbyの使い方講座を開講しろっていうのか?
Apacheのページへ行ってDerbyのドキュメントを読め。webで検索しろ。
ここで質問するならもっと質問を具体的にして絞り込め。
367デフォルトの名無しさん:2008/02/16(土) 18:35:23
>>365
(1) derby.jarファイルにクラスパスを通す
(2) Class.forName("org.apache.derby.jdbc.EmbeddedDriver"); を呼ぶ
(3) DriverManager.getConnection("jdbc:derby:test;create=true") で Connection を取得する
(4) 好きなSQL文を実行する
(5) Connection を閉じる
(6) DriverManager.getConnection("jdbc:derby:;shutdown=true"); を呼んでシャットダウンする
368デフォルトの名無しさん:2008/02/16(土) 20:40:35
>>331
T な変数には、<? extends T> なものを代入できるし、
<? super T> な変数には、Tはものを代入できるので、
返値に対してコバリアント的にしたい場合は、extends にして
引数に対してコバリアント的にしたい場合は、super にする
369デフォルトの名無しさん:2008/02/16(土) 21:27:43
制御文について質問なのですが
if(a||b||c&&d)というのはaもしくはbまたはcかつdがtrueの時if文を実行ですよね?
ではif(a||b&&c||d)というのはaもしくはbがtrueかつcまたはdがtrueの時if文を実行。
ということで良いんですか?この仮定が合ってるとすると条件式の順番にも気をつけなくてはいけませんよね?
370デフォルトの名無しさん:2008/02/16(土) 21:28:43
>>356
ClassNotFoundException は、それを実行しようとしているかどうかに関わらず
それが分かったらいつVMが投げても構わないって仕様じゃなかったっけ。

それぞれの実装を別のクラスローダで読み込むのがいいんじゃまいか
371デフォルトの名無しさん:2008/02/16(土) 21:35:42
>>369
日本語でおk
372デフォルトの名無しさん:2008/02/16(土) 21:47:12
>>369
Java とは関係なさそうだけど。
* と + に優先順位があるのと同じ。
a || b || c && d => a || b || (c && d)
a || b && c || d => a || (b && c) || d
373369:2008/02/16(土) 21:51:17
今一良く分かりませんorzここから先はGoogle先生に聞いてみます。
ありがとうございました。
374デフォルトの名無しさん:2008/02/16(土) 22:34:42
>369
もう少し解りやすく、他人に伝わるよう書く努力が欲しい。

if(a||b||c&&d)というのは、『a』もしくは『b』または『cかつd』のいずれかがtrueの時にif文を実行ですよね?
ではif(a||b&&c||d)というのは、『aもしくはbがtrue』かつ『cまたはdがtrue』の時if文を実行。
ということで良いんですか?

質問はこういう意味? なら>>372
ググるときは、『Java』、『演算子』、『優先順位』でOK。
375デフォルトの名無しさん:2008/02/16(土) 22:45:04
古いデータと新しいデータを比較するプログラムを作ってます
データを取得してテキスト形式で保存→新たに取得して比較→二日以上たったデータは削除
という感じなのですが、二日たったことを判断するのはどういう風にすればいいのか悩みます。。
ちなみにデータ取得時の日時は年/月/日/時/分まで保存してます

簡単に日にちで比較すると31日とか30日の判断もあるし、うるう年とかもあるので悩んでます><
いいアイディアはないでしょうか?
376375:2008/02/16(土) 22:50:32
良い方法をひらめきました!
どうもすいませんでした><;
377デフォルトの名無しさん:2008/02/16(土) 23:15:14
ひらめいたならいいけど、そういうのはミリ秒で保存しといた方が良いよー
378デフォルトの名無しさん:2008/02/17(日) 00:07:31
>>361
そんないつの時期に取ったか分からん統計出されても知らんがな。 Win に MSJVM が
デフォルトインストールだった時代や JavaScript のアプレット enable フラグだけ見てたら
それくらい行くだろうね。少なくとも 30 秒以上滞在してアプレットが起動しない環境は
倍以上居る。
379デフォルトの名無しさん:2008/02/17(日) 00:35:10
HashMapのKeyと値にそれぞれ変数から代入したんですが保存されないみたいなんです
上記の方法で次々に値を代入していくにはどうすればいいですか?
380デフォルトの名無しさん:2008/02/17(日) 00:41:28
>>379
HashMapにaddするときに使ってる変数を変に使いまわしていないか?
HashMapに代入されるのは結局の所は参照なので参照先を書き換えると変わるぞ
381デフォルトの名無しさん:2008/02/17(日) 00:55:40
>>380
ありがとうございます
参照先が変わってるのかなあ
やろうとしていることは HTMLで入力した値を
サーブレットに渡してintにランダム変数を入れて
それをhashmapのkeyにして値も代入
一回目はうまくいくんですけど二回目以降に値が
リセットされてしまいます
382デフォルトの名無しさん:2008/02/17(日) 01:04:26
>>381
…?
HashMap のインスタンスが毎回生成されてる、なんてオチは無いデスヨね
383デフォルトの名無しさん:2008/02/17(日) 01:12:22
>>382
た、たぶんそれです
ありがとうございますOrz
もう少しがんばってみます
384デフォルトの名無しさん:2008/02/17(日) 01:15:16
サーブレットとか知る前にやることがある気がするんだが。
385デフォルトの名無しさん:2008/02/17(日) 01:18:07
自分でもまったくそう思いまする
386デフォルトの名無しさん:2008/02/17(日) 11:15:50
手元の W-ZERO3 に JBlend が乗ってるんで暇つぶしに何か作れないかと思ったんだけど
いかんせん組み込みっぽいのはやったことがなくて。MIDP 2.0? とやらに対応させれば
良いんでしょうか? それとも専用の SDK でも買わなければけいないんでしょうか?
携帯の開発情報はそこそこありますがそれと同じと思って良いんでしょうか。
387デフォルトの名無しさん:2008/02/17(日) 11:21:17
「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
PATHの設定がどうしても出来ないためこれが出てしまっていると思うんですが、
>>1に書かれているURLが消えているのか飛べないです。
他に本も色々なサイトも見ましたが分かりません。
どこか分かりやすく説明しているところは無いでしょうか?
388デフォルトの名無しさん:2008/02/17(日) 11:28:48
389デフォルトの名無しさん:2008/02/17(日) 11:44:22
ありがとうございます。
しかしやはりどうも落としたバージョン(jdk-6-doc-ja)
だと上手くいかないようなので、申し訳ないのですが、質問を変えます。
改めてj2sdkを落としたいんですが、場所がどこなのか分かりません。
Javaの公式サイトから探しましたが、日本語に変換しても
別のページに飛ぶとまたすぐ英語になってしまうので、読めませんし訳が分かりません。
具体的なURLを直接教えて下さると大変助かります
390デフォルトの名無しさん:2008/02/17(日) 11:45:34
> jdk-6-doc-ja

コーヒー返せwww
391デフォルトの名無しさん:2008/02/17(日) 11:47:56
やはり何かおかしかったですかねw
やたら重いんで何かおかしいと思ったんですが。
でも英語だらけで分からないんですよ、ほんと。
国際派じゃないとこれから生きていけそうもないな
392デフォルトの名無しさん:2008/02/17(日) 11:54:44
doc

document
393デフォルトの名無しさん:2008/02/17(日) 11:55:53
国際派じゃなくても>>388見れば普通は何が言いたいか解る

ググれカス
394387:2008/02/17(日) 11:56:23
困ったな…調べてみてはいるんですが、どうもありそうにないですね。
ほんとに日本語でおkという感じなんですが…読めない。
やさしいJAVA2版に書かれていたURLも消えているようですし、
今の主流はもうj2sdkじゃないんでしょうか?
395デフォルトの名無しさん:2008/02/17(日) 11:58:13
>>389
確かにJDKとは書いてありますが、ドキュメントの方を取得されたようで。

Java SE Downloads
ttp://java.sun.com/javase/ja/6/download.html

リンク先には、JDK, J2EE, NetBeans, JRE と並んでいますが、
それぞれの説明を読む等で適切なものを選んでインストールしてください。

>>391
ま、ゆっくりやってくださいな。好きこそ物の上手なれとも言いますし。
アルファベットが読めないとか辞書を触ると目が見えなくなるとか言う人なら
更に教育を受けるか、病院に行った方が良いと思いますが。
396387:2008/02/17(日) 11:58:16
やっと見つかった…検索の仕方がまずかったみたいです。
お騒がせしました
397387:2008/02/17(日) 12:00:23
>>395
ご立派な嫌味をどうもw
知識が豊富で羨ましいです
398デフォルトの名無しさん:2008/02/17(日) 12:01:48
本当ご立派な
399デフォルトの名無しさん:2008/02/17(日) 12:06:24
>>397は人格に問題ありすぎだな。
あんなに懇切丁寧なレスを嫌味だなんて。

というか、有用な情報を見いだす目が著しく欠如しているってことか。

JDK落とすだけでこれだから、この先は想像を絶するいばらの道が待っていることだろう。
400デフォルトの名無しさん:2008/02/17(日) 12:13:34
初心者相手にいちいち優位に立とうとするなよ。
401デフォルトの名無しさん:2008/02/17(日) 12:43:04
Java初心者ってか対人関係初心者だけどなw
402デフォルトの名無しさん:2008/02/17(日) 12:47:28
おまいも十分そう見えるが。
403デフォルトの名無しさん:2008/02/17(日) 12:57:40
>>402
>>387本人乙。
404デフォルトの名無しさん:2008/02/17(日) 13:14:00
そう思いたいのですね。
405デフォルトの名無しさん:2008/02/17(日) 13:36:39
そのほうが面白いし。
406デフォルトの名無しさん:2008/02/17(日) 13:37:24
そうか。
407デフォルトの名無しさん:2008/02/17(日) 13:48:17
うん。
408デフォルトの名無しさん:2008/02/17(日) 13:53:49
こ。
409デフォルトの名無しさん:2008/02/17(日) 15:16:04
ころころうんこ
410デフォルトの名無しさん:2008/02/17(日) 15:17:25
食物繊維取れ
411デフォルトの名無しさん:2008/02/17(日) 15:39:49
普通にSunのページわかりにくい
412デフォルトの名無しさん:2008/02/17(日) 15:46:13
非開発者向けではどう見てもないよな。
母さんにあそこから最新の JRE 落として入れろとはとても言えない。
413デフォルトの名無しさん:2008/02/17(日) 16:01:35
ほんと、SUNにはもっと普及率を上げるための努力をしてもらいたい。
まずはインストールをもっと簡単にして。
414デフォルトの名無しさん:2008/02/17(日) 16:50:00
>>1 のリンク死んでるな。というかサーバが停止してるようだが。
415デフォルトの名無しさん:2008/02/17(日) 17:55:48
>>412
もっともです。テンプレっぽいのに追加で。

**** 開発環境が必要の場合は ****
>>5

**** 実行環境だけが必要の場合は ****
■ Java ソフトウェアのダウンロード
ttp://www.java.com/ja/
416デフォルトの名無しさん:2008/02/17(日) 17:59:58
ム板なんだし JRE の落とし方はどうでも良くない?
かえって混乱すると思う。
417369:2008/02/17(日) 18:54:29
なるほど!何とか理解できました。>374 さん thx
418デフォルトの名無しさん:2008/02/17(日) 18:59:59
>>416
ところがEclipseを使うのにJDKは不要だ罠

新人研修等ではじめからEclipseでスタートする場合、
JDKを入れたことがないという人も出てきそうなご時世だね。
419デフォルトの名無しさん:2008/02/17(日) 20:16:41
Arrays.sortを使って数値の配列をソートしたんですが
これってソート後の配列の添え字情報とかも取得できないんですか??

たとえば
ソート前
a[0]= 2
a[1]= 1
a[2]= 3
 ↓ ソート
ソート後
a[1]= 1
a[0]= 2
a[2]= 3

の[1],[0],[2]の情報を取得したいですー!何か方法ありませんかー!
420デフォルトの名無しさん:2008/02/17(日) 20:25:55
その添え字情報を何に使うんだ?
ただ単に安定なソートがしたい、ってだけなら、

List<Integer> lst = Arrays.asList(2, 1, 3);
Collections.sort(lst);

でOKじゃない?
421デフォルトの名無しさん:2008/02/17(日) 20:35:50
class Hoge { public int ソート前のインデックス; public int 値; }
こういうラッパーをかぶせてからソートすればいいんじゃね
422デフォルトの名無しさん:2008/02/17(日) 21:09:07
>>419
一番高速なのは、quicksortのコードを自分でいじって実装することかな。
値をスワップするところで、添え字もスワップすればいい
423419:2008/02/17(日) 21:09:52
>>420,421
返答ありがとうございます

hoge[0] = 3423
hoge[1] = 4123
hoge[2] = 4142

a[0]= 2
a[1]= 1
a[2]= 3

みたいにhogeにID、aに値を保存していて、それぞれ添え字で=を確認してたんです
(つまり添え字が0ならID;3423→2みたいにです)
あとaには同じ値がたくさんはいっているのでソート後に値で確認もできないんです。。。

もしかして他にいい保存方法あったりしますかね^^;
424デフォルトの名無しさん:2008/02/17(日) 21:10:48
>>422
やっぱ自分で実装するのが一番早いですかね?。。
425デフォルトの名無しさん:2008/02/17(日) 21:16:03
クラス使えよ
class IDAndValue { int id; int value; }
ソートはComparatorを自分で実装すればいいだけ
426デフォルトの名無しさん:2008/02/17(日) 21:21:10
>>425
ありがとうございます
やってみます!
427デフォルトの名無しさん:2008/02/17(日) 21:27:25
Comparableでもいいよ
428デフォルトの名無しさん:2008/02/17(日) 22:31:34
ファイルを後ろから読み込むにはどうすればいいのでしょうか?
BufferedReaderのreadLineのように一行ずつ読み込めるものがあると良いのですが、、、
429デフォルトの名無しさん:2008/02/17(日) 22:45:34
そんなに大きくないならListに全部読み込んで、後ろから取り出せば?
430デフォルトの名無しさん:2008/02/17(日) 22:45:43
多分だけど、どうしてそれがしたいかを説明すると
よりハッピーになると思う
431デフォルトの名無しさん:2008/02/17(日) 23:05:38
>>378
>>361のページに↓のようにいつ統計を採ったのかを書いてある
Millward Brown survey, conducted December 2007.
See Methodology Section for details on the Millward Brown study.
432デフォルトの名無しさん:2008/02/17(日) 23:24:14
public ShortTimer t;
t.start();
これでタイマーが開始しましたが、再びここで
t.start();
すると実行時エラーになります。
そこで t が t.start(); されているかを知る方法を教えてください。
433デフォルトの名無しさん:2008/02/18(月) 00:01:19
>>432
>>2 Good Luck!
434デフォルトの名無しさん:2008/02/18(月) 01:07:55
428です。
後ろに行くほど新しい情報が書いてあるログファイルなので後ろから読み込めたらいいなと。
容量はそれほど大きくもないのですが、、、
435デフォルトの名無しさん:2008/02/18(月) 02:22:54
>>434
それは tail コマンドと同じ機能っぽい印象を受けました。

そして、あまりに便利なコマンドだから、かっこいいことをしてるハズだ
と、そう思って検索してみました。すると…

勘違いしていました。tail.c
ttp://programamemo2.blogspot.com/2008/02/tailc.html

バッファサイズ決めて、(最初はファイル長を割って余った分だけ)ファイルから読み込んで
改行文字数を数えて、必要数たまったら、そのバイトから最後まで出力っぽい感じ。
ファイルが更新された時の処理も、そのブログ記事にあるとおりで、なんともはや…
436デフォルトの名無しさん:2008/02/18(月) 02:36:16
んなもん tail の動き見てりゃ 1 秒ごとに監視してるだけくらい想像付くべ。
ファイルのケツから数kB〜数十kB ごとに読み込んで行数カウント、必要行数に
達したらそこから開始位置まで出力、達しなければその前のブロックを評価が定番。
437デフォルトの名無しさん:2008/02/18(月) 08:34:15
class Test {
int sum(int[] date){
int r=0;
int i;
for(i=0; i<date.length; i++)
r += date[i];
return r;
}
}

public class sample34{
public static void main(String[] args) {
Test test =new Test();
int[] date1 = new int[]{1,2,3,4,5};
int result;
result=test.sum(date1);
System.out.println(result);
}
}
これで15が返ってくる理由教えてください。
私の考えはsum(int[] date)ここに{1,2,3,4,5}を入れるわけですよね?
でdate.lengthとなっているから、その個数5だと思うんですけど
すいません意味不明で・・・
438デフォルトの名無しさん:2008/02/18(月) 08:54:32
配列のインデックスは0から始まる
439デフォルトの名無しさん:2008/02/18(月) 09:21:12
>>437
配列型の変数 date の length は int型で、この場合の値は 5 です。よって
L5: i が 5 未満の場合、L6 へ進む。そうでなければL7へ進む。
L6: r と date[i] を加算し、r にその結果を入れる。(i に 1 加える。L5へ進む。)
L7: r を返す。
// 何をしてるかと言えば、配列の各要素の値を加算した値を返してるだけ。

よって、Test のインスタンスメソッド sum(int[]) に
date1 を入れて実行すると 15 が返される。
// 各要素の値、1 から 5 までを加算した値

後は手元の本などで for文の仕組みを調べ直してください。

蛇足。制御文 if, else, for, while, do-while の "{ }" を省略した場合、
直後の1文が制御対象になりますが、見易さや事故防止等の為、
省略しないことをお勧めします。
440デフォルトの名無しさん:2008/02/18(月) 09:26:03
data.length
  Σ data[i]
  i=0
441デフォルトの名無しさん:2008/02/18(月) 09:36:09
ありがとうございます。分かりました!!!
これからも勉強頑張っていきます!
442デフォルトの名無しさん:2008/02/18(月) 13:40:38
TreeMapでデータをソートしたのですが
Entryで得たvalueとkeyをStringにキャストしてInteger.parseIntをつかってから
int型にしてint型変数に格納しようとするとkeyだけキャストできないというエラーが出てしまいます

原因がわかりませんー・・・
443デフォルトの名無しさん:2008/02/18(月) 14:01:46
OSのタイムゾーン設定では日本時間なのに
JavaのデフォルトタイムゾーンがGMTになっています。
デフォルトのタイムゾーンってどこをいじれば変更できるのでしょうか?
環境はJava1.6.0_04 Windows 2003 です。
444デフォルトの名無しさん:2008/02/18(月) 14:06:03
>>442
コードを見せてみれ
エラーメッセージも正確に
445デフォルトの名無しさん:2008/02/18(月) 14:07:15
>>442
キャストできないエラーというのは、「Stringにキャストして」の部分なのでしょうか?
1.5以降ならジェネリクスをお勧めします。

原因としては TreeMap に格納する際に何型を使ったのか、が怪しいところです。
446442:2008/02/18(月) 14:14:34
public class Sort {
public Sortdata sort(Difference dif){
int i = 0;
String change_sm = null;
String change_play = null;
Sortdata data = new Sortdata();
NumericComparator c = new NumericComparator();
TreeMap map = new TreeMap(c);
while(i < dif.number){
change_sm = Integer.toString(dif.sm[i]);
map.put(new Integer(dif.replay[i]), change_sm);
i++;
}
Set s = map.entrySet();
i = 0;
Iterator it=s.iterator();
while(it.hasNext()){
Map.Entry e = (Map.Entry) it.next();
change_sm = (String) e.getValue();
change_play =(String) e.getKey(); //getKeyだけキャストがおかしいというエラーがでる
data.sm[i] = Integer.parseInt(change_sm);
data.replay[i] = Integer.parseInt(change_play);
System.out.println(data.sm[i]+":"+data.replay[i]);
i++;
}
return data; }
class NumericComparator implements Comparator {
public int compare(Object o1, Object o2) {
int result=((Integer)o1).compareTo((Integer)o2);
if(result==0) result=1;
return result;
} } }
447442:2008/02/18(月) 14:16:22
すいません初心者でコピペで作ったようなプログラムなのでどこを載せればいいのかわかりませんでしたTT
エラーは

Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
at Sort.sort(Sort.java:34)

行は書き込むときに編集してしまったので違うかもです
change_play =(String) e.getKey(); //getKeyだけキャストがおかしいというエラーがでる
とりあえず↑を指してます
448デフォルトの名無しさん:2008/02/18(月) 14:21:41
そらだめだよ。
Integerで格納したんだから、Stringにはキャスト出来ない。
449デフォルトの名無しさん:2008/02/18(月) 14:24:24
>>446
Mapにputするときはkeyの部分をInteger型で入れている。
Integer型なのにString型へキャストしようとするからエラーになる。
450デフォルトの名無しさん:2008/02/18(月) 14:31:02
>>446
重ねてJ2SE1.5(5.0)以降ならジェネリクスをお勧めします。
ついでに autoboxing も機能するので更に見やすくなります。

> map.put(new Integer(dif.replay[i]), change_sm);
key が Integer, value が String。そりゃ key でキャストエラーになります。

以下蛇足。
・変数は使う直前で宣言すること。
・元が int型なら Integer だけにしておけば良いのに。
・初期化、比較、更新があるなら while ではなく for を使うように。
・ついでに初期化部で int i = 0; で宣言すること。(添え字の使いまわしは厳禁)
451デフォルトの名無しさん:2008/02/18(月) 14:36:27
みなさんありがとうございます!
ジェネリスクも試してみようと思います><
452デフォルトの名無しさん:2008/02/18(月) 14:37:10
>>443
set | find "TZ"
結果はカラ?
453443:2008/02/18(月) 14:45:46
>>452
レスありがとうございます。
TZ=JST
とでます。
454デフォルトの名無しさん:2008/02/18(月) 15:37:48
ネイティブインターフェイスの使い方を教えてください
455デフォルトの名無しさん:2008/02/18(月) 15:42:34
>ネイティブインターフェイス
JNIのこと?
456デフォルトの名無しさん:2008/02/18(月) 15:55:04
はい
457デフォルトの名無しさん:2008/02/18(月) 15:59:29
458デフォルトの名無しさん:2008/02/18(月) 16:05:55
dllの作り方教えてください
459デフォルトの名無しさん:2008/02/18(月) 16:10:42
それはJavaじゃないよ
460デフォルトの名無しさん:2008/02/18(月) 16:11:22
わからない問題があったので教えてください

public class Test extends Thread{
private int i, j;
public synchronized void run(){
for(int count = 0; count < 2; count++){
i++; j++;
System.out.print("i=" + i + " : j=" + j + " ");
}
}

public static void main(String[] args){
new Test().start();
new Test().start();
}
}

A. i=1:j=1 i=1:j=1 i=2:j=2 i=2:j=2
B. i=1:j=1 i=2:j=2 i=1:j=1 i=2:j=2
C. iとjの値は出力されるが表示順は一意ではない

Testクラスは二つでき、runメソッドはそれぞれで動くため
AにもBにもなりえる(実際は何回やってもBになるが)と思ってCにしたんですけど答えはBでした
Aにはならないんでしょうか?

解説には「run()メソッドをsynchronized指定しているためrun()メソッド実行中は
他に制御が移ることなく処理されます」とあります

461デフォルトの名無しさん:2008/02/18(月) 16:20:05
答はCであってます。
printの後ろに、
try { Thread.sleep(1000); } catch (InterruptedException e) {}
を追加して実行してみてください。
462デフォルトの名無しさん:2008/02/18(月) 16:29:21
たぶんスレッドでの(i=1:j=1 i=2:j=2)の組の出力は保証されるということなのだろうけど、
どっちのスレッドかわからんよな、これ。
Aは間違い。でも、結果的に出力は必ずBになるなw
463デフォルトの名無しさん:2008/02/18(月) 16:31:40
えー、保証すらされないだろ
464デフォルトの名無しさん:2008/02/18(月) 16:33:05
>>461-462
ありがとうございます
安心しました
465デフォルトの名無しさん:2008/02/18(月) 16:51:26
フルパスからファイル名を取り出す関数とかあれば
教えてください。
WinAPIのGetFullPathName()のようなやつがあれば・・・
466デフォルトの名無しさん:2008/02/18(月) 16:53:02
File#getName()
467デフォルトの名無しさん:2008/02/18(月) 16:54:52
>>466
快速的回答謝謝。
468デフォルトの名無しさん:2008/02/18(月) 16:58:18
wikiのリンク切れてる・・・
だれか原因わかる人います?
469デフォルトの名無しさん:2008/02/18(月) 17:05:24
リンク切れてるっつーか、ホスティングしてる wikiroom が
最近落ちまくり & ほったらかし & メール送っても無応答状態らしい。
470デフォルトの名無しさん:2008/02/18(月) 17:07:32
>>469レスサンクス!

まじか…javacの設定方法探そうと思ったのに…
471デフォルトの名無しさん:2008/02/18(月) 18:15:45
lass Test {
int m;
int n;

Test(int i,int j) {
m=i;
n=j;
}

Test(Test testC) {
m= testC.m;
n= testC.n;
}

int sum(int i,int j){
return m + n + i + j;
}
}
public class sample38{
public static void main(String[] args);
Test test = new Test(10, 5);
test.m++;
test.n++;
Test test2 = new Test(test);
System.out.println(test2.sum(2, 3));
}
}
このプログラムの中の
Test(Test testC) {
m= testC.m;
n= testC.n;
がある意味がよくわかりません。テキストを読んでいてもよく分からないので教えてください。
472デフォルトの名無しさん:2008/02/18(月) 18:20:34
いわゆるコピーコンストラクタってやつ
473デフォルトの名無しさん:2008/02/18(月) 18:25:06
コンストラクタのオーバーロードじゃね
474デフォルトの名無しさん:2008/02/18(月) 18:27:44
Java 的には clone() だな。
475デフォルトの名無しさん:2008/02/18(月) 18:33:51
JNIはどうすんの
476デフォルトの名無しさん:2008/02/18(月) 18:35:42
>>471です。処理はどんな手順で進んでいくのですか?
477デフォルトの名無しさん:2008/02/18(月) 18:58:35
どこまでわかるのか書け
478デフォルトの名無しさん:2008/02/18(月) 19:08:06
オブジェクトはフィールド、メソッド、クラス、を持つとよく聞きますが、実際にオブジェクトを生成する際、フィールド以外の物も新たに作るのでしょうか?
それとも状態を持つのはフィールドだけなのでメモリにはフィールドのみを生成するのでしょうか?
479デフォルトの名無しさん:2008/02/18(月) 19:13:44
フィールドのみと考えていい
480デフォルトの名無しさん:2008/02/18(月) 19:13:48
クラスとメソッドはほぼ一体。最初にクラスを参照したときにメモリ上に現れ static 宣言
されたフィールドとメソッドを持つ。非 static フィールドはインスタンスごとに作成される。
481デフォルトの名無しさん:2008/02/18(月) 19:16:33
>>479,>>480
素早く分かりやすい回答ありがとうございました。
ずっと気になっていたことだったので本当にすっきりしました。
482デフォルトの名無しさん:2008/02/18(月) 19:23:08
>>477
Test test = new Test(10,5);
これを上の
Test(int i,int j) {
m=i;
n=j;
に入れて、つぎにmとnに1を足すまでは分かる。

Test(Test testC) {
m= testC.m;
n= testC.n;
これどんな処理してるん?
483デフォルトの名無しさん:2008/02/18(月) 19:28:09
testCに渡された既存のTestオブジェクトの中身を
新しく作ろうとしてるTestオブジェクトにコピーしてる
484デフォルトの名無しさん:2008/02/18(月) 19:35:35
Javaのコントロールパネルの出し方教えてくれ
どこにもなくて困ってる
485デフォルトの名無しさん:2008/02/18(月) 19:36:35
test
486デフォルトの名無しさん:2008/02/18(月) 19:37:48
どういうときにコピーコンストラクタは使うの?
487デフォルトの名無しさん:2008/02/18(月) 20:09:37
オブジェクトをコピーしたいとき
488デフォルトの名無しさん:2008/02/18(月) 20:14:13
必要なクラスやライブラリが増えるとクラスパスの設定が面倒になりますが、
自分が書いたソースのクラスファイルを格納してるフォルダに全て突っ込んじゃえばいいと思うんですが、
この考え方は間違ってますか?
例えばDBのJDBCドライバを使うにはCLASSPASSに追加するかtomcatのcommon/binに入れたりするけど
前者の場合、無関係なプログラムにも影響を及ぼすし、後者の場合はコンテナを変えたらまた作業が増える。
自分が作ってるサーブレットのクラスファイルを保存してる場所にJDBCドライバを入れちゃえば全て解決な気がする。
489デフォルトの名無しさん:2008/02/18(月) 20:23:03
Javaのアルゴリズム本はどれがオススメですか?
490デフォルトの名無しさん:2008/02/18(月) 21:36:42
>488
間違ってる
クラスが増えれば増えるほどクラスパスの設定の方が、クラスの競合とかの考慮より楽になる
そんなことよりIDE使っているなら面倒な作業にはならんだろ
491デフォルトの名無しさん:2008/02/18(月) 21:41:45
プリミティブ型も実はクラスある?
判別のために例外的に形だけあるってことかな
int.classやらがあって驚いたわ。
492デフォルトの名無しさん:2008/02/18(月) 21:47:16
Integer.TYPE
493デフォルトの名無しさん:2008/02/18(月) 23:14:44
bolean b;
b=true;
?ここを教えてください。
(b==false)が新になる。

bolean b;
b=false;
?ここを教えてください。
(b==true)が新になる。
494デフォルトの名無しさん:2008/02/18(月) 23:17:06
b=!b;
495デフォルトの名無しさん:2008/02/18(月) 23:24:17
boolean
496デフォルトの名無しさん:2008/02/19(火) 03:06:22
>>491
プリミティブ型はあくまでプリミティブ型で、そのクラスといったものはない。
あるのは、プリミティブ型を表すClassクラスのインスタンスで、各ラッパークラスで定義されている。
例えば、リフレクションAPIでメソッドの引数の型を指定する時などに使ったりする。
497デフォルトの名無しさん:2008/02/19(火) 03:18:57
初心者用スレとはいえ質が低過ぎる
答える気すら起きん
498デフォルトの名無しさん:2008/02/19(火) 08:17:12
画像ファイルを手動で振り分ける簡単なソフトを書いた。
表示して、設定してあるフォルダに振り分けるだけの簡単なソフトだ。
とりあえず、予定の作業は出来るようになった。

だが、アニメーションGIFの再生がおかしいことに気づいた。
「透過色」というのが上手く扱えていないようだ。

Toolkit.getDefaultToolkit().getImage("hoge.gif");で入手したImageを
JPanelから導出したクラスのpaint(Graphics g)でdrawImageにかけているだけなのだが、
何か足りないようだ。

足りない部分は簡単に補える?
それとも、意外に面倒?
499デフォルトの名無しさん:2008/02/19(火) 08:29:49
ペイントコンポーネンツ
500デフォルトの名無しさん:2008/02/19(火) 12:26:35
JSFの使い方を教えてください
501デフォルトの名無しさん:2008/02/19(火) 13:44:08
>>500
http://ja.wikipedia.org/wiki/F-35_(%E6%88%A6%E9%97%98%E6%A9%9F)
502デフォルトの名無しさん:2008/02/19(火) 15:50:00
すみませんが、質問です。

クラス継承についてですが、親クラス、子クラスに共通して、同名のパブリッ
クなインスタンス変数があり、その初期値は親と子で違うとします。

子クラスのインスタンスを作り、それを親クラスの型の変数に代入した場合、
その変数のインスタンス変数には、親の価が入っています。

public class Parent {
public String hoge = "親";
}

public class Child extends Parent {
public String hoge = "子";
}

Parent x = new Child();
System.out.println(x.hoge); // => 親
System.out.println((new Child()).hoge); // => 子

要するに、パブリックなインスタンス変数は、子によってオーバライドできな
いのです。メソッドと違って。

どうしてこれは、こういう言語仕様になっているのでしょうか?
メソッドのようにオーバライドできてもいいと私は思うのですが。
503デフォルトの名無しさん:2008/02/19(火) 16:18:57
どうしてだろう・・・

Parent[] xArray = { new Child01(), new Child02(), new Child03()}
for( Parent x : xArray ) System.out.println(x.hoge);

みたいに同じ変数名にアクセスして子独自の値が取れたら便利そうだよね。
504デフォルトの名無しさん:2008/02/19(火) 16:21:48
実装は面倒だし(というか汚くなる)、効率の問題もある。
何より、変数をそんなに便利(に見える)にしてしまったら、
マルチスレッドとか大変になる。
オブジェクト指向の原則も何もあったもんじゃなくなるだろうが。
505デフォルトの名無しさん:2008/02/19(火) 16:24:14
>>502
子の方に新しいhogeを定義しなきゃいいんじゃ?

public class Parent {
public String hoge = "親";
}
public class Child extends Parent {
public Child(){ hoge ="子"; }
}
Parent x = new Child();
System.out.println(x.hoge); // => 子
506デフォルトの名無しさん:2008/02/19(火) 16:24:37
フィールドの隠蔽は普通に出来てるんだから面倒も効率も関係ないだろ。
507デフォルトの名無しさん:2008/02/19(火) 16:25:24
Javaはフィールドは静的解決だからだろ

以上
508デフォルトの名無しさん:2008/02/19(火) 16:28:02
>>502
言語規定には、「フィールドアクセスのために動的に表検索する必要がないので
Javaは素直な実装でも効率が良い。遅延束縛と上書きはインスタンスメソッドが
使用されるときだけJavaで利用可能となる。」とある。
ttp://www.y-adagio.com/public/standards/tr_javalang/15.doc.htm#37055
509デフォルトの名無しさん:2008/02/19(火) 16:29:50
付いていけん
馬鹿にも分かるように誰か説明してくれよ
510デフォルトの名無しさん:2008/02/19(火) 16:31:04
フィールドは静的に(つまりコンパイル時に)解決できるから効率いいよね、ってこと。
>>506は何か勘違いしているから無視してOK
511デフォルトの名無しさん:2008/02/19(火) 16:32:28
スレッドとか関係ねーじゃん。
512デフォルトの名無しさん:2008/02/19(火) 16:34:33
フィールドアクセスにはsynchronizedで制限かけられないだろーが
513デフォルトの名無しさん:2008/02/19(火) 16:36:19
つまり静的解決にすれば効率いいけど柔軟性に欠ける
動的にすれば柔軟性は上がるが実行時の効率が落ちる
そこでバランス取ってメソッドだけ動的にしたってこと?
514デフォルトの名無しさん:2008/02/19(火) 16:37:23
フィールドを動的解決するとどんないいことがあるのか例を教えてくれ
515デフォルトの名無しさん:2008/02/19(火) 16:38:39
まともな人と、ちょっと鈍い人と、どうしようもない馬鹿がいるっぽい
516デフォルトの名無しさん:2008/02/19(火) 16:38:57
>>514
答:全部メソッドでできるので不要
517デフォルトの名無しさん:2008/02/19(火) 16:40:31
何か主張があるようだが強烈な表現力のなさで何を言いたいのかさっぱりわからん。
「フィールドアクセス」 は行為であって主体じゃないから synchronized でモニタ取れるわけないだろ。
this かそれに順ずるインスタンスに synchronized かけろよ。
518デフォルトの名無しさん:2008/02/19(火) 16:44:34
Hoge hoge = new Piyo();
synchronized (hoge) {
hoge.x = "";
}
いちいちクライアントサイドでこんなことしたく無いだろ?ってことが言いたかったんだが
519デフォルトの名無しさん:2008/02/19(火) 16:47:53
>>518
それ hoge.x が Piyo のフィールドかスーパークラスのフィールドかは全く関係なくね? って事。
synchronized(hoge.x) とした時にどっちのモニター取ってるか分からなくなるというならともかく。
520デフォルトの名無しさん:2008/02/19(火) 16:50:39
>>514
悪いことの方は、以下の場合コンパイルエラーを出さないといけなくなる。

class S { int x = 0; int z() { return x; } }
class T extends S { String x = "1"; }
521デフォルトの名無しさん:2008/02/19(火) 16:52:26
それは関係ないけど、フィールドアクセスが動的だと、
何も考えずに使ってしまうようなやつが絶対いるだろ?
で、518のように書くやつなんているのか、と考えたときに、
いないだろうな、と。
522デフォルトの名無しさん:2008/02/19(火) 16:58:11
フィールドがサブクラスから書き換えられないのって
単純に、フィールドはなるべく隠蔽されるべきって考え方からだと思ってたけど違うの?
523デフォルトの名無しさん:2008/02/19(火) 17:00:49
書き換えられるよ、finalとかprivateじゃなければ
524デフォルトの名無しさん:2008/02/19(火) 17:02:02
書き換えってオーバーライドのことね
525デフォルトの名無しさん:2008/02/19(火) 17:04:11
親のフィールドをそのまま継承してるだけと、オーバーライドするのと、どう違うのか説明すれ
526デフォルトの名無しさん:2008/02/19(火) 17:10:17
>>522
それは新しい話題? カプセル化の話?

上書き(override, オーバーライド)は動的処理。
仮にフィールドの動的処理が可能なら、カプセル化は簡単に崩壊する。
// メソッドを上書きせずに、フィールドだけ上書きすればよい。
527デフォルトの名無しさん:2008/02/19(火) 17:13:37
privateメソッドがオーバーライドできないのと同じように、
privateフィールドもオーバーライドできなければ、別にカプセル化は壊れない
オーバーライドしたいのはprotectedとかpublicだけだろ?
隠蔽だかカプセル化だかとは別問題かと
528デフォルトの名無しさん:2008/02/19(火) 17:24:14
誰が正しいことを言ってるのかカオスだわ。と言いつつ私は526だったり。
言語規定を貼る作業に戻りますm(_ _)m
529デフォルトの名無しさん:2008/02/19(火) 17:32:47
さっぱりわからん
誰かねんどろいどに例えてくれ
530デフォルトの名無しさん:2008/02/19(火) 17:34:36
状況が逆なら逆で適当に自分流の解釈始めるだけだから、
決めの問題的な話題なんてどうでも良いんじゃないのか。
531502:2008/02/19(火) 18:38:57
どうやら収束したようなので、お礼を言わせていただきます。皆さん、ありが
とうございました。

意外に思うかもしれませんが、自分は最初の質問以外、一件も書き込んでいま
せん。自分の分からない点は全部、他の人がツッコんでくれました。このスレ
は時々利用させていただいてますが、こんなのは初めてです。

レスの全部が理解できたとは言えませんが、大変勉強になりました。
532デフォルトの名無しさん:2008/02/19(火) 19:06:45
>>486
Javaによるアルゴリズム事典
おすすめ
533デフォルトの名無しさん:2008/02/19(火) 21:35:53
開発ではeclipse使ってるんですが、
わざわざeclipse立ち上げるまでもないちょっとしたファイルを作ったり編集したりするためのエディタが欲しいです。
具体的には、html、java、jsp、ビルドxml、単なるテキスト文…こういったファイルを編集します。
メモ帳ではあまりにも使いづらいので他を探してるのですがオススメのものは無いでしょうか
534デフォルトの名無しさん:2008/02/19(火) 21:53:56
豊丸
535デフォルトの名無しさん:2008/02/19(火) 22:00:01
サクラエディタ
536デフォルトの名無しさん:2008/02/19(火) 22:14:30
>>533
eclipseを立ち上げっぱなしにしておけばいいのでは?
537デフォルトの名無しさん:2008/02/19(火) 22:14:58
vim だな。
538デフォルトの名無しさん:2008/02/19(火) 22:33:13
Mule。
馴れれば結構使える(と思う)けど馴れるまでが大変(だろうな)
539デフォルトの名無しさん:2008/02/19(火) 22:34:12
eclipseのエディタ機能だけ使うことが出来る?
わざわざプロジェクトとか作らないで
540デフォルトの名無しさん:2008/02/19(火) 22:38:44
>>538
× Mule
○ Meadow
541デフォルトの名無しさん:2008/02/19(火) 22:40:44
viとかvimって極度に嫌ってる人がいるよね
史上最悪のエディタだとか
542デフォルトの名無しさん:2008/02/19(火) 22:42:03
んなこと言ってる時点で Sun の Java 使う資格はない。
543デフォルトの名無しさん:2008/02/19(火) 22:42:55
史上最悪のコードというのなら分かるが
エディタとしては中毒性が高い。
544デフォルトの名無しさん:2008/02/19(火) 23:08:38
viとvimって何が違うの?
545デフォルトの名無しさん:2008/02/19(火) 23:13:26
機能差が歴然。
546デフォルトの名無しさん:2008/02/19(火) 23:22:55
eclipseの補完機能が優秀過ぎるから他のどのエディタ使っても物足りなく感じる
547デフォルトの名無しさん:2008/02/19(火) 23:29:55
お尋ねします。
SortedSetを使い、ソートさせ、表示にはtoStingを使っているのですが、"[""]"の表示が出てしまいます。このカッコを表示させない方法はありますか?
もしくは、違った方法でソートの結果を出力させられるのでしょうか?
教えていただける方、よろしくお願いします。
548デフォルトの名無しさん:2008/02/19(火) 23:32:43
set.toString().substring(1, set.toString().length() - 1)
549デフォルトの名無しさん:2008/02/19(火) 23:44:12
>>548さん、早速ありがとうございます。
最後にもう1つだけ質問ですが、2つの結果を出す際に、1つ目の結果と2つ目の結果の間の","を消す方法はあるのでしょうか?
たびたび申し訳ありませんがよろしくお願いします。
550デフォルトの名無しさん:2008/02/19(火) 23:45:14
set.toString().substring(1, set.toString().length() - 1).replaceFirst(",", "")
551デフォルトの名無しさん:2008/02/20(水) 01:52:59
>>539
Remote System Explorerプラグイン入れれば、ローカルや、Telnet、FTP、SSH経由で
ファイルシステムにアクセスできる。

>>547
toStringはデバッグ出力などで使うものであって、
特定の書式にしたいのなら、自力で出力すべき。
552539:2008/02/20(水) 12:32:29
>>551
ありがとうございます!まさに探してた機能でした。
553デフォルトの名無しさん:2008/02/20(水) 13:12:04
tomcatの起動について質問です。
現在linuxにtomcatを入れて開発を行っているのですが自動起動に失敗してしまいます。OS起動後に直接起動スクリプトを実行すると正常に起動します。

環境とバージョン
CentOS5.1 32bit/jdk6/tomcat6
ログには以下のような出力があります。
文字制限に引っかかるため一部省略します。
--
2008/02/20 11:47:00 org.apache.catalina.connector.Connector pause
致命的: プロトコルハンドラの一時停止に失敗しました
java.net.SocketException: Network is unreachable
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:519)
at java.net.Socket.connect(Socket.java:469)
at java.net.Socket.<init>(Socket.java:366)
at java.net.Socket.<init>(Socket.java:209)
at org.apache.jk.common.ChannelSocket.unLockSocket(ChannelSocket.java:486)
at org.apache.jk.common.ChannelSocket.pause(ChannelSocket.java:283)
at org.apache.jk.server.JkMain.pause(JkMain.java:681)
at org.apache.jk.server.JkCoyoteHandler.pause(JkCoyoteHandler.java:153)
2008/02/20 11:47:01 org.apache.catalina.core.StandardService stop
情報: サービス Catalina を停止します
以下試したこと。
・自動起動を一番最後に持って行った(rc3.d/S99tomcat)
・F/Wの自動起動を停止
どなたか解決策をご存じの方がいたら教えてください。
554デフォルトの名無しさん:2008/02/20(水) 13:14:38
eth0 起動してんのかよ。
555デフォルトの名無しさん:2008/02/20(水) 13:31:36
>>554
eth0にグローバル、eth1にローカルを設定しています。

また、iptablesにてグローバルは25番のみIN/OUTを許可、ローカルは全て許可に設定しています。
iptablesの自動起動も止めてみたのですが、解決しませんでした。
556デフォルトの名無しさん:2008/02/20(水) 19:00:05
アプレットに関する質問です。
アプレットを使って画像を表示させたいのですが、
アプレットビューアを起動するコマンドを打つと上手く表示されるのですが
html形式のファイルを直接開くと画像が切れて表示されてしまいます。
htmlファイルを直接開いたときに画像が切れないように表示させるには
どうすればいいでしょうか?
よろしくお願いします。
557553:2008/02/20(水) 19:11:40
自己解決しました。
環境変数がちゃんと読めていなかったようです。
558デフォルトの名無しさん:2008/02/20(水) 20:17:04
マイナスをプラスに反転させたいのですがどのように書けばいいのでしょう?
例えば-5を5にしたいです。
どなたかおたすけを・・・
559デフォルトの名無しさん:2008/02/20(水) 20:18:13
x = -x;
560デフォルトの名無しさん:2008/02/20(水) 21:17:13
Javaマルチスレッドで明示的にLockを書ける方法ってあります?

lock();
func();
unlock();

みたいな
561デフォルトの名無しさん:2008/02/20(水) 21:44:07
どうとでも書ける
562デフォルトの名無しさん:2008/02/20(水) 21:45:15
563デフォルトの名無しさん:2008/02/20(水) 21:49:58
>>592
それだ。サンクス
564デフォルトの名無しさん:2008/02/20(水) 22:17:07
>>324
Tが一つのクラスだけだったらスーパークラスは一つだけですよ。

スーパーインターフェースなら妥当でしょうか
565デフォルトの名無しさん:2008/02/20(水) 22:42:05
>>564
superclassとdirect superclassの違いも知らないのか?
566デフォルトの名無しさん:2008/02/20(水) 22:43:08
direct superclass と言いたいだけとちがうか。
567556:2008/02/20(水) 23:10:18
もう一度質問してもいいでしょうか(質問文が悪かった??)
アプレットを作るにはxxx.javaとxxx.htmlという2つのファイルを作りますよね
xxx.javaをコンパイルしてxxx.htmlというファイルに対してAppletviewerの
コマンドを実行してやるとその際に表示されるアプレットは画像が切れずに
キレイに表示されるのですが、xxx.htmlというファイルをクリックして
直接表示しようとすると画像が切れてしまいます。
画像が切れないように表示するためにはどうすればいいのでしょうか?
よろしくお願いします。
568デフォルトの名無しさん:2008/02/20(水) 23:13:13
ソース
569デフォルトの名無しさん:2008/02/20(水) 23:13:40
xxx.htmlでアプレット用に指定している幅と高さが画像を表示するには小さかったってオチ?
570デフォルトの名無しさん:2008/02/21(木) 00:19:41
if(1<=x<=18 & y==0){〜処理
↑見たいな感じで"<="を使いたいんですけどどうしたらいいですか?
571デフォルトの名無しさん:2008/02/21(木) 00:32:13
1 <= x && x <= 18
572デフォルトの名無しさん:2008/02/21(木) 00:32:32
日本語にすると
xは1〜18のいずれかで、かつ
yは0
ってこと?

if( (x >= 1 && x <= 18) && y==0 )
573デフォルトの名無しさん:2008/02/21(木) 01:36:17
>>569
ああ画像が切れるってそういう意味なのか。
574デフォルトの名無しさん:2008/02/21(木) 10:26:40
質問です。

HashMap<Integer,String>[] map = new HashMap<Integer,String>[3];
という配列を作ろうとしたときに、コンパイルしようとしたら

汎用配列を作成します。

というエラーが出てしまいます。調べてみてもさっぱり理解できません。
よろしければご教授お願いします。
575デフォルトの名無しさん:2008/02/21(木) 10:39:29
>>574
ジェネリクスはコンパイル時のチェック機能。
コンパイルした後は HashMap という型情報しか存在しない。
よって、その型の配列が作成される。
576デフォルトの名無しさん:2008/02/21(木) 11:48:49
つ ArrayList<HasMap<Integer, String>>
577デフォルトの名無しさん:2008/02/21(木) 15:47:43
tomcat5のJDBCレルム機構に対して、サーブレット内からプログラマが任意のタイミングでユーザ認証を済ませる方法を探しています。
contextA/auth/AuthServlet
contextA/noauth/NoAuthServlet
web.xmlで/auth/*を認証ゾーンとして指定。
NoAuthServlet内から、プログラマーが自前でユーザIDとパスワードを使って/auth/*ゾーンの認証を済ませたいのですが
どうすればできるでしょうか?
認証を済ませる=HttpServletRequest#getUserPrincipal() != nullという意味です。
578デフォルトの名無しさん:2008/02/21(木) 16:00:26
質問です。
初心者丸出しの質問ですみません。

同じパッケージ内のクラスを使うにはどうしたらいいのでしょうか?
よろしければご教授お願いします。
579デフォルトの名無しさん:2008/02/21(木) 16:15:59
>>578
それらのパッケージ名とクラス名は何でしょう?
それと、何を何処までやって出来なかったのか。
580デフォルトの名無しさん:2008/02/21(木) 16:37:00
>>578
ところでマルチポストって知ってる?
581デフォルトの名無しさん:2008/02/21(木) 17:15:41
質問です。
正三角形の中点を中心に1回転させるにはどうすればいいですか?
マルチスレッドとアフィン変換を利用して回転させたいんですが、角度を細くするほど誤差?で変形してしまいます。今のとこ30゜ぐらいが限界です!
下手文ですみません
582デフォルトの名無しさん:2008/02/21(木) 18:03:50
独学でjavaを勉強してるのですが、データベースとの連携の手段が色々あり過ぎてどれを使えばいいのか分かりません。
JDBC、EJB、Hibernate、これらはどういう関係にあるんでしょうか?
例えばEJBを実装すればJDBCやHibernateは要らないのでしょうか?

自分が調べた限りでは、
実際の開発ではEJBが普通だが、小規模な開発ではHibernateを使い、もっと単純なものならJDBCで済ます
って印象なんですがこんな感じで当たってますか?
583デフォルトの名無しさん:2008/02/21(木) 18:07:28
当たってね
584デフォルトの名無しさん:2008/02/21(木) 18:26:46
abstract class Test {
abstract void calc(int i);
void printNum(int i) {
System.out.println(i);
}
}
class ExTest extends Test {
void calc(int i) {
int j=i*i;
printNum(j);
class ExTest2 extends Test {
void calc(int i) {
int j=i+i;
printNum(j);
public class sample46x {
public static void main(String[] args) {
int i =5;
int j;
Test[] ex_test = new Test[2];
ex_test[0]=new ExTest();
ex_test[1]=new ExTest2();
for(j=0; j<2; j++);
ex_test[j].calc(i);

これなんですけどコンパイルはできるんですけど、実行するとこんなの出ます。
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at sample46x.main(sample46x.java:28)
どこが原因なんでしょうか?
585デフォルトの名無しさん:2008/02/21(木) 18:36:37
}は省略してあります
586デフォルトの名無しさん:2008/02/21(木) 18:38:24
>>584
>for(j=0; j<2; j++);
これだな
587デフォルトの名無しさん:2008/02/21(木) 18:51:20
ありがと!気づかなかった!集中せねば!!!
渇っ!
588デフォルトの名無しさん:2008/02/21(木) 19:23:00
EJBから同じホスト内のbatをたたきたいんですが、
どういう方法があるでしょうか。

589デフォルトの名無しさん:2008/02/21(木) 19:24:44
RMIの使い方について詳しく教えてください
590デフォルトの名無しさん:2008/02/21(木) 19:30:03
591デフォルトの名無しさん:2008/02/21(木) 19:33:26
>>590
Runtime#execはEJBからは使えないはず
592デフォルトの名無しさん:2008/02/21(木) 19:40:43
>591
なんで?使えるよ、ふつーに
593デフォルトの名無しさん:2008/02/21(木) 20:52:38
>>582
DB関連のAPIが林立しているのは、APIの進化変遷の跡。
最初から使い分けを意図して作られた物じゃない。
初期のEJBは詰め込みすぎで設計がクソで生産性が低いので、
小さくない規模の開発でも、Hibernateなどの他のマッピングフレームワークは使ってたよ。
594デフォルトの名無しさん:2008/02/21(木) 21:38:57
質問させてください。

FileInputStream fis = new FileInputStream(file);
FileChannel srcChannel = fis.getChannel();
// 一つのデータは 2 byte (16 bit)
ByteBuffer buffer = ByteBuffer.allocateDirect(length * 16);
buffer.order(ByteOrder.LITTLE_ENDIAN);
// 読み込み
srcChannel.read(buffer);
srcChannel.close();
fis.close();
buffer.clear();
int ch1, ch2;
for(int i = 0; i < 1000; i++){
ch1 = buffer.get() & 0xff;
ch2 = buffer.get() & 0xff;
data[i] = (ch1 | (ch2 << 8)) & 0xffff;
}
buffer.clear();

int[] data という配列に
バイナリファイル中の符号なし short を読み込みたいのですが、
getShort() をつかったら、符号ありで読まれてしまったので、上のようなコード
でやっています。
処理が遅い(無駄計算が多い)気がするのですが、もっと良い方法はありますでしょうか
595デフォルトの名無しさん:2008/02/21(木) 22:10:42
"แอมเพอร์แซนด์"

上記のような文字列が部分的に含まれているファイルを
SQLに入れる作業をしているのですが、
これを読み込むとunrecognized tokenエラーが出ます

このような文字の扱いはどのようにすればよいでしょうか
596デフォルトの名無しさん:2008/02/21(木) 22:12:11
>>594
data[i] = buffer.getShort() & 0xffff
でダメかね?
597デフォルトの名無しさん:2008/02/21(木) 22:33:16
>>595
ファイル読み込むときのエンコーディング正しく指定してる?
598デフォルトの名無しさん:2008/02/21(木) 22:33:39
JAVAとC#どっちがリバースエンジニアリングに強い?
どっちも変わらない?
599デフォルトの名無しさん:2008/02/21(木) 22:46:14
そんな高度なことできるやつがそんな質問するとは思えないのだが
600デフォルトの名無しさん:2008/02/21(木) 22:47:40
強いってのはやりやすいって意味か?
それともやられにくいって意味か?

基本的にJavaはネイティブにしない限りソースへ復元は簡単な方
C#はどんだけネイティブ系使っているか次第
601デフォルトの名無しさん:2008/02/21(木) 22:53:41
逆コンパイルはどっちも超簡単でほぼ完璧だよ
602582:2008/02/21(木) 23:00:01
>>593
ありがとうございます。
色んなベンダから別々に色んな技術が生まれてカオスな状態という感じでしょうか
デフォになってるものも無いようなので自分で色々試してみます。
603594:2008/02/21(木) 23:02:25
>>596
ああ、なるほどー。と思って実装してみたら、逆に少し遅くなりました。(データは正しく読めてました)
以下のようなコードを書いてベンチマークしても、やっぱり遅くなってましたorz
public class ReadTest {
public static final int length = 3800 * 2600;
public static int[] data = new int[length];
public static ByteBuffer buffer;
public static void main(String[] args){
try{
buffer = ByteBuffer.allocateDirect(length * 16);
buffer.order(ByteOrder.LITTLE_ENDIAN);
for(int i = 0; i < 20; i++){ read1(); read2(); read2(); read1(); System.out.print(".");}
long t = System.currentTimeMillis();
for(int i = 0; i < 10; i++){ read1(); }
System.out.println("\r\n" + (System.currentTimeMillis() - t) + " ms");
t = System.currentTimeMillis();
for(int i = 0; i < 10; i++){ read2(); }
System.out.println((System.currentTimeMillis() - t) + " ms");
} catch (Exception e){}
}
public static void read1() throws Exception{
FileInputStream fis = new FileInputStream(new File("hoge"));
FileChannel srcChannel = fis.getChannel();
for(int i = 0; i < 4; i++) fis.read(); // ヘッダ
buffer.rewind();
srcChannel.read(buffer); srcChannel.close(); fis.close(); // 読み込み
buffer.clear();
for(int i = 0; i < length; i++){ data[i++] = buffer.getShort() & 0xffff;}
}
/* read2 は読み込み部分が古いほう(省略) */
うーん、不思議ですねえ。 getShort() は遅いんでしょうか。。。
でかい画像を大量に処理していて、読み込みが25%くらい閉めているので、短くしたい・・
604594:2008/02/21(木) 23:04:31
最終行の data[i++] は data[i] のミスです
605デフォルトの名無しさん:2008/02/21(木) 23:05:21
>>600
やられにくいって意味でとらえてください

>>601
そうですか、使いやすくて良い言語だけど自分が作ったソフトが逆コンパイル
されるのは困るな

企業で開発するときは何か対策しているのでしょうか?
606デフォルトの名無しさん:2008/02/21(木) 23:17:50
なんで困るんだ?
607デフォルトの名無しさん:2008/02/21(木) 23:28:14
>>597
ありがとうございます
UTF-8で読み込んでいます

System.out.println("แอมเพอร์แซนด์");
これでエラーになるのはなんででしょうか
608デフォルトの名無しさん:2008/02/21(木) 23:29:10
แอมเพอร์แซนด に一致する情報は見つかりませんでした。
609デフォルトの名無しさん:2008/02/21(木) 23:57:00
こんばんは。
CDを管理するプログラムを作っているのですが、mainクラスとCDクラスがあります。
管理する数は、5つでその分のCDインスタンスをつくり、価格と名前のを入力しコレクションで管理すると言うプログラムです。(重複可で名前でソートさせます)
このプログラムを作ってみたのですが、Collections.sort(list);としたのですが、下線のびっくりマークのエラーが出てしまいます。
内容は、『型の安全性:型Collectionの総称メソッドsort(List<T>の未検査の呼び出しsort(List)がありました』と表示されてしまいます。
このようなエラー表示にはどのような対処をしたら良いのでしょうか?
アドバイスお願いします。
610デフォルトの名無しさん:2008/02/21(木) 23:59:26
>>609
-source 1.4
をコンパイルオプションに付ける
611デフォルトの名無しさん:2008/02/22(金) 00:01:32
ああ、IDE使ってるのか
JDKレベルを1.4にする
612デフォルトの名無しさん:2008/02/22(金) 00:06:39
>>609です。
Eclipse 3.1を使ってます。5.0から1.4にするという感じでよいのでしょうか?
コンパイルオプションの変え方がわからないので調べてみます。
613デフォルトの名無しさん:2008/02/22(金) 00:42:51
>>612
JDK5以降で言語仕様に入れられたジェネリクスというものに関わるエラー。
「java ジェネリクス」で調べてみて。
eclipseならリファクタリング機能の中に、
ジェネリクスを使用していないソースを使用するように変更してくれる機能もあるけど、
とりあえず、ジェネリクスを理解してからにしたほうがいい。
614デフォルトの名無しさん:2008/02/22(金) 00:45:18
>>612です。
アドバイス、ありがとうございます。
ひとまず、1.4に変更したところちゃんと動作しました。ジェネリクスの勉強もしてみます。
615デフォルトの名無しさん:2008/02/22(金) 01:30:47
java覚えて女性関係のメリットになったことってありますか?
真剣な質問です
また、女性関係に強い言語は何でしょうか?
616デフォルトの名無しさん:2008/02/22(金) 02:04:39
つまんね
他でやれ
617デフォルトの名無しさん:2008/02/22(金) 03:18:36
Javaの勉強をしている初心者なのですが
今コードを書くためのエディタを探しています。
よいエディタを紹介していただけませんか?
618デフォルトの名無しさん:2008/02/22(金) 05:53:51
vivi
619デフォルトの名無しさん:2008/02/22(金) 09:05:49
>>605
Javaと.NETどちらとも、逆コンパイラはある。
どっちも中間言語を使うタイプなので、逆コンパイラを作りやすいらしい。
そしてその対策として、obfuscator(難読化ツール)がどちらにもある。
単に、シンボル名(クラス名、メソッド名、変数名)をランダムな文字列に
置き換えて、逆コンパイラが出力したソースを読みにくくする、
ってだけだけど。
620デフォルトの名無しさん:2008/02/22(金) 10:00:34
ジェネリクスについての質問が多いのは
初心者には難しいので入門書の段階では取り扱わないからか
それとも基本1.4で5.0要素は申し訳程度にしか書いてない本が
未だに主流だからか
621デフォルトの名無しさん:2008/02/22(金) 10:21:52
直観的でなくて罠が多いからな
622デフォルトの名無しさん:2008/02/22(金) 11:27:58
http://www.xlsoft.com/jp/products/jet/index.html
このソフトを使えばJavaでもネイティブアプリケーションが作れると書いてあるのですが、そんなうまい話があるんですか?
もし本当ならJavaのパフォーマンス面での不利がだいぶ改善されると思うのですが
623デフォルトの名無しさん:2008/02/22(金) 11:38:09
>>620
俺のとこでは依頼される仕事も未だに1.4全盛なんだよなー。他の会社の人に聞いてもそうだという。5.0に移行するのはいつになることやら。。
624デフォルトの名無しさん:2008/02/22(金) 11:43:56
>>622
Javaをネイティブ化したいだけならGCJもあるよ
速くなるとは限らないが
Javaが見た感じ重いのはSwingとかライブラリのせいもあるから…
625デフォルトの名無しさん:2008/02/22(金) 11:48:02
165 名前: 以下、名無しにかわりましてVIPがお送りします。 [sage] 投稿日: 2008/02/22(金) 11:45:46.56 ID:Q0PQrlKw0
お前らに朗報
http://pc11.2ch.net/tech/
この板の適当なスレに

http://www.xlsoft.com/jp/products/jet/index.html
このソフトを使えばJavaでもネイティブアプリケーションが作れると書いてあるのですが、そんなうまい話があるんですか?
もし本当ならJavaのパフォーマンス面での不利がだいぶ改善されると思うのですが

と書き込んだらデブスがデブゲバうpするってよお
626デフォルトの名無しさん:2008/02/22(金) 11:50:08
170 名前:以下、名無しにかわりましてVIPがお送りします。[sage] 投稿日:2008/02/22(金) 11:47:31.63 ID:Q0PQrlKw0
お前らに朗報
http://pc11.2ch.net/tech/
この板の適当なスレに

http://www.xlsoft.com/jp/products/jet/index.html
このソフトを使えばJavaでもネイティブアプリケーションが作れると書いてあるのですが、そんなうまい話があるんですか?
もし本当ならJavaのパフォーマンス面での不利がだいぶ改善されると思うのですが

こう書き込まないとお前らがキーボード打ってる指があさって腐るそうだ
腐って死ぬぞ??
627デフォルトの名無しさん:2008/02/22(金) 12:37:40
ジェネリクスを使うだけなら難しいか?
Foo[] と ArrayList<Foo> が初心者的には理解しやすくなると思うんだけど
単なる入門書の怠慢だと思う
628デフォルトの名無しさん:2008/02/22(金) 14:03:27
始めるんだけど、どの本がオススメですか?
629デフォルトの名無しさん:2008/02/22(金) 15:01:06
初心者で失礼します。どう修正していいかわかりません。宜しくお願いします。

import java.util.Scanner;

public class tes
{
public static void main(String[] args)
{
char stuname;
Scanner kb = new Scanner(System.in);
stuname = getStuN("Please enter the student name: ", kb);
}
//get studnt name
public static char getStuN(String str, Scanner kb)
{
System.out.print(str);
char sname = kb.nextLine();
System.out.print(sname);
return sname;
}

}
---------
tes.java:15: 互換性のない型
検出値 : java.lang.String
期待値 : char
char sname = kb.nextLine();
^
630デフォルトの名無しさん:2008/02/22(金) 15:08:50
>>629
ttp://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/Scanner.html
nextLine の戻り値型は String です。
よって sname の型宣言を String にして、それ以降の記述を適切に修正してください。
631デフォルトの名無しさん:2008/02/22(金) 15:26:12
>>630
できました! ありがとうございましたm(_ _)m
632デフォルトの名無しさん:2008/02/22(金) 15:42:51
625 名前:デフォルトの名無しさん[sage] 投稿日:2008/02/22(金) 11:48:02
165 名前: 以下、名無しにかわりましてVIPがお送りします。 [sage] 投稿日: 2008/02/22(金) 11:45:46.56 ID:Q0PQrlKw0
お前らに朗報
http://pc11.2ch.net/tech/
この板の適当なスレに

http://www.xlsoft.com/jp/products/jet/index.html
このソフトを使えばJavaでもネイティブアプリケーションが作れると書いてあるのですが、そんなうまい話があるんですか?
もし本当ならJavaのパフォーマンス面での不利がだいぶ改善されると思うのですが

と書き込んだらデブスがデブゲバうpするってよお


626 名前:デフォルトの名無しさん[] 投稿日:2008/02/22(金) 11:50:08
170 名前:以下、名無しにかわりましてVIPがお送りします。[sage] 投稿日:2008/02/22(金) 11:47:31.63 ID:Q0PQrlKw0
お前らに朗報
http://pc11.2ch.net/tech/
この板の適当なスレに

http://www.xlsoft.com/jp/products/jet/index.html
このソフトを使えばJavaでもネイティブアプリケーションが作れると書いてあるのですが、そんなうまい話があるんですか?
もし本当ならJavaのパフォーマンス面での不利がだいぶ改善されると思うのですが

こう書き込まないとお前らがキーボード打ってる指があさって腐るそうだ
腐って死ぬぞ??
633デフォルトの名無しさん:2008/02/22(金) 18:03:04
JAVAからpostgresSQLを操作するプログラムを作成しております。
JAVAからpostgresのでーたをバックアップする方法を知りたいのですが、
JDBCを利用して、postgreSQLのpg_dumpを操作する方法はあるのでしょうか。

また、pg_dump以外にも、JDBCにてデータのバックアップを出来る方法があれば、
ご教授お願いいたします。
634デフォルトの名無しさん:2008/02/22(金) 18:19:27
>>633
DatabaseMetaData#getTablesで全テーブルを取得して全行クエリしてファイルに書き出すとか・・・
それですべて復元できるかわからないけど

Runtime#execでpg_dump呼び出す方が簡単な気がする
635デフォルトの名無しさん:2008/02/22(金) 18:33:59
>>634
>DatabaseMetaData#getTablesで全テーブルを取得して全行クエリしてファイルに書き出すとか・・・
それは遅そうだw

>Runtime#execでpg_dump呼び出す方が簡単な気がする
わしもそう思う。
何かの操作が必要だったら、シェルかバッチの中でJavaプログラムで操作したのちに
バックアップを走らせた方が効率が良さそうだが。
636633:2008/02/22(金) 18:44:15
634,635
どうもありがとうございます。
早速、試してみます。
637デフォルトの名無しさん:2008/02/22(金) 19:07:30
今どきJDBCなんて使う必要あるの?
638デフォルトの名無しさん:2008/02/22(金) 21:32:33
教えてください。

環境:Oracle JDBC

PreparedStatementとResultSetを使用し、
SELECTを実行しています。

通常問題ないのですが、バインド変数(?)が11個以上あるSQLを実行した場合、
かつ、レコードのヒット件数が11件以上を超えている場合、
11件目のデータ取得時に「配列の範囲」を超えた、という例外が発生します。
バインド変数はsetStringで1から順に設定し、
設定内容についても問題ないです。
※デバッガで確認済み

SQL自身は問題なく、SQLExceptionが発生しているわけでもありません。

何か回避策はあるのでしょうか?
639デフォルトの名無しさん:2008/02/22(金) 22:03:15
まずスタックトレースを貼れ。その話し振りだと単なるバグの可能性が素敵連
640デフォルトの名無しさん:2008/02/22(金) 22:09:44
Cで言うところの構造体の代わりにクラスを使っています。
内部変数はInt型が2つ、Boolean型が1つの小さなクラスです。
クラスの2次元配列として2000x2000のインスタンスを生成するコードを書いたら
インスタンスを生成する箇所(以下)で
for(int j=0;j<2000;j++){
 for(int i=0;i<2000;i++){
  box[i][j] = new Box();
 }
}

java.lang.OutOfMemoryError: Java heap space
というエラーが出てしまいました。
メモリの使い方が下手なんだと思うのですが、
よい対処法が思いつきません。
何か手はあるでしょうか?
641デフォルトの名無しさん:2008/02/22(金) 22:32:58
>>640
簡単に計算。integer型として。
4byte * 2 * 2000 * 2000 => 32byte * k * k => 32Mbyte
boolean型はどれだけ食うのか分からないが、さらに4-16Mbyte

ということで、先の値を目安にし、ヒープを明示的に確保します。
以下ページから java のページ、-Xmx や -Xms オプションを参照のこと。
ttp://java.sun.com/j2se/1.4/ja/docs/ja/tooldocs/tools.html

他の方法もあるとは思いますが、安易な解決法として。
642デフォルトの名無しさん:2008/02/22(金) 23:23:53
>>641
ありがとうございます。
そういうやり方もありそうですが、
もう少しコードの書き方について考えてみます。
643デフォルトの名無しさん:2008/02/22(金) 23:24:12
tomcatは内部でjspをコンパイルするためにjdkを使っていると聞いたのですが
tomcatをインストールする場面ではjdkではなくjreのパスを指定しますよね
その後もtomcatの設定でjdkの場所を教えたつもりは無いのですが
jspをちゃんとコンパイルしてくれてるみたいです。
tomcatはどうやってjdkを認識してるんでしょうか?
644デフォルトの名無しさん:2008/02/23(土) 00:47:22
>>644
JSPのコンパイル用にIBMのJDK積むようになった。

昔はJDKの指定が必須だった。4までだったっけ?
645643:2008/02/23(土) 00:52:46
>>644
なるほど〜そういうことだったんですね。
モヤモヤしてたのがスッキリしました。
ありがとうございました。
646デフォルトの名無しさん:2008/02/23(土) 02:17:56
>>640
Int型というのは存在しない
Booleanの代わりにbooleanを使ったらどうか?
647デフォルトの名無しさん:2008/02/23(土) 03:40:02
>>640
試してみた
Sun JRE 1.6.0_04
Box[2000][2000] の場合 107MB
int[2000][2000][2] + boolean[2000][2000] の場合 110 MB
648デフォルトの名無しさん:2008/02/23(土) 03:59:50
new って複数のスレッドから同時に実行できるんですか?
649デフォルトの名無しさん:2008/02/23(土) 04:06:06
>>648
意味が分からん
どういう状況を想定しているのか擬似コードでもいいからシンプルな例で示せ
650デフォルトの名無しさん:2008/02/23(土) 04:06:21
>>647
まあなんですか、[2000][2000][2] ではなく、[2][2000][2000] をお勧めします。
ついでに用途が合えば boolean[][] ではなく、java.util.BitSet を。
651デフォルトの名無しさん:2008/02/23(土) 04:10:57
>>648
コンストラクタはスレッドセーフかって意味なら答えは一般的にはノー
652648:2008/02/23(土) 04:16:48
作ったプログラムのどうも動作が遅くて、スレッドダンプをみてみたらほとんどのスレッドが
コンストラクタ
java.lang.AbstractStringBuilder.AbstractStringBuilder(int capacity)内の
value = new char[capacity];
↑のところでブロックしてたので、非同期でnewは呼べないのかなと思ったんですが
ひょっとするとcapacityが大きいときだけ同期呼び出しだったりします?
653648:2008/02/23(土) 04:18:31
>>651
つまり非同期には呼ばれないってことですね。
654デフォルトの名無しさん:2008/02/23(土) 04:40:17
hou
655デフォルトの名無しさん:2008/02/23(土) 04:46:29
>>652
ヒープに配列を生成する過程でロックされてそうだ。
仮に非同期に実行できたとしても体感時間は変わらないと思う。

仮にヒープの拡張に時間が掛かってるなら、
最初からヒープを必要な分大きくしておけば少しは早くなる。

あとは初期にやたら時間が掛かるなら、確保するサイズを小さくして、
最大確保を遅延させるのはどうか。
確保するたびに前のゴミが出るのと時間が掛かるけど。
656デフォルトの名無しさん:2008/02/23(土) 09:57:09
>>652
確保するサイズが大きいとスレッドごとのプールから取れなくなるから同期が必要になる
というかそんな大きなStringBuilderをそんな頻繁に確保するってことがまずい気がする
GC起きまくってないか?一度 -verbose:gc で見てみ
確保したのを使いまわすと改善するんじゃないかな
657:2008/02/23(土) 11:14:43
j2dk1.4.2を使っているのですが、
javacが使えず、環境変数の設定をすると、一度できたんですが、
2回目からできなくなりました。
しかも変数の設定を変えていたので元のがどんなのだったかがわかりません…。
環境変数の、Pathを教えて下さい。
658デフォルトの名無しさん:2008/02/23(土) 11:16:24
659:2008/02/23(土) 11:29:59
読んでもよくわかりません。どなたかー
660デフォルトの名無しさん:2008/02/23(土) 11:51:13
>>659
本当に読んだか?具体的にどの手順がわからないんだ
http://java.sun.com/javase/ja/6/webnotes/install/jdk/install-windows.html#path
661デフォルトの名無しさん:2008/02/23(土) 14:00:48
>>655
>>656
なるほど!スレッドごとのプールから取れなくなるからってことですか。
このStringBuffer自体はデバッグのための文字列だったのでここの部分を取り払ったら
ロック争奪がなくなってスムーズに動きました。
ありがとうございました!
662デフォルトの名無しさん:2008/02/23(土) 14:05:43
>>647
>>650
いろいろありがとうございます
Intのうち一つはflagで3種類の値しかとらないのでboolean2つで頑張って
もう一つのIntをshort型にするとだいぶ減りそうな気がしました。
後で実装してみようと思います
boolean2つのところはBitSet?を使えばいいのですかね。。
後でjavadoc読んでみます。
663デフォルトの名無しさん:2008/02/23(土) 16:05:39
下記の構造でメインクラスtestから、VelocityのgetTemplateをコールしたところ、エラーが出ました。
test.jar
+-dir1
 +-test.class
 +-templ.properties

これで、
> java -jar test.jar
と実行すると
ResourceManager : unable to find resource 'templ.properties' in any resource loader.
というエラーが出ています。

test.jarのおかれているディレクトリにtempl.propertiesがあるか?を探しているようで、
test.jarの中を探していないみたいです。
Main-Class:はdir1.testと指定してあるのでmainはコールできてます。

なにか指定し忘れてることあるんでしょうか。。。お願いします。
664デフォルトの名無しさん:2008/02/23(土) 16:25:09
BufferedImageのディープコピーの仕方を教えてください
665デフォルトの名無しさん:2008/02/23(土) 16:30:43
もう1回BufferedImageを作れ
666デフォルトの名無しさん:2008/02/23(土) 17:04:50
Javaの初心者にExceptionのことを教えたいのですが、
J2SEのクラスの、Exceptionをthrowするメソッドで、
一番基本的で分かりやすいものって何だと思いますか?
コンストラクタじゃない普通のメソッドでお願いします。
667デフォルトの名無しさん:2008/02/23(土) 17:11:09
ぬるぽ
668デフォルトの名無しさん:2008/02/23(土) 17:11:27
NumberFormatException
669デフォルトの名無しさん:2008/02/23(土) 17:19:51
いや、Exception自体じゃなく、
Exceptionをスローするメソッドです。
例えば、FileOutputStream#write(byte[] b)とか。
670デフォルトの名無しさん:2008/02/23(土) 17:24:40
>>666
// Exception 自体は throw も catch もするな。を教える
実行時例外なら、Integer.parseInt(String) で NumberFormat
普通のヤツは意図的に起こすだけなら ClassNotFound とか IO とか

NumberFormat は良い例ではないのよね。
実行時例外の割りに、catchされるように組み込まれてるし。

まあ、別に無理に教える必要は無いんじゃないかな
それよりも知らないメソッドは API doc で調べるように仕込むべし。
671デフォルトの名無しさん:2008/02/23(土) 17:38:36
ありがとうございます。
実行時例外じゃなくて、
IOExceptionとか、メソッド呼び出すと絶対try catchしないといけないヤツです。
672デフォルトの名無しさん:2008/02/23(土) 17:42:38
new FileInputStream
ファイルがなければFileNotFoundExceptionを投げる
673デフォルトの名無しさん:2008/02/23(土) 17:45:47
って、コンストラクタはだめなのか
じゃあ Socket#connect
接続できなければ IOException
674デフォルトの名無しさん:2008/02/23(土) 17:55:35
コンストラクタでないわかりやすいもの・・・
ImageIO#read(File) とか?
675デフォルトの名無しさん:2008/02/23(土) 18:50:51
Stream系のIOExceptionじゃね?
try-catch-finally と合わせて覚えるのがセオリーかと
676デフォルトの名無しさん:2008/02/23(土) 19:40:42
みなさんありがとうございます。
finnalyも合わせて、Stream系で説明してみようと思います。
677デフォルトの名無しさん:2008/02/23(土) 20:55:38
IOException もいいが ParserConfigurationException も捨てがたい
678デフォルトの名無しさん:2008/02/23(土) 23:54:30
学校でちょっとプログラムに興味あって色々自分で勉強してみたんですがJavaって簡単過ぎてつまらないんですがこんなので仕事になるんでうか?
HTMLも簡単だったし仕事では何やってるんですか?
679デフォルトの名無しさん:2008/02/23(土) 23:58:40
オナヌー
680デフォルトの名無しさん:2008/02/24(日) 00:00:51
>>678
ひとつだけいえることはつまらないと思う人は
これを仕事にしてはいけませんよ。
681デフォルトの名無しさん:2008/02/24(日) 00:01:05
簡単か難しいかと、仕事になるかならないかは、関係ないからな
なにせ「単純労働」っていう言葉もあるくらいだ
682デフォルトの名無しさん:2008/02/24(日) 00:01:06
言語は簡単でいいんだよ
683デフォルトの名無しさん:2008/02/24(日) 00:40:01
27歳になってJAVAで開発チームに入る事になりました。
今までの業務開発経験は、COBOL3年あとはVBAぐらいですかね・・。
4年程前にSUNJAVA1.4の資格は取得したんで基礎的な事は大丈夫と思います。
実際に業務で役に立つ為に、他にどんな勉強しておけばいいですかね?
とりあえずTOMCATとMYSQL入れて、なんか作ってみようかなと思ってますが、
業務レベルでは全く無意味なんでしょうね・・
684デフォルトの名無しさん:2008/02/24(日) 00:52:48
tomcatとmysqlが何で無意味なの?普通に業務レベルで使うのに。
とりあえずeclipseで簡単なwebアプリでも作ってみたら?
685683:2008/02/24(日) 01:06:18
やっぱ業務でも使うんですね。
いや、簡単な事やっても業務レベルでは通じないかなぁと。
でも基本的な事分かってると大分入りやすいですよね。
適当にDB構築してWEBアプリ作ってみます。
686デフォルトの名無しさん:2008/02/24(日) 01:32:01
適当にDB構築できちゃうレベルなら心配無用だと思うけど…
687デフォルトの名無しさん:2008/02/24(日) 08:34:52
class calcException extends Exception {
}

public class sample53 {
public static void main(String[] args) {
try {
calc(2,2);
}catch (calcException e) {
System.out.println("calcExceptionが"+"throwされました");
}
}

static void calc (int i,int j) throws calcException {
if(i == j) {
calcException ce = new
calcException();
throw ce;
}
System.out.println(i*j);
}
}
これなんですけど、
if(i == j) {
calcException ce = new
calcException();
throw ce;
この部分でどういう処理を行っているのですか?
688デフォルトの名無しさん:2008/02/24(日) 08:50:07
普通に例外なげてるんじゃね
689デフォルトの名無しさん:2008/02/24(日) 09:23:16
throw ceってなんですか?
もしiとJの値が同じなら、オブジェクトを作成して、その後はなんですか?
690デフォルトの名無しさん:2008/02/24(日) 09:30:37
だから例外投げてるんだよ
691デフォルトの名無しさん:2008/02/24(日) 10:10:44
たびたび申し訳ないが、
static void calc (int i,int j) throws calcException
この部分はこの式は例外を投げる式ですよってこと?
692デフォルトの名無しさん:2008/02/24(日) 10:14:30
このメソッドはcalcExceptionを投げ得ますよってこと。
693:2008/02/24(日) 10:27:48
>>660
[追加します]とありますが全部変えてしまいました。全部どう記述するのか聞きたいです。
694デフォルトの名無しさん:2008/02/24(日) 10:33:26
695デフォルトの名無しさん:2008/02/24(日) 11:13:00
>>692ありがとうございました><
696:2008/02/24(日) 11:30:48
wbemの場所ってわからないことないですか?
697:2008/02/24(日) 11:36:33
設定方法わかりませーん
698デフォルトの名無しさん:2008/02/24(日) 11:57:29
@F8押す→3秒待機→F8押す
Bこの処理を500回ループした後
AF7押す→1秒待機→F8押す→1秒待機
C処理Aを30回繰り返し@に戻る

こういうプログラムはjavaだったら可能でしょうか?
ゲームに使うのでVBみたいにF8押したことにしますってのではなくて
実際に押すことが重要なんです
699デフォルトの名無しさん:2008/02/24(日) 12:09:13
>>698
>>96
VB が何をやってるのか知らんが、
人がキーを押したときと同じような結果をシミュレートすることは可能。
// 自動演奏みたいにキーボードが動く……誰かそういうヤツを作ってください。
700デフォルトの名無しさん:2008/02/24(日) 12:16:39
VBではSENDKEYなるメソッドがあり
それを使うとたとえば

F8押した時、1+1の処理をするというプロシージャがあった場合

SENDKEYによって1+1を呼び出すことはできますが
実際にF8を押すという動作がウィンドウズ内で行われている
というわけではないようです
(押した時のようにキーをへこませるといわけではありません。念のため)

ようするに、キーを押した後の処理ではなく、キーそのものを押したことを
キーを押さずにウィンドウズに認識させたい
701:2008/02/24(日) 12:22:46
設定方法わかりませーん
702デフォルトの名無しさん:2008/02/24(日) 12:25:25
>>700
なるほど。イベントのトリガーとして登録させてるようなものですかね。
ということで、96 を実行することで少しは感動してもらえそうな予感。
703デフォルトの名無しさん:2008/02/24(日) 12:31:18
どうやらjavaなら可能なようですね

勉強します
70411:2008/02/24(日) 12:31:27
画面A,B,Cとあり画面CのB画面終了ボタンを押すとB画面のみ終了させたいと考えてますが
さっぱりわかりません。どなたかご教授願います。
/*ソースここから*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Gamen extends JFrame implements ActionListener{
private JButton b1 = new JButton("B画面表示");
private JButton b2 = new JButton("終了");
private JButton b3 = new JButton("C画面表示");
private JButton b4 = new JButton("B画面終了");
public void GamenA() {
getContentPane().setLayout(new FlowLayout());
getContentPane().add(b1);
getContentPane().add(b2);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("A画面");
setSize(200, 100);
setVisible(true);
b1.addActionListener(this);
b2.addActionListener(this);}
public void GamenB() {
getContentPane().setLayout(new FlowLayout());
getContentPane().add(b3);
getContentPane().add(b2);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("B画面");
setSize(200, 100);
setVisible(true);
b3.addActionListener(this);
b2.addActionListener(this);} //続きます
705704:2008/02/24(日) 12:33:21
すみません>>704は11さんとは無関係です。 続き
public void GamenC() {
getContentPane().setLayout(new FlowLayout());
getContentPane().add(b4);
getContentPane().add(b2);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("C画面");
setSize(200, 100);
setVisible(true);
b4.addActionListener(this);
b2.addActionListener(this);}
public void actionPerformed(ActionEvent e){
if(e.getSource() == b1){
Gamen bb = new Gamen();
bb.GamenB();
}else if(e.getSource() == b2){
System.exit(0);
}else if(e.getSource() == b3){
Gamen cc = new Gamen();
cc.GamenC();
}else if(e.getSource() == b4){
//B画面終了ボタンを押してBのみ画面を終了させたい。
}
}
public static void main(String[] args) {
Gamen aa = new Gamen();
aa.GamenA();
}
}
/*ソースここまで*/
よろしくお願いします。
706デフォルトの名無しさん:2008/02/24(日) 12:34:45
>>698
Javaはある程度のことしかできないし、そういうものであれば既存のソフトで腐るほどありますよ。
自分でやりたいなら何らかのスクリプトを使うことをおすすめしておきます。
707デフォルトの名無しさん:2008/02/24(日) 12:43:52
一つ一つのフレームは、その他のフレームのインスタンスを持ってないから現状では無理。
閉じさせるフレームのインスタンスを持たせて、それでactionPerformedでdisposeしてやれば実現できるけど・・・継承とかそこらへんの意味を見直した方がいいと思うよ。
708705:2008/02/24(日) 12:53:30
>>707
ありがとうございました。
勉強しなおしてきます。
709638:2008/02/24(日) 13:30:03
>>639
業務なのでスタックとレースはちょっと貼れません・・・


実際に発生している問題は

パターン1
setStringでパラメータを19個設定
検索ヒット件数が10件以下
→問題なし

パターン2
setStringでパラメータを19個設定
検索ヒット件数が11件以上
→ResultSetでlastや、11件目のnextで例外発生
 スタックとレースに配列の範囲外を指定(詳細19)というエラーが出力される。
 ※パラメータを15や11にした場合も同様に(詳細15)のように出力される。

パターン1と2で使用しているSQLは全く同一。
パターン1と2の違いはパラメータの1つの日付の範囲を数ヶ月広げているだけ。

パラメータを全て直接SQLに埋め込んだ場合、データが件数分正しく取得できます。

パラメータに上限とかあるのでしょうか?
SQLはそれなりに大きいです。100行程度。
710:2008/02/24(日) 14:16:01
設定方法わかりませーん
711デフォルトの名無しさん:2008/02/24(日) 14:16:23
>>709
Oracle なら、詳細19とか詳細15とかマニュアル嫁
それの何処に配列が出てくるのか謎
712デフォルトの名無しさん:2008/02/24(日) 14:18:34
問題ない部分だけの抜粋でもいいからスタックトレース貼ったらどうか。
例外は本当にOJDBCで出てるのか?
713638:2008/02/24(日) 14:29:54
ResultSetやPreparedStatementをデバッガで除くと、
設定したパラメータが正しい内容で格納されているのは確認しています。

出力される例外はArrayIndexOutOfBoundsExceptionです。
ここでパラメータの数が「詳細 パラメータ数」と表示されます。


>>711
まず、SQLExceptionじゃないです。
上記通り、19とか15はパラメータの総数が出力されます。
謎ですが。


>>712
そもそも業務で外部接続できないので貼れません・・・
例外は、ResultSetのnextが11回目に呼び出されたタイミングで発生します。
ResultSetの処理の中でArrayIndexOutOfBoundsExceptionで死亡します・・・
714デフォルトの名無しさん:2008/02/24(日) 17:02:57
test
715ちんこ ◆GbXlaaQNk. :2008/02/24(日) 17:05:15
固定長*可変長の配列を作りたいです。
(i方向が固定でj方向が可変、初期は空)
import java.util.*;

public class Test2{
public static void main(String[] args){
ArrayList<Integer>[] a = new ArrayList<Integer>[10];
for(int i=0; i<a.length; i++){
a[i] = new ArrayList<Integer>();
}
a[0].add(3);
System.out.println(a[0]);
}

}

こう書きましたがエラーが出ます。
どこがおかしいのでしょうか?
716ちんこ ◆GbXlaaQNk. :2008/02/24(日) 17:05:45
age
717デフォルトの名無しさん:2008/02/24(日) 17:07:30
固定長のちんこなんて要りません
718デフォルトの名無しさん:2008/02/24(日) 17:09:04
1〜nの整数の順列をすべて表示するプログラムを書いてみたのですが
もっと簡単にやる方法とかここはこうしたらいいとかあったらアドバイスお願いします

import java.util.*;
class PermutationTest {
public static void main(String[] args) {
Permutation perm1 = new Permutation(4);
perm1.PrintPermutation();
return;
}
}

class Permutation {
private int N;
private int[] ans;
Permutation(int N){
this.N = N;
this.ans = new int[N];
}
void PrintPermutation() {
int[] a = new int[N];
for (int i = 0; i < N; i++) {
a[i] = i+1;
}
this.subPrintPerm(a,0);
}

続く
719ちんこ ◆GbXlaaQNk. :2008/02/24(日) 17:09:27
まぁまぁそういわず。
なんでエラーが出るのかさっぱり分からなくてね。
720デフォルトの名無しさん:2008/02/24(日) 17:09:46
>>718の続き

private void subPrintPerm(int[] a, int idx) { // 配列a[]から1つ取り出して残りで再帰呼び出し
if (a.length == 1) {
ans[idx] = a[0];
ansを表示;
return;
}
for (int i = 0; i < a.length; i++) {
int[] b = new int[a.length-1];
ans[idx] = a[i];
int j=0;
while (j < b.length) {
if (j < i) {
b[j] = a[j];
} else {
b[j] = a[j+1];
}
j++;
}
this.subPrintPerm(b,idx+1);
}
}
}
721デフォルトの名無しさん:2008/02/24(日) 17:10:15
722ちんこ ◆GbXlaaQNk. :2008/02/24(日) 17:16:06
>>721
既出でしたね。
でもそのレスを読んでも分かったよな分からんようなです。
具体的にどうすればいいか示してもらえませんか?
723デフォルトの名無しさん:2008/02/24(日) 17:46:20
今まで書いたソースを消してクソして寝ろ
そして二度とブラウザを開かない
724ちんこ ◆GbXlaaQNk. :2008/02/24(日) 17:47:03
>>723
分からないんだろ?そういえばいいのにw
725ちんこ ◆GbXlaaQNk. :2008/02/24(日) 17:58:50
どう考えてもおれのコードと>>574のコードは問題点が違います。
おれが書いた>>715のコードはどこがミスがあるのか
指摘出来る人はいませんか?
726デフォルトの名無しさん:2008/02/24(日) 18:17:40
>715
ジェネリックスを使用したList<E>の配列は作れない、言語仕様的に。
したがって、int[][]のように2次元配列にするか、List<List<Integer>>のようにListにListを入れるべし
727デフォルトの名無しさん:2008/02/24(日) 18:21:32
ArrayList入れたいのかInteger入れたいのかはっきりしろ。
728デフォルトの名無しさん:2008/02/24(日) 18:23:55
可変長のちんこ入れたいです。
729デフォルトの名無しさん:2008/02/24(日) 18:49:14
ArrayList<Integer>[] a = new ArrayList[10];
でいいんじゃね?
730ちんこ ◆GbXlaaQNk. :2008/02/24(日) 18:54:02
現在作成中の
ダイクストラ法による最短経路探索プログラムです。
http://www.uploda.org/uporg1268729.zip.html
うpしました。
これでListを使えると便利なので使いたいと思ったのですが、
具体的に今findShortestPath @ MainPanel
というのを実装しています。
ここで、toArray周辺でエラーが出て、どういう事だかさっぱり分かりません。

エラーの原因が分かる人は教えてください。
731デフォルトの名無しさん:2008/02/24(日) 19:06:16
730 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん
732ちんこ ◆GbXlaaQNk. :2008/02/24(日) 19:08:57
さっぱり分からない。
733デフォルトの名無しさん:2008/02/24(日) 19:34:33
カレントディレクトリを移動してからEXEを実行したいのですが、下のように書いてもhoge.exeが実行されません。
どう書けばよろしいでしょうか?

Runtime.getRuntime().exce(new String[]{"cmd.exe","/C","cd C:\hoge","hoge.exe"})

hoge.exeが自分のルートにファイルを出力する為、カレントディレクトリを移動しなければならず
この処理を含む実行ファイルをhoge.exeのフォルダに置くのは避けたいです。
734デフォルトの名無しさん:2008/02/24(日) 19:37:52
ProcssBuilder にカレントディレクトリ指定できるものがあったとオモ
735デフォルトの名無しさん:2008/02/24(日) 20:04:50
JMenuBarの中にメニューを2つ追加し、それぞれのメニューの中に
同じ名前のJMenuItem、同じActionListenerをセットした場合、
それぞれのMenuItemが選択された際の処理を変えることは可能でしょうか

ネットや書籍を調べてみたところ、JMenuItemが選択されたイベントが発生した場合、
そのイベントの名前をgetActionCommandで取得し、条件分岐を行っていましたが
同じ名前のItemが存在する場合の条件分岐方法を見付けることができませんでした

諦めてそれぞれのItemに別々のActionListenerクラスをセットするしかないのでしょうか
736デフォルトの名無しさん:2008/02/24(日) 20:07:51
getSourceとJMenuItemを==で比較するという手もある
737デフォルトの名無しさん:2008/02/24(日) 20:21:18
同じ名前のJMenuItemってのが設計おかしくねえか?
見た目が同じだとしても場所とか違う識別子にはなるだろ
738デフォルトの名無しさん:2008/02/24(日) 20:22:28
マルチキャストソケットを利用した、簡易チャットルームの
ようなものを作成しているのですが、現在接続中のユーザーを
表示させる部分がうまくいきません。

IPで表示させるのですが、取得の方法が悪いのでしょうか?
ユーザー表示部分だけなので、宿題スレでなくこちらで質問させて
いただきました。よろしくおねがいします。

http://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/217.java
739デフォルトの名無しさん:2008/02/24(日) 20:30:45
うまくいかないでは解らん。
例外が発生するのか、処理がそこを通らないのか、ちゃんと情報を出せ。

あと、直リンできねーぞ
740デフォルトの名無しさん:2008/02/24(日) 20:50:37
>>734
レスありがとうございます。
できればRuntime.getRuntime().execでやりたいと思うのですが、無理でしょうか?
やはりjdk1.5ならProcssBuilderを使った方が良いのかな・・・。
741デフォルトの名無しさん:2008/02/24(日) 21:02:36
>>739
失礼しました。

特にエラーが出て処理が停止するというこはなく、
表示ボタンを押してもnullが返ってくるため
ユーザーのIPが上手く取得できていないのでは
ないかと思っています。

ttp://rg550.hp.infoseek.co.jp/cgi-bin/joyful/main.htm
の217番にUPしてあります。
742デフォルトの名無しさん:2008/02/24(日) 21:09:58
>741
System.out.println( "ユーザー表示ボタンが押されました" );
って行は通っているのでOK?
あとメッセージの表示は問題ない?
System.out.println( "アドレスを新規登録しました" );
って行は通ってないのか?
743デフォルトの名無しさん:2008/02/24(日) 21:24:27
tomcat5.5
eclipse
を使用してwebアプリを作ろうと思っています。

一つのプロジェクトで複数のTomcatを動かそうと思っています。
この場合、ルートディレクトリが複数で
ソースの出力先フォルダ一つしか設定できません。

ということは片方のルートディレクトリにしか
サーブレットのクラスは置けないため、
片方のtomcatからしかソースを参照できません。

こういった場合どうすればよいでしょうか。
744デフォルトの名無しさん:2008/02/24(日) 21:38:05
早速見ていただきありがとうございます。

>>742
>System.out.println( "ユーザー表示ボタンが押されました" );
の部分はシステムコンソールに表示されているため
通っているものと思われます。また、メッセージも
""で囲まれている部分はきちんと表示されています。

>System.out.println( "アドレスを新規登録しました" );
この行もシステムコンソールでは表示されているので
通っていると思うのですが・・。
745デフォルトの名無しさん:2008/02/24(日) 21:39:48
すまんがだれか、>>743をエスパーしてくれ。
何となく解る気もするが、
なんで、エクスポートしたwarファイルをもう一つのTomcatに置くのではダメなのかが解らない。
746デフォルトの名無しさん:2008/02/24(日) 21:43:33
>>743
何のためにそれをするのか知らないがeclispeはtomcatのラウンチャーじゃない
tomcatは別途立てて、そこにDeployするべき
あとeclipseの1プロジェクトで複数のWebアプリケーションを動作させようというのも間違い
プロジェクトを分けなさない
747デフォルトの名無しさん:2008/02/24(日) 21:50:47
>744
"現在の接続ユーザーは " + userlist + "\n"
の部分だが、JTextAreaにまったく反映されないのか?
中身だけが空なのか、どっちだ?
748デフォルトの名無しさん:2008/02/24(日) 21:53:00
JDK 6 Update 4が落とせないんですが何が問題なんでしょうか。

エラーは承認することができないという内容で、いくつかの環境で試しましたが同様です。
749デフォルトの名無しさん:2008/02/24(日) 21:53:30
>747
userlistの中身がからで
現在の接続ユーザーはnullです という表示になっています。
750デフォルトの名無しさん:2008/02/24(日) 21:56:26
>>749
Chatroom#userlistに何も代入していない
751デフォルトの名無しさん:2008/02/24(日) 22:02:11
>750
回答ありがとうございます。

userlist.add(clientAddr);

上記の文でアドレスが代入されるものと思っていたのですが、
この文の書き方では代入されていないということでしょうか?
752デフォルトの名無しさん:2008/02/24(日) 22:03:12
それはローカル変数のuserlistであってChatroom#userlistではない
753デフォルトの名無しさん:2008/02/24(日) 22:28:32
>752

ありがとうございます。入ってると思ってたものが
別のものだったのですね。

助かりました、ありがとうございました。
754デフォルトの名無しさん:2008/02/24(日) 23:29:39
Class Parent {
 private int val;
 public getVal() { return val; }
 public setVal(int val) { this.val = val; }
 public Parent clone() {...}
}

みたいに、clone() を実装したクラスParentがあったとして、
これを継承した子クラス Child を作ります。
で、この Child でも clone() を実装したいのですが、
その Child#clone() はどうやって実装するのが普通ですか?

public Child clone() {
 Child c = new Child();
 c.setVal ( this.getVal() );
 ...
 return c;
}

と、親クラスの Parent#clone() の存在を完全に無視してもいいもんですか?
これだとどうもスマートじゃないような気がして、protected なコンストラクタを
親クラスに追加する、なんて方法も考えたんですけど、
典型的な手法があるのならばご教示ください。
755デフォルトの名無しさん:2008/02/24(日) 23:35:47
>>754
class Parent implements Cloneable { 
 private int val; 
 public getVal() { return val; } 
 public setVal(int val) { this.val = val; } 
 public Parent clone() {
  try{
   return (Parent)super.clone();
  } catch(CloneNotSupportedException e){
   throw new RuntimeException(e);
  }
 }
}
class Child extends Parent {
 public Child clone() {
  return (Child)super.clone();
 }
}
756デフォルトの名無しさん:2008/02/24(日) 23:40:36
Javaの勉強始めました。

アクセス就職子protectedについて理解が足りないので教えてください。
protectedつけることで、
『自分のクラス内のメソッド 又は 継承されたサブクラス内のメソッドからしかアクセスできない』
そのように直感的に感じたのですが、
間違っているようで。
public class Purotekuto {
public static void main(String[] args) {
Test21 hogehoge = new Test21();
System.out.println( "値を出力:" + hogehoge.protectedInteger );
}}
public class Test21 {
protected int protectedInteger;
Test21() {
this.protectedInteger = 0;
}
public void setValue( int value ) {
this.protectedInteger = value;
}
public int getValue( int value ) {
return this.protectedInteger;
}}
このコードでは、main()から、クラスTest21のメンバ、protectedIntegerにアクセスできずに、
エラーか何かになると思ったのですが、普通に動きました。
自分の考えの何がまずいのでしょうか。。。
757デフォルトの名無しさん:2008/02/24(日) 23:45:28
>754
super.clone() を使うかどうかは状況次第じゃね?
というか、普通はsuper.clone()は使えない方が多いと思う。
帰ってくるのはParentクラスのインスタンスだから、結局は値をコピーしなければならなくなるから。
758デフォルトの名無しさん:2008/02/24(日) 23:46:09
>>754
何のための継承、何のためのオーバーライド。
何がスマートじゃないんだ。感覚的に言われてもな。

ちなみに、cloneを使うなら、Cloneable を implements すること。
// 詳しくは Clonable, Object.clone 参照。

>>756
同じパッケージからもアクセスできるから。以上。
759デフォルトの名無しさん:2008/02/24(日) 23:47:23
>756
もう1つ条件があって、「同一パッケージ内からのアクセス」もOK
760756:2008/02/25(月) 00:01:54
758,759 ありがとうございます。

指摘を受けて調べました。
パッケージ化しないことには、ソースはばらばらのパッケージ的な扱いと、勝手に勘違いしていました。
デフォルトのパッケージ、という扱いになるのですね。
勉強になりました。
761デフォルトの名無しさん:2008/02/25(月) 00:09:47
と言うかデフォルトパッケージの使用は避けてくれ。
762デフォルトの名無しさん:2008/02/25(月) 00:11:27
>>757-758
ありがとうございます。
ちょっと理解できてきました。
763756,760:2008/02/25(月) 00:18:14
>761
というと、必ず特定のパッケージに入れることを明示することが望ましいということでしょうか。
自分今回痛い目にあったので、761の指示に従って付いてまいりますが。
764デフォルトの名無しさん:2008/02/25(月) 00:48:09
>>763
デフォルトパッケージ以外のパッケージに属するクラスから
一切呼び出しが出来ない。(JDK 1.4 以降)

プログラミングの一般論としても
何らかの名前空間に所属させるのは
良い習慣だと思う。
765デフォルトの名無しさん:2008/02/25(月) 01:00:16
>>754
普通はコピーコンストラクタを作る
Cloneable は Java の失敗作とジョシュアっちが言ってました
766デフォルトの名無しさん:2008/02/25(月) 04:11:37
これからjavaを学ぼうと考えています。
JAVAのSDK沢山種類があるようですが、
どれを使用すれば良いでしょうか?
767デフォルトの名無しさん:2008/02/25(月) 04:28:17
>>766
多分新しいのを使っとけばいいんじゃないだろうか
768デフォルトの名無しさん:2008/02/25(月) 04:54:25
使う方のソースはそれで良いけど宣言する方のソースはアノテーション必要でしょ。
769デフォルトの名無しさん:2008/02/25(月) 04:55:33
↑誤爆
770デフォルトの名無しさん:2008/02/25(月) 07:44:10
SE(スタンダードエディション)でおk
771デフォルトの名無しさん:2008/02/25(月) 08:40:00
>>733
\→\\
それと、カレントドライブの変更まではcdで出来ないけど、
その辺は大丈夫かな?
772デフォルトの名無しさん:2008/02/25(月) 09:14:34
Timestamp型の変数から"yyyy/MM/dd"といった形の文字列で
値を取り出すにはどうしたらよいでしょうか?
773デフォルトの名無しさん:2008/02/25(月) 09:34:57
String s = new SimpleDateFormat("yyyy/MM/dd").format(timestamp);
774デフォルトの名無しさん:2008/02/25(月) 09:37:02
>>772
SimpleDateFormat("yyyy/MM/dd")でformatすれば?
775デフォルトの名無しさん:2008/02/25(月) 09:44:18
質問です。
シングルトンを多数作りたいんですが、
private static Singleton instance = new Singleton();
public Singleton getInstance(){return instance;}
private Singleton(){}
といったおきまりパターンを各クラスに書かないと行けませんが面倒です
AbstractSingletonを継承したらgetInstance()で各シングルトンのインスタンスが取れるようになる
みたいな事ができれば便利ですけど、staticフィールドなのでそれもママなりません。
なんか旨い方法はありませんか?
776デフォルトの名無しさん:2008/02/25(月) 09:49:44
ド素人質問ですみません;;
テキストフィールドに入力された文字列を
ボタンが押されたときに変数com_defに入力する
プログラムを作りたいのですが、
下のようにやるとローカル変数 i は内部クラスからアクセスされます。final で宣言される必要があります。
とエラーが出ます。
対処法を教えてください。よろしくお願いします。
text[i] = new JTextField("",2);
button1[i] = new JButton("変更");
button1[i].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {

int com_def = Integer.parseInt(text[i].getText());

System.out.println(""+com_def);
}
});
777デフォルトの名無しさん:2008/02/25(月) 10:01:15
>>773, 774
ありがとうございます。
できました。
778デフォルトの名無しさん:2008/02/25(月) 10:11:39
>>775
eclipse ならテンプレートを使って、少し楽が出来る。下のほうに例がある。
ttp://www.eclipsewiki.net/eclipse/index.php?%A5%C6%A5%F3%A5%D7%A5%EC%A1%BC%A5%C8

>>776
メソッドとその内部クラスとで共用で使う変数は、メソッド内 final として、コンパイルを通す。
他にも方法はあると思うけど、それ以上なら、クラス内クラスにしてちゃんと定義しましょ。
779デフォルトの名無しさん:2008/02/25(月) 16:41:22
String s = "ab" + \r + "cd" + \n + "ef";
正しく直してください。
780デフォルトの名無しさん:2008/02/25(月) 16:43:38
String s = "ab\rcd\nef";
直しました。
781デフォルトの名無しさん:2008/02/25(月) 16:43:54
String s = "ab\rcd\nef";
782781:2008/02/25(月) 16:44:30
かぶった...orz
783デフォルトの名無しさん:2008/02/25(月) 16:46:12
780,781 ありがとうございます。
784デフォルトの名無しさん:2008/02/25(月) 16:47:23
qa3808666 かぶってる...
785デフォルトの名無しさん:2008/02/25(月) 17:24:32
それはかぶってるんじゃなくてマルチポストだろう…
786デフォルトの名無しさん:2008/02/25(月) 17:47:04
tomcatのjsp-examplesにあるFORM認証のサンプルについて質問です。
まず操作を1->5の順で行った結果を書きます。

1.http://hostname:port/jsp-examples/security/protected/index.jspにアクセスするとFORM認証機能が働きlogin.jspが表示される
2.login.jsp -> Username/Passwordを間違えて入力->error.jspが表示される。
3.error.jsp -> "try again"をクリック -> login.jspが表示される。
4.login.jsp -> Username/Passwordを正しく入力 -> login.jspが再表示される。
5.login.jsp -> Username/Passwordを正しく入力 -> HTTPステータス 404 - /jsp-examples/security/protected/j_security_check

4でUsername/Passwordを正しく入力しているので1のindex.jspに飛ぶことを期待したのですが、login.jspが再表示されました。
login.jspの出力内容がブラウザに表示された時に、ソースを表示してみると
□2のlogin.jsp
<form method="POST" action='j_security_check;jsessionid=74394043647C95BAC48CC67ECDFFEFB7' >
□4のlogin.jsp
<form method="POST" action='j_security_check' >
比較してみると、4のソースではセッションIDが付加されていない為に、本来の遷移先のURLを見失ってしまっている、ということでしょうか?

jspソースファイルを見ると、login.jspもerror.jspもresponse.encodeURL()の結果をセットしていました。
login.jspのリクエスト箇所
<form method="POST" action='<%= response.encodeURL("j_security_check") %>' >
error.jspからlogin.jspを表示するリンク箇所
<a href='<%= response.encodeURL("login.jsp") %>'>again</a>.

今のままだとerror.jspからブラウザの戻るボタンで前画面(login.jsp)に戻らないと、認証後に期待したURLへ遷移してくれません。
error.jspにあるアンカータグでlogin.jspに戻った時も同じ動きにさせたいのですが、どのように修正すれば対応できるでしょうか?
787786:2008/02/25(月) 17:51:39
携帯のブラウザでも見るので「JavaScriptは使わない」という前提でお願いします。
788デフォルトの名無しさん:2008/02/25(月) 18:37:01
自作のある圧縮アーカイブの解凍ストリームを作ろうと思っています。
その圧縮形式はライブラリを持っており、InflaterInputStreamを利用すると比較的に楽に実現できると考えたのですが、
read()やread(byte[],int,int)など、いずれにせよユーザーが決めるバッファのサイズで解凍を行う必要があるため、今回のような解凍する側で単一バイト読み込み時に出力されるデータを決めるライブラリを持った圧縮形式ではどのように行うべきなのか分かりません。
解凍したデータもバッファリングして、ユーザーのサイズに合わせて出力すれば実現はできると思うのですが、何か他にいい方法はないものかと思い質問しました。
Inflaterのソースも読んでみたのですが、肝心の部分はnativeメソッドになっており結局どのような実装なのか分かりませんでした。良い方法がございましたら教えてください。
789デフォルトの名無しさん:2008/02/25(月) 19:24:42
>>788
>解凍したデータもバッファリングして、ユーザーのサイズに合わせて出力すれば実現はできると思うのですが

それしかないのでは・・・
1バイトだけ返すread()を実装すればあとはデフォルトの実装があるので、
class MyInputStream extends InputStream {
 private byte[] buf;
 private int pos, size;
 public int read() throws IOException {
  if (pos == size) {
   // 解凍データをbufに詰めてsizeをセット
   pos = 0;
  }
  return buf[pos++];
 }
}
これだけでも一応動くよ
InflaterInputStreamをどう利用しようとしてるのかよくわからんが、あれはzlibストリーム専用
790789:2008/02/25(月) 19:27:03
×return buf[pos++];
○return buf[pos++] & 255;
でした・・・
791デフォルトの名無しさん:2008/02/25(月) 20:59:08
>>775

邪道かもしれんが。 なんか旨い方法、ということなら。

Enum の中に書く定数は1つ1つがシングルトンだ。
全定数に共通のメソッドも振る舞いが異なるメソッドも実装できるぞ。
792ちんこ ◆GbXlaaQNk. :2008/02/25(月) 21:04:53
Javaにはプリミティブと参照が混在しています。
Listなどを使う時には参照型しか使えないのですが、
いっそすべてのintをIntegerに書き換えた方がいいでしょうか?
プリミティブ型の扱いをみなさんどうしていますか?
おれはRubyからJavaに来たので数字が参照型じゃないというのに
すごく違和感を感じます。ましてや混在しているというのは非常事態です。

今すごく悩んでいます。
みなさんがどうしているかを知りたいです。
793デフォルトの名無しさん:2008/02/25(月) 21:09:13
>>789
ネットに繋がらなくて返事が遅くなってしまいました。
聞いていた立場で申し訳ないです。
Inflaterを利用しようと思ったのは、形式に共通点が多く、いくつかをオーバーライドすればできそうな気がしたためです。
確かに本来の用途から外れますので使用すべきではありませんね。

やはりバッファかますことにします。
親切にどうもありがとうございました。
794デフォルトの名無しさん:2008/02/25(月) 21:10:35
>>792
せっかくプリミティブ型があるのにわざわざオブジェクトにする必要はないと思います。
コストの問題ももちろんですが、何より扱いにくいです。
795デフォルトの名無しさん:2008/02/25(月) 21:18:04
>>792

Integer って、オブジェクトだとは言っても、中のデータを書き換えられないから不便だよ。
List などには int を入れても auto boxing されるんだから、int のままでいいんじゃないかなあ。

みなさんがどうしているか、に関しては、「気にしていない」だと思う。
796デフォルトの名無しさん:2008/02/25(月) 21:18:13
>>792
そういう言語だから受け入れるしかない
Rubyは理想を重視した分遅くなってるし
C#はプリミティブ型の扱いを変えて両立させてるけどその分複雑になってたりする
797デフォルトの名無しさん:2008/02/25(月) 21:42:46
Strint[] a = {"A","B"};
aの要素数を1にするtruncateみたいなものはありませんか?
798デフォルトの名無しさん:2008/02/25(月) 21:54:32
配列じゃなくてリストじゃ駄目なん?
799デフォルトの名無しさん:2008/02/25(月) 22:01:35
>>798
Strint[] a; という配列でやりたいです。
Strint[] a = {"A","B"};
ここで処理して"A"が不要だと分かって、
a = {"B"};
とすればよいのでしょうか?
以前のaはa = {"B"};する直前にガベコされるのでしょうか?
それとも内部でtruncateみたいなことされて、aのアドレスは変わらないのでしょうか?
800ちんこ ◆GbXlaaQNk. :2008/02/25(月) 22:04:44
>>795
配列のautoBoxingがないです。
例えば

void methodA(int a)
にInteger型を放り込んだらこれはBoxingされますが、

void methodB(int[] a)
にInteger[]型を放り込むのはエラーになります。

配列からListを作る時にも参照型が強制されるので不利かと思いました。
(例えばArrayList<int>はエラーになる)

>>796
JRubyもダメでしょうか?(速度に関して)
801デフォルトの名無しさん:2008/02/25(月) 22:05:33
>>799
a = {"B"};
でよい。{"A","B"}はGCまかせ。
ちなみにGCは、不要になったら即実行される訳じゃないよ。
802デフォルトの名無しさん:2008/02/25(月) 22:09:09
>>801
ありがとうございます。ガベコに任せます。
803デフォルトの名無しさん:2008/02/25(月) 22:09:22
>>801
それ、初期代入でしかできないんじゃね?
804デフォルトの名無しさん:2008/02/25(月) 22:12:12
>>803
そうでした。
Strint[] a; という配列でやりたいです。
Strint[] a = {"A","B"};
ここで処理して"A"が不要だと分かって、
Strint[] aTemp = {"B"};
のように、もう1つ変数が必要ですか?
805デフォルトの名無しさん:2008/02/25(月) 22:16:45
aTempの要素数はどうするの?
ArrayListを作って必要な要素だけ追加していって後で配列に変換したほうが早い
配列でやるにしてもどうせ同じようなことを自分でやることになる
806デフォルトの名無しさん:2008/02/25(月) 22:17:13
String[] a = {"A", "B"};
a = new String[1];
a[0] = "B";
でよくね?
807798, 803, 806:2008/02/25(月) 22:18:52
>>805
んだなぁ。
ArrayList<String> a = new ArrayList<String>();
a.add("A"); a.add("B");
a.remove(0);
とかでいいと思った。
808デフォルトの名無しさん:2008/02/25(月) 22:25:09
>>806
そうできるんですね。ありがとうございます。
>>807
STLってまだよく分からないんです。でもありがとうございました。
809デフォルトの名無しさん:2008/02/25(月) 22:27:18
STLw
それはおいといて,>>806でいいんだったら
String[] a = { "B" };
と全く変わらないよ
810798, 803, 806:2008/02/25(月) 22:28:13
STLはC++のライブラリのことじゃねーの?w
ちなみに配列への変換は
String[] array = a.toArray(new String[a.size()]);
でいいと思う
811デフォルトの名無しさん:2008/02/25(月) 22:51:19
>>807
配列モドキとコレクション
List<String> list = Arrays.asList("A", "B");
System.out.println(list);
list = ArrayList<String>(list); // 編集可能化
list.remove(0);
System.out.println(list);
812デフォルトの名無しさん:2008/02/25(月) 22:57:41
>>808
おまいは勘違いしてる。Javaの配列はサイズを変更(Cで言うところのrealloc)出来ない。
配列限定で長さを変えるには、新しい別の配列を作ってコピーするしかない。
今まで挙がってた例は全て新しい別の配列を作っているだけ。
長さが変わる場合、通常はArrayList等のList系のコレクションを使い、
どうしても配列が必要な場面でだけtoArray()で変換する。
813デフォルトの名無しさん:2008/02/25(月) 23:07:52
>>800

配列は既にオブジェクト(変数には参照が収められる)だから、auto Boxing はいらないし、
List にも add できる。
int[] を要求している所に Integer[] を放り込むとエラーになるのは型が違うから。
放り込めることを期待するのは
int に対応するのが Integer、int[] に対応するのが Integer[] という感覚があるからだろうが、
この4つの中で、int だけがプリミティブ、Integer だけが値変更が不便なので、
Integer は int をオブジェクトにするためだけにある特別な存在で、
対称性はあまり無い、と考えた方がいい。
814デフォルトの名無しさん:2008/02/25(月) 23:30:24
>812
変更不可なgetterで結構toArray使わんか?
815デフォルトの名無しさん:2008/02/25(月) 23:32:42
一件教えてください。

main()の中で記述していた処理を、
ほかのファイルの関数に移動したいのですが、どのようにすればよいかわからず、教えてほしいです。
(サブルーチンで処理をするような考え方で。)

c言語で言えば、
main(){
  一連の処理のまとまり1
  一連の処理のまとまり2

となっていたものを
main(){
  func1(渡す必要のある変数)
  一連の処理のまとまり2
}
func1(引数){
  一連の処理のまとまり1の代替
  必要があればreturn文
}
といった感じ(型とか細かいことは別として。)に分割したいのですが。

今の自分の知識では、クラスを作って、メソッドを作って、
メソッドをインスタンス化して、
仮にインスタンスが設定された変数の名前がaaaとしたら、
aaa.メソッド(引数) とするくらいしか、頭が回りません。
メソッドを利用したいだけで、インスタンス化が必要なのか疑問で、やりかたがあるような気がしまして。

よろしくお願いします。
816デフォルトの名無しさん:2008/02/25(月) 23:39:52
>>815
別クラスにする必要がないのなら、別クラスにしなくていいんじゃない?
mainのほかにクラスメソッド書けばよい。

他からも使いたいけど、インスタンスを作る意味がないのなら、ユーティリティクラスという手もある。
java.lang.Mathみたいなクラス。メソッドは全て、クラスメソッドとして定義する。
817デフォルトの名無しさん:2008/02/25(月) 23:45:00
>>815
>メソッドを利用したいだけで、インスタンス化が必要なのか
オブジェクト指向の世界では必要だという前提なんだよ
原則としてすべてのメソッドはどっかのクラスに属していて、インスタンスを介して使用する事が基本
逆に言えばクラスに属するけど、インスタンスを介さないmainメソッドの方が特殊

慣れるまで、メリットを感じるまでは解らんと思うが、最初はそういう世界と思うしかない
818デフォルトの名無しさん:2008/02/25(月) 23:47:04
>>815

メソッドはいくら分割してもメソッドだ。
その例だとオブジェクトになるのは (渡す必要のある変数) ってやつだけだな。

main() で
渡す必要のある変数の型 obj = new 渡す必要のある変数の型();
して、
obj.func1()
819デフォルトの名無しさん:2008/02/25(月) 23:47:46
>>809
Strint[] a = {"A","B"};
ここで処理して"A"が不要だと分かって、
Strint[] a = {"B"};

↑aが2重定義になるので>>806の方法にしました。
820デフォルトの名無しさん:2008/02/25(月) 23:49:18
>>815
// メインクラス(Main.java)
public class Main {
  public static void main(String[] args){
    Sample.func();
  }
}

// サブルーチンクラス(Sample.java)
public class Sample {
  public static void func(){
    // ↑staticでメソッドを宣言すれば<クラス名>.<メソッド名>でアクセスできる。
    System.out.println("Hello, world!");
  }
}
821815:2008/02/25(月) 23:49:35
815です。
レスありがとうございます、816,817。

>クラスメソッド(816)
クラスメソッドの概念を知りませんでした。ありがとうございます。

>オブジェクト指向の世界では必要だという前提なんだよ(817)
その考えを理解できるように努力していきます。
指摘ありがとうございます。
822815:2008/02/25(月) 23:51:52
>820
レスポンス記述している最中に更新されたようで、失礼しました。

816のおっしゃる、クラスメソッドの具体例ですね。
わかりやすい説明ありがとうございます。
823デフォルトの名無しさん:2008/02/25(月) 23:51:53
>>815

>ほかのファイルの関数に移動したい
>サブルーチンで処理をするような考え方で
>メソッドを利用したいだけで

インスタンス化したくないなら当然インスタンス化は不要だ。
824デフォルトの名無しさん:2008/02/25(月) 23:58:44
>>815
他の方が指摘してらっしゃるように、
メソッドは、必ずしもオブジェクトに関連付ける必要はありません。

蛇足。Javaでは「他のファイルに記述する」という概念はありません。
あくまでも、クラスを分けるかどうか、です。
それゆえか、クラス内クラスである内部クラスが4種類あります。
825ちんこ ◆GbXlaaQNk. :2008/02/26(火) 00:30:07
JRubyやってみようと思う。
826815:2008/02/26(火) 00:32:49
815です。

821内の『>818』は『>820』の間違いですね。失礼しました。

>818
今コーディングして確認しました。
クラスメソッドを直接呼び出すか、
通常に、通常のメソッドをインスタンス化して呼び出すかですね。

>823
>インスタンス化したくないなら当然インスタンス化は不要だ。
いま確認とりたいと思いコーディングしてみたのですが、
ほかの方が示された用にstaticにするほかに方法あるのでしょうか。
staticなメソッドにするか、インスタンス化するか以外で試せませんでした。
staticにすることをおっしゃっているのでしょうか。(私の821,822のように時間差?)

>824
内部クラス。理解できるよう精進します。Tipありがとうございます。

自分の質問に対して、
816の考え方、817の考え方、の二種類の意見を持つ方に分かれるように感じました。
オブジェクト化するべきとの考えと、ユーティリティメソッドでいいのではという考えと、です。
このどちらを選ぶかは、個人やGrの考え方次第ということなのでしょうか?
それとも、オブジェクト指向的には後者の方が、望ましいが、面倒な手続きは好まれないので、前者が使われるということなのでしょうか。
827デフォルトの名無しさん:2008/02/26(火) 00:42:12
>>826
おおざっぱには、
・データが主体ならオブジェクトにする。
・ロジックが主体ならクラスメソッドにする。
くらいで良いのではないかと思ってる。(無論例外は山ほどある)
828デフォルトの名無しさん:2008/02/26(火) 00:50:08
こんばんわ。
eclipse使いはじめたのですが、eclipseに指摘されるエラーの意味がわからないので教えてください。

たとえば、まさに820のコードを、
eclipseでひとつのファイルに記述すると、
クラスSampleを別のファイルに書けといわれます。

Javaのルールなのでしょうか。
どういった原因なのか教えてください。
eclipse特有で指摘されるものなのでしょうか?
829デフォルトの名無しさん:2008/02/26(火) 00:51:19
>>826
何を作っているのかによる。
なんらかの概念(伝票・取引みたいな業務概念や、ファイル・ウィンドウのようなシステム概念)の、
特定のひとつに対する操作であれば、インスタンスメソッドとすることが望ましい。

逆に、概念に属する全ての対象に対する操作や、そもそもその対象を作り出す操作などはクラスメソッドになる。

ただし、実際にはクラスという概念とは関連づかない操作もあり、
Javaの場合は全てのメソッドがクラスに定義されなければならないため、便宜的にクラスメソッドとする。
830デフォルトの名無しさん:2008/02/26(火) 00:52:53
>>828
Javaのルール。

publicのクラスはファイル名=クラス名としなければならない。
なので、自動的にひとつのファイルにはpublicクラスは一つまでしか定義できない。
831デフォルトの名無しさん:2008/02/26(火) 00:58:39
>>828
830 の通り、Javaの仕様です。
public を外すか、クラス内クラスにするか、
一応、一つのファイルに複数のクラスを記述する方法はあります。
832デフォルトの名無しさん:2008/02/26(火) 01:03:07
828です。
830氏、831氏、すばやい回答ありがとうございます。
勉強になりました。
publicがキーワードでしたか。
833デフォルトの名無しさん:2008/02/26(火) 01:21:48
アクセス修飾子について説明もらえませんか。

アクセス修飾子には、public, protected, privateがあり、
アクセス制御の範囲としては、上記3つのほかに、修飾なしを含めた4つがあるようです。
で、最後の修飾なしなのですが、
実際に仕事でのプログラミングや、アプリケーションの作成で、使用されるのでしょうか。
範囲が修飾ありの3つと異なるのですが、何も記述しないというのが、どうにも好きになれないみたいな。
基本的に、何らかの修飾をしましょうということは無いですか?
834デフォルトの名無しさん:2008/02/26(火) 01:31:30
>>833
たしかに気持ち悪いが、そう決まってる以上、そういうもんだと思うしかない。
使う場面はときどきあるよ。
トップレベルクラスは、publicにしたくなければ、他に選択肢もないし・・・
835デフォルトの名無しさん:2008/02/26(火) 01:40:22
>>833
クラスは良くパッケージデフォルトにするなぁ。
パッケージをコンポーネントと見立てて、publicがインタフェースでパッケージデフォルトが実装の詳細。

メソッドやフィールドではあまり使ったことないや。
836デフォルトの名無しさん:2008/02/26(火) 01:55:23
はじめて手に入れたIDEがeclipseで今までCとWinSDKをエディタで何とかしようと苦労してたのが嘘みたいに
GUIなアプリケーションがさくさく書けてJavaマンセーな状態なのですが、
そろそろ他の言語ってかC++で同等の事ができるようになりたいと思い始めてます。

そんなぼくにお勧めのC++用のIDEを教えてくれませんか?
eclipseみたいにCtrl+spaceなどでガンガン補完できるようなやつで、
リファクタリングが強力なやつがよいです。

(若干スレ違い?)
837デフォルトの名無しさん:2008/02/26(火) 02:09:29
>>836
全くスレ違い
CDT
838デフォルトの名無しさん:2008/02/26(火) 02:46:20
>>833
派生先からだけ見えて欲しい時は多数あるけど
パッケージ内からだけ見えて欲しい時がないので
デフォルトスコープを使う機会がない。

継承・実装の階層とパッケージ階層とは全く別個のものなのに
1系統の修飾子で片付けようとしたのに無理がある。
パッケージ階層は無視するか2系統用意して組み合わせ可能にしたら良かったのに。

C#(.NET?) だと名前空間は無視するかわりに、
アセンブリ境界に対して internal で制限するかどうかを選べる。
839デフォルトの名無しさん:2008/02/26(火) 03:20:53
>>833
そこそこ可視性があるが、言語的に最後の砦であるパッケージの境界でカプセル化してセーフ
というのがパッケージプライベートなので、とりあえず書いてみる的に使うのは、ちょうどよいのかと。

そして、とりあえず書いてみるレベルだったら、
何も修飾子を書かなくてもええじゃないか、のような乗りかと。

なお継承はカプセル化を壊すので、protected を使うのはその一線を越えます。
840833:2008/02/26(火) 03:45:25
833です。
返信にただいた内容を元に、学習します。

>839
>なお継承はカプセル化を壊すので、protected を使うのはその一線を越えます。
この点について、初心者向けの説明をいただけませんか。
時間かけると理解が進む資料の場所もみつかるのでしょうが。
841デフォルトの名無しさん:2008/02/26(火) 07:01:30
>>819
a = new String[]{"B"};
842デフォルトの名無しさん:2008/02/26(火) 08:12:42
>言語的に最後の砦であるパッケージの境界でカプセル化
JDK7になったらスーパーパッケージが出来るんだけどねぇ。
JDK7は本当に完成するんだろうか。
843デフォルトの名無しさん:2008/02/26(火) 10:47:38
>>841
ありがとうございます。それにしました。
844デフォルトの名無しさん:2008/02/26(火) 17:19:58
出力を行うときに何でoutputstreamwriterを使わなければいけないのですか?
テキストでこの章に入るまではこれを使わなくても出力できていたわけ
ですから。
845デフォルトの名無しさん:2008/02/26(火) 17:22:42
好きなものを使えばいいんじゃない?
846デフォルトの名無しさん:2008/02/26(火) 17:25:51
ストリームの意味が分からん
847デフォルトの名無しさん:2008/02/26(火) 18:24:48
>>846
ベルトコンベアみたいなものを思い浮かべろ
そこに物(データ)を置くと、それはどこかに流れていく
それが出力ストリームのイメージ (streamは流れという意味)
どこに流れていくかは、それがどんなストリームかによる
例えば FileOutputStream だったら、ファイルに書き込まれる
System.out だったら、標準出力に行く
ソケットだったらネットワーク上に送信されていく
出力先が何であるにせよ、そこにデータを書き込むというのは同じ
そういった、何かしらのデータの書き込み口というものを抽象化したのが、出力ストリーム

>>844
別にOutputStreamWriterを使わなければならないことはない
出力を行う方法は他にもいくつかあるが、
そのテキストでは単にそのうちのひとつを紹介してるだけだろう
848デフォルトの名無しさん:2008/02/26(火) 18:42:43
>>847分かりやすいな説明ありがと!!!
849デフォルトの名無しさん:2008/02/26(火) 18:51:52
一通りテキスト終わったら、トレーニング用のテキスト売ってるんだけど
それ買ってやったほうがいいかな?
てか、なんかJAVAの勉強しても何か実感わかないな〜
やっぱ実際にもの作らんとそういうのは分からないものなのか?
850デフォルトの名無しさん:2008/02/26(火) 18:59:39
>>849
どんなテキストか知らないけど
ウィンドウ開いたりボタン押したり絵を出したりといったGUIをやると
実感をわかせるのに効果的だと思う
851デフォルトの名無しさん:2008/02/26(火) 19:07:46
ほうほう
852デフォルトの名無しさん:2008/02/26(火) 19:13:33
>>849
何か自分で作ってみたいものはないの?
目標を決めるといいかもよ
853デフォルトの名無しさん:2008/02/26(火) 20:41:10
今高校3年生だから、専門学校へ行ったときの予習をしてるんだ。
javaでどんなの作れる?とりあえず簡単なものを作ってみたい。
854デフォルトの名無しさん:2008/02/26(火) 20:42:27
どんなものでも
855デフォルトの名無しさん:2008/02/26(火) 20:44:02
そんなことよりもう一年勉強した方が
856ibj:2008/02/26(火) 20:55:19
以下のソースコードで
alice1 == alice2:true
alice1 == alice3:false
Chapter5.Employee[name = null, salary = 75000.0, hireDay = Tue Dec 15 00:00:00 JST 1987]
Exception in thread "main" java.lang.NullPointerException
at Chapter5.Employee.equals(Employee.java:48)
at Chapter5.EqualsTest.main(EqualsTest.java:17)
と ぬるぽが出てしまいます。
2時間ほど考えたのですが原因がわかりません・・・。super(name)の部分で
どうにかなっていると思うのですがロジック的に正しいと思うのですが・・・。
教えていただけたら幸いです。
857ibj:2008/02/26(火) 20:56:07
package Chapter5;

public class EqualsTest {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Employee alice1 = new Employee("Alice Adams", 75000, 1987, 12, 15);
Employee alice2 = alice1;
Employee alice3 = new Employee("Alice Adams", 75000, 1987, 12, 15);
Employee bob = new Employee("Bob Brandson", 50000, 1989, 10, 1);

System.out.println("alice1 == alice2:" + (alice1 == alice2));
System.out.println("alice1 == alice3:" + (alice1 == alice3));
System.out.println("alice1.equals(alice3):" + alice1.equals(alice3));
System.out.println("alice1.equals(bob):" + alice1.equals(bob));

Manager carl = new Manager("Carl Cracker", 80000, 1987, 12, 25);
Manager boss = new Manager("Carl Cracker", 80000, 1987, 12, 25);
boss.setBonus(5000);
System.out.println("boss.toString():" + boss.toString());
System.out.println("carl.equals(boss):" + carl.equals(boss));
}

}
858ibj:2008/02/26(火) 20:56:36
package Chapter5;

abstract class Person{
private String name;

public Person(String name){
this.name = name;
}

public abstract String getDescription();

public String getName(){
return this.name;
}
}
859デフォルトの名無しさん:2008/02/26(火) 20:56:49
専門なんて行っても勉強してる暇ないぞ。
情報系の大学いった方がまし
860ibj:2008/02/26(火) 21:00:13
あう・・改行多すぎて書き込めない
861デフォルトの名無しさん:2008/02/26(火) 21:44:23
>>856
Employee にも何故か name があって、equals で、
other.name.equals(name)で比較してるんじゃないかと。
862デフォルトの名無しさん:2008/02/27(水) 00:58:27
力添えください。

ttp://www.nextindex.net/java/thread/sleep.html
に記述のあるソースの中で、
main()がthrows InterruptExceptionとしてある理由がわからないのですが、
どういう意味なのでしょうか。
教えてください。
今回実行してみた感じ、定義をしなくとも実行には問題がありませんでした。
どの部分が、InterruptExceptionを投げるといっているのでしょうか?
少なくともtry-catchの外しか考えられないのですが、どこかわかりませんでした。

863デフォルトの名無しさん:2008/02/27(水) 01:06:39
そのページの赤文字で書かれてるThread.sleep(1000);の所が投げてる。
javadocに書いてあるから読むと良いよ。
864デフォルトの名無しさん:2008/02/27(水) 01:16:59
文字列のサイズの取得で、
String s="あ";
2を取得する方法を教えてください。
865デフォルトの名無しさん:2008/02/27(水) 01:18:11
s.getBytes().length
866デフォルトの名無しさん:2008/02/27(水) 01:28:19
3になりました
867デフォルトの名無しさん:2008/02/27(水) 01:36:09
862です。
レスありがとうございます、853。
自分もThread.sleep(...);
がInterruptedExceptionを投げる可能性があることはなんとなく覚えたのですが、
今回の場合は、try{}catch(InterruptedEception e){}、の記述によって、
メソッドがthrowsを設定する必要は内容に感じたのです。
うーん…。
868デフォルトの名無しさん:2008/02/27(水) 01:37:35
s.length() + 1
869デフォルトの名無しさん:2008/02/27(水) 02:06:26
"qa3813364".length();
870デフォルトの名無しさん:2008/02/27(水) 02:17:57
>>865
GJ!
871デフォルトの名無しさん:2008/02/27(水) 02:40:21
>>840
>>なお継承はカプセル化を壊すので、protected を使うのはその一線を越えます。
>この点について、初心者向けの説明をいただけませんか。

なんてことはない、メソッドをオーバライドすると、親クラスがそのメソッドを呼び出している場合
その挙動にも影響を与えるため、どのような影響があるか(どのように呼び出されているか)を
知る必要があるという意味で、実装が漏れてるという見方ができる。

継承よりも委譲の方が強固だが、継承のほうがお手軽なので
最初は継承を使って、事が複雑になってきたら、委譲にリファクタリングするのがアジャイル的
872デフォルトの名無しさん:2008/02/27(水) 02:44:06
委譲めんどくせえ
873デフォルトの名無しさん:2008/02/27(水) 02:59:17
>>867
InterruptedException を飲み込んでいいのは、
実行中のタスクのキャンセレーションポリシーと
実行しているスレッドのインタラクションポリシーが明記してあり
(あるいはそのスレッドのライフサイクルの制御権があり)、
ちょうど両者とも、InterruptedException を飲み込んでOKな場合だけ。

インタラプトを遅延させて処理を継続したい場合は
Thread.currentThread().interupt()を
処理が継続できない・放棄する場合は
InterruptedException を再投げするのが定石
874デフォルトの名無しさん:2008/02/27(水) 03:00:53
>>867
そうだね必要ないな
たぶんどこかからコピペしてきた消し忘れかなんかだろう
ちなみに、InterruptedExceptionを揉み消すのは良くない習慣だ
875873:2008/02/27(水) 03:13:13
間違った。
2つのポリシーが上手い具合にOKなときにやっていいのは、インタラプトの発行だった。

タスクが InterruptedExceptionを飲み込んでいいのは、
そのタスクが IntteruptedException を飲み込んでOKなポリシーを持つスレッドからしか
呼び出されないことが保証されている場合だけだな、たぶん

main() は、どこからともなくやって来たスレッドで実行されるから、
基本的に飲み込んではいけないはず
876873:2008/02/27(水) 03:50:52
間違った。
「インタラプトすると不正な挙動をします」というポリシーを明記したタスクとして
InterruptExceptionを飲み込むならば、単に、

「インタラプトしてはいけないタスク」
+「インタラプトするとエラーメッセージを吐いて終了するっぽいメインスレッド」
=「このスレッド/タスクにインタラプトしてはいけない」

となるだけだった。さあ、どんどん飲み込みましょうねぇ
877デフォルトの名無しさん:2008/02/27(水) 05:38:33
>>864
s.getBytes("Windows-31J").length
など。

ttp://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/lang/String.html#getBytes(java.lang.String)
878デフォルトの名無しさん:2008/02/27(水) 08:04:00
Beanのbooleanプロパティのgetter/setterメソッドの命名について質問です。
たとえばbeautifulというプロパティとしたら規則に従いますと
単純にisBeautiful(),setBeautiful(boolean)となります。
しかし、別の例で「上書き確認を表示する」など動詞的なbooleanプロパティ、confirmOverwriteを考える場合
isConfirmOverwrite(),setConfirmOverwrite(boolean)と、とても気持ちが悪いです。
このような場合は変数名を考え直す必要があるのでしょうか?
それともこういうもの、ということで割り切ったほうがいいのでしょうか?
879デフォルトの名無しさん:2008/02/27(水) 09:13:57
最近はokwaveとか教えてgooとかと
マルチするのが流行りなのか
880デフォルトの名無しさん:2008/02/27(水) 09:19:46
-ableをつける

isConfirmOverwritable()
setConfirmOverwritable(boolean)
881デフォルトの名無しさん:2008/02/27(水) 09:23:42
その場合 confirm に able を付けるべきだと思うんだ
882デフォルトの名無しさん:2008/02/27(水) 09:52:15
なるほどー!かなりすっきりしました。
ありがとうございます!!
883デフォルトの名無しさん:2008/02/27(水) 11:17:58
JasperReportsで帳票毎に四角形の色を毎回変えたいんだけど
どうしたらいいですか?

iReoprtで
rectangle、backcolorを変更するというのはわかるんですが、
毎回違うとどうしたらいいのでしょうか?

884デフォルトの名無しさん:2008/02/27(水) 12:00:12
毎回ってのが意味解らん。
毎ページなのか、毎項なのか、毎行なのか、毎カラムなのか。

まずは日本語でおk
885デフォルトの名無しさん:2008/02/27(水) 12:20:01
そもそもJava以前に、自分が抱えている問題を把握できていないケースが多い気がする。
だから日本語がおかしいし、説明されても理解できない。
886デフォルトの名無しさん:2008/02/27(水) 12:41:34
右シフトでどっちが高速なのか試してください。
>> >>>
887883:2008/02/27(水) 13:01:04
枚ページです。

コンパイルしちゃった後でも変更できるんですか?
888デフォルトの名無しさん:2008/02/27(水) 13:26:21
sunはInterruptedExceptionは握り潰すな再スローしろってスタンスだっけ?
889デフォルトの名無しさん:2008/02/27(水) 14:26:24
890デフォルトの名無しさん:2008/02/27(水) 19:00:22
java sound を使うとパソコンから盗聴が可能ですか
891デフォルトの名無しさん:2008/02/27(水) 19:06:52
892デフォルトの名無しさん:2008/02/27(水) 21:56:31
Java の理論と実践: アトミックで行く
http://www.ibm.com/developerworks/jp/java/library/j-jtp11234/

このページにある、リスト3: SimulatedCAS クラスの compareAndSwap について質問です。
SimulatedCAS のコードのすぐ下にある説明書きに、
「CASベースの並行アルゴリズムは、スレッドがロックを待つ必要が全くないので、lock-freeと呼ばれます」
という記述があります。

しかし SimulatedCAS の compareAndSwap メソッドは synchronized メソッドに
なっています。Simulated って書いてあるから実際使うときは違うやつ使うのか
なと思いきや、 リスト4 のコードで思いっきり使ってあります。

compare-and-swap アルゴリズムを真似たプログラムは、 synchronized であっても
ロックされないように最適化されるということでしょうか?
893デフォルトの名無しさん:2008/02/27(水) 22:05:06
レンタルサーバー借りて
毎日一回株価を取得してDBに放り込むプログラムを作ろうと思ってるんだけど
JAVAで時間がきたらサーバー上で実行するってことかのう?
どんな仕組みでできる?


それだけわかればDBにも移せるしダウンロードもできそうなだんだが
894デフォルトの名無しさん:2008/02/27(水) 22:17:24
普通 cron 使う。
895デフォルトの名無しさん:2008/02/27(水) 23:33:28
実行先のJREバージョンに応じて違う処理をさせたいと考えています。
バージョンに応じて違うクラスファイルを読み込むようにするには
どうしたらよいでしょうか?

JARアーカイブとMANIFESTファイルを利用しており、クラスライブラリが
たくさんあるのでバージョンごとに違うJARを作成するのは避けたいのですが・・・
896デフォルトの名無しさん:2008/02/27(水) 23:43:07
Class.forName(javaVersionName+ClassName).newInstance();
897867:2008/02/28(木) 00:01:48
いくつかのレスポンスありがとうございます。
申し訳ないんですが、ぜんぜんわからないです。
1時間くらいgoogleしてみたのですが、
そこから派生するキーワードや、
似たような単語が、同様の意味を成しているのかもわかりませんでした。
せっかく手を差し伸べていただいたところ申し訳ありません。

飲み込む、もみ消す、握りつぶす、
非チェック例外、チェック例外、チェック済み例外、チェックされる例外…
飲み込むというのは、InterruptedExceptionを投げずに処理してしまうということなのでしょうか…
898デフォルトの名無しさん:2008/02/28(木) 00:11:59
オブジェクト指向初心者です。
調べるの面倒です。教えてください。

このスレッドを読んでいて、初めて 委譲 を知ったのですが、
クラスの外部から、インスタンスのフィールドにアクセスできる仕様というのは、
オブジェクト指向的に、思い切り間違えなのでしょうか。
委譲 の概念が普通に使われるためには、
フィールドへのアクセスは、
クラスに所属するメソッド経由で、アクセスされる仕様である場合でないと、
アクセス方法に統一性がもたせられませんよね。

そもそも、このような質問をする原因が、
なぜフィールドの値をpublicにするなど、
所属クラス内のメソッド以外からの、フィールド変数(?)へのアクセスが許可される必要があるのか
が、わからないためです。

質問の仕方が、気に入らなければ、無視してください。
たぶん調べてもまともな回答にたどり着くに、長い時間がかかりそうだと思い、怠けています。
899デフォルトの名無しさん:2008/02/28(木) 00:19:18
答えるの面倒です。教えません。
900デフォルトの名無しさん:2008/02/28(木) 00:21:29
>>895
interface AnythingExecutor{
 public void doAnything();
}

public class AnythingExecutor14 implements AnythingExecutor{
 public void doAnything(){
  // JRE 1.4 用の処理
 }
}

public class AnythingExecutorFactory{
 public static AnythingExecutor create(){
  // JRE のバージョンを取得する
  if( 1.4 だった){
   return new AnythingExecutor14 ();
  }
  else if( 1.5 だった){
   return new AnythingExecutor15 ();
  }
  ...
 }
}

// 実際の処理
AnythingExecutor executor = AnythingExecutorFactory.create();
executor.doAnything();
901デフォルトの名無しさん:2008/02/28(木) 00:23:16
>>898
それは Java に対する質問ではない。
適当なスレを探すよろし。
902デフォルトの名無しさん:2008/02/28(木) 00:29:32
>>898
問題ないんじゃないか。setter/getter があるってことは、すなわち
public フィールドとほとんど等値なんだし。

ただ、フィールドへのアクセスと同時に何かしたい、外部からは
read のみに変えたい、みたいなことってことが結構ある。
そこで、フィールドは private にして隠す。アクセスは public な
getter/setter からのみ。というよくある構成に統一することで、
機能追加に対応しやすくなるからこうしましょう、という寸法。

中には「フィールドへのアクセスもオブジェクトに対する"操作"で
あるから、メソッドであるべき」なんていう人もいると思う。
まぁその辺をどう割り切るかは個人個人によるのでは。

あと委譲の話と何が関係あるのかが分からなかった。
903デフォルトの名無しさん:2008/02/28(木) 01:11:04
>>902
> 問題ないんじゃないか。setter/getter があるってことは、すなわち
> public フィールドとほとんど等値なんだし。

1つ大きな違いがあるぞ。setter/getterの場合、本来は違うものを同じものに見せ掛けるのが簡単にできる。
後付けで振舞いを変えるとか、透過的に処理を割り込ませたりするとか、実体をリモートに持たせるとか。
904デフォルトの名無しさん:2008/02/28(木) 01:33:31
setter/getterメソッドをわざわざ追加する意味がさっぱりわかなかったので
publicフィールドにガンガンアクセスするコードを書いてるのですが、ひょっとして一般的じゃないんですか?
>>903さんがどういう処理を指してるのかいまいちつかめません。。
905デフォルトの名無しさん:2008/02/28(木) 01:38:00
>>896,900
うわー、ありがとうございます!
早速試してみます。
906デフォルトの名無しさん:2008/02/28(木) 01:38:32
>>877
やさしいなー
907デフォルトの名無しさん:2008/02/28(木) 01:54:20
>>904
意味が分からなければ今のスタイルを続けていけばいい。
そのうち面倒ごとが起こったときにアクセッサの意義が分かるよ。
908デフォルトの名無しさん:2008/02/28(木) 07:09:55
>>892
値を一つ変えるのに、払うコストをどれだけ小さく出来るか、という話。
この例はシミュレートだけど、ハードウェアでサポートしている CPU もあるよ、と言うこと。

「スレッドがロックを待つ必要が全くない」というのは、
リスト2で行われてるような処理をする必要がない、ということ。

リスト4で注目するべき点は、increment メソッド内の get と CAS の間で、
継続したロックが保持されていないこと。
そして、increment 自体が呼ばれてから値を戻すまでに
value の get 値が 1 "以上"変わること。
909デフォルトの名無しさん:2008/02/28(木) 09:16:22
test
910Hoge:2008/02/28(木) 11:32:12
はじめまして、質問させていただきます。

DJUnitを使って単体テストを行っているのですが、
テスト結果の確認方法として、

  ○○クラスの△△メソッドが何回呼ばれたか?

を確認したいのですが、方法がわかりません。

assertCalled(String, String);
を使えば、メソッドが呼ばれたかどうかは確認できますが、
何回呼ばれたかは確認できません。

なにか良い方法はないでしょうか?
911デフォルトの名無しさん:2008/02/28(木) 12:30:14
未だに使っている所あるとは驚き
912デフォルトの名無しさん:2008/02/28(木) 12:44:49
>>892
それらは 「振る舞いを示すコード」 というタイトルや Simulated というクラス名からわかるように、
単に動作を説明するための例にすぎない。 真似ても別に最適化されない。
実際にアトミック操作したい場合は java.util.concurrent.atomic.AtomicInteger を使う。
リスト5では AtomicInteger 使ってるだろ。
913デフォルトの名無しさん:2008/02/28(木) 13:46:34
だって柏原だって経済学部じゃん
914Hoge:2008/02/28(木) 13:47:56
>>910

すいません。自己解決しました。
調査不足でした。

getCallCount(String, String)

という便利なメソッドがありました。

ありがとうございました。
915デフォルトの名無しさん:2008/02/28(木) 16:33:08
FileInputStream fis = new FileInputStream(in); // in : 入力ファイル
fis.read();
....
fis.getChannel().position(0);
fis.read();
...
fis.close();
今までFileChannelを知らず、一方通行なInputStreamでランダムにアクセスできるのは気持ちが悪いのですが、こんな感じでポインター移動するのって安全ですか?
916デフォルトの名無しさん:2008/02/28(木) 16:36:04
そのストリームがファイルだと分かってるから良いんじゃねーの。
917デフォルトの名無しさん:2008/02/28(木) 17:20:24
そうですよね。おーかなり自由度が増しますね。
ありがとうございました。
918デフォルトの名無しさん:2008/02/28(木) 22:11:27
swingについて、教えてください。

PaneとPanelの違いがよくわからないのですが、
JComponentを継承しているコンテナに関して、
付加機能が一番小さいものがJPanelで、
JPanel以上の何らかの機能が付け加わったものがPaneなのでしょうか?
コンテナの中でPanelだけ、PaneでなくてPanelと呼ばれる理由は何なのでしょうか?

あと、もうひとつ。
Containerクラスのオブジェクト(というかJFrame.setContentPane())をJPanelにキャストして、
コンテナとしている参考コードがあったのですが、
サブクラスの変数にキャストさせ(て代入する)理由がわかりませんでした。
なぜなのでしょうか?
919918:2008/02/28(木) 22:13:40
918です。
918で記述ミスしました。
>JFrame.setContentPane()
JFrame.getContentPane()
でした。

(JFrame#getContentPane() と記述するとどういう意味なのでしょうか…。)

よろしく御願い致します。
920デフォルトの名無しさん:2008/02/28(木) 22:29:34
>>918
さぁ?
名前なんて付ける人の趣味みたいなもんだし、深く考えても仕方ないような

ちなみに、JComponentを継承してるコンテナ、というが
JComponentはContainerのサブクラスだから、JComponent自体がコンテナだよ
まぁJButtonの中に他のコンポーネント入れたりはあんまりしないけれど・・・

ContainerになくてJPanelにあるメソッドを何か使いたかったんじゃないかね
コード見てわからなければ書いた人に聞くしかない

JFrame#getContentPane()はJFrameクラスのgetContentPane()メソッドのこと
JFrame.getContentPane()と書くと、staticメソッドを呼んだ戻り値について言ってるようにも見えるので、区別のために
921918:2008/02/28(木) 22:38:34
>まぁJButtonの中に他のコンポーネント入れたりはあんまりしないけれど・・・
!!!え?
そうか、継承しているから継承もとの機能はあるのか…。
無効になっていて然り、とか、どこかで思っていたのか、気がつきませんでした。

ContainerのオブジェクトをContainerのサブクラスにすると、サブクラスのメソッドが使えるということで?
これは、例外が発生しそうで危ない予感もするのですが、
そういうコードを意識して使うような設計もあるのですか?

>JFrame#getContentPane()
ありがとうございます。自力だとどれだけ時間かかったかわかりません。
これをgoogleにはどうすればいいんだろう…。記号が…。スレ違いですね、失礼。
922デフォルトの名無しさん:2008/02/28(木) 22:49:18
>>921
>ContainerのオブジェクトをContainerのサブクラスにすると、サブクラスのメソッドが使えるということで? 

いや、まさか。
JFrame#getContentPane()が返すContainerが実際にはJPanelだとわかっている場合だけ出来る。
実際にJPanelを返すからといっても、ドキュメントにそんなことは書かれていないので、良い習慣とは言えない。
923918=921:2008/02/28(木) 22:50:58
>920
>まぁJButtonの中に他のコンポーネント入れたりはあんまりしないけれど・・・
感動した。
感動しました。
変な方言を覚える前に、920の指示の元Javaを学びたい!
自分に本か、Web資料の推薦を!
924デフォルトの名無しさん:2008/02/28(木) 22:59:41
graphic JAVA Mastering the JFC
これ読めばSwingの仕組みは大抵わかるよ。
AWTから読むと上下*2の四冊だけどかなり勉強になる。
925デフォルトの名無しさん:2008/02/28(木) 23:07:27
>>921
> 例外が発生しそうで危ない予感
どうしてもやりたければ、instanceof でJPanel だと確認してからキャストを行う。
というより、キャストの前には必ず instanceof で対象を確認すること。
926デフォルトの名無しさん:2008/02/29(金) 08:02:24
質問です。

javaはビッグエンディアンという記述をよく見かけますが、
その根拠がよくわかりません。
例)ttp://www.geocities.jp/flame_freezing_charm/Works/Memo/JAVA/prog.htm

ご存知の方いましたら教えてもらえないでしょうか?

927デフォルトの名無しさん:2008/02/29(金) 08:06:33
int x = 0x12345678;
System.out.printf("%x%n", x & 0xFF);

これが 78 と出ればビッグエンディアン、12 と出ればリトルエンディアン。
928デフォルトの名無しさん:2008/02/29(金) 08:10:58
>>927
そのコードを実行しても、実行したプラットフォームのみでしか
エンディアンは確定しないのではないですか?
929デフォルトの名無しさん:2008/02/29(金) 08:49:18
>>926
java.io.DataInput#readInt() とか java.io.DataOutput#writeInt(int) みたいに、
標準APIの一部のクラスがビッグエンディアン使ってて、
さらに、1.3までは標準APIにリトルエンディアンで入出力できるクラスが無かったから。
930デフォルトの名無しさん:2008/02/29(金) 08:53:43
>>928
というか、>>927のコードを(System.out.printfをprintfに置き換えたものを)
C言語でやっても、エンディアンなんかわからないけどね。
931デフォルトの名無しさん:2008/02/29(金) 10:44:36
はいはい! 先生方に質問よろしいでしょうか!
Javaアプレットを使ってブラウザ画面の自動撮影を行いたいんですが、どういう組み方をすれば良いんでしょうか!

訪問者が来る度にスクリーンをキャプチャしてサーバーに保存、
自分の環境では確認できない動的なサイトの動作チェックに使いたいと思います!
932デフォルトの名無しさん:2008/02/29(金) 11:13:12
>>931
セキュリティ上の問題があるので無理。
933デフォルトの名無しさん:2008/02/29(金) 11:52:57
質問です。
http://www.techscore.com/tech/J2SE/Thread/5-2.html
上記のソースにて、queue.size() == 1の時は、put()からのqueue.addFirst(obj)呼び出しと、
get()からのqueue.removeLast()呼び出しが同時に呼び出される可能性があり、
LinkedListはスレッドセーフではないから問題あり、と思うのですが認識あってますか?
notifyAll()の使い方の解説なので、ソースにケチをつけてる訳ではないです。
934デフォルトの名無しさん:2008/02/29(金) 12:10:26
>>933
synchronized付いてるから同時には呼び出されない
935デフォルトの名無しさん:2008/02/29(金) 15:29:18
>>932
ええ、そんな!
何とかなりませんか! 先生!
936デフォルトの名無しさん:2008/02/29(金) 15:39:42
例えば!
Robotを使いスクリーン画像を取得!
そのデータをURLConnectionでCGIに送り、
CGIでログを保存するみたいな形でできそうな気がするんです!

問題はRobotの自動実行が可能かどうかで!
もし不可能なら利用者にボタンを押させる方法でも構いません!
やりたいのは動的なサイトの確認であって、不正行為ではないんです!
だから利用者の確認をしっかり取らなければならないというのであれば従います!

先生お願いします!
僕に僅かでも良いので知恵をお貸し下さい!
937デフォルトの名無しさん:2008/02/29(金) 15:50:40
例えば!
Robotなんてアプレットで許したらマウスも自動で動かせる!
そしてマウスで勝手に送信ボタンを押させ、
CGIで不正取得なんかもできそうな気がするんです!

問題はその動作が利用者がやったのかRobotがやったのかで!
もし不可能なら不正取得かサイトの確認か判断が付きません!
やりたいのが動的なサイトの確認であって、不正行為ではないと証明できないんです!
だからアプレットではそんなことは許されていなくて、それにみんな従います!

先生お願いします!
僅かでもいいので理解してください!
938デフォルトの名無しさん:2008/02/29(金) 15:57:58
javaで画面のキャプチャなんて取れるの?
939デフォルトの名無しさん:2008/02/29(金) 16:01:16
質問者も言ってるように、Robot使えば可能

あと、ぐぐったら
http://q.hatena.ne.jp/1138377277
こんなんがでてきたよ。
これで目的は達成できるかな?
940デフォルトの名無しさん:2008/02/29(金) 16:03:14
いつぞやの謎スクリプトを髣髴とさせるな。
// CGI を設置できるのだから、問題のSSを送ってもらえば終了。

>>938
java.awt.Robot.createScreenCapture(Rectangle) で出来ますよ。
941デフォルトの名無しさん:2008/02/29(金) 16:12:46
>>939
ありがとうございます先生!

ttp://browsershots.org/
このツールでほとんどの環境が確認できました!
さすが先生です! また何かあったときよろしくお願いいたします!
942デフォルトの名無しさん:2008/02/29(金) 16:25:28
>>937
ええ! ということは先生!
アプレットではRobotの使用ができないということなんでしょうか!
943デフォルトの名無しさん:2008/02/29(金) 16:55:31
>>942
署名付ければ出来なくは無い
でもそんなアプレット誰も実行してくれないだろう
スクリーンショット自動送信なんて、機密情報もれまくり
お前が今見てるその秘密の画像も勝手に送信されてるよ
944デフォルトの名無しさん:2008/02/29(金) 18:50:25
>>943
そうなんですか!
何から何までありがとうございます!
945デフォルトの名無しさん:2008/02/29(金) 20:28:21
技術的に出来ないのと倫理的に出来ないのは分けて書こうぜ
紛らわしい
946デフォルトの名無しさん:2008/02/29(金) 21:12:49
>>941で目的達成できてるなら、質問者には技術的にできるかできないかなんてどーでも良くなってるんじゃ?
947デフォルトの名無しさん:2008/03/01(土) 01:39:40
Script API で実行するスクリプトだけセキュリティ制限かけられない?
今のままだとファイル消したりネットワークアクセスしたりやりたい放題なんだけど。
948デフォルトの名無しさん:2008/03/01(土) 02:05:29
標準APIじゃ無理。
949デフォルトの名無しさん:2008/03/01(土) 03:28:21
コメントをUTF-8で書いてるんだけど、Javadocにすると文字化けする。
何とかできないでしょうか?
950デフォルトの名無しさん:2008/03/01(土) 03:33:02
>>949
javadoc コマンドの -encoding か -charset
これぐらいはマニュアル見て発見しよーぜ。
951デフォルトの名無しさん:2008/03/01(土) 03:33:04
>>949
javadoc -encoding UTF-8
952デフォルトの名無しさん:2008/03/01(土) 03:37:38
>>949
javadocだけじゃなくてコンパイルするときにも警告が出ない?
システムのデフォルトの文字エンコード以外を使うときはencodingオプションを
953デフォルトの名無しさん:2008/03/01(土) 07:52:08
本当に基本的な質問で申し訳ありません。
フォントを変更したときに
setFontでPLAINに変更してもデフォルトのボールドのかかった
フォントが印刷に反映されません。
どこかで読んだと思い過去スレで探したのですが見つかりません。
教えていただければ幸いです。
954デフォルトの名無しさん:2008/03/01(土) 09:02:08
public class sample69 {
public static void main(String[] args) {
p_calc.Calc calc =new p_calc.Calc();
System.out.println(calc.sum(1,2));
}
}
コンパイルすると、
955デフォルトの名無しさん:2008/03/01(土) 09:02:59
c:\source>javac sample69.java
.\p_calc.java:3: ')' がありません。
int sum(int i; int j){
^
.\p_calc.java:3: ';' がありません。
int sum(int i; int j){
^
.\p_calc.java:8: クラス sample68 は public であり、ファイル sample68.java で宣
しなければなりません。
public class sample68 {
^
sample69.java:3: p_calc にアクセスできません。
クラスファイル .\p_calc.java は不正です。
ファイルにクラス p_calc が含まれていません。
削除するか、クラスパスの正しいサブディレクトリにあるかを確認してください。
p_calc.Calc calc =new p_calc.Calc();
^
エラー 4 個
これが出ます。原因はなんでしょうか?
956デフォルトの名無しさん:2008/03/01(土) 09:18:13
>>955
1. 2 と同じ原因。i の後のセミコロン。
3. ファイル名と public なクラス名が違う。
4. p_calc クラスがコンパイル出来ず、実行ファイルが見つからない。
957デフォルトの名無しさん:2008/03/01(土) 09:46:26
sample69をコンパイルしようとしているのに、sample68のことが出るって変じゃあないですか?
958デフォルトの名無しさん:2008/03/01(土) 10:34:17
>>957
とくに変じゃないよ。
sample69 で使われている p_calc.Calc を見つけるために p_calc.java
もコンパイルしているんでしょう。
959デフォルトの名無しさん:2008/03/01(土) 10:51:05
今日の日付を
 Date date = new Date();
 SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMdd");
 String today = sdf1.format(date);
で取得して、日付2008/3/10と比較させ今の日時より前か後かという判定を
行いたいのですが、具体的にどうすればよいのでしょう?
960デフォルトの名無しさん:2008/03/01(土) 10:57:08
>>959
Calendar#afterとCalendar#beforeを読むべし
実際はGregorianCalendarになるけどな
961デフォルトの名無しさん:2008/03/01(土) 10:59:05
>>960
ちょっと調べてみます
962デフォルトの名無しさん:2008/03/01(土) 11:21:03
音声認識に興味があるんだけど、Java Speech APIで実用に耐えられそうですか?
それともC++あたりに鞍替えした方がいいですか?
963デフォルトの名無しさん:2008/03/01(土) 11:23:35
_
964959:2008/03/01(土) 11:27:16
調べて書いてみたのですが、今日の時刻はこんな感じでよいのでしょうか?

 SimpleDateFormat dateformat = new SimpleDateFormat("yyyy/MM/dd");
 Date now = new Date(); //現在時刻を取得
 String today = dateformat.format(now); //変数todayに今日の時刻をyyyy/MM/dd型でいれる
965デフォルトの名無しさん:2008/03/01(土) 12:08:15
面倒くさいから、y*10000+m*100+d同士で比較しちゃう。
966デフォルトの名無しさん:2008/03/01(土) 12:17:14
Strutsアプリケーションを作成しているのですが
セッションIDをSHA-1でハッシュ化するにはどうしたらよいでしょうか?
967959:2008/03/01(土) 12:20:16
ここまでできました
 //今日の日付を取得
 Date now = new Date(); //今日の日付
 SimpleDateFormat dateformat = new SimpleDateFormat("yyyy/MM/dd"); //型の指定

 //日付の比較
 if (now.before(dateformat.parse("2005/1/1"))) {
 //今日が2005/1/1より前のときの処理
 }else{
//今日が2005/1/1より後のときの処理
}

ただ、これだと1番最後の行でエラーがでてしまいます・・
エラーは 「処理されない例外の型 ParseException」です
968959:2008/03/01(土) 12:21:38
エラーは一番最後じゃなくて
if (now.before(dateformat.parse("2005/1/1"))) {  のところでした
969デフォルトの名無しさん:2008/03/01(土) 12:41:34
>>966
Javaでダイジェストを生成する
ttp://www.atmarkit.co.jp/fjava/javatips/117java021.html

>>967
> 数値: フォーマットには、パターン文字の数は最小桁数になります。
二文字使ってるから最低二桁なのでは?
970959:2008/03/01(土) 12:52:53
いろいろ調べてるんですがよくわからないことばかりです
日付の比較のところがよくないとは思うのですが;;

// 今日の日付を取得
Date now = new Date(); //今日の日付
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy/MM/dd"); //型の指定
String today = dateformat.format(now); //変数todayに今の時刻がはいる
解約予定日を取得
SimpleDateFormat kaiyaku = new SimpleDateFormat("yyyy/MM/dd");
String kaiyakuyoteibi = kaiyaku.format(2005/10/15);

// 日付の比較
if ( ) {
//System.out.println("今日は2002/06/10よりも前の日です。");
}else{

}
971デフォルトの名無しさん:2008/03/01(土) 13:09:40
時刻も含めて比較したいなら、Date#compareToでできる。
日付で切り捨てたいなら、Calendarに変換してsetで時刻を0にする。

ユーティリティメソッド作ってそこで比較すべし。
あちこちで比較してたら、バグの温床。

ついでに言えば、「今日の日付を取得する」もユーティリティメソッドにして、
システムプロパティなどで、「今日の日付」を設定できるようにしておくと、
わざわざシステム日付を変更しなくとも、日付が変わったときのテストができる。
972デフォルトの名無しさん:2008/03/01(土) 13:12:13
>>947
権限の低いクラスローダでロードしたクラスを挟んでスクリプトを呼ぶといいんじゃないかな、と推測だけで言ってみる
973デフォルトの名無しさん:2008/03/01(土) 13:39:35
スレ違いかも知れませんが…

Commons/Net 1.4.0 のFTPClientを使っていて 昨日から原因不明のエラーが多発してました
ようやく判明した原因は、FTPClient#listFiles()が返すFTPFile[]の要素が
なんと2/29のタイムスタンプのファイルについてはnullになってしまう事でした!
とりあえずサーバの関連ファイルをtouchして急場をしのぎましたが
この件について善後策を相談するのに最適のスレなどがあれば教えて下さい
974デフォルトの名無しさん:2008/03/01(土) 13:51:14
>>973
ドキュメントにバグの報告先とかメンテナの連絡先が書いてあるはずだから、
最小の再現コード付けてレポートする。
975デフォルトの名無しさん:2008/03/01(土) 14:50:50
勉強のためにファイル転送のプログラムを作っているのですが、
いまいち上手くいきません。流れとしては、
@(送り手) FileChannel(sourceChannel)でファイルを読み込む
A(送り手) SocketChannel(destinationChannel)で相手に送る
B(受け手) SocketChannel(sourceChannel)で受け取る
C(受け手) FileChannel(destinationChannel)でファイルに書き込む

送り手
while(destinationChannel.isConnected()){
 buffer.clear();
 if(sourceChannel.read(buffer) < 0)
  break;
 buffer.flip();
 destinationChannel.write(buffer);
}
受け手
while(sourceChannel.isConnected()){
 buffer.clear();
 if(sourceChannel.read(buffer) < 0)
  break;
 buffer.flip();
 destinationChannel.write(buffer);
}

bufferはByteBuffer型になっています。
これを実行すると、送り手はエラーもなく正常に終了しているのですが、受け手で
「java.io.IOException: 既存の接続はリモート ホストに強制的に切断されました。」というエラーが出てきます。
エラーが出た場所 => if(sourceChannel.read(buffer) < 0){

長文な上にわかりにくい文章かもしれませんが、
なぜこうなるのか教えてもらえないでしょうか?
976デフォルトの名無しさん:2008/03/01(土) 15:02:45
>>975
データの受信自体は問題ないのですか?

単にデータを送るだけだと、送り手側でソケットを閉じると、
受け手側でエラーが出るはずですが…

何らかのプロトコルで「送受信完了」をやり取りする形にすれば
問題のある状態なのかどうか判断できると思います
977デフォルトの名無しさん:2008/03/01(土) 15:11:10
勉強のためならまずCでやったほうがいいよ
Javaでやっても意味ないよ
978デフォルトの名無しさん:2008/03/01(土) 15:27:11
質問させてください

String str = "12345";
str += "abcde";

これで連結しようとするとrangeが足りないと出ます
すでにあるStringクラスのオブジェクトに文字列を連結するための
メジャーな方法などがあれば教えてください
979デフォルトの名無しさん:2008/03/01(土) 15:56:12
>>976
データの受信自体が出来ないみたいです。
送り手側は一通りプログラムが実行されて終了するのですが、
受け手側は if(sourceChannel.read(buffer) < 0) の部分で処理が止まっているみたいです。
受け手は、送り手が書き込むのを待っている状態になっているんでしょうか?

>>977
時間に余裕が出来ればCも勉強しようと思っています。
今は就職活動中であまり時間が無くて、息抜きでやっている状態なので...
助言ありがとうございます。
980デフォルトの名無しさん:2008/03/01(土) 16:00:40
>>978
不可能
981978:2008/03/01(土) 16:02:28
自己解決しました
スレ汚しごめんなさい
982デフォルトの名無しさん:2008/03/01(土) 17:44:15
ServletContextを得るためのgetServletContext()というメソッドがありますが、
APIを見てみるとServletContextはインタフェースなのでオブジェクト化は出来ませんよね。
getServletContext()は、実際にはServletContextではなく、ServletContextを実装するサブクラスを作ってるんでしょうか?
983デフォルトの名無しさん:2008/03/01(土) 17:46:00
ServletContext context = getServletContext();
System.out.println(context.getClass().getName());
984デフォルトの名無しさん:2008/03/01(土) 18:13:50
次スレたててみる
985デフォルトの名無しさん:2008/03/01(土) 18:18:51
次スレ
【初心者】Java質問・相談スレッド113【大歓迎】
http://pc11.2ch.net/test/read.cgi/tech/1204363011/
986デフォルトの名無しさん:2008/03/01(土) 19:00:59
>>985
乙彼Death
987デフォルトの名無しさん:2008/03/01(土) 21:31:24
>>975
送り側はちゃんと閉じてる?
988デフォルトの名無しさん:2008/03/02(日) 02:22:23
PHPを学習した後だとJavaの習得は容易ですか?
989デフォルトの名無しさん:2008/03/02(日) 02:31:14
いいえ
990デフォルトの名無しさん:2008/03/02(日) 02:38:08
PHPの知識は役立たないの?
991デフォルトの名無しさん:2008/03/02(日) 02:47:56
javaの勉強はじめました。

ネットワークとかGUIとか使って何か作りたいのですが、
何も思いつかないので、
パケットモニタ(?)(今どんなメッセージで通信されているか)みたいなのを作りたいのですが、
ネットワークに関しては、どの変の勉強すれば早そうでしょうか。
この辺のクラスは古いから使わないほうがいいとか、
この辺使えばすぐじゃないかとか教えていただけると助かるのですが、
助言もらえませんか。

GUIに関しては、本とWebを参考にして手をつけていたら何とかなりそうな気がしているのですが、
ネットワークは難しすぎて…。
992デフォルトの名無しさん:2008/03/02(日) 03:16:15
Java→PHPなら簡単
993デフォルトの名無しさん:2008/03/02(日) 03:18:43
>>991
何をしたいのか本人すら分かってないのに他の人に聞いても分かるはずないよ
ネットワークって具体的に何?サーブレットでWebアプリ作るとかじゃ駄目なの?
994デフォルトの名無しさん:2008/03/02(日) 03:22:47
パケットモニタはドライバ組まないと無理だ。
通信なら Socket 使えばいい。
995デフォルトの名無しさん:2008/03/02(日) 03:36:45
>>934
>synchronized付いてるから同時には呼び出されない
え?メソッドレベルの排他というのは、一つのメソッドに複数のスレッドが同時に入れないだけで、
アクセスするメソッドが別なら排他されないのでは?やば、今までずっと間違えてきたかも。。。
996デフォルトの名無しさん:2008/03/02(日) 03:38:58
なんかいろいろ勘違いしてるなw
997933, 995:2008/03/02(日) 03:44:36
>>934
いやいや、やっぱり同時アクセス可能ですよ。でないとnotifyAll()でwait()を解除してあげられないです。
998デフォルトの名無しさん:2008/03/02(日) 03:47:47
インスタンスメソッドの synchronized 修飾子は synchronized(this){ } でメソッド内全てを囲ったのと等しい。
クラスメソッドの synchronized 修飾子は synchronized(Queue.class){ } と等しい。
999デフォルトの名無しさん:2008/03/02(日) 03:51:58
1000デフォルトの名無しさん:2008/03/02(日) 03:55:06
1000 なら Java 死滅確定
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。