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

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

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

よくある質問
・「コマンドまたはファイル名が違います」
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 http://www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals を使え。
・内部クラスから外部クラスのローカル変数は使えない。他の方法を考えろ。

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

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

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

次スレは>>980あたりでお願いしまする。
2デフォルトの名無しさん:2005/12/08(木) 15:15:58
2防止
3デフォルトの名無しさん:2005/12/08(木) 16:12:30
文字コードの変換をするメソッドを作りたいと思っています。

byte[] method(byte[] source, String srcEnc, String transEnc) {
// source を srcEnc形式 → transEnc形式に変換しbyte配列で返す
}

CharsetEncoder,Charsetなどを使えばできることはわかったのですが
これらのインスタンスを生成する方法などがわからずこまっています。
もしよろしければアドバイス等おねがいいたします。
4デフォルトの名無しさん:2005/12/08(木) 16:22:19
ByteArrayInputStream使ってストリームにしてInputStreamReaderで指定のエンコードで読み込みとかムリぽ?
5デフォルトの名無しさん:2005/12/08(木) 17:33:09
引き継いだソースのServletに引数ありのコンストラクタが定義されていたのですが、
これってどうやってつかうのですか?
6デフォルトの名無しさん:2005/12/08(木) 18:20:06
>>3
Charset.forName("encoding").newEncoder()
7デフォルトの名無しさん:2005/12/08(木) 21:05:01
JSPをTOMCATのフォルダ以外で動かすことはできますか?
8デフォルトの名無しさん:2005/12/08(木) 21:37:29
標準入力よりスペース区切の数字2つを読み込むにはどのようにすればいいですか?

9デフォルトの名無しさん:2005/12/08(木) 21:41:01
>>8
教科書をよく読めば解決すると思うよ
10デフォルトの名無しさん:2005/12/08(木) 21:43:39
>>9
教科書持ってません。ネットで調べても,1行にひとつの数字がある場合しか見つかりません。
11デフォルトの名無しさん:2005/12/08(木) 21:46:17
じゃあもっと探せ
正規表現ならいっぱいあるから
12デフォルトの名無しさん:2005/12/08(木) 21:47:05
>>3
そもそもCharseEncoderもCharsetも必要ない。
return new String(source, srcEnc).getBytes(transEnc);
13デフォルトの名無しさん:2005/12/08(木) 21:51:20
14デフォルトの名無しさん:2005/12/08(木) 22:00:51
private final int[] VALUE_LIST = {0, 1, 2, 3, 4};

のように定義した定数配列を

int value = this.VALUE_LIST[0];

参照すると NullPointerException が発生するのですが何故ですか?
また、

private int valueX = 50;

のようにフィールドを定義したあと、

System.out.println("valueX = " + this.valueX);

とやると 0 が出力されるのですが何故ですか?
原因が分からないので困っております。
ちなみに、開発環境は Eclipse3.1 と jdk1.5.0_05 です。
15デフォルトの名無しさん:2005/12/08(木) 22:11:20
>>14
ぬるぽ出ないしちゃんと50になるが・・・


public class Hoge {
private final int[] VALUE_LIST = {0, 1, 2, 3, 4};
private int valueX = 50;

void test() {
int value = this.VALUE_LIST[0];
System.out.println("valueX = " + this.valueX);
}

public static void main(String[] args) {
Hoge hoge = new Hoge();
hoge.test();
}
}
16デフォルトの名無しさん:2005/12/08(木) 22:11:53
>14

とりあえずどんなメソッドにその文をかいている?
もう少し前後のプログラムを書けよ。
おそらくstaticフィールドをとかEclipseに警告はかれてるんじゃないか?
17デフォルトの名無しさん:2005/12/08(木) 22:14:33
初期化の順序が問題とか?
18デフォルトの名無しさん:2005/12/08(木) 22:15:15
>>15
変ですね・・・こちらの環境だけですかね?

>>16
コンストラクタからメインループに飛んで、
そこのループ開始直前で使っています。
19デフォルトの名無しさん:2005/12/08(木) 22:17:18
初期化の順序が問題
20デフォルトの名無しさん:2005/12/08(木) 22:20:39
デバッガで追っていけ
21デフォルトの名無しさん:2005/12/08(木) 22:41:05
マルチスレッド環境でユーティリティクラスを作るときの注意点などありますか?
生成されたスレッドの中身の処理が担当です。
22デフォルトの名無しさん:2005/12/08(木) 22:41:56
レスありがとうございました。
調べてみます。
23デフォルトの名無しさん:2005/12/09(金) 00:12:34
http://www.geocities.jp/tukikimi_tamago/myapp/real.htm
>アプレット作ったけど一回目で表示ができないが、実行されてるっぽい
>再読み込みさせるとまともに表示できるけど
>これってIEが悪いんですか?それとも、俺の頭ですか?
前スレで、こんな書き込みした俺だけど事故解決したよ
再描画がおかしかったのは、paint()メソッドになにも処理を書いてないから
関係ないと思ってたけど、
オーバーライドしてんだから
再描画の処理でなにもしてないてことに気づいた
というわけでpaint(){ }のところ削除で解決しました。
24デフォルトの名無しさん:2005/12/09(金) 02:55:15
デフォルトのブラウザを呼ぶAPIってありますか?
exec Start じゃなくて。
25デフォルトの名無しさん:2005/12/09(金) 03:17:00
>>1乙。

教科書ぐらい買えとは思うな。
無料で済ませても大した勉強には成らない。
26デフォルトの名無しさん:2005/12/09(金) 03:18:26
>>24
Mustang(JavaSE6)以降なら
27デフォルトの名無しさん:2005/12/09(金) 04:47:29
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
ってエラーが出るのですが、
これを回避するにはどこでメモリーのサイズを
変更すればよいのでしょうか?
あと、メモリが大きくなるとやっぱり
CPUやPC全体に負担を与えることになるのでしょうか?
よろしくお願いします。
28デフォルトの名無しさん:2005/12/09(金) 07:01:05
メモリが大きくなるとCPUやPCに負担?
何いってんだ
29デフォルトの名無しさん:2005/12/09(金) 07:12:29
いまTomcatにインストールされている
自分のページにアクセスカウンタ、アクセス集計をしたいんだけど、

index.jspを作ってそこからファイルI/Oにアクセスしてファイルに
書き出すのが一般的なやり方?
それとも、StrutsやJSFで連携したほうがいい?

しかしJSPだとトップページがCGIやPHPで書かれている場合、
さすがにindex.phpとindex.jspとを混在させることはできないし、
困ったな。
30デフォルトの名無しさん:2005/12/09(金) 07:26:11
勝手に困ってなさい
31デフォルトの名無しさん:2005/12/09(金) 07:28:08
>>30
おまえ友達少ないだろ
32デフォルトの名無しさん:2005/12/09(金) 08:05:06
>>31
どうした?その短絡的反能。
おまえは友達の数にコンプレックスでもあるのか?
33デフォルトの名無しさん:2005/12/09(金) 08:19:55
>27

ヒープ領域とかヒープサイズとかの設定でぐぐれ。
正直環境かいてないと答えにくいわ。
34デフォルトの名無しさん:2005/12/09(金) 09:40:31
ビット演算子とシフト演算子はbyte型の数値には使えないのでしょうか?
byte型の数値を左に1ビットだけシフトして、「|」を使って論理積を変数に入れたいのですが、エラーが出てしまってできません。


byte x = 0;
x = x << 1;
x = x | 1;


がだめだったので、


x = x << (byte)1;
x = x | (byte)1;


にしてみたのですが、だめでしたorz
エラーメッセージは、

精度が落ちている可能性
検出値 : int
期待値 : byte
                       bits = bits << (byte)1;
                                     ^

と出ています。
どなたかわかる方いらっしゃいますか?
35デフォルトの名無しさん:2005/12/09(金) 10:36:26
定期的に処理を行うアプリを作りたいと思います。
Thread.sleep ではない方法でタイマーみたいなものを実現させるにはどうすればよいですか?
36デフォルトの名無しさん:2005/12/09(金) 10:37:50
String a = new String("A");

byte[] b = a.getBytes();

で、bから"41"という文字列を取得したいのですが、
どうすれば良いのでしょうか?

new String(b)とすると結局"A"が戻ってきてしまいます。

>35
java.util.TimerにTimerクラスという便利なクラスがありまする。
37デフォルトの名無しさん:2005/12/09(金) 10:39:22
>>34
x <<= 1;
x |= 1;

キャストでやる場合は
x = (byte)(x << 1);
x = (byte)(x | 1);
38デフォルトの名無しさん:2005/12/09(金) 10:42:47
>>36
String a = "A";
byte[] b = a.getBytes();
String c = Integer.toHexString(b[0]);
// System.out.println(c);
39デフォルトの名無しさん:2005/12/09(金) 11:31:33
正規表現で質問です

何種類かのファイル名があって
ファイル名の中に日付(YYYYMMDD)がはいってる。
ex)hoge20051209hoge.zip
日付の位置は種類によってまちまちだが日付が2つ以上入ることはない
ex)20051209hoge20051209hoge.zip みたいなのは存在しない

".*([0-9]{8}).*"で年月日すべての形では抽出できるのですが
以下2つのとり方がわかりません
1、年、月、日別々に取得
2、月だけ取得

いまは上記正規表現で
matcher.group(1)で取得した後
substringで切り分けてるんですが
できればかっこよく
1だったら
matcher.group(1)に年
matcher.group(2)に月
matcher.group(3)に日
2だったら
matcher.group(1)に月

みたいにとりたいのです。おしえれください
40デフォルトの名無しさん:2005/12/09(金) 11:32:22
Javaアプリでコンソールウィンドウを開かずに
JFrameを出したいんですがどのようにすればいいんでしょうか?
41デフォルトの名無しさん:2005/12/09(金) 11:43:38
javaw
4236:2005/12/09(金) 11:47:36
>>38
ありがとうございます。
Integer使うんですね。
43デフォルトの名無しさん:2005/12/09(金) 11:54:01
>>39
".*(\d{4})(\d{2})(\d{2}).*"
で、たぶんできるかな。
matcher.group(1)に年
matcher.group(2)に月
matcher.group(3)に日

月だけ取得したいときは
matcher.group(2)を使うか

".*\d{4}(\d{2})\d{2}.*"
でmatcher.group(1)か
44デフォルトの名無しさん:2005/12/09(金) 11:59:07
http://java.sun.com/j2se/1.5.0/ja/download.html#docs
これダウンロードしてdocs/index.htmlを開いて画像をクリックすると
表記と内容がてんでバラバラじゃないか?

Win+Firefox1.5とWin+IE6で試してみた。俺だけ?
45デフォルトの名無しさん:2005/12/09(金) 12:10:44
ちっくしょー、タイムマシンがあれば
みんなの分をみらいから買ってきて5万円で売ってあげるのに
46デフォルトの名無しさん:2005/12/09(金) 12:25:59
>>44
少なくとも5.0のはずっとだめだね
47デフォルトの名無しさん:2005/12/09(金) 12:30:38
文字列にハイフンと数字以外の文字が入っていたらエラーを返す
プログラムを書けと学校の宿題で言われたのですが、どうIf分を書けば
いいか分かりません。どなたか教えてください。
48デフォルトの名無しさん:2005/12/09(金) 12:35:52
すれ違い、こちらへどうぞ
★★ Java の宿題ここで答えます Part 54 ★★
http://pc8.2ch.net/test/read.cgi/tech/1133778112/
49デフォルトの名無しさん:2005/12/09(金) 12:40:19
>>48
そこだと丸投げしろと書いてあるので・・・
できれば自分で書きたいのでやり方だけ教えてもらいたいんです。すいません。
50デフォルトの名無しさん:2005/12/09(金) 12:50:14
>>49
ごめん、なんか正規表現使うやり方しか思いつかない。
if使ってってめんどくさそう。
51デフォルトの名無しさん:2005/12/09(金) 12:59:15
>>47
if文の書き方は以下の通り

if ( エラーになるときの条件 ){
エラーを返す処理
}
52デフォルトの名無しさん:2005/12/09(金) 13:00:35
正規表現使うか、ループで全部の文字を検査するか。
そのぐらいのif文なら簡単だろ。
53デフォルトの名無しさん:2005/12/09(金) 13:01:52
ループなしで、一つのif文でやれってか?
だったら正規表現だな。
54デフォルトの名無しさん:2005/12/09(金) 13:05:27
>>24
JDIC 使え。

org.jdeskto.jdic.desktop.Desktop#browse(URL)
5534:2005/12/09(金) 13:21:39
>>35さんありがとうございました。そのやり方でできました。

明日が提出期限の課題だったんですが、先ほどプログラム完成しました。・゚・(ノ∀`)・゚・。
そのプログラムが「Huffman Coding Algorithm」を使ってStringをencodeしてdecodeするというものなのですが、
日本でもこのアルゴリズムって習いますか?
5634:2005/12/09(金) 13:26:19
うわ、>>37さんでしたね・・・すいませんorz
57デフォルトの名無しさん:2005/12/09(金) 13:40:48
>>55
Huffmanは古典っつーか基礎っつーか。
基礎すぎて飛ばされる事はあるかもしれんが、
日本だからとかいう理由で習わないなんて事はないだろ。
58デフォルトの名無しさん:2005/12/09(金) 13:54:14
JSPでサーバーにある複数のPDFファイルを結合する方法ってわかる人いませんか?
各種有料のコンポーネント、またはライブラリを使うしかないのでしょうか?

知ってる方いたら教えてください。
59デフォルトの名無しさん:2005/12/09(金) 17:05:27
JDBC使おうと思ってるんだけど、データベースはPostgreSQL使ってOSはUNIXでやろうとして
プログラムのコンパイルまではいくんだけど、実行すると

Exception in thread "main" java.lang.NoClassDefFoundError: javax/net/ssl/SSLSocket
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:124)
at HelloJDBC.main(Compiled Code)

って出るんだけどなんでかな?
6034:2005/12/09(金) 17:13:46
>>57
基礎なんですか。
基礎なのにプログラム書くのにめちゃくちゃ時間かかったorz
もっと勉強しないとだめですね。
61デフォルトの名無しさん:2005/12/09(金) 17:14:42
>>58
pdfを自作できるんなら自作でいいんじゃね?
一ヶ月くらい時間はかかるだろうが、創れると思うよ
その時間を金はらって買ってるだけ

1.3までのフォーマットなら書籍で見れる
62デフォルトの名無しさん:2005/12/09(金) 17:20:59
>>59
実行環境が J2SE 1.3 だったりとか?
63デフォルトの名無しさん:2005/12/09(金) 17:34:39
>>61
> >>58
> pdfを自作できるんなら自作でいいんじゃね?
> 一ヶ月くらい時間はかかるだろうが、創れると思うよ
> その時間を金はらって買ってるだけ
> 1.3までのフォーマットなら書籍で見れる
iTextとかを使えば自作できそうです。
でも言われたように時間がかかりそうですが・・・

さくっと金払ってでも結合機能のあるコンポーネントを買ったほうが良さそう。
64デフォルトの名無しさん:2005/12/09(金) 17:54:37
>46
ずっとか。そうか……
教えてくれてありがとう。
これで遠慮なくSunにゴルァできるよ。

しかし今まで直ってなかったってことは、
Sun社員は誰も直そうとしなかったってことなのか?
それともUserが誰一人ゴルァしなかったのか?
65デフォルトの名無しさん:2005/12/09(金) 18:02:05
>>64
実は誰も使ってない。
66デフォルトの名無しさん:2005/12/09(金) 18:09:24
画像は誰も見てないんじゃないかな
67デフォルトの名無しさん:2005/12/09(金) 18:30:21
コンストラクタ() {
  //基本設定
  //メインループ呼び出し
}
メインループ() {
  while(true) {
    Graphics gr = this.bufferStratery.getDrawGraphics();
    //描画用メソッド(gr);
    this.bufferStrategy.show();
    gr.dispose();
    try {
      Thread.sleep(10);
    } catch(InterruptedException ie) {
    }
  }
}
描画用メソッド(Graphics gr) {
  //ここで画像組み立て
}
キーボード処理() {
  //キーボード処理
}

こんな感じでゲーム(簡単な2Dアクションゲーム)を作っています。
しかし、ゲームのキャラの動きが環境によって速かったり遅かったりして、
アクションゲームとしては致命的な状態になっています。
どうすれば環境によらずに一定の速度にできますか?
ちなみに、FPSは大体45〜65くらいです。
結構開いていますが、これはキャラの速さ(移動量)には関係ないですよね?
これは描画切り替えの滑らかさの問題だと思うので。
68デフォルトの名無しさん:2005/12/09(金) 18:43:31
タイマー使う。

……あと、そこそこ高速の描画 API 使わない限り、FPS=60 は期待したくない。
69デフォルトの名無しさん:2005/12/09(金) 18:49:20
>>67
質問、.show()したら.dispose()しないとだめなの?
70デフォルトの名無しさん:2005/12/09(金) 19:02:00
2次元配列test[10][2]で
第1列をint
第2列をdouble
にする事はできますか?
7167:2005/12/09(金) 19:28:09
レスありがトンっす。

>>68
タイマーってもしかしてこういう処理のことですか?

メインループ() {
  long timeOld = 現在時間(ms単位);
  while(true) {
    long timeNow = 現在時間;
    if(timeNow - timeOld > 1000) {
      //約1秒ごとに行う処理
      timeOld = timeNow;
    }
    //描画部分省略
    try {
      Thread.sleep(10);
    } catch(InterruptedException ie) {
    }
  }
}

>>69
いや、そんなことはなかったと思います。
ガベージコレクション関連でやってるだけです。
72デフォルトの名無しさん:2005/12/09(金) 19:29:21
少し修正です。

if(timeNow - timeOld >= 1000) {
73デフォルトの名無しさん:2005/12/09(金) 19:40:14
>>70
ヒント:intとdouble共通の上位クラス型の配列
74デフォルトの名無しさん:2005/12/09(金) 19:42:36
>>73
Integer と Double だったら共通の上位クラスがあるけど、
int と double には、そんなものはありません。
75デフォルトの名無しさん:2005/12/09(金) 19:49:56
>>73
>>74
どうもです。

共通の上位クラスとはなんでしょうか?
76デフォルトの名無しさん:2005/12/09(金) 19:51:01
>>74
ヒント:オートボクシング/オートアンボクシング(Java SE 5の新機能)
77デフォルトの名無しさん:2005/12/09(金) 19:55:35
>>76
サンクス
78デフォルトの名無しさん:2005/12/09(金) 19:59:50
>>76
>>70 の要求と合致してないのでは?
79デフォルトの名無しさん:2005/12/09(金) 20:12:52
unboxingってNumber からintとかdoubleに変換してくれたっけか?
80デフォルトの名無しさん:2005/12/09(金) 20:20:57
できたら >>71-72 も教えてください。
81デフォルトの名無しさん:2005/12/09(金) 20:26:09
これ以上何を教えろというのだ。
82デフォルトの名無しさん:2005/12/09(金) 20:35:44
>>67
sleepは固定の時間停止
じゃぁ1ループでの処理時間がかわったときどうなるの?ってこと
つまりsleepの値が動的に変わるような感じに創らないといけない
1ループの時間を一定にするってことだね

これはJavaの話でもなんでもないよ
83デフォルトの名無しさん:2005/12/09(金) 20:40:51
>>67
フレーム毎にnドット移動とかせずに 経過時間 * 移動速度で移動距離決める。
>>71 みたいのでも良いけど。
84デフォルトの名無しさん:2005/12/09(金) 20:43:37
>>83
2Dゲーといってるのにそんなことしたらひどいことになるんじゃね?
85デフォルトの名無しさん:2005/12/09(金) 20:50:14
>>84
1ドットずれたら致命的みたいなゲームだと拙いだろうね。
その辺は >>67 が情報出さないのでこっちは判断できない。

拙ければ >>71 みたいので擬似的にフレーム/秒を固定するしかないのでは?
8671:2005/12/09(金) 20:56:35
メインループ() {
  long timeDraw = 現在時間(ms単位);
  long timeCount = timeDraw;
  while(true) {
    long timeNow = 現在時間;
    if(timeNow - timeCount >= 1000) {
      //約1秒ごとに行う処理
      timeCount = timeNow;
    }
    if(timeNow - timeDraw >= 10) {
      //描画部分省略
      timeDraw = timeNow;
    }
  }
}

何度も質問して申し訳ないのですが、こんな感じのはどうでしょうか?
処理遅れの時にも10msの間きっちり待つのではなく、
前回の描画開始時間から10ms以上経過していたら再描画というふうにしました。
ただ、これだとCPUリソースをかなり独占してしまいそうなので不安なのですが・・・
87デフォルトの名無しさん:2005/12/09(金) 20:59:27
それだとループスピードが変わるんじゃ
できなくもないけど、処理ははるかに難しいよ
88デフォルトの名無しさん:2005/12/09(金) 20:59:31
FPS 幾つにしたいのよ。60 は無謀。精々 10 〜 20。
89デフォルトの名無しさん:2005/12/09(金) 21:00:18
Javaで60fpsは普通に出来ますが・・・
90デフォルトの名無しさん:2005/12/09(金) 21:04:27
描画内容によるけどな。弾幕シューだったら無謀っぽいが。
91デフォルトの名無しさん:2005/12/09(金) 21:04:42
>>62
レスありがd
なんかJDBCのバージョンとPostgreSQLのバージョンが合わなかっただけみたいだわ

どうにか解決したよm(_ _)m
92デフォルトの名無しさん:2005/12/09(金) 21:11:39
初歩的なことですいません。

cmdを用いて
"Javac"でコンパイルはできるのですが
その後の実行ができません。

しばらく使ってなかったのですが
以前はちゃんと動いてました。

原因がわからないので
どなたか教えてくださいm(__)m
93デフォルトの名無しさん:2005/12/09(金) 21:15:16
>>90
弾幕シューが何で無謀なの?
94デフォルトの名無しさん:2005/12/09(金) 21:19:32
Javaがゲームに向いていない理由はパッドが使えないとかそういう理由のが大きい
どっかフリーで出てるJNIライブラリを落としてこないといかんな。
主要OS全てに対応してなきゃJavaらしさはないが。
95デフォルトの名無しさん:2005/12/09(金) 21:22:37
>>87
>ループスピードが変わる
>処理ははるかに難しい
ど、どういうことですか?
正直、初心者なのでそこまでは分からないのですが・・・

>>88
趣味で作るだけなので、そこそこ見られるレベルであれば問題ないです。
フレッシュレートの半分の30fpsくらいですかね?
96デフォルトの名無しさん:2005/12/09(金) 21:24:39
Flashは12FPSがデフォだし
チープと思われようがそこらへんにしとけば
低スペックマシンでも動くはず。
97デフォルトの名無しさん:2005/12/09(金) 21:25:33
というか、BufferStrategy方式ならTimer使うだろうから設定ファイルでいいじゃん。
98デフォルトの名無しさん:2005/12/09(金) 21:29:54
>>94
一応jinputとかLWJGLっていうのがあるけど・・・
99デフォルトの名無しさん:2005/12/09(金) 21:42:58
実際のところWindowsがメインターゲットだろうからそれだけはパッド対応して
他の環境ではキーボードのみでもかまわんけどな
パッド自体がWindows以外保障してないってのはある

UMAでも60fpsで1000個くらい玉出しても余裕なんだから弾幕は普通にいけるだろ

100デフォルトの名無しさん:2005/12/09(金) 21:46:19
レスありがとうです。

>ループスピードが変わる
>処理ははるかに難しい
ところで、これの意味を教えて頂きたいのですが・・・
101デフォルトの名無しさん:2005/12/09(金) 22:06:48
今、PCにJava1.3と1.4をインストールしてあります。

環境変数を弄って、1.4→1.3に変えて、再起動したのですが、
コマンドプロンプトで「java -version」って打つと1.4になってしまいます。

1.3に変える事ってできないでしょうか?
102デフォルトの名無しさん:2005/12/09(金) 22:09:43
>>101
%SYSTEMDIR% (C:\Windows\System)にある java.exe とか javaw.exe 使ってるんじゃないかと思われ。
103デフォルトの名無しさん:2005/12/09(金) 22:12:44
PATH変数を変更する。
104デフォルトの名無しさん:2005/12/09(金) 22:12:46
>>100
1ループにかかる速度がかわったら
普通非同期処理になるから初心者には難しいでしょ
105デフォルトの名無しさん:2005/12/09(金) 22:16:33
>>104
非同期処理の意味を間違えてないか?
106デフォルトの名無しさん:2005/12/09(金) 22:17:40
>>71のコード見る限りまずいのは誰が見ても明らかだろ
107デフォルトの名無しさん:2005/12/09(金) 22:28:10
Graphics g = this.strategy.getDrawGraphics();
g.setColor(Color.black);
g.fillRect(this.getInsets().left, this.getInsets().top, this.canvasSizeX, this.canvasSizeY);
this.strategy.show();

これが BufferStrategy を使用して画面を黒一色にする処理になりますが、
ここで fillRect メソッドに注目してください。
this.getInsets().left と this.getInsets().top を描画領域の左上として指定しています。
この程度のものであれば「少し面倒だな」で済んでしまうのですが、
実際にもっと沢山描画したい場合には大変です。
なにしろ描画する際には常に X 座標・ Y 座標それぞれに足してやる必要があるからです。
そこで質問なのですが、どうにかしてこの面倒な部分をなくすことはできませんか?
つまり、左上を指定したいときには (X, Y) = (0, 0) で良いようにしたいのです。
どうにかなりませんかね?
108デフォルトの名無しさん:2005/12/09(金) 22:28:39
>>107
Java2D勉強して
109デフォルトの名無しさん:2005/12/09(金) 22:31:01
x(12), y(34)とかにすればいいじゃん。
110sage:2005/12/09(金) 22:32:19
>>107
図形をあらわすクラスイロイロあるやん。それnewしてdrawしなされ。
11171:2005/12/09(金) 22:35:42
タイマーの意味がようやく分かりました。
java.util.Timer クラスを使えってことですね?
色々と勘違いをしてしまっていたようで、お恥ずかしい。
つまり、コンストラクタから呼ばれるメインループ(メインスレッド)では常に描画を、
そして Timer で定期的かつ並列的にキャラの動作状況とかタイムカウントとかを行い、
描画に使うフィールド値に反映させれば良いと。
こういうことでしょうか?
112デフォルトの名無しさん:2005/12/09(金) 22:37:55
いや、並列にやらんほうがいいかと
Timerはあくまでもメインスレッドを起こすだけにしとくべし
113sage:2005/12/09(金) 22:41:25
java.util.Timerって動画用途で使い物になるの?
一定時間Sleepくり返すだけだと、GC走った時にとまって
まうのでは?

…コンカレントGCって実装済みだっけ?
114デフォルトの名無しさん:2005/12/09(金) 22:48:29
TimerTaskを二つ使うのが俺流。
1つは当然描画用。もうひとつはメインループ。
描画用は30fpsくらいで、メインは60fpsみたいな使い方をする。
115デフォルトの名無しさん:2005/12/09(金) 22:55:57
>>108-110
すみません。
Graphics クラスの解説読んだら即解決しました。

g.translate(this.getInsets().left, this.getInsets().top);

メソッドに対する知識不足でした。
猛省します。
116デフォルトの名無しさん:2005/12/09(金) 23:04:22
自力で解決できたんだから大丈夫
聞く前にまずいろいろと試してからにすればいいだけ

ゲーム方面が目的ならゲーム製作の板のほうがあってるかも
117デフォルトの名無しさん:2005/12/09(金) 23:16:21
物凄く初歩的な質問ですみません。
今、どの言語から入ろうかと色々試しているのですが、
Javaの場合、.exeのようなそのまま実行出来る形式は作れないのでしょうか?
118デフォルトの名無しさん:2005/12/09(金) 23:17:08
>>117
JARという形式に固めれば、Windowsマシンでダブルクリックで起動できるお。
119デフォルトの名無しさん:2005/12/09(金) 23:23:10
>>117
Sun の JDK だけだと無理。
GCJ とか Excelsior JET みたいな AOTコンパイラ使えば作れる。
120デフォルトの名無しさん:2005/12/09(金) 23:27:36
>>118
>>119
なるほど、ご回答有難うございます。

>>119様の察しの通り、
SunのJDKを使ってサンプルを作ってみたのですが、
実行形式への作り方がいまいちわからず…でした。

GCJとExcelsior JETについて調べてみます。
ありがとうございます。
121デフォルトの名無しさん:2005/12/09(金) 23:28:01
Javaをフックするexe作ればいいだけでは
122デフォルトの名無しさん:2005/12/09(金) 23:31:02
一瞬コンソールが立ち上がるけど結局最後はJavaだけが立ち上がるタイプのJavaアプリは多いね。
123デフォルトの名無しさん:2005/12/09(金) 23:41:32
Frame を継承したら Eclipse に
static final long serialVersionUID フィールドが定義されていない
とか警告されるんだけど・・・
こいつにはどんな値をセットすればいいの?
124デフォルトの名無しさん:2005/12/09(金) 23:42:48
見かけだけ.exeになっていればいいのであれば、exewrap
125デフォルトの名無しさん:2005/12/09(金) 23:51:49
>>123
テキトーでヨシ。定義しないと、実行時のクラス情報から自動計算
されるので、定義しなくても動かないわけじゃない。

問題になることがあるのは、そのクラスのオブジェクトをシリアライズ
した時なので、シリアライズすることが絶対無いならヤッパリ定義不要。
126デフォルトの名無しさん:2005/12/09(金) 23:53:35
JPEGとかってシリアライズできる?
127デフォルトの名無しさん:2005/12/09(金) 23:56:57
>>126
ハァ?
JPEG形式ですでにシリアライズしてあるじゃんよ・・・
128デフォルトの名無しさん:2005/12/09(金) 23:58:11
>>125
ありがとっす
129デフォルトの名無しさん:2005/12/09(金) 23:59:11
>>127
DBにバイナリで詰めたいんだよ
130デフォルトの名無しさん:2005/12/09(金) 23:59:57
>>129
BLOBじゃいかんのけ?
131デフォルトの名無しさん:2005/12/10(土) 00:04:28
>>130
今度はどう読み込めばいいのか想像が付かない
バイナリでテンポラリディレクトリにファイル化させてから再読み込み?
132デフォルトの名無しさん:2005/12/10(土) 00:05:14
>>131
なんでそんなことせにゃならんのよ。
133デフォルトの名無しさん:2005/12/10(土) 00:14:43
DBについてに知識ゼロかよ
134デフォルトの名無しさん:2005/12/10(土) 00:16:30
DBじゃなくてImageのほうがわからない。
バイト列やInputStreamからどうやって画像に変換するの?
135デフォルトの名無しさん:2005/12/10(土) 00:18:38
ストリームやバイト列から変換できないってそっちまず勉強してよ
検索すればいくらでも引っかかるし、APIみればいくらでも
136デフォルトの名無しさん:2005/12/10(土) 00:19:52
まあ、初心者に分かりにくいところにはあるよな。
Toolkit.getDefaultToolkit().createImage
137デフォルトの名無しさん:2005/12/10(土) 00:20:22
BufferedImage ImageIO.read(InputStream)
あったこれかも。

バイト列で変換できたほうが嬉しいな
138デフォルトの名無しさん:2005/12/10(土) 00:20:52
>>136
ありがと。調べてみるよ。
139デフォルトの名無しさん:2005/12/10(土) 00:21:37
自分が作ったプログラムがPureJavaであるかどうかは、どうやって確認すればいいのでしょうか?
うっかり改行を\nにしたり、ディレクトリセパレータを\にしていたりすれば、
環境依存になってしまいますよね。
「どこかでやらかしてないか」を確認する方法はあるでしょうか?
140デフォルトの名無しさん:2005/12/10(土) 00:22:28
>>137
ByteArrayInputStream 噛ませてみれば良いのでは?
141デフォルトの名無しさん:2005/12/10(土) 00:23:52
細かいこというとすごい大変なんで一応JNI使ってなければ大丈夫じゃない?
ファイルのパス指定はスラッシュなら大丈夫

改行とかそのへんだけはさすがに埋め込んだらダメだけど
142デフォルトの名無しさん:2005/12/10(土) 00:28:54
>>139
FindBugsでチェックできない?
143デフォルトの名無しさん:2005/12/10(土) 00:30:43
>>140
おお、そんなキチガイ染みたラッパクラスがあるとは。
これで何でもBufferedImageで取れるようになったよ。
ありがとね。

>>136
Toolkitも簡単でいいね。
ImageIOが登場するまではこっちが使われてたのかな。
144デフォルトの名無しさん:2005/12/10(土) 00:44:26
今Toolkit使う必要性はまったくないけどね
145デフォルトの名無しさん:2005/12/10(土) 00:51:36
>>143
>おお、そんなキチガイ染みたラッパクラスがあるとは。

今までどんなライブラリ使ってたのよ。
146デフォルトの名無しさん:2005/12/10(土) 01:25:47
普通の業務プログラマはbyte配列なんて使わないしなぁ。
147139:2005/12/10(土) 02:02:35
>>141
なるほど。JNIを使うつもりは勿論無いので、
文字周りを注意すれば何とかなる、と言うところでしょうか。

>>142
FindBugsは使ったことが有りませんでした。
調べてみます。
148デフォルトの名無しさん:2005/12/10(土) 02:05:54
>>147
ちなみにFindBugsの記事が
JavaPress Vol.45に載ってたりする
149デフォルトの名無しさん:2005/12/10(土) 07:44:39
>>111
java.util.Timerのほうではなくて、java.swing.Timerじゃないの?
150デフォルトの名無しさん:2005/12/10(土) 09:39:35
util.Timerであってるよ
ひとつのスレッドで複数のTimerTaskを動かせる優れたスレッドだ
151デフォルトの名無しさん:2005/12/10(土) 09:44:25
>>150
javax.swing.Timerだって、複数の処理を動かせるけど?
152デフォルトの名無しさん:2005/12/10(土) 09:48:25
同じタイミングで複数の処理をでしょ?
utils.Timerは違うタイミングで複数の処理を単一スレッドで行う。
153デフォルトの名無しさん:2005/12/10(土) 09:50:33
>>152
なるほどね。
でもそれってほんとに一つのスレッドでやってるの?
154デフォルトの名無しさん:2005/12/10(土) 09:55:18
くわしくはAPI参照。当然TimerTask#runに思い奴があれば他が遅延する可能性はあるよ。
155デフォルトの名無しさん:2005/12/10(土) 10:06:21
いまAPI読んでみた。
なーんか、いまいちだね。
俺がjavax.swing.Timerがいいなぁと思う理由はね、
ポーズがかけられる(一時停止/再開)
途中で何回でも処理間隔を変更できる
のふたつ。
テトリスのように、レベルアップするたびに
処理が速くなる奴には向いてる。
156デフォルトの名無しさん:2005/12/10(土) 10:14:45
メインルーチンと描画ルーチンを分けられることや
イヴェントキューを介さないから正確なことがutilのメリット
TimerTaskそのもの切り替えれば感覚も変更できる。
まぁswingのが分かりやすい場面も多いだろうけどね。
157デフォルトの名無しさん:2005/12/10(土) 10:32:45
それぞれ、長所短所があるということだね。
場面によって使い分ければいいのかな
158デフォルトの名無しさん:2005/12/10(土) 11:19:33
自分が勧めたやつがけなされたからって粘着宇材ね
159デフォルトの名無しさん:2005/12/10(土) 11:28:55
けなしてたのかよw
160デフォルトの名無しさん:2005/12/10(土) 12:05:02
>>36
> String a = new String("A");

String a = new String('A`) ;

に見えた

161デフォルトの名無しさん:2005/12/10(土) 12:23:10
private int hoge;
private Timer t;
public Test{
  t = new Timer();
  TimerTask task = new TimerTask() {
    public void run() {
      //ここ
    }
  });
  t.schedule(task, 1000L);
}
public void countHoge(){
  hoge++;
}

TimerTask の Run() メソッドの中(ここって書いてあるとこ)から、
countHoge() を呼び出したい場合にはどうしたらいいの?
162デフォルトの名無しさん:2005/12/10(土) 12:33:11
countHoge();
163デフォルトの名無しさん:2005/12/10(土) 12:37:13
>>155
普通はループスピードを調整するんじゃなくて、
ゲーム内処理は一定で、ウエイトを調整するんじゃないか?
164デフォルトの名無しさん:2005/12/10(土) 12:55:11
/http://pc8.2ch.net/test/read.cgi/tech/1133087049/978
ファイル開いたら文字化けしやがった
文字コード変換マンドクセー
全部UTF-8で統一しろやヴォケ
165デフォルトの名無しさん:2005/12/10(土) 13:08:44
>>162
普通にできるということ?
166デフォルトの名無しさん:2005/12/10(土) 13:13:01
インナークラス辞めてコンストラクタで渡せばいいじゃない

という話が1スレに1度はでてくるね
167デフォルトの名無しさん:2005/12/10(土) 13:17:43
あれ?

描画はイベントディスパッチスレッドでやらないと、AWTの動作保証外ですよ

という話の考慮が抜けてる流れ?
168デフォルトの名無しさん:2005/12/10(土) 13:43:16
>>166
こゆこと?

new TimerTask(this);

public TimerTask(Frame f) {
169デフォルトの名無しさん:2005/12/10(土) 13:49:34
>>167
AWTイベント使わない話でしょ?
BufferStrategy使用の話じゃないの?
170デフォルトの名無しさん:2005/12/10(土) 13:50:13
>>168
クラス名がダブってるからだめだけどそういうこと
171デフォルトの名無しさん:2005/12/10(土) 13:57:02
描画なんてものはメインループの最後でやれば良いんだよ
描画のための変数値変更(描画位置とか画像とか)をTimerとか別スレッドとかでやってさ
所詮は描画なんだしさ
30fpsだろうが100fpsだろうが1000000fpsだろうがどうでも良いだろ
描画の回転にあわせて描画位置とか決定しているアフォプログラムでなければな
172デフォルトの名無しさん:2005/12/10(土) 14:06:30
>>171
そのへんわかっていれば初心者の域は脱してるだろうからね
そもそもJavaの話ですらない
173デフォルトの名無しさん:2005/12/10(土) 14:16:32
>>171
そりゃすこし違うよ
変数値変更を行った最後で描画要求を入れるけど
そこでただちに描画されるわけではないよ
描画は描画要求が処理された時点で行われる
つまり変数値変更の間隔が狭いとそれだけ描画回数が増える
これはたとえばアニメーションのスムーズさに繋がっていく
だからどうでもよくはない
174デフォルトの名無しさん:2005/12/10(土) 14:27:46
じゃあ結局制御するしかないのかね
とりあえず描画回転は>>71にあるみたいにしてさ
おおよそ60fps前後になるようにさ
カウントとかの変数値変更はTimerって感じで
175デフォルトの名無しさん:2005/12/10(土) 14:38:15
JavaってC/C++とかと比べて遅いの?
176デフォルトの名無しさん:2005/12/10(土) 14:43:54
VMの起動時間を込めなければ極端に遅いわけではない
177デフォルトの名無しさん:2005/12/10(土) 14:49:01
>>174
リアルタイム性を求めるとしたら
前の描画からの経過時間を判定して
変数値を調整するしかないと思う
こうすれば環境依存度は小さくなると思うよ
178デフォルトの名無しさん:2005/12/10(土) 14:49:05
じゃあさ、何でゲームに不向きとか研究用PGに不向きとか言われてるの?
179デフォルトの名無しさん:2005/12/10(土) 14:52:28
>>178
CPUに近い部分をJavaでは書けないから。
C++なら、いざとなればCやアセンブラが使えるからね。
180デフォルトの名無しさん:2005/12/10(土) 14:57:07
Javaだっていざとなれば、Cやアセンブラを使(ry
181デフォルトの名無しさん:2005/12/10(土) 14:58:46
>>179
そのたとえはおかしいような
それだとJNIでCがさわれるしねといわれてしまう
182デフォルトの名無しさん:2005/12/10(土) 15:01:03
アルゴリズムの研究用だったら最近はほとんどJavaで書く気がするが。
183デフォルトの名無しさん:2005/12/10(土) 15:01:49
そりゃそうだが、同じ処理系の中では使えんでしょ。
JNIは、単にネイティブライブラリを作る手段が別にあるというだけ。
C++の場合は、処理系が同じ。
184デフォルトの名無しさん:2005/12/10(土) 15:03:10
ゲームを作るときに、いざというときが何割を占めるんですか?
185デフォルトの名無しさん:2005/12/10(土) 15:08:44
C++でアセンブラを動処理するかは実装依存だろ
186デフォルトの名無しさん:2005/12/10(土) 15:11:29
COBOL の勉強でも始めるかな
187デフォルトの名無しさん:2005/12/10(土) 15:14:51
>>184
むかしはほとんどがいざというときだったんじゃね?
今でももっさりとしたシミュレーションやアクションゲームを見かけるので
やっぱりいざという時はまだまだありそうだね。
でもハードの高性能化でいざという時はかなり減ってきてるよね。
188デフォルトの名無しさん:2005/12/10(土) 15:40:20
今のハードならゲームでもCだけよりはJavaのほうがさすがにらくだね。
189デフォルトの名無しさん:2005/12/10(土) 16:06:40
Java ゲームってさ、ゲーム中にFrame と FullScreen の動的な切り替えってできる?
190デフォルトの名無しさん:2005/12/10(土) 16:16:06
出来ないことはないが、辞めた方がいいという感じ

とゲーム作成スレでも結論が出てたな
ヒープと違ってVRAMの破棄タイミングが大変っぽい
191デフォルトの名無しさん:2005/12/10(土) 16:16:34
ゲーム特有の話はゲーム製作板いったほうがよさげ
192デフォルトの名無しさん:2005/12/10(土) 16:35:09
>>190
そっか・・・
じゃあ、起動時に選択するようにするしかないな
193デフォルトの名無しさん:2005/12/10(土) 18:14:47
>>178
> じゃあさ、何でゲームに不向きとか研究用PGに不向きとか言われてるの?

何か、勘違いしているようだが、Javaを使った研究は盛んなわけだが。
大学では講義に使われる言語をC++からJavaに
切り替えたところが増えてきたわけだし。
194デフォルトの名無しさん:2005/12/10(土) 18:19:39
>>184
何割を示すかなんて固定的な数値で示せるとはとても思えないが、

ゲームというと、
PS2のようにビデオメモリとCPUとの間にかかるブリッジの帯域が
非常に小さくビデオメモリ自体も小さいため
メモリを大量消費するJavaでの開発がしづらいというのがある。
Javaが抱えている問題はメモリくらいしかない。
速度問題はさほどきにならなくなってきた。
メモリ問題もハードウェア次第。512MBが当たり前の時代には気にすることは
少ない。ただ人気のあるゲーム機に使われるメモリ容量が
小さいのがJavaが使いにくい原因だったりする。
携帯Javaでは昔のゲームの移植が盛んに行われてはいるが
開発のやりづらさ、開発効率の悪さ、はJavaサーバ製品開発とは比べものにならない。

195デフォルトの名無しさん:2005/12/10(土) 18:25:08
>>187
シミュレーションゲームだったら
アクション性を求めないのでもっさり感は
少ないと思われるが。

特にCivilizationのようなターン制シミュレーション(ストラテジー)なら。
ターン待ちだけに時間をかければ良いだけで。
それからあの手のゲームは、各々の文明が領土が拡大すればするほど、
各々の文明が所持するユニット数が大ければ多いほど
もっさりしてくる。当然と言えば当然だが。
あのゲームCivシリーズから派生したAge Of Empireシリーズも同様。
SimシリーズやA列車シリーズなどにもいえてくるが。
文明同士の外交処理を考えると、文明をいくつか滅ぼすと
その分余分な処理が減ってもっさり感が減るというのはあるがw

実はあのゲームPythonが使われていて、Pythonでスクリプト書くと
改造とか細かいシナリオを作れてしまうわけだが。
196デフォルトの名無しさん:2005/12/10(土) 18:28:12
>>192
次期Java バージョン
Java SE 6 Mustangではデスクトップ周り
が改善されているようだからそっちに期待してみては
どだろ。
パフォーマンスもあがるらしいし
197デフォルトの名無しさん:2005/12/10(土) 19:08:52
DVDビデオデッキやゲームボーイ(死語?)もJavaで動いてるって本当?
198デフォルトの名無しさん:2005/12/10(土) 19:43:42
System.out.printlnのSystem.out辺りを省略したいと思って、
import System.out.*; とやってもパッケージがないらしく無理でした。
省略する術はありますでしょうか?
199デフォルトの名無しさん:2005/12/10(土) 19:49:26
import static java.lang.System.out;
:
:
out.println(...
200デフォルトの名無しさん:2005/12/10(土) 19:50:16
System.out の out はパッケージじゃなくて変数。out を省略することは不可能。
201デフォルトの名無しさん:2005/12/10(土) 20:07:43
とりあえずおまいらPC初心者が使ってそうな
256mbしかメモリつんでない環境にして、
適当にJavaのIDEとか動かしてみろよ。


マジでぶちぎれそうになるから。
202デフォルトの名無しさん:2005/12/10(土) 20:10:05
俺ノートだから 224 しか積んでないよ。んで?
203デフォルトの名無しさん:2005/12/10(土) 20:15:54
>>199
ありがざいます! いままで、僕はどれだけ指を痛めてきたことか…
本当にあったとは、少し感動してしまいました。
>>200
なるほど(・д・)フムフム
204デフォルトの名無しさん:2005/12/10(土) 20:52:09
>>201
メモリ64MのノートPCでEclipse使ってる
俺に対するあてつけか?
205デフォルトの名無しさん:2005/12/10(土) 21:02:43
>>201
俺がPC買った数年前の当時では、メモリ256MBでも相当なハイスペックだったのだがな
206デフォルトの名無しさん:2005/12/10(土) 21:03:35
さっき気持ち1分ぐらいCPU使用率99lでsunのideが
フリーズしやがったから、ぶちぎれてたわけですよ。
しかもコンパイルとかの時にソケットとか使ってるみたいで、
ファイヤーウォールで通信遮断状態だとコンパイル実行できない。

本当にありがとうございました。
207デフォルトの名無しさん:2005/12/10(土) 21:05:29
>>206
localhostへの通信遮断しなきゃいいんじゃね
208デフォルトの名無しさん:2005/12/10(土) 21:12:07
>>198
static importのほかに
PrintStream p = System.out;

p.println();

というやり方もできる。

>>200
PrintStreamを使えば問題ない
209デフォルトの名無しさん:2005/12/10(土) 21:13:08
>>201
NetBeansやEclipse3.1なら問題なく軽いので
気にならない。
プラグイン追加やプロジェクト内の警告数、ファイル数増加
に伴ってEclipseが重たくなることはあるが
210デフォルトの名無しさん:2005/12/10(土) 21:14:55
>>203
面倒くさいならIDE使えよ。
Eclipseでエディタ上でsysoutと入力してCtrl + Space
と推して皆。

NetNeansでsysなんとかとCtrl + Space
と押してみな
211200:2005/12/10(土) 21:16:04
>>208
質問の意図を汲み取る限り、質問者は
System.out.println();

println();
まで省略したいと言っているように感じたんだが。
そういう意味で out の省略はムリ。メソッド作れば何とかなるが、逆に長くなるだろう。
212デフォルトの名無しさん:2005/12/10(土) 21:17:31
>>206
どうせ
Norton Internet Securityとかが
悪さしてるんだろ
213デフォルトの名無しさん:2005/12/10(土) 21:18:08
>>201
歳代ヒープメモリサイズ調整してみろよ
214デフォルトの名無しさん:2005/12/10(土) 21:59:42
>>211
こんなPrintStreamのラッパークラス作ってしまえばいい

package net.2ch.www.printer;
public class Printer {
 private Printer(){}
 public static void print(String s){
  System.out.println(s);
 }
 //println()のオーバロードメソッドが多すぎるので(ry
 //Genericsでパラメタライズすればオーバロードメソッドを省けるかもしれん
}


//実際に使用するとき
import static net.2ch.www.printer.Printer.*;

public class Test{
 void method(){
  println("あああああああああ");
 }
}

}
215デフォルトの名無しさん:2005/12/10(土) 22:05:28
>>214
あのさ、俺が何のために最後の一文を書いたか分かってないだろ。
216デフォルトの名無しさん:2005/12/10(土) 22:08:43
バカだろお前ら
クラスごとにprintlnメソッド書けばいいだけの話じゃないか
ど素人が
217デフォルトの名無しさん:2005/12/10(土) 22:09:01
package net.2ch.www.printer;
import java.util.Locale;
public class Printer {
 private Printer(){}
 public static <T> void println(T t){
  print(t + "\n");
 }
 public static <T> void print(T t){
  System.out.print(t);
 }

 public static void printf(Locale locale, String format, Object... args){
  System.out.printf(locale, format, args);
 }

 public static void printf(String format, Object... args){
  System.out.printf(format, args);
 }
}

これでC言語のprintf()文がJavaでも実現可能。
//実際に使用するとき
import static net.2ch.www.printer.Printer.*;
public class Test{
 void method(){
  printf("%3.4f", 13333.9999999999);
 }
}
218デフォルトの名無しさん:2005/12/10(土) 22:10:31
>>215
おまえにはこれが長いのか?
import static net.2ch.www.printer.Printer.*;

ならばPrinterクラスのpackage宣言を
package java.lang;に(ry
219デフォルトの名無しさん:2005/12/10(土) 22:11:31
Genericsってプリミティブ変換できたっけ?
220デフォルトの名無しさん:2005/12/10(土) 22:14:49
>210
そんなのしらんかったorz
221デフォルトの名無しさん:2005/12/10(土) 22:16:57
>>210
お前はたぶん悪い奴じゃないから突っこまない。
揚げ足なんてとらないからな!
222デフォルトの名無しさん:2005/12/10(土) 22:21:57
NetBeansはSwing使ってるだけに各マシンに合わせたチューニングで恐ろしいほど速度変わるな
223デフォルトの名無しさん:2005/12/10(土) 22:24:19
Enterprise使ってる人いたら、使い勝手教えて。
NetBeansの高級版?それとも毛色変えてきてる?
224デフォルトの名無しさん:2005/12/10(土) 23:08:29
>>223
兎に角重い
225デフォルトの名無しさん:2005/12/10(土) 23:11:28
eclipseで良いならわざわざEnterprise
を使う理由も分からない
まぁ俺は個人で趣味程度でやってるから
Enterpriseじゃ無くてcreatorの方が良かったのかも
226デフォルトの名無しさん:2005/12/10(土) 23:15:35
インターフェイスを使う意義って
いわゆるそのメソッドを必ず使わせるという保証というか確約させる以外にあるのでしょうか?
227デフォルトの名無しさん:2005/12/10(土) 23:18:07
>>221
私はネットネアンデルタール人です
228デフォルトの名無しさん:2005/12/10(土) 23:19:57
>>226
Serializableインタフェースの使い方を盛れば
制約以外にも意義がある。

というか前スレでも同じ質問があったような。
デジャブ?
229デフォルトの名無しさん:2005/12/10(土) 23:24:14
>>227
で、どういうリアクションがお望みだい?
230デフォルトの名無しさん:2005/12/10(土) 23:24:22
>>224
とにかくといわず、
マシンスペックを教えれ

とにかく=兎に角
という意味を教えてくれた友人よ
231デフォルトの名無しさん:2005/12/10(土) 23:24:56
>>229
私はネット豆星人です
232デフォルトの名無しさん:2005/12/10(土) 23:27:28
あくまで=飽くまで 悪魔でじゃないぞ。
233デフォルトの名無しさん:2005/12/10(土) 23:27:48
ウィンドウアプリケーションを作成するためFrameを継承したクラスでさ、
周りの枠の部分も含めた全体のサイズを設定するにはどうしたら良い?
リファレンスを読むとgetInsets()を使えば良さそうなんだけど、コンストラクタで
left+right+sizeXとtop+bottom+sizeYをやってみたけどなぜか変更されないんだ
どうすれば良いですか?
234デフォルトの名無しさん:2005/12/10(土) 23:28:24
そういやJavaの共通ヘルプ環境ってある?
JavaDocじゃなくてアプリのほうのやつね。
MSだとコンパイル済みHTMLとかいうのがスタンダードだよな
235デフォルトの名無しさん:2005/12/10(土) 23:29:24
>>233
それであってるが推奨サイズのほう弄ってないかい?
236デフォルトの名無しさん:2005/12/10(土) 23:31:21
>>235
推奨サイズってなんですか?
237デフォルトの名無しさん:2005/12/10(土) 23:33:07
preなんたらsizeってやつ
238デフォルトの名無しさん:2005/12/10(土) 23:38:36
>>226
インターフェース関連で質問ですが
ItestClass(インターフェース)
testClass(クラス)
こうあった場合よく
ItestClass tc = new testClass();

上記みたいにインスタンス化するときに、インターフェースを返してする場合が多々ありますが
あれってなぜそうするのでしょうか?
いまいちそれをするメリットがわかりにくいのですが
239デフォルトの名無しさん:2005/12/10(土) 23:40:50
・インターフェイスは返してない。
・そのうち分かる。無理に分かろうとしなくても良い。
240デフォルトの名無しさん:2005/12/10(土) 23:42:37
>>238
そのインターフェースを継承したクラスなら
受け取ることが出来るから
241デフォルトの名無しさん:2005/12/10(土) 23:42:51
createBufferStrategy(n)の前にsetVisible(true)を呼び出す必要ってありますか?
242デフォルトの名無しさん:2005/12/10(土) 23:45:04
試せば分かることだよ。
243デフォルトの名無しさん:2005/12/10(土) 23:47:00
前々から聞こうかと思ってたけど、

windowClosing(WindowEvent e)

の設定はフルスクリーンの場合は不要?
だって閉じるボタンもタイトルバーもないじゃん
244デフォルトの名無しさん:2005/12/10(土) 23:47:26
Alt+F4
245デフォルトの名無しさん:2005/12/10(土) 23:47:40
>>234
DocJar
246デフォルトの名無しさん:2005/12/10(土) 23:47:51
alt + F4 で呼び出されてたような気がする。
247デフォルトの名無しさん:2005/12/10(土) 23:48:58
>>238
メソッドの引数に

method(ItestClass testClass)
と指定されているものがあるから
248デフォルトの名無しさん:2005/12/10(土) 23:50:01
>>234
Java help API
ただしもう古い
HTMLで十分。
不満ならDoxygenで生成せよ
249デフォルトの名無しさん:2005/12/10(土) 23:57:16
>>240
ありがとうございます
具体的にそこらへんの詳細な説明があるサイトとかあるのでしょうか?
ぐぐってもみつからなかったので
250デフォルトの名無しさん:2005/12/10(土) 23:59:17
>>249
java の本を一冊買ってけろ。多少の厚みがあるやつだったら、それ一冊で当分の疑問点は全部消えるから。
251デフォルトの名無しさん:2005/12/10(土) 23:59:39
MSのコンパイル済みHTMLって奴の凄さは、検索機能が付いてるとこにあるんだよな
Swingでそういうのを作らないと、Javaもまだまだフリーソフト作家に気に入られることができない。
もっと頑張れSUN。
252デフォルトの名無しさん:2005/12/11(日) 00:01:27
>>250
関係ないが、SUNの分厚い奴買ったけど読まずじまいだった。
SJCPとかの資格参考書と標準のJavaDocとかのが身につくと思った。
253デフォルトの名無しさん:2005/12/11(日) 00:10:50
インターフェースの話はJAVA本より
オブジェクト指向の本読むと良いよ
254デフォルトの名無しさん:2005/12/11(日) 00:13:09
InputStreamとかの家計図をJavaDocで追っていくのが最強。
あとCollectionFrameworkあたりもそうだね。
実際にどう使われているのかを追うのが理解と実践度の向上に役立つ。
255デフォルトの名無しさん:2005/12/11(日) 00:27:41
>>226
振る舞いを他のクラスに任せて
実装を自分で書く事。
例えばThread run()が実装で
start()が振る舞い

大体javaで多様性(?)を実現しようと思ったら
継承かインターフェイスを実装するのが普通と思う。
と結城先生の本を読んでインターフェイスがクラスのグループ分け
が主な目的では無いと最近思う。

>>230
athon64 3000+
512
単に使い方が悪いだけかも分からんが
アクセレータを下げないとPCがフリーズ
256デフォルトの名無しさん:2005/12/11(日) 00:30:07
ArrayListとLinkedListが同じListインタフェースを実装しているというアノ感動。
その実装のされ方を事前に知っていないと感動もできないがな。
257デフォルトの名無しさん:2005/12/11(日) 00:47:49
オペレーティングシステムについてなんですが、
Petersonのアルゴリズムが、相互排除をどのように保障しているか
分からないのですが、誰か分かる方教えてくれませんか?
お願いします!!
258デフォルトの名無しさん:2005/12/11(日) 00:49:21

abstract class super_class {
  void test() {
 }
}

abstract class super_class {
  abstract void test() {
 }
}
のようにメソッドにもabstract修飾子をつけることができますよね
けれど、そうした場合クラスの方にもこれを付けないといけないとの
事ですが、ではメソッドにabstractを付ける場面は一生ないと考えて
よろしいでしょうか?
259デフォルトの名無しさん:2005/12/11(日) 00:51:19
>>258
んなこたない。テンプレートパターンというのがある。
abstractメソッドの使われ方は同じ、だけど実装方が違うとかあるとき使う。
260デフォルトの名無しさん:2005/12/11(日) 00:55:15
>>258
返値がvoid以外のメソッドで試してみろ。
261デフォルトの名無しさん:2005/12/11(日) 00:58:18
>>255
それビデオカードとドライバの問題では?
DirectX使って描画してるんだよ>Java
設定でoffにもできるけど
262デフォルトの名無しさん:2005/12/11(日) 01:00:26
>>233
コンストラクタということは表示してないね
表示、もしくは表示の準備をしないとインセットは取得できない

通常そういうのを考えたくないときはボーダーレイアウトで配置、
それの推奨サイズを指定するのが一般的
263デフォルトの名無しさん:2005/12/11(日) 01:01:30
GraphicsDevice device = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
GraphicsDevice device2 = device.getDefaultConfiguration().getDevice();

上の GraphicsDevice と下の GraphicsDevice は同じものですか?
264デフォルトの名無しさん:2005/12/11(日) 01:08:24
>>251
そう思うならお前が作れ。検索程度ならそう難しいことではないぞ。
EclipseにはすでにJavaで似たような検索エンジンを搭載しているぞ。

フリーソフト作家の「作家」という表現がなんだかな。
開発経験のない単なる芸術家や文学小説家レベル程度の人間じゃあるまいし。
標準のこともよく考えてテストもよくやってより多くの人にレビューして貰ってる
オープンソースソフトウェア開発者と
単なる個人の自己満足で終わってしまう傾向の強いVectorや窓の杜の
ようなフリーソフトウェア開発者とを比較するのもどうかと。
265デフォルトの名無しさん:2005/12/11(日) 01:09:52
>>252
結城浩の「Java言語で学ぶデザインパターン入門」を嫁。
前スレ、前々スレ、いやその前スレ以前から何度も何度もこの本の紹介が出てると思うが。
266デフォルトの名無しさん:2005/12/11(日) 01:12:39
Effective Java、Javaの格言、結城本あたりがメジャーどころか。
267デフォルトの名無しさん:2005/12/11(日) 01:12:41
初心者には検索機能必要かもね
経験があれば検索なしですぐにわかるんだが
268デフォルトの名無しさん:2005/12/11(日) 01:13:52
JavaDocならFireFox使ってるけどね。
お手製ヘルプともなるとクラスの羅列みたいな表記じゃなくなるし
検索機能は必須かも。swingのHTMLって評判どうなん?
269デフォルトの名無しさん:2005/12/11(日) 01:24:03
文字列みたいならgoogleで検索という手がある
これは逆にhtmlだからこその強みだな
270デフォルトの名無しさん:2005/12/11(日) 01:24:19
>>255
> >>226
> 振る舞いを他のクラスに任せて
> 実装を自分で書く事。
> 例えばThread run()が実装で
> start()が振る舞い
UMLとオブジェクト指向という視点で見れば
どちらもクラスを構成する「振る舞い(メソッド)」なのだが。
271デフォルトの名無しさん:2005/12/11(日) 01:29:11
インターフェースはレシーバーオブジェクトが
特定のメッセージを受けとれることを保障するためのものだな
272デフォルトの名無しさん:2005/12/11(日) 01:33:33
オブジェクトをシリアライズして書き込み&読み込みをしようとしてるんですけど、
GeneralPathのオブジェクトを書き込み&読み込みする方法って誰かわかりませんか?
273デフォルトの名無しさん:2005/12/11(日) 01:34:08
> 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」

って出るんだが、パスの設定は出来たんだが、
クラスパスが上手く遺憾。
毎回最初にコマンドプロンプト開いてset CLASSPATH=%CLASSPATH%;.
って入力すると出来るんだが、毎度毎度この作業しなきゃ通らないからデフォで設定するにはどうしたら良いんだ
Wikiのリンク先も消えてて分からんぜ・・・
274デフォルトの名無しさん:2005/12/11(日) 01:36:37
環境変数の設定かバッチファイル書け
275デフォルトの名無しさん:2005/12/11(日) 01:49:56
>>268
DocJarのことか?
http://www.docjar.com/

Firefoxつかってるってことか
XPIファイルでプラグインをインストールして検索窓に
追加して使ってるということか。

Eclipseのプラグインにも追加されて
自分、あるいは誰かが書いたコードの
クラスからJavadocを検索できるが。
276デフォルトの名無しさん:2005/12/11(日) 01:53:13
クラスのヘルプじゃなくてアプリのヘルプだろ
277デフォルトの名無しさん:2005/12/11(日) 01:57:21
>>273
Apache Antの<classpath>タスクを使え。
278デフォルトの名無しさん:2005/12/11(日) 01:59:12
>>276
それもApache Luceneを使えば問題なし。
279デフォルトの名無しさん:2005/12/11(日) 01:59:47
添削お願いします。IllegalStateExceptionが発生します。その1行を取ると例外は起こりませんが、画面がちらつきます
public class GUI21 {
public static final int frame_x=800,frame_y=650;
public static void main(String[] args) {
MyFrame21 frame1=new MyFrame21();
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame1.setBounds(110,50,frame_x,frame_y);
frame1.setVisible(true);
}
}
下に続く
280デフォルトの名無しさん:2005/12/11(日) 02:00:12
つづき
class MyFrame21 extends JFrame{
BufferStrategy bufferStrategy1;
BufferedImage bufferedImage1;
static int x=50,y=50;
MyFrame21(){
this.setIgnoreRepaint(true);
this.setResizable(false);
this.createBufferStrategy(2);    //ここでIllegalStateExceptionが発生
bufferStrategy1=this.getBufferStrategy();
try {
bufferedImage1=ImageIO.read(getClass().getResource("k_01.gif"));
} catch (IOException e) {
e.printStackTrace();
}
Timer timer1=new Timer();
timer1.schedule(new MyTimerTask21(),30,30);
}
281デフォルトの名無しさん:2005/12/11(日) 02:00:36
つづき
class MyTimerTask21 extends TimerTask{
MyFrame21 frame1;
public void run() {
Graphics g=bufferStrategy1.getDrawGraphics();
if(bufferStrategy1.contentsLost()==false){
g.clearRect(0,0,GUI21.frame_x,GUI21.frame_y);
g.drawImage(bufferedImage1,x,y,frame1);
y+=4;
bufferStrategy1.show();
g.dispose();
}
}

}
}
長くてすみません
282デフォルトの名無しさん:2005/12/11(日) 02:07:03
>>280
javadocくらい読んでくれ。
283デフォルトの名無しさん:2005/12/11(日) 02:11:35
ソースコードの添削などタダで人にお願いするんじゃねえぞと
284デフォルトの名無しさん:2005/12/11(日) 02:12:42
>>280
そうそう、今こそDocJarが真価を発揮するときだ
285デフォルトの名無しさん:2005/12/11(日) 02:15:35
だめな人のコードって大抵
変数名がうんち
クラス名がうんち
あとからリファクタリングできるのだから
多少長くても判り易くしようぜ
286デフォルトの名無しさん:2005/12/11(日) 02:19:38
>>280をみると、
Javadocを読んでないというよりも
どうも自分で作ったクラスの読み方をわかってないというか。
287デフォルトの名無しさん:2005/12/11(日) 02:39:45
BufferStrategy の show() メソッドを実行したら例外が発生して
そのメッセージを表示させてみたら

Buffers have not been created

と表示されたのですが、どうしてですか?
288デフォルトの名無しさん:2005/12/11(日) 02:41:07
お前の畑は豆を作ってないって意味
289デフォルトの名無しさん:2005/12/11(日) 02:43:22
配列の最大値を求めたんですけど、最大値の配列番号を知るには
どうすればいいんでしょうか?
290デフォルトの名無しさん:2005/12/11(日) 02:45:31
ary.length-1
291デフォルトの名無しさん:2005/12/11(日) 02:46:43
>>289
昇順にソートしたら、最後尾になるんでね?
292273:2005/12/11(日) 02:48:24
>>274
ここのCLASSPATHって所の末尾に;.ってつければ良いの?
何か全く上手く遺憾
ぐぐってもどこも説明が「.」を追加しろみたいってワカンネェヨ!
293デフォルトの名無しさん:2005/12/11(日) 02:49:03
>>289
java.util.Arrays#sort()
294デフォルトの名無しさん:2005/12/11(日) 02:50:39
295デフォルトの名無しさん:2005/12/11(日) 02:53:13
unsigned int32 が限界のJava longですがそれ以上はどうするの?
296273:2005/12/11(日) 02:56:01
>>294できたクララできた!ありがとう!
297289:2005/12/11(日) 03:03:12
分からないです。
こんな感じで最大値は求めました。

public static int saidai( int[] data ) {

int max = data[0];
for( int i=1; i<data.length; i++ ) {
if( data[i] > max )
max = data[i];
}
return max;
}

どうすればいいでしょうか。
298デフォルトの名無しさん:2005/12/11(日) 03:05:10
>>297
maxを入れ替えるときにiを保存しておけ
299デフォルトの名無しさん:2005/12/11(日) 03:28:38
>>295
BigInteger, BigDecimal
300デフォルトの名無しさん:2005/12/11(日) 04:05:23
>>279
どうでもいいけどさ、よほどの必要性がない限りInnerClassやめようぜ。
301デフォルトの名無しさん:2005/12/11(日) 05:04:43
どんな終了の仕方をしてもディスプレイモードを元に戻す方法はありませんか?
変な終わり方をすると再起動しないといけなくなるので
302デフォルトの名無しさん:2005/12/11(日) 06:23:31
>>297
indexだけをreturnすればいい。
303279:2005/12/11(日) 10:40:11
下の3行のframe1をthisにかえてMyFrame21クラスのコンストラクタ内に入れると例外はなくなりました
初心者なりにcreateBufferStrategy(2);メソッドは、setVisible(true); として可視状態にしてからでないと
使えないという考察をしましたが、合ってますでしょうか?

frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame1.setBounds(110,50,frame_x,frame_y);
frame1.setVisible(true);

304デフォルトの名無しさん:2005/12/11(日) 12:31:58
表示しないとバッファは作られない
というより表示準備だったかも

DirectXも表示後じゃないと駄目なんでそれでいいかと
305デフォルトの名無しさん:2005/12/11(日) 12:53:06
>>289

public int max(int[] array){
 int max = Integer.MINIMUM_VALUE;
 for(int i = 0; i < array.length; i++){
  max = Math.max(max, array[i]);
 }
 return max;
}



int[] arraySample = 最大値を求めたい配列;
int result = max(arraySample);
306デフォルトの名無しさん:2005/12/11(日) 15:25:35
最大値を求めたいのではない
ばかか?
307デフォルトの名無しさん:2005/12/11(日) 15:45:51
彼は一体、最大値を求めたいのか、
それとも最大値のindexを求めたいの
いったいどちらなのだろうか、はっきりしない。
最初は最大値を求めたいといっていたのに
こんどは最大値のindexを求めたいと主張。

さて、どっちだ?
308デフォルトの名無しさん:2005/12/11(日) 15:49:39
/**
 * 最大値のインデックスを求める.
 * @param array int[]型の配列
 * @return インデックスの最大値
 */
public static int maxIndex(int[] array){
 int max = Integer.MINIMUM_VALUE;
 int index = 0;
 for(int i = 1; i < array.length; i++){
  if(array[index] < array[i]){
   index = i;
  }
 }
 return index;
}
309デフォルトの名無しさん:2005/12/11(日) 15:51:29
>>276
Eclipseのヘルプはええぞ。
最初の起動はインデックス作成で重たいが
次回からはかなり軽くなる。
Eclipse3.1になってから大部軽くなってきた。
310デフォルトの名無しさん:2005/12/11(日) 15:53:26
>>308
先頭要素は検査しないの?
intの最小値使うとかそんなテクニックより注意すべきところはあるんじゃない?
311デフォルトの名無しさん:2005/12/11(日) 15:55:00
すまん、勘違いだ
312デフォルトの名無しさん:2005/12/11(日) 15:55:37
>307
最初からindex求めたいって言ってなかった?
313デフォルトの名無しさん:2005/12/11(日) 15:59:03
へんなロジック考えるのやめて、TreeSetに放り込めば?
314デフォルトの名無しさん:2005/12/11(日) 16:05:06
>>310
すまん、int maxはゴミだった。

>>312
 >>289の一行目で最大値を求めたいと書いてある。
だが、その後にインデックスを求めたいとも言ってる。
最大値を求めるためにインデックスをまず先に求めたいと
彼は主張している。

つまり、彼は、インデックスを求めるのが
目的ではなく最大値を求めるのが目的なのだろう。
315デフォルトの名無しさん:2005/12/11(日) 16:06:28
>>313
それもそうだな。
しかし彼が順番を意識していて、
さらに配列内に同じ値が存在することを
許すようにしないといけないとすればSetオブジェクトは使えない。
316デフォルトの名無しさん:2005/12/11(日) 16:08:52
デブがどこの家に住んでいるのか特定しろみたいなアルゴリズム
なにやら恐ろしいことを考えているようで寒気がする
317デフォルトの名無しさん:2005/12/11(日) 16:14:08
>>316
Are you デブ?
318デフォルトの名無しさん:2005/12/11(日) 16:15:27
>314
一行目のどこを見て最大値を求めたいって読めるのか教えて欲しい。
319デフォルトの名無しさん:2005/12/11(日) 16:16:24
>>317
same as you.

320デフォルトの名無しさん:2005/12/11(日) 16:18:10
デブの定義が最大値であるというなら特定は難しくない
321デフォルトの名無しさん:2005/12/11(日) 16:20:27
なるほど、配列の最大値を求めたいんですけど
ではなく配列の最大値を求めたんですけど



「い」が隠れていることに気づかなかった。
彼は、つまり、求めた配列の最大値から逆算して
インデックスを求めようとしているのか?

322デフォルトの名無しさん:2005/12/11(日) 16:21:21
既に起動しているJavaプロセスを
後から起動したJavaプロセスからアクセスするにはどうしたらいいのでしょうか。
323デフォルトの名無しさん:2005/12/11(日) 16:28:35
>>322
RMIでも使って通信してください。
324デフォルトの名無しさん:2005/12/11(日) 16:36:17
フルスクリーンモードからの復帰時に、BufferStrategy の show メソッドの部分でなぜか
IllegalStateException が数回(つまり終了前に数回呼び出されている)発生します。

また、コマンドプロンプトからフルスクリーンモードで起動させる(フレームモードとで選択可能)時、
何回かに1回程度の割合ではありますが、いきなり終了(通常画面には復元)したあと、

#
# An unexpected error has been detected by HotSpot Virtual Machine:
#
# EXCEPTION_ACCESS_VIOLATION (0Xc0000005) at pc=0x6d0b6467, pid=3496, tid=1480
#
# Java VM: Java HotSpot(TM) Client VM (1.5.0_06-b05 mixed mode, sharing)
# Problematic frame:
# C [awt.dll+0xb6467]
#
# An error report file with more information is saved as hs_err_pid3496.log
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
#

というメッセージが表示されます。
が、英語なのでまったく意味が分かりません。
何か良い対処法はありませんか?
325デフォルトの名無しさん:2005/12/11(日) 16:52:10
>が、英語なのでまったく意味が分かりません。

義務教育を受けていないという場合を除いては
そんな台詞吐く資格はない
326デフォルトの名無しさん:2005/12/11(日) 16:54:29
>>324
> が、英語なのでまったく意味が分かりません。
> 何か良い対処法はありませんか?

英語を勉強して英語力を付ける。
327デフォルトの名無しさん:2005/12/11(日) 17:03:28
>>324
外人がたむろってそうな街に行って聞いてみろよ
328デフォルトの名無しさん:2005/12/11(日) 17:05:10
フルスクリーンからの復帰時にVRAM構成が動的に変わるんで
そのままshowとかはうごかんはず

フルスクリーンにするときのたまにエラー発生&VMおちは
1.4.0からずっと今のところ改善される気配なし
ただ、タイミングがなんかあるようなのでそれ調べるといいかも
329324:2005/12/11(日) 17:08:31
>>328
回答ありがとうございます。
show の方は try-catch で無視することにします(どうせ終了時の例外なので)。
後者の方は仕方が無いのでおとなしく改善されるのを待つことにします。
330デフォルトの名無しさん:2005/12/11(日) 17:09:22
コミュニティには報告してる?
331デフォルトの名無しさん:2005/12/11(日) 17:21:46
>>330
コミュニティって何ですか?
すみません、Java の世界はまだ初心者なので・・・
332デフォルトの名無しさん:2005/12/11(日) 19:30:50
J2SE 5.0を使ってるんですが、Genericの配列ってどう定義するんですか?

こんな感じのことをしたいと思っています。

class A {
 private ArrayList<B>[] lists;

 public A(size) {
  this.lists = ArrayList<B>[size];
 }
}

このコードの5行目がEclipse3.1ではエラーになってしまいます。
Genericを使わないで、普通の配列にすれば問題ないのですが。

よろしくお願いします。
333デフォルトの名無しさん:2005/12/11(日) 19:38:23
newは?
334デフォルトの名無しさん:2005/12/11(日) 19:42:46
>>333
すみません、>>332には書き忘れてました。
ですが、ソースコード中にはきちんと書いてあります。

class A {
 private ArrayList<B>[] lists;

 public A(size) {
  this.lists = new ArrayList<B>[size];
 }
}
でした。
335デフォルトの名無しさん:2005/12/11(日) 19:59:30
>>334
それだと、AをnewするときにどうやってBに対する具象型を指定
するんでしょうか。これでわかる?
336デフォルトの名無しさん:2005/12/11(日) 20:10:30
>>334
import java.util.ArrayList;
class A {
ArrayList list;//ここも ArrayList<String> list; でもいけた
public A(int size){
list = new ArrayList<String>(size);
}
}

とりあえずこれだけではeclipse3.1ではエラーでなかったけど。
動くかどうかは知らん。
337デフォルトの名無しさん:2005/12/11(日) 20:49:27
class A{
int a;
static int s;

static void hoge(){
s = -10;
}
}

class Test{
public static void main(String args[]){
System.out.println("A.s=" + A.s);
A.hoge();
System.out.println("A.s=" + A.s);

A a = new A();

a.a = 10;
a.s = 100;

System.out.println("a.a=" + a.a + "\ta.s=" + a.s);
}
}

これの実行結果が
A.s=0
A.s=-10
a.a=10 a.s=100
になることを確認して、一行目の初期化のことを暗黙の初期化と呼ぶことは調べたんですが
暗黙の初期化とはどのような条件で発生するんでしょうか
338前スレ727=786:2005/12/11(日) 20:50:48
前スレ727=786です。
 もたもたしているうちに次スレになってしまい、報告とお礼を言いそびれました。

 結果から言いますと、作動しましたがソース全部を一旦コメントアウトして、一行ずつ戻していってエラー500が出た所を検
証するという手段で、当初設計していた機能を間引く形で作動に漕ぎ着けました。
 本当の原因は憶測の域を出ませんが、たぶんsubmitボタンで規定しているnameを引数にrequest.getParameterで取得しようとす
るとエラーになってしまう事がわかりました。
 最初の一回目の表示の際はsubmitボタンが押されていないので.getParameterができないということでしょうか。それならばXP
上でもエラーになると思うのですが、XPで走らせている時はブラウザーとサーバーが同じマシンなのでキャッシュとかの影響なの
でしょうか…そんな馬鹿な事はないと思いますが…。

前スレ733様
 ご助言ありがとうございました。
 濡ルポが出ている行がソースの中でどこにあたるのかを知るための手段がわかりませんでした。(Vineの方はものすごくスペックが
悪く、Eclipseなど作動させようものなら半日計算しているので、ブレイクポイントが設定できず、ソースを一つずつコメントから戻
して突き止めるというのでお茶を濁した)今度勉強しておきます。

前スレ742様
 ご指導ありがとうございました。
 同じディレクトリの他のサーブレットが作動したのと、そもそもここまで環境を整えたのがまぐれに近いものなので、結局環境設定
に関する知識が今のところ皆無に近いので、恐れをなして避けていたのです。これも、課題として勉強していくつもりです。

 どうもありがとうございました。

339デフォルトの名無しさん:2005/12/11(日) 21:17:44
>>334
Genericなクラスの配列は作れない。
340334:2005/12/11(日) 21:20:00
>>335-336
ありがとうございます。

「具象型の指定」と言うのがよくわからなくて、ネットで調べてみたところ、以下のサイトを見つけました。
ttp://forum.java.sun.com/thread.jspa?threadID=530823&tstart=75
ココの真ん中よりちょっと上のコメントを見て、以下のように実装したら、動作が確認できました。

class A {
 private ArrayList<B>[] lists;

 public A(size) {
  this.lists = (ArrayList<B>[])Array.newInstance(ArrayList.class, size);
  for(int i = 0; i < size; i++) this.lists[i] = new ArrayList<B>();
 }
}

リフレクションを使うところで、若干引いてしまうのですが、これ以外に方法は無いのでしょうか。
341デフォルトの名無しさん:2005/12/11(日) 21:24:19
Frame でゲームを作る場合、Frame に GraphicsConfiguration をセットした方が良いですか?
342デフォルトの名無しさん:2005/12/11(日) 21:29:08
>>340
これじゃ拙いの?
this.lists = (ArrayList<B>[]) new ArrayList[size];
343デフォルトの名無しさん:2005/12/11(日) 21:33:58
よく言われる「newする」とインスタンス化ってのは同義語なんでしょうか?
それとも微妙に違うのでしょうか?
344334:2005/12/11(日) 21:34:45
>>339
なんと、仕様なんですか。
今までGenericは直感で使ってたので、今度仕様を確認してみます。

>>342
それも試したのですが、動作は問題ないのですが、警告が出ちゃうので使用を止めました。

ともあれ、最終目標だったArrayList<B>を要素にもつ配列の配列が
 ArrayList<B>[][] table = (ArrayList<B>[][])Array.newInstance(ArrayList[].class, size);
と定義・動作確認できたので問題は解決しました。

みなさん、ありがとうございました。
345デフォルトの名無しさん:2005/12/11(日) 21:45:58
J2EEなんですが、イチからCRMっぽいアプリケーションを設計しようと思ってます。
Strutsやなんかの技術がありますが、
いまから採用するなら何がよいでしょうかねぇ。
自分のサイト用に作るんで流行とかは特別追わなくちゃいけない事はないです。
346デフォルトの名無しさん:2005/12/11(日) 22:01:59
プログラムするわけではないんですが・・質問です。

Java Runtime Environment バージョン 5.0をインストールしようとするとエラーが出ます。

このWindowsインストーラーパッケージには問題があります。セットアップの一部として実行されるプログラム
は正しく完了されませんでした。

公式にあるインストーラーすべて試しましたが、同じエラーが出るのでコチラに問題があると思います。
よろしくお願いします(´・ェ・`)
347デフォルトの名無しさん:2005/12/11(日) 22:04:34
ぬ ま

る ー る

ぽ い ん た ー
348デフォルトの名無しさん:2005/12/11(日) 22:23:49
>>346
ダウンロードにしっぱいしてるんでは?
349デフォルトの名無しさん:2005/12/11(日) 22:38:56
みんなよく知ってるな。。
350デフォルトの名無しさん:2005/12/11(日) 22:45:38
ぬ し

る び ー

ぽ け も ん
351デフォルトの名無しさん:2005/12/11(日) 23:33:52
>>270
じゃあんたが俺に分かり易く説明してくれ
スレッドは振る舞いで
実装はその内容で良いじゃないの?
352デフォルトの名無しさん:2005/12/11(日) 23:40:35
後今tomcatでファイルキャビネットとアップローダーを
作ってるんだけども
一応動くには動くけど例えば画像アップローダーみたいに
画像の一覧が出る様にするにはどうすれば良いのか
詳しい人が居たら教えてください。
アップローダーはcommon-fileupload-1.0.jarを使って作ってます。
353デフォルトの名無しさん:2005/12/12(月) 00:33:00
Exeption in thread "main" java.lang.NoClassDefFoundError
とはどういうエラーですか?
コンパイルはできるのですが実行しようとするとこのようなエラーが出てきて困っています。
354デフォルトの名無しさん:2005/12/12(月) 00:35:52
>>353
そんなクラスねーよ、名前間違ってんじゃね? というエラー
355デフォルトの名無しさん:2005/12/12(月) 00:37:43
>>354
そうですか・・・。
もう一度確認してみます。
どうもありがとうございました。
356デフォルトの名無しさん:2005/12/12(月) 00:42:13
指定された場所に行けばmainさんが居るっていうから着たのにいないじゃんかよヽ(`Д´)ノ
んでmainさんは居るにはいるんだけど、人違いというケースが多発している。
俺たちが会わなきゃいけないのはpublic static mainさん。
よく間違われる方はpublic maianさん。つまりミドルネームを持っていない。
357デフォルトの名無しさん:2005/12/12(月) 00:44:21
maian さんなど居ない。


想像だけで答えてみるけど、クラス Sample をコンパイルすると Sample.class が出来る。
これを実行する時のコマンドは 『 java Sample 』 だからな。.class は要らないからな。念のため。
358デフォルトの名無しさん:2005/12/12(月) 00:47:14
>>357
おまい以外の俺たちの心の中にいるんだよ。

あと
package hogeとしてて
/hoge >java Sampleみたくしてるとヤバイ。
359デフォルトの名無しさん:2005/12/12(月) 00:52:15
親切なエスパー募集わらた
360デフォルトの名無しさん:2005/12/12(月) 00:55:47
ClassA class = new ClassB
とあった場合
ClassBは必ずClassAの親クラスなんでしょうか?
逆に言えばClassBはClassAを継承している状態なんでしょうか?
361デフォルトの名無しさん:2005/12/12(月) 00:59:25
>>360
とりあえず、そのコードは絶対にコンパイラを通らない。
362デフォルトの名無しさん:2005/12/12(月) 01:02:00
>>360
逆だろ?機能が弱く抽象度の強いClassAが親だ。
継承クラスは子なの。
363デフォルトの名無しさん:2005/12/12(月) 01:30:00
>>360
親子というと間違えるが、そういうこと
多態とかで重要な書き方だね

>>361
うそ教えないで
364デフォルトの名無しさん:2005/12/12(月) 01:34:11
>>363
うそ教えないで……って、>>360 の一行目は変数定義&初期化文だろ?
…… ClassB の後ろに (); が付いていないのはおいとくとしても、変数名 class とかは絶対に通らない。
365デフォルトの名無しさん:2005/12/12(月) 01:35:42
Javaはゲームに向いてないのかねえ
ゲーム製作板の香具師にボロクソに言われたぞ
366デフォルトの名無しさん:2005/12/12(月) 01:37:12
>>365
WinAPIで作ったゲームよりJavaのゲームは速い。
DirectXで作ったゲームよりJavaのゲームは遅い。
つまりはそういうこと。
367デフォルトの名無しさん:2005/12/12(月) 01:38:02
Java2DはDirectX使ってるんだけどね
368デフォルトの名無しさん:2005/12/12(月) 01:40:42
VC++&DirectXってことだよ。
JavaゲームスレだとBufferedImageやVolatileImageの話題で盛り上がってる。

Javaゲームの欠点はPureJavaに拘ると
物理的なインタフェースに限りが出来ること
メモリの消費が膨大なことの2つくらい。
369デフォルトの名無しさん:2005/12/12(月) 01:43:31
>>366
API の名前だけでゲームが速くなるなら Java3D やら JOGL 使えば良い。

実際には速度なんかよりも JNI 使わんとゲームパッドからの入力が取れない方が致命的だと思うけど。
370デフォルトの名無しさん:2005/12/12(月) 01:45:01
>>368
盛り上がっているというより既出情報だけだが
371デフォルトの名無しさん:2005/12/12(月) 01:46:17
>>369
俺もパッドの2軸+4ボタンだけでいいからPureJavaでいれてほしいとずっと思っていたが
ぜんぜん実行に移さないんだよなぁ
マウスやキーボードと同じ入力デバイスなのに
372デフォルトの名無しさん:2005/12/12(月) 01:47:58
おれのパッドなんてネイティブドライバでもセレクトとスタートが受け付けないよ。
LRボタンが2対あるから手前のほうをそれに設定して代用してる。
373デフォルトの名無しさん:2005/12/12(月) 01:54:17
てかどこでバカにされてるんだ?
マ板のJava厨しかけさせてやるよ。
374デフォルトの名無しさん:2005/12/12(月) 02:16:49
BufferStrategyとTimerとGraphicsDevice(フルスク)で大抵のゲームはできる気がする
375デフォルトの名無しさん:2005/12/12(月) 02:21:12
RPGに於けるFPSコントロールのパターンを知りたいところだ。
草が揺れてるマップとかで60FPSってアホだしな。
376デフォルトの名無しさん:2005/12/12(月) 02:36:30
俺の知り合いにさ、2年前に卒業して業界入りしたのが居るんよ
こいつがさ、趣味で簡単なゲーム作ったってんで参考程度にソース見せてもらったんだよ
そしたらさ、さすがにスパゲティってほどじゃないけど酷いもんだった
Javaのソースだったんだけどさ、まずカプセル化とか基本的なことは完全無視
まとまった機能とかクラスに分けたりしないで、1つのクラス内に全部詰め込んであるんだよ
しかも変数名だけじゃなくメソッド名にまで変なローマ字使ってるし
もっと英単語使えよ英単語
綴り間違ってるのあるし
こんな読み辛いソース初めてだよ
しかも本人には分かり易いのか「どうだっ!凄えだろ!俺頭良すぎね?」って自信満々だし
ああ、別の意味で凄いよ、あんた
こんな変人でも一応先輩だしさ、「そうですね」って適当に言っといたけどさ
正直、こんなんでも動くのが不思議だった
コンピュータって凄いね
377デフォルトの名無しさん:2005/12/12(月) 02:41:09
その先輩は天才だよ。携帯アプリ市場の星になれる。
378デフォルトの名無しさん:2005/12/12(月) 04:58:29
それ以外の世界では他人に迷惑かけるだけのクズだがな
379デフォルトの名無しさん:2005/12/12(月) 05:15:48
「趣味で簡単なゲーム作った」
って言ってんだから携帯アプリ用だからそうしたんだろ

普通の市場では普通の書き方出来るんじゃないのか
380デフォルトの名無しさん:2005/12/12(月) 07:29:29
void hoge(long& num) {
++long;
}

このようなことをJavaでしたいんですけどどうすればいいでしょうか?
381380:2005/12/12(月) 07:30:21
訂正: 2行めのlong -> num
382337:2005/12/12(月) 08:13:56
自己解決しました
ご迷惑をおかけしました
自分の書き込みを改めて見てみるとスペースも改行もおかしい・・
383デフォルトの名無しさん:2005/12/12(月) 08:21:14
>>380
Javaは言語機能として参照引数みたいなものを持ってないから無理。
どうしてもやりたいなら num を参照変数にもたせ それを変える事で代用する。

具体的には
class Num{ public long num; }
void hoge(Num ref){ ref.num++; }

もしくは
void hoge(long[] num){ num[0]++; }
384380:2005/12/12(月) 09:07:59
>>383
解かりました、どうもありがとう。
385デフォルトの名無しさん:2005/12/12(月) 09:12:45
すみません、ここでいい質問なのかわかりませんが、ご存知の方がいましたらご助力願います。

現在、Javaにて携帯用の金融システムを作成しています。
130機種にてテストしてみたところ、i-modeの一部機種にて表示が正常に行われませんでした。

調べたところ、SSL通信においては、Content-Lengthを指定することにより正常に
表示させることが可能とのことでした。
そこで、response.setContentLengthでも用いて指定したく思ったのですが、
表示にJSPを使用しており、表示項目が可変のため上手く指定する方法がわかりません。
(適当な値ですと、切れるorタイムアウト待ちになってしまいますし…)

どなたか、可変表示JSPにて正確なContent-Lengthを取得する方法ご存知の方いらっしゃいましたら、
お教えください。

余談になりますが、私個人の開発環境(Eclipse+Tomcat4.1.12)ですと、
特にsetContentLengthしなくてもHTTPヘッダにはContent-Lengthが付与されているのですが、
本番準拠テスト環境(Apache+Tomcat(mod_jk2))ですとContent-Lengthが付与されていません。

サーバの設定により回避可能なのであれば、その方法をご教授ください。
以上、よろしくお願いいたします。
386デフォルトの名無しさん:2005/12/12(月) 09:26:30
387デフォルトの名無しさん:2005/12/12(月) 10:08:03
List ls = new LinkedList<Integer>();
List<Integer>sharedContentList = Collections.synchronizedList(ls);


というふうにスレッドセーフなリストをつくろうとしたんですが
コンパイルで警告([unchecked]無検査変換/無検査メソッド呼び出し)がでてしまいます

この警告がでないようにするにはどうしたらいいんでしょうか?
388デフォルトの名無しさん:2005/12/12(月) 10:21:20
> List ls = new LinkedList<Integer>();
List<Integer> ls = new LinkedList<Integer>();
389デフォルトの名無しさん:2005/12/12(月) 10:27:10
>>388
ありがとうございます
390デフォルトの名無しさん:2005/12/12(月) 12:29:05
Javaは印刷が満足に出来ないと聞いていますが、どうすればいいのでしょうか?
391デフォルトの名無しさん:2005/12/12(月) 12:58:32
諦める
392デフォルトの名無しさん:2005/12/12(月) 13:06:08
実際のところ現状対処方法はまったくなしだな
1.4.1までは動くだけに残念
393デフォルトの名無しさん:2005/12/12(月) 13:07:11
>>390

Java2Dの印刷機能じゃだめなん?
あと、こういう仕様が健闘されてたような↓
Unified Printing API (Java Print Service API)
394デフォルトの名無しさん:2005/12/12(月) 13:08:48
>>393
実は印刷サービスもPrintJobも1.4.2以降は動かないよ
395たかこ:2005/12/12(月) 14:05:57
MySQLで作ったデータベースをjavaのJTableに出力する方法がわかりません。
環境はMySQL Server4.1
JDBC mysql-connector-java-3.0.17-ga
JAVA jdk1.5.0_04
こんな感じです。
よろしくお願いします。
396デフォルトの名無しさん:2005/12/12(月) 14:17:04
JDBCでDBにつないでデータ引っ張ってきて出力するだけだろ
397デフォルトの名無しさん:2005/12/12(月) 15:04:37
>>394
動かないってのは違うだろ。
398デフォルトの名無しさん:2005/12/12(月) 15:36:16
JAVAとJavaScriptってどう違うんですか?
399デフォルトの名無しさん:2005/12/12(月) 15:44:45
うんことかりんとうぐらい違う
400デフォルトの名無しさん:2005/12/12(月) 16:07:07
すいません、標準クラスライブラリのソースはどこにあるのでしたっけ?
401デフォルトの名無しさん:2005/12/12(月) 16:11:19
JDKインストールするときに、入れるかどうか聞かれる
402デフォルトの名無しさん:2005/12/12(月) 16:14:26
ちょっとやってみます
403伝説新人タクシ:2005/12/12(月) 16:16:10
src.zip
404デフォルトの名無しさん:2005/12/12(月) 16:44:45
>>399
どっちがどっちなんですか?
405デフォルトの名無しさん:2005/12/12(月) 16:45:49
>>398
ソバと中華ソバくらい違う
406デフォルトの名無しさん:2005/12/12(月) 16:55:20
>>397
動くけど5.0や1.4.2は使い物にならないが正解
日本語使わなければ問題でないからね
407デフォルトの名無しさん:2005/12/12(月) 18:30:08
ゲーム画面のサイズって

Width=640/Height=480

がデフォですか?
408デフォルトの名無しさん:2005/12/12(月) 18:30:52
そんなこと無いさ
409デフォルトの名無しさん:2005/12/12(月) 18:54:32
>>407
マインスイーパーを見てみろ
410407:2005/12/12(月) 18:58:09
フルスクリーンにする場合っす
411デフォルトの名無しさん:2005/12/12(月) 19:01:58
フルスクリーンでWidth=640/Height=480
っていつの時代だよ
412デフォルトの名無しさん:2005/12/12(月) 20:11:08
やっぱWidth=320/Height=240がトレンドだよな
413デフォルトの名無しさん:2005/12/12(月) 20:35:21
配列に3,4,1,2,6,5,10,9,7,8が入ってます。
二番目に大きい値と二番目に小さい値を入れ替えて、配列を表示させる。
どうしてもアルゴリズムが思いつかないので、お願いします。
414デフォルトの名無しさん:2005/12/12(月) 20:43:57
>>413
別の配列にコピーしてソートして、必要な値を求めてから
もとの配列での位置を調べたら?
415デフォルトの名無しさん:2005/12/12(月) 20:53:00
ソートして、必要な値は求めることは出来ているんですが、
その後が分からないんです。
416デフォルトの名無しさん:2005/12/12(月) 21:02:40
>>415
そこまでやってるのに、何がわからんのかわからん
417デフォルトの名無しさん:2005/12/12(月) 21:04:31
いきなりすごいアルゴリズムなんて考えなくていいんじゃないの?
ソートできてるのなら、対象となる二つの値がわかる。
元の配列から二つの値のインデックスを探す。
二つの値を入れ替える。

ここまで恥ずかしがらずにベタに考える。
で、それが気に入らなければ、使えるAPIがあるか調べればいい。
418デフォルトの名無しさん:2005/12/12(月) 21:11:48
>>411-412
初心者の自分に教えて欲しいのですが、フルスクリーンの時の横幅が320の倍数に、
縦幅が240の倍数になっているのにはどういった理由があるのですか?
419デフォルトの名無しさん:2005/12/12(月) 21:14:05
>>418
332の倍数や238の倍数だと嫌でしょ?
420デフォルトの名無しさん:2005/12/12(月) 21:15:44
ブラウン管の横縦比が4:3だからじゃね?( ^ω^)
421デフォルトの名無しさん:2005/12/12(月) 21:16:01
>>413
最大値検索の応用で簡単にできるよ
配列の最初から最後まで一回転させて、
一番目に大きな数のインデックス、
二番目に大きな数のインデックス、
三番目に大きな数のインデックスを記録すれば良いんだ
そんで二番目に大きな数のインデックスと
三番目に大きな数のインデックスを基に入れ替えを行えば良い
422421:2005/12/12(月) 21:16:44
すまん・・・
質問を読み間違えた・・・
逝ってくるわ・・・
423デフォルトの名無しさん:2005/12/12(月) 21:18:10
>>420
液晶ディスプレイでもそれが当てはまりますか?
424デフォルトの名無しさん:2005/12/12(月) 21:20:06
>>423
ものによる。
最近は5:4があったり、ワイドがあるけどね。
425デフォルトの名無しさん:2005/12/12(月) 21:24:03
ありがとうございます。アルゴリズムは分かりました。
しかし 元の配列から二つの値のインデックスを探す。
     ↑これができないです・・・。
426デフォルトの名無しさん:2005/12/12(月) 21:25:07
>>418
Width=800/Height=600とかWidth=1024/Height=768が
320や240の倍数だとは知らなかったよ。どこの世界の話ですか?
427デフォルトの名無しさん:2005/12/12(月) 21:25:49
>>426
初心者に絡んで楽しい?
428デフォルトの名無しさん:2005/12/12(月) 21:26:48
>>413
適当に書いたけど、以下のような感じにすれば
ソートもいらないし、ループも一回ですむとおもう。
コンパイルしてないから動作は未確認。

int[] array = { 3,4,1,2,6,5,10,9,7,8};
int max1, max2, min1, min2, temp;

for (int i = 0; i < array.length; i++) {
if (array[max1] == 0) {
max1 = i;
} else if (array[max1] < array[i]) {
max2 = max1;
max1 = i;
} else if (array[max2] < array[i]) {
max2 = i;
}
if (array[min1] == 0) {
min1 = i;
} else if (array[min1] > array[i]) {
min2 = min1;
min1 = i;
} else if (array[min2] > array[i]) {
min2 = i;
}
}
temp = array[max2];
array[max2] = array[min2];
array[min2] = array[max2];
429Java初心者:2005/12/12(月) 21:30:15
えーと、つまり、>>420氏の言うように4:3になっていれば基本的にOKって事ですか?
430428:2005/12/12(月) 21:32:58
あ、少なくとも最後の行は間違った。

array[min2] = temp;
431デフォルトの名無しさん:2005/12/12(月) 21:35:59
String a = "2005年12月1日"
String b = "2005年12月22日"
こうある場合

String cに手入力させた日付を代入してその日付が上記の間の日付
(たとえば"2005年12月11日"など)
だった場合○

それ以外の日付("2005年11月30日以前"、"2005年12月23日以降")
がだった場合×を出力させたいのですが
こういった処理は可能なんでしょうか?
432デフォルトの名無しさん:2005/12/12(月) 21:37:15
出来ないと思う理由は・・・
433428:2005/12/12(月) 21:39:12
>431
手入力させなきゃいいじゃん
434デフォルトの名無しさん:2005/12/12(月) 21:42:39
>>431みたいなのってjava.util.Dateオブジェクトにして
比較するとかできるのかなあ
435428:2005/12/12(月) 21:44:11
>>434
できる気がするけど、手を動かす気なしw
436デフォルトの名無しさん:2005/12/12(月) 21:45:28
>>431
20051201 といった単純な形式で入力させれば簡単
437デフォルトの名無しさん:2005/12/12(月) 21:45:51
>>429
8の倍数。
つシフト演算。Javaとは関係ない。
438デフォルトの名無しさん:2005/12/12(月) 21:46:00
>>430
できました。他の方法でもできるように努力してみたいと思います。
みなさんありがとうございました。
439デフォルトの名無しさん:2005/12/12(月) 21:56:50
>>436
具体的に教えてください
440デフォルトの名無しさん:2005/12/12(月) 22:02:46
http://page.freett.com/kb100000/J3DApp.java
を、javac J3DApp.javaでコンパイルすると
たくさんエラーが出てしまいます。なぜでしょうか??
441デフォルトの名無しさん:2005/12/12(月) 22:08:48
クラスライブラリがないんだろ
442デフォルトの名無しさん:2005/12/12(月) 22:12:57
perlでいうところのsleepをしたいのですがどうすればいいですか?
443デフォルトの名無しさん:2005/12/12(月) 22:14:57
>>436じゃないけど、この形式なら数値の大小で判定できるってことだね
int val = Integer.parseInt(inputData);

if (20051201 <= v && v <= 2005122) System.out.println("○");
else System.out.println("×");
444デフォルトの名無しさん:2005/12/12(月) 22:16:09
2chでいうところの厨房に質問する前にググらせたいのですがどうすればいいですか?
445JAVA初心者440:2005/12/12(月) 22:23:16
>>441
http://aomori.cool.ne.jp/jmasa/main_0_1.htmlの
import java.awt.event.*;
import java.awt.image.*;
import java.beans.*;
import java.io.*;
import java.lang.*;
import java.applet.*;

をつけてもエラーが40でてしまいました。
どのようなクラスライブラリをつければいいのでしょうか?

J3DApp.java:75: シンボルを見つけられません。
シンボル: クラス ColorCube
場所 : J3DApp の クラス
return new ColorCube(0.4);
^
J3DApp.java:78: シンボルを見つけられません。
シンボル: クラス MainFrame
場所 : J3DApp の クラス
new MainFrame( new J3DApp(), 400, 400 );
446デフォルトの名無しさん:2005/12/12(月) 22:28:03
JavaでWindows上のファイルを移動させるには、
元ファイル読込み

移動先フォルダに新しいファイル作成

元ファイル削除

こうゆうやり方なんですか?

直接移動させるようなメソッドとかないんですか?
447442:2005/12/12(月) 22:28:08
>>444
それ私に言ってます?ググってもわからないので聞いてます。
今実行してるスレッドを取得すればいいようですが私にはさっぱりわかりません。
448デフォルトの名無しさん:2005/12/12(月) 22:28:55
449デフォルトの名無しさん:2005/12/12(月) 22:30:47
>>446
Windows に限らず File#renameTo(File) を試して、失敗したら >>446 の移動。
450デフォルトの名無しさん:2005/12/12(月) 22:32:04
451デフォルトの名無しさん:2005/12/12(月) 22:34:18
足りないクラスライブラリを特定するのに以下のサイトは便利だぞ。

http://www.jarhoo.com/
452デフォルトの名無しさん:2005/12/12(月) 22:36:14
>>447

try {
Thread.currentThread().sleep(10000);
} catch (IntrruptedException ex) {}
453442:2005/12/12(月) 22:41:29
>>452
ありがとうございます。できました。
454JAVA初心者440&445:2005/12/12(月) 22:57:08
451さんのサイトから検索してj3d-core-utils-1.3.1.jarなどの
クラスライブラリいれてみましたが、同じエラーでした・・。
455デフォルトの名無しさん:2005/12/12(月) 22:57:33
>>431,434,436
SimpleDateFormat一個作るだけの話だろ。
456デフォルトの名無しさん:2005/12/12(月) 23:02:17
要素数が4つのbyte配列があって、これをintに変換するにはどうすればいいですか?
457デフォルトの名無しさん:2005/12/12(月) 23:02:51
>>454
jarファイルへのクラスパスの指定した?
458デフォルトの名無しさん:2005/12/12(月) 23:06:04
>>456
エンディアンはどっち?
459456:2005/12/12(月) 23:08:42
>>458
BIG_ENDIANです。
460446:2005/12/12(月) 23:09:09
>>449-450
ありがとうございます。無事できました。(´・∀・`)
461JAVA初心者440&445:2005/12/12(月) 23:09:58
>>457
PATH C:\WINDOWS;C:\WINDOWS\COMMAND;C:\jdk1.5.0_05\bin
JAVA_HOME C:\jdk1.5.0_05
CLASSPATH .;C:\jdk1.5.0_05\lib\tools.jar
前設定したままなんですけど、これじゃダメですかね。ウィンドウズMEです。
みなさんのパソコンでは実行できますか??
462JAVA初心者440&445:2005/12/12(月) 23:13:44
ちなみに最初のほうにでるエラー
J3DApp.java:5: パッケージ javax.media.j3d は存在しません。
import javax.media.j3d.*;
^
J3DApp.java:6: パッケージ javax.vecmath は存在しません。
import javax.vecmath.*;
^
J3DApp.java:7: パッケージ com.sun.j3d.utils.universe は存在しません。
import com.sun.j3d.utils.universe.*;
^
J3DApp.java:8: パッケージ com.sun.j3d.utils.geometry は存在しません。
import com.sun.j3d.utils.geometry.*;
^
J3DApp.java:9: パッケージ com.sun.j3d.utils.applet は存在しません。
import com.sun.j3d.utils.applet.MainFrame;
^
J3DApp.java:10: パッケージ com.sun.j3d.utils.behaviors.mouse は存在しません。
import com.sun.j3d.utils.behaviors.mouse.*;
^
J3DApp.java:11: パッケージ com.sun.j3d.utils.behaviors.keyboard は存在しません。

import com.sun.j3d.utils.behaviors.keyboard.*;

実験書はこれです。。http://page.freett.com/kb100000/-5.doc
463デフォルトの名無しさん:2005/12/12(月) 23:19:45
>>461
Java3Dのライブラリの説明書に何か書いてなかった?
〜.jarをクラスパスに追加しろとか。
464デフォルトの名無しさん:2005/12/12(月) 23:22:47
>>463
SunのJava3Dはjre/lib/extにjarを追加するタイプだから、まともに
インストールされていればクラスパスを自分で設定する必要はないはず。
465デフォルトの名無しさん:2005/12/12(月) 23:23:17
>>456
こんなかんじ?

class Foo {
public Foo() {
byte[] elem = {0x0, 0x1, 0x2, 0x3};

int x;

x = ((int)elem[3] << 24) | ((int)elem[2] << 16) | ((int)elem[1] << 8) | (int)elem[0];
System.out.printf("%x %n", x);
}
public static void main(String[] args) {
Foo foo = new Foo();
}
}
466456:2005/12/12(月) 23:31:23
>>465
うまくいきました。
わざわざコード書いていただいてどうもありがとうございます。
467デフォルトの名無しさん:2005/12/13(火) 00:17:09
>>465
シフト演算時にintになるのでintキャストはいらない。
逆に0xffとのビットマスクが必要。465のコードだとbyteの負数がないからOKだけど。
468デフォルトの名無しさん:2005/12/13(火) 00:51:48
jarファイル中のファイルにアクセスするには、
どう指定すればいいのでしょうか?
例えば、sample.jar中の
com/test/test.propertiesにアクセスしたいとして、
FileInputStream fis = new FileInputStream("com/test/test.properties");
としてもダメですよね・・・。
469デフォルトの名無しさん:2005/12/13(火) 00:56:47
プログラムを出来るだけいじらないのならクラスパスに追加が一番楽かな
470デフォルトの名無しさん:2005/12/13(火) 01:42:58
>>468
つ ClassLoader#getResourceAsStream
471デフォルトの名無しさん:2005/12/13(火) 02:43:50
ResourceBundleならResourceBundle.getBundle("com.test.test")でいける。
472468:2005/12/13(火) 08:30:16
>>469-471
ありがとうございます。
使用するクラスとメソッドを教えて頂いたので、
あとはJavaDocで何とかなりそうです。
473デフォルトの名無しさん:2005/12/13(火) 15:46:44
>>376
昔のCOBOLerにそっくりだが
携帯電話開発者みたいな先輩だな。携帯開発ならありえる話だし。
そのコード、Eclipse + Checkstyle + FindBugsで
警告設定全部オンにしたらすごいことになりそうだな。
警告数が何万件にもなるぞ。
474デフォルトの名無しさん:2005/12/13(火) 15:54:23
>>464
しっかしそれってかなり曲者なんだよね
JDKアップデートしたら無効になりやがるし。

j3d.jarをApache Mavenでダウソできるようにしたほうがまし。
Maven Repo Searchで検索して
Java 3D APIの情報を取得して<dependency>タグに追加して
maven実行するだけのほうがJava3DAPIをSunからダウソするよりも開発が楽。
475デフォルトの名無しさん:2005/12/13(火) 15:54:31
>>399
ワラタ
それにしてもJava花林糖旨いな
ウンコScriptは勘弁してほすぃ

476デフォルトの名無しさん:2005/12/13(火) 15:54:42
>>390
PDF生成APIをダウソして使いなさい
477デフォルトの名無しさん:2005/12/13(火) 15:55:18
だれかさ、package-info.javaの書き方わかる香具師いない?
パッケージにアノテーション定義する方法がわからなくて。

これがあるとパッケージ用ドキュメントとしてpackage.html
もいらなくなってしまうのか?
478デフォルトの名無しさん:2005/12/13(火) 16:00:22
>>476
pdfを生成した後それを開いて印刷するにはどうしたらいいのでしょうか
479デフォルトの名無しさん:2005/12/13(火) 16:05:12
Adobe社のサイトへGO!
480デフォルトの名無しさん:2005/12/13(火) 16:26:01
AdobeReaderではまともに印刷できないのですね
ありがとうございました

Java単体では結局印刷系無理なようですので
JNIでやりたいと思います
481デフォルトの名無しさん:2005/12/13(火) 16:47:00
自分でPS吐くライブラリ作ればいいんじゃね?
482デフォルトの名無しさん:2005/12/13(火) 16:49:34
pdfと同じくpsはいたあとが問題なのでは?
483デフォルトの名無しさん:2005/12/13(火) 19:07:00
charAt以外のStringのメソッドを使わずに文字列の文字数を調べる方法ってありますか?
ご教授願います。
484デフォルトの名無しさん:2005/12/13(火) 19:13:59
>>480は誰も言ってないことを勝手に理由にして結論を出して何がしたいんだろう?
485デフォルトの名無しさん:2005/12/13(火) 19:41:02
>>483
length() じゃだめなん?
486デフォルトの名無しさん:2005/12/13(火) 19:46:12
>charAt以外のStringのメソッドを使わずに
って
charAtを使って
と同意
487デフォルトの名無しさん:2005/12/13(火) 19:56:07
>>483
先頭からインデックスを1つずつ増やしていってcharAtで文字をとりだしていって
IndexOutOfBoundsExceptionが投げられたらおわりなんで
そのときのインデックスを見る
488デフォルトの名無しさん:2005/12/13(火) 20:02:39
>>485
宿題でしょ
489デフォルトの名無しさん:2005/12/13(火) 20:08:56
>>484
1.3.1などにバージョン下げれば解決しますね
490デフォルトの名無しさん:2005/12/13(火) 20:14:40
>>489
ところで「AdobeReaderではまともに印刷できない」って誰が言ってるの?
491デフォルトの名無しさん:2005/12/13(火) 20:17:00
AdobeReaderを立ち上げないで印刷ができない
492デフォルトの名無しさん:2005/12/13(火) 20:19:56
CSSでがんばれば
493デフォルトの名無しさん:2005/12/13(火) 20:21:38
Appletを作ってるのですが、
Hoge.java
をコンパイルすると、
Hoge.class
の他に
Hoge$1.class
Hoge$2.class
Hoge$3.class
...
とたくさんclassファイルが作られて、全部サーバに上げないと
Appletが動いてくれません。
全部、
Hoge.class
の中にまとめる方法ってないのでしょうか?
494デフォルトの名無しさん:2005/12/13(火) 20:25:15
ない。
495デフォルトの名無しさん:2005/12/13(火) 20:27:54
>>493
ファイル一つにまとめたいなら jar にすればいい。
Hoge.class だけにしたいなら、局所クラスや無名クラスを含む メンバ型を使用するのを止めろ。
496デフォルトの名無しさん:2005/12/13(火) 20:29:14
すいません質問なんですが、

imageIO で tga ファイルって読み書き共にサポートされてないですよね?
どうしても targa ファイルを読み書きするアプリケーションを作る必要性に駆られたのですが、
この場合は自分で java.ImageIO プラグインを作成するしかないのでしょうか?
497デフォルトの名無しさん:2005/12/13(火) 20:31:44
>>494
がーん、ないんですか・・・orz
>>495
jarとか、局所クラスとか無名クラスとかよく分かってないでの
勉強してみます。さんくすでした。
498デフォルトの名無しさん:2005/12/13(火) 20:32:55
GNU Classpath の ImageIO には tga の読み書きサポートがあったような気がする。

http://developer.classpath.org/doc/javax/imageio/package-summary.html
GPL に感染するけど。
499デフォルトの名無しさん:2005/12/13(火) 20:40:54
>>498
レスサンクスです。
検索したら targa の仕様書を見つけたのですが、もし自分で全部 targa のプラグインを作成した場合
TrueVision 社の了解を得ずに配布してもいいんですよね?
500デフォルトの名無しさん:2005/12/13(火) 20:47:48
>>496
これはビットマップフォーマットの例だけど
こんなかんじで、targaフォーマットを調べて自分で処理を書くしかなさそうだね
ttp://www.sm.rim.or.jp/~shishido/jbmp.html
501デフォルトの名無しさん:2005/12/13(火) 20:51:39
>>500
こんなのがありました。targa ver2.0 の仕様書。

ttp://www.fine-view.com/jp/lab/doc/targa.pdf
502デフォルトの名無しさん:2005/12/13(火) 20:53:03
JTreeについて質問です。
以下のソースなんですが、ActionListenerの中身を
AbstractActionをextendsしたHogeクラスで動かすにはどうすればいいですか?
少しやってみたんですが、できませんでした。

import java.awt.*;
import javax.swing.*;

public class JTree03 {
  JFrame frame;
  Container cont;
  JScrollPane scrpane;
  JButton button;
  
  JTree tree;
  DefaultTreeModel model;
  DefaultTreeCellRenderer renderer;
  DefaultMutableTreeNode nodeRoot;
  DefaultMutableTreeNode nodeA;
  DefaultMutableTreeNode nodeA1;
  DefaultMutableTreeNode nodeA2;
  DefaultMutableTreeNode nodeB;
  DefaultMutableTreeNode selectNode;
  
  public JTree03(){
    nodeRoot = new DefaultMutableTreeNode("root");
    nodeA = new DefaultMutableTreeNode("nodeA");
    nodeA1 = new DefaultMutableTreeNode("nodeA1");
    nodeA2 = new DefaultMutableTreeNode("nodeA2");
    nodeB = new DefaultMutableTreeNode("nodeB");
503デフォルトの名無しさん:2005/12/13(火) 20:53:09
504502続き:2005/12/13(火) 20:53:27
    nodeA.add(nodeA1);
    nodeA.add(nodeA2);
    
    nodeRoot.add(nodeA);
    nodeRoot.add(nodeB);
    
    model = new DefaultTreeModel(nodeRoot);
    
    tree = new JTree(model);
    
    button = new JButton("add");
    button.addActionListener(al);
    frame = new JFrame("Frame");
    scrpane = new JScrollPane(tree);
    cont = frame.getContentPane();
    cont.add(scrpane, BorderLayout.CENTER);
    cont.add(button, BorderLayout.SOUTH);
    frame.setBounds(50,50,200,150);
    frame.setVisible(true);
  }

  public static void main(String[] args){
    JTree03 jtree03 = new JTree03();
  }
505502続き:2005/12/13(火) 20:54:02

  
  ActionListener al = new ActionListener(){
    public void actionPerformed(ActionEvent arg0) {
      TreePath treePath = tree.getSelectionPath();
      if(treePath==null){
        return;
      }
      
      Object obj = treePath.getLastPathComponent();
      selectNode = (DefaultMutableTreeNode)obj;
      
      selectNode.add(new DefaultMutableTreeNode("add"));
      model.reload();
    }
  };
}

なんか宿題くさい質問ですみませんが…よろしくお願いします。
506デフォルトの名無しさん:2005/12/13(火) 20:58:59
>>502
> 少しやってみたんですが、できませんでした。

具体的に何をやってみてどうなったのか
507502:2005/12/13(火) 21:09:26
>506
あ、ごめんなさい。
AbstractActionをextendsしてHogeというクラスを作ったんです。
で、>505の中身をそのまんま移し変えてみて、
>504のbuttonに付加させたんですが、押しても反応がありません。

Hogeクラスの中にSystem.out.print("hoge");とか書いて
様子を伺ってみたんですが、hogeと鳴いてくれないんです。
AbstractActionの理解が薄いせいだと思うんですが、対処法を教えてください。
508デフォルトの名無しさん:2005/12/13(火) 21:09:29
>>503
ありがとうございます。
そうか、JIMI を使えば地味に読めるんですね! 気付かなかった。

さっそくやってみようと思います。




(それにしても AWT/Swing といい、なんでこう sun は仕様の乱立が好きなのかなぁ…)
509デフォルトの名無しさん:2005/12/13(火) 21:25:01
Timer についてなのですが、あれって一時停止できないですよね?
なので、一度完全に破棄して再生成しようと考えています
そこで質問なのですが、その破棄のときに

this.timer.cancel();
this.timer = null;          ←コレ
this.timer = new Timer();

“コレ”のように cancel メソッド呼び出しだけでなく null 代入もした方が良いでしょうか?
それともメソッド呼び出しだけでもガベージコレクションの対象になるのでしょうか?
510デフォルトの名無しさん:2005/12/13(火) 21:40:43
null 代入は要らない。っていうか余計。
511デフォルトの名無しさん:2005/12/13(火) 21:45:11
ありがとうございます。
cancel メソッドで null になっているってことですか?
512デフォルトの名無しさん:2005/12/13(火) 21:53:20
Java言語で学ぶデザインパターン入門にこんなソースコードサンプルが
interface Sorter {
 pulblic void sort(final Comparable[] data);
}
public class InsertSorter implements Sorter {
 public final void sort(final Comparable[] data) {
 for (int i = 0; i < data.length - 1; i++) {
  for (int j = i + 1; j < data.length; j++) {
   Comparable dataI = data[i];
   Comparable dataJ = data[j];
   if (dataI.compareTo(dataJ) > 0) {
    Comparable passingplace = data[i];
    data[i] = data[j];
    data[j] = passingplace;
   }
   }
  }
 }
}

しかし、compareTo()のところでこんな警告が・・・

型の安全性: メソッド compareTo(Object) は raw 型 Comparable に属しています。 総
称型 Comparable<T> への参照はパラメーター化される必要があります。

どこをパラメータ化すればいいんだろう・・・・
513デフォルトの名無しさん:2005/12/13(火) 21:56:27
Eclipseが最近おもたい・・・・・



ちょっと修正して保存するだけでなんで2分も砂時計に
またされなきゃならないんだ畜生!!!!!
514デフォルトの名無しさん:2005/12/13(火) 22:00:12
515デフォルトの名無しさん:2005/12/13(火) 22:01:57
コードを以下のように書き換えたが・・・
public interface Sorter<T> {
 void sort(final Comparable<T>[] data);
}

public class InsertSorter<T> implements Sorter<T> {
 public final void sort(final Comparable<T>[] data) {
  for (int i = 0; i < data.length - 1; i++) {
   for (int j = i + 1; j < data.length; j++) {
    Comparable<T> dataI = data[i];
    Comparable<T> dataJ = data[j];
    if (dataI.compareTo(dataJ) > 0) {
     Comparable<T> passingplace = data[i];
     data[i] = data[j];
     data[j] = passingplace;
    }
   }
  }
 }
}
こんなメッセージが

型 Comparable<T> のメソッド compareTo(T) は引数 (Comparable<T>) に適用できま
せん。


ダメだ・・・
516デフォルトの名無しさん:2005/12/13(火) 22:15:27
コードをこのように変更した。

スーパークラス:
<T extends Comparable> void sort(final T[] data);

サブクラス:
 public final <T extends Comparable> void sort(final T[] data) {
  for (int i = 0; i < data.length - 1; i++) {
   for (int j = i + 1; j < data.length; j++) {
    T dataI = data[i];
    T dataJ = data[j];
    if (dataI.compareTo(dataJ) > 0) {
     T passingplace = data[i];
     data[i] = data[j];
     data[j] = passingplace;
    }
   }
  }
 }

だが警告は最初の
型の安全性: メソッド compareTo(Object) は raw 型 Comparable に属しています。 総
称型 Comparable<T> への参照はパラメーター化される必要があります。
で何も変わってない・・・
どうすればいいんだ・・・
517デフォルトの名無しさん:2005/12/13(火) 22:16:10
public static interface Sorter {
 public <T extends Comparable<T>> void sort(T[] data);
}
public static class InsertSorter implements Sorter {
 public final <T extends Comparable<T>> void sort(final T[] data) {
  for (int i = 0; i < data.length - 1; i++) {
   for (int j = i + 1; j < data.length; j++) {
    T dataI = data[i];
    T dataJ = data[j];
    if (dataI.compareTo(dataJ) > 0) {
     T passingplace = data[i];
     data[i] = data[j];
     data[j] = passingplace;
    }
   }
  }
 }
}
518デフォルトの名無しさん:2005/12/13(火) 22:19:44
>>511
そんなわけは無い。
とりあえず、変数というものがどういうものか分かってない気がする。がんがれ。

オブジェクトは、使われなくなったら勝手に消えていく。
直後で新しい Timer を代入しているのに、わざわざ null を代入する必要が無い。
519デフォルトの名無しさん:2005/12/13(火) 22:24:49
>>512
dataI と dataJ を持ってるなら
入れ替えは data[i] = dataJ; data[j] = dataI; で良いんじゃないか
520デフォルトの名無しさん:2005/12/13(火) 22:52:39
半角スペース

 全角スペース
521デフォルトの名無しさん:2005/12/13(火) 22:53:57
javaっていつからテンプレート対応になったの?
522デフォルトの名無しさん:2005/12/13(火) 22:55:20
>>518
あ、確かにそうですね
すみません、“参照”について勉強し直します
523デフォルトの名無しさん:2005/12/13(火) 22:57:39
>>521
generics正式対応は去年の終わりごろの JDK5.0 から。
そういえば、もう1年以上経つのか。
524デフォルトの名無しさん:2005/12/13(火) 22:58:53
既存のクラスAを継承して、最初から自分が使いやすい設定されているクラスBを作成したとします
この場合、BはAを拡張したものであると言っても良いのですか?
それとも、何かしら機能(メソッド)を追加しないと「拡張」とは言わないのですか?
525デフォルトの名無しさん:2005/12/13(火) 23:01:13
それが何か?
526デフォルトの名無しさん:2005/12/13(火) 23:03:20
>>524
class B extends A の extends を直訳すれば拡張。
527デフォルトの名無しさん:2005/12/13(火) 23:13:59
ということは、

public class B extends A {
}

のように何も変更されていない無意味なクラスBでも
Java的にはAを拡張していることになるのですか?
528デフォルトの名無しさん:2005/12/13(火) 23:42:57
うん。そもそも B 自体が変更。
529デフォルトの名無しさん:2005/12/14(水) 00:06:41
>>527
> Java的にはAを拡張していることになるのですか?
「Java的」を定義してくれないと答えられません。
530デフォルトの名無しさん:2005/12/14(水) 00:07:36
言葉遊びだな
531デフォルトの名無しさん:2005/12/14(水) 00:25:46
javaってCで書かれてるんでしたっけ?
532デフォルトの名無しさん:2005/12/14(水) 00:26:58
>>531
はい。
533デフォルトの名無しさん:2005/12/14(水) 00:54:08
Rubyで書かれてるのとかもあったな
534デフォルトの名無しさん:2005/12/14(水) 01:15:56
Genericsが出てから1年経ったもののGenericsのノウハウが少ないからなのか
このスレではGenericsのことをわかっている者はまだまだ少ないか
535デフォルトの名無しさん:2005/12/14(水) 01:22:21
>>512
Genericsがわからないのなら1.4互換でコンパイルしようぜ
536デフォルトの名無しさん:2005/12/14(水) 01:35:02
できればGenericsを使いたいのでそれは却下したい。
なぜならGenericsによって型安全性が保証され
かつクラス検索の手間を省けることにより
パフォーマンスがあがるから使いたいのだが。

しれに1.4にダウングレードしたらさらにパフォーマンスが下がる。
537デフォルトの名無しさん:2005/12/14(水) 01:36:28
>>521
Java GenericsはC++templateとは同義じゃないぞ
538デフォルトの名無しさん:2005/12/14(水) 01:37:11
JavaDocを見ると癖が分かるよ
インタフェース Comparable<T>
みたいにね。何をしなきゃいけないのか、もうわかったな?
539デフォルトの名無しさん:2005/12/14(水) 01:44:48
>>536
Javaでもパフォーマンス向上されるの?
仕事は1.4メインだからほとんど1.5の情報知らないんだけど、
JavaのGenericsってコンパイル時の型チェック程度じゃないんだっけ?
違ってたらごめん
540デフォルトの名無しさん:2005/12/14(水) 01:48:58
ソースはそのままで最新バージョンでコンパイルすると速度がぐんとあがるってこともあるんでないかな。
541デフォルトの名無しさん:2005/12/14(水) 02:02:13
>>540
それはGenericsと関係ないよね。

>なぜならGenericsによって型安全性が保証され
>かつクラス検索の手間を省けることにより
>パフォーマンスがあがるから使いたいのだが。

この最後のパフォーマンスが上がるってのがよくわからない。
これはGenericsを使ってるから向上したのではなく、
VMのバージョンがあがったからではないの?

JavaのGenericsってコンパイル後は型情報はバイトコードから削除されるよね?
なんで、たとえばコレクションフレームワーク系では最終的なバイトコードって
Objectを引数とする、従来のものと同じになる。(互換性のため)


C++の場合は、コンパイル時に型情報が埋め込まれる(インライン化)されるから
パフォーマンス向上はあるけど。その代わり、指定した型の数だけテンプレートが
展開され、バイナリが大きくなってしまうけど。
542デフォルトの名無しさん:2005/12/14(水) 02:06:37
いろいろ書いたけど、どうでもいいや。
パフォーマンスが向上されると思ってがんばってGenericsを勉強してください。
陰ながら応援しています。>>536
543デフォルトの名無しさん:2005/12/14(水) 02:11:38
>>538
試行錯誤を練っているのだが、
引数にComparableオブジェクト
入れるのを諦めてComparale<T>#compareTo(T t)
をオーバライドしたメソッドを実装させるしかなさそう
なのか・・・。思った通りには行かないようだ。


>>539
コレクション系クラスを使用するとき
取り出した型をObjectから目的の型へダウンキャストの手間が省けることは
パフォーマンス向上につながる。
JVM自体もTigerからはかなり速くなってEclipseの起動速度も速くなった。
544デフォルトの名無しさん:2005/12/14(水) 02:11:50
Genericsでどこがどう性能向上するんだYO!!!
545デフォルトの名無しさん:2005/12/14(水) 02:12:00
ばかだな、彼は綺麗なコードを書くことによる、トータルパフォーマンス最適化論者なんだよ。
コーナーの立ち上がりが最速な奴がトータルで速いんだ。
546デフォルトの名無しさん:2005/12/14(水) 02:13:14
キャストのコストは高い
だからGenericsを使えば速くなることがあることは間違いない
547デフォルトの名無しさん:2005/12/14(水) 02:13:29
>>543
してるよ。キャスト。Genericsってね、早い話がプリプロセッサなんだよ。
バイトコードのどこにもGenerics構文独自の要素は出てこない。
548デフォルトの名無しさん:2005/12/14(水) 02:13:30
>>543
>取り出した型をObjectから目的の型へダウンキャストの手間が省けることは
バイトコードからダウンキャスト相当の命令がなくなるってこと?
549デフォルトの名無しさん:2005/12/14(水) 02:14:02
>>545
だからキャストだと何度いったら
550デフォルトの名無しさん:2005/12/14(水) 02:15:24
>>547
そうなんだ。正式版が出る前は層だったと聞いたけど
正式版が出てからTigerでコンパイルされたバイトコードには
何か変化が現れたらしい。
551デフォルトの名無しさん:2005/12/14(水) 02:16:59
JVMを本格的にいじるのは6.0からで、5.0は1.4をちょこちょこ触っただけじゃない?
552デフォルトの名無しさん:2005/12/14(水) 02:20:05
総称は「型消去」によって実装されます。総称情報は、コンパイル時にしか存在せず、
コンパイル後はコンパイラによって「消去」されます。このアプローチの主な利点としては、
総称コードと、パラメータ化されていない型 (技術的には「raw」型と呼ばれる) を使用する
レガシーコードとの間に、総合的な相互運用性が実現する点です。主な欠点としては、
パラメータの型情報を実行時に利用できない点と、動作が適切でないレガシーコードと
相互運用すると、自動的に生成されたキャストが失敗するおそれがある点です。しかし、
動作が適切でないレガシーコードと相互運用するときも、総称コレクションに対して実行時の
型の安全性が保証されます。


↓抜粋;つまり、キャストは自動的に生成されるのだよ。

パラメータの型情報を実行時に利用できない点と、動作が適切でないレガシーコードと
相互運用すると、自動的に生成されたキャストが失敗するおそれがある点です。
553デフォルトの名無しさん:2005/12/14(水) 02:20:15
>>548
ArrayListに型を入れたいとき、複数の型を指定できる。
だが入れたい型を一つだけ(またはその型のサブクラスの型のみ)に絞り込むことができる。
その分、Iterator#next()やList#get()で取り出したオブジェクトを
どのクラスにキャストするかという、検索処理を省くことができ、
予め指定しておいた型を使うのでパフォーマンスが上がる。
1.4だったらダウンキャストするほか、複数の型をListに入れていた場合は
取り出すたびに毎回if文でinstanceofやgetClass()で型チェックをしなきゃ
ならなかった。しかもチェックに失敗したらtry-catchでClassCastExceptionを
細くできるようにしなきゃならなかった。
その手間が省けたことはコードが綺麗になるだけでなく
無駄な検査ロジックを省けるのでパフォーマンスは上がるというわけだ。


554デフォルトの名無しさん:2005/12/14(水) 02:21:46
>>552
何処の抜粋?
IBMのdwの記事ではないよね?
dwでgenericsについて解説してるのがあったけど
内容が古かったような
555デフォルトの名無しさん:2005/12/14(水) 02:21:59
>>543
>>517 に答えが出てるような。
556デフォルトの名無しさん:2005/12/14(水) 02:27:06
>>553
何かズレた言ってるね。
Genericsなしでも入れる型が一つだけなら
Genericありと何も変わらない。
複数の型をぶちこむ設計がまずいだけだ。
557デフォルトの名無しさん:2005/12/14(水) 02:27:56
あ、変わらないのはパフォーマンスね。
生産性はもちろんあがる。
558デフォルトの名無しさん:2005/12/14(水) 02:29:40
超初心者の質問で申し訳ないですが、
引数のあるコンストラクタと抽象クラスってどう違うんですか?
559デフォルトの名無しさん:2005/12/14(水) 02:29:47
Stringのように不変クラスになっていればStringのサブクラスが存在しようがないので
そういう制限をすることは簡単さ。
だが可変でfinal宣言無しクラスでサブクラス型がコレクションに
いくらでも入るようなものや、interface型だと
そうもいかないんだよなこれが。
560デフォルトの名無しさん:2005/12/14(水) 02:30:18
>>554
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/language/generics.html

>>553
アプリでの型チェックは要否は設計の問題。
・・・こういった思想も間違えではないからGenerics取り込み要否の検討に時間がかかった。

たとえばリストといったものを外部に公開することはアプリの内部構造を晒す行為に近い。
→型指定ありのaddを追加しろ、とかね。


>>556
そういうことですよね。
561デフォルトの名無しさん:2005/12/14(水) 02:32:37
>>558
引数のあるコンストラクタと抽象クラスってどう同じなんですか?
562デフォルトの名無しさん:2005/12/14(水) 02:33:12
>>558
えっと・・・かなり違う。
抽象クラスは派生クラスを実装しないとインスタンスに出来ない。
引数のあるコンストラクタは、引数なしと違いヒントや材料が指定できるだけのコンストラクタ。
563デフォルトの名無しさん:2005/12/14(水) 02:56:16
コンストラクタと抽象クラスをあまり理解出来てないかも。

引数のあるコンストラクタと、抽象クラスを型として参照変数を宣言するの、どう違うのかなぁと・・・
564デフォルトの名無しさん:2005/12/14(水) 03:19:21
BufferedImageにカラーの画像、jpgかなんかが入ってるとして,
そこから各ピクセルのRGB情報を取り出したいんですが,
どのようにするのが一般的でしょうか?
なんか適当なAPIあります?
画像認識や画像判別的なコトをやりたいんですが…
風景画像と人物画像を自動判別したりとか
565デフォルトの名無しさん:2005/12/14(水) 03:44:18
>>564
PixelGrabber#grabPixels()かなあ
566デフォルトの名無しさん:2005/12/14(水) 04:49:03
本当に初心者なんですが、ホームページのソースを見られないようにする方法ってありますでしょうか?
567デフォルトの名無しさん:2005/12/14(水) 04:55:29
568デフォルトの名無しさん:2005/12/14(水) 05:02:34
567さん。
ありがとうございます!

すごく助かりました!!!
569デフォルトの名無しさん:2005/12/14(水) 05:55:16
ttp://www.javadrive.jp/java3d/apearance/index3.html
上のHPにあるプログラムを実行しても破線になったり、線の太さが
変わったりしないのですが、何がおかしいのかわかりません。

>>440さんのようにパッケージでエラーとかは出ない(というか表示事自体はされる)のですが、
>>474さんのいうようにjava1.4からjava1.5にアップデートしたからでしょうか?
でも3Dの表示自体はできるしなにがなにやらです。
570デフォルトの名無しさん:2005/12/14(水) 08:53:47
http://page.freett.com/kb100000/34.txt
課題2と4がわかりません、誰か助けて。。。
571570:2005/12/14(水) 09:06:39
2はなんとかできそうです。4は自分で頑張ります。すんません。。
572デフォルトの名無しさん:2005/12/14(水) 09:16:46
>>570
宿題スレ池
573デフォルトの名無しさん:2005/12/14(水) 10:45:48
byte f = -1;

って代入して16進表示すると 0xff なのに

byte f = 0xff;

と代入するとエラーになってしまいます
どうしてなんでしょう?

byte型で1バイトの16進数を直接代入したいんですが
どうやったらいいんでしょう?
574デフォルトの名無しさん:2005/12/14(水) 10:49:52
グローバル化を考える際、リソースは外出しして、言語に合わせられますけど、
JavaDOCはどうすれば良いのですか?
575デフォルトの名無しさん:2005/12/14(水) 10:50:44
>>574
普通に英語で書けば良いんじゃないですか?
576デフォルトの名無しさん:2005/12/14(水) 10:51:18
>>573
byte が扱えるのは -128 〜 127 まで。 0xFFは範囲外。
byte f = (byte)0xFF; みたいにキャストすれ
577デフォルトの名無しさん:2005/12/14(水) 11:32:19
今、サーバークライアント型でクライアントがアプレットのプログラムを
組んでいます。
それで、eclipse3.1からアプレットビューアで起動すると、うまくいくんですが、
IEで起動するとデータのやり取りがおかしくなって、バグってしまいます。

そこで、質問です。
アプレットビューアとブラウザでは何か違いがあるのでしょうか?
よろしくお願いします。
578デフォルトの名無しさん:2005/12/14(水) 11:58:20
>IEで起動するとデータのやり取りがおかしくなって、バグってしまいます。
この部分がわからんと何ともいえない。
どんなエラーが出たのかぐらい書け。
579577:2005/12/14(水) 12:13:18
>578
エラーというエラーはでないのですが、チャットメッセージが名前一覧に
表示されたり、その他のデータがチャットエリアに表示されたりと、データの
受け取り内容がおかしくなってしまいます。
わかりずらくてすみません。

アプレットビューアではそのようなことは無くたぶん正常に動いています。。。
IEではとある機能を追加したらこのようなことになり、それ以前は普通に動いてました。

580デフォルトの名無しさん:2005/12/14(水) 12:15:52
>>576
ありがとうございます
581デフォルトの名無しさん:2005/12/14(水) 12:25:09
プログラム実行時のコマンドラインオプションや引数を簡単に管理できるAPIは
ありませんでしょうか
引数が足りなかったりオプションが不正ならUsageを表示したり
582デフォルトの名無しさん:2005/12/14(水) 12:29:31
配列を使ってJavaプログラムを書いてきましたが、
動作がめちゃくちゃ重くなってきて困ってます・・・

具体的には double a[][][] = new double[20][5][10];
という感じの三次元配列を作って、それで

for(i=0;i<20;i++){
 for(j=0;j<5;j++){
  for(k=0;k<10;k++){
   abcde = a[i].[j][k];
  }
 }
}

というような処理をさせてます。
どうすれば処理速度を上げることができますでしょうか?
583デフォルトの名無しさん:2005/12/14(水) 12:46:57
>>581
jakarta の CLI かな
584デフォルトの名無しさん:2005/12/14(水) 12:46:59
>>582
Javaを辞めて機械語で書く
585デフォルトの名無しさん:2005/12/14(水) 12:50:35
>>582
1次元配列に置き換えて先頭からのシ一ケンス処理として置き換えできないか考える

むりならそもそもの口ジックを見直す
586デフォルトの名無しさん:2005/12/14(水) 12:54:37
>>585
Thanks
587574:2005/12/14(水) 12:55:15
>575
それしかないですか。
英語でリアルタイム思考はできないので、
翻訳で思考が中断しそうだなあ。
588577:2005/12/14(水) 15:00:50
>578
すみません、エラー出ていました。
IEのJavaコンソールにもeclipse3.1のコンソールにも
java.net.SocketException: socket closed

at java.net.SocketInputStream.socketRead0(Native Method)

at java.net.SocketInputStream.read(Unknown Source)

at sun.nio.cs.StreamDecoder$CharsetSD.readBytes(Unknown Source)

at sun.nio.cs.StreamDecoder$CharsetSD.implRead(Unknown Source)

at sun.nio.cs.StreamDecoder.read(Unknown Source)

at java.io.InputStreamReader.read(Unknown Source)

at java.io.BufferedReader.fill(Unknown Source)

at java.io.BufferedReader.readLine(Unknown Source)

at java.io.BufferedReader.readLine(Unknown Source)

at JNetCl.ReceiveFromServer(JNetCl.java:89)

at NetMeatingClA$3.run(NetMeatingClA.java:197)

でていました。
589デフォルトの名無しさん:2005/12/14(水) 15:03:29
プロンプトの画面で
12 as 23
と入力した3つの文字列を個別に取り出したいのですが、
どうすればいいでしょう?
BufferedReaderクラスのreadLine()だと一つの文字列になってしまう。
一文字ずつ読み込み、空白で判断するしかないのでしょうか?
590デフォルトの名無しさん:2005/12/14(水) 15:09:14
>>589
つStreamTokenizer
おれはあまり使わないけど。
591デフォルトの名無しさん:2005/12/14(水) 15:11:20
>>589
java.util.StringTokenizer
java.io.StreamTokenizer
String#split()

好きなの使え。
592590:2005/12/14(水) 15:12:18
>>590
ありがとうございます。
やってみます。
593589:2005/12/14(水) 16:07:57
上の名前間違いました。ごめんなさい。

>>590
できました。ありがとうございました。

>>591
java.util.StringTokenizerでもできました。
ありがとうございました。
ただ、String#split()は質問する前にも試そうとしたんですが、
使い方が分からなくて。。。
594デフォルトの名無しさん:2005/12/14(水) 16:58:39
String tmp = "hogeA<>hogeB<>hogeC";
String[] array = tmp.split("<>");

array[0] -> "hogeA"
array[1] -> "hogeB"
array[2] -> "hogeC"

こんな感じ。
595デフォルトの名無しさん:2005/12/14(水) 18:19:28
TreeMapのkeyに使おうと思っているんですが
new Integer(0) と new int[] {0} では生成コストにどれぐらいの差があるんでしょうか?
596デフォルトの名無しさん:2005/12/14(水) 18:24:32
>>595
たぶん new Integer(0) のほうが軽いと思うけど、計測してないから断定はできん。
といっても、100万回繰り返しても1秒以下の差しかでないと思うから、生成コストはあまり気にしなくていいと思う。
キーとして使いやすいほうを選べばいいんじゃないでしょうか。
597デフォルトの名無しさん:2005/12/14(水) 18:32:17
あるメソッドを定義しているんだけど、Listを返すべきか配列を返すべきか悩んでます。

public List method() { // Listを返す。
  List list = new List();
  list.add("A"); list.add("B");
  return list;
}
public String[] method() { // Stringの配列を返す。
  List list = new List();
  list.add("A"); list.add("B");
  String[] array = new String[list.size()];
  list.toArray(array);
  return array;
}

返されたListまたは配列は、参照されるのみで追加や変更はされません。
参照だけなので、そのメソッドを使う人から見ればListより配列が返ってくれたほうが繰り返し操作が簡単だからいいかなーと思ってます。
(Java5じゃないんで、拡張for文が使えないんです。)

どっちでもいいちゃあどっちでもいいんだけど、えらいひとの意見ちょーだい。
598595:2005/12/14(水) 18:34:44
>>596
わかりました。どうもありがとうございます。
599デフォルトの名無しさん:2005/12/14(水) 18:43:06
>>597
Collections#unmodifiableListで、読み取り専用のリストを返すとかは?
600589:2005/12/14(水) 18:47:47
>>594
なるほど!
勉強になりました。
ありがとうございます。
601デフォルトの名無しさん:2005/12/14(水) 19:12:29
>>597
generics 使えないとキャスト必要になるから String[] の方が便利っちゃ便利。
602デフォルトの名無しさん:2005/12/14(水) 20:17:21
>>574
前はSunがjavadocの国際化作業を支援するdocletを出してたみたいだけど
最近はどうなんだろうな。
603597:2005/12/14(水) 20:43:22
>>599
そんなものがあるんですか。勉強になります。
ただ、まずはListにするか配列にするかを先に決めないと。

>>601
そうなんですよね。長いコードでもEclipse使えば書くのはちょっと楽になるけど、読みづらくなるし。

String#split() (というかPattern#split())では、内部でListを使ってて、それを Stirng[] に変換して返してます。
やっぱり配列に変換するのがJavaの流儀なんでしょうか。
604デフォルトの名無しさん:2005/12/14(水) 23:08:15
>>595,596
new Integer(0).equals(new Integer(0)) は true になるけど
new int[] {0}.equals(new int[] {0}) は false になるから int[] はキーとしては不適当。
605デフォルトの名無しさん:2005/12/14(水) 23:18:10
相対または絶対パスをキー、Fileを値に持つTreeMapを使いたいんですが
この場合並び順はどうなりますでしょうか?
なんかうまい具合に階層順ファイル名順に並びが定義されているとありがたいんですが
606デフォルトの名無しさん:2005/12/14(水) 23:33:39
基本情報の問題で
プログラム1
public class A{・・・
などととなってるがこのpublicはどういう意味、使われ方なのでしょうか?
JAVAの本ではパッケージのところにpublicの説明があるが、パッケージも関係あるのですか?
607:2005/12/14(水) 23:34:16
>>605
試せないの?
608デフォルトの名無しさん:2005/12/14(水) 23:36:36
>>606
クラスがpublicかどうかを表す
609デフォルトの名無しさん:2005/12/14(水) 23:45:12
>>605
パスをキーって事は文字列か? だったら文字列の並び順になる。
絶対パスはOSによって書式が違うから、本当にやりたかったらPathクラスかなんか作って
実際に動かすOSに合わせてComparable実装したほうがいい。

ってcommonsとかKodersに有りそうなネタだな。探せば世界のどっかにあるはず。
610デフォルトの名無しさん:2005/12/14(水) 23:54:09
>>603
1.4以前は型指定のCollectionを使えなかったから、
要素の型付リストを返したければ配列を使うしかなかった。

1.5からはGenericsがあるのでunmodifiableなList<T>を使うのがベスト。
611デフォルトの名無しさん:2005/12/14(水) 23:57:09
LinkedListが活躍するのって何件くらいから?
10件くらいだとArrayListのが早い気がする
612デフォルトの名無しさん:2005/12/14(水) 23:58:09
>>604
TreeMap だから Comparatorつっこめば int[] でも良いんじゃないか?

どちらかというと、int[] の中身は変え放題っつー方が問題あるような。
613デフォルトの名無しさん:2005/12/15(木) 00:18:20
>>609
んんー
ではputした順番を保持するMapとかは無いですかね?
List<Map<String, File>>でできるとは思うけど、ちょっと美しくないので
614デフォルトの名無しさん:2005/12/15(木) 00:21:29
LinkedHashMapだろ、MapとかインタフェースのJavaDocは既知の実装としていっぱい実現クラスが載ってるから辿ってみ
615デフォルトの名無しさん:2005/12/15(木) 00:24:30
>>614
あーどうもです
SortedMapかと思ってTreeMapしか実装がないぞとかやってました
616デフォルトの名無しさん:2005/12/15(木) 00:33:09
>>611
測ってないけど、高々1000とか10000ならArrayListは十分速いと思う
617デフォルトの名無しさん:2005/12/15(木) 00:36:51
ふと思ったが1,000,000件のデータの挿入、削除なんてしないんだよな・・・
そんなデータ普通DBに読みに行くだけだ。
618デフォルトの名無しさん:2005/12/15(木) 00:58:18
1万件だとリストのつなぎなおしに時間がかかる場合もあるけど
用途しだい

0.1msもかかると使い物にならないとかそういうこともあるし
619デフォルトの名無しさん:2005/12/15(木) 01:52:23
620デフォルトの名無しさん:2005/12/15(木) 02:27:09
>>612
ソートはできるだろうが get で値を取得するときは
キーと == で同値な int[] じゃないと取り出せないぞ。
常に entrySet か keySet か values 使ってアクセスするならいいけど。
int[] の中身変え放題ってのももちろん問題だが。
621デフォルトの名無しさん:2005/12/15(木) 08:39:38
生と死のANDが愛って有名?
622デフォルトの名無しさん:2005/12/15(木) 08:55:50
生と死のORはどうみても精子です。有難うございました。
623デフォルトの名無しさん:2005/12/15(木) 10:30:56
>>608
クラスがpublicってどういうこと?
624デフォルトの名無しさん:2005/12/15(木) 10:38:38
>>621
何を言っとるんだキミは
625デフォルトの名無しさん:2005/12/15(木) 10:43:01
>>624
System.out.println((char)('生' & '死'));
626デフォルトの名無しさん:2005/12/15(木) 11:25:23
UNIC SJIS EUC JIS

生 751F 90B6 C0B8 4038
死 6B7B 8E80 BBE0 3B60

愛 611B 88A4 B0A6 3026

627デフォルトの名無しさん:2005/12/15(木) 12:04:04
割と有名なトリビアなのか
入門サイト探してたらここで見つけた
ttp://www.groovy-number.com/java/sample/CharOperation.html
628デフォルトの名無しさん:2005/12/15(木) 12:21:58
>>627
76へぇー
629デフォルトの名無しさん:2005/12/15(木) 14:06:52
>>621
凄いが、一般の人に話しても絶対理解されない雑学だなぁ。
630デフォルトの名無しさん:2005/12/15(木) 14:13:43
他に無いのかな
631デフォルトの名無しさん:2005/12/15(木) 14:30:54
>>626
( ・∀・)つ〃∩ ヘェーヘェーヘェー

IBMのカエサルシフトがHALみたいなもんか。
632デフォルトの名無しさん:2005/12/15(木) 16:19:24
JavaのGUIプログラミングで質問があります。
GUI画面で数値を入力させて、それを計算して結果を出力する といったようなプログラムは
どのように組めば良いのでしょうか?
633デフォルトの名無しさん:2005/12/15(木) 17:28:08
データをテキストフィールドかなんかに入れて、
それを読み取って計算して表示
634デフォルトの名無しさん:2005/12/15(木) 20:09:45
コロンセパレータのレコード行を正規表現で
(レコードが今後複雑になるのでStringTokenizer使いたくない)
マッチを繰り返して、 abc, def, ghi と取り出したいのですが、
手始めに abc だけマッチさせようと書いたコードが動きません。
何か間違っているのでしょうか
import java.util.regex.*;
public class DemoRegex {
 public static void main(String[] args) {
  Pattern p = Pattern.compile("([^:]+)");
  Matcher m = p.matcher("abc:def:ghi");
  if (m.matches())
   for (int i = 0; i <= m.groupCount(); i++)
    System.out.println(i+":"+ m.group(i));
  else
   System.out.println("なぜ?");
 }
}
635デフォルトの名無しさん:2005/12/15(木) 20:14:58
双方向リスト構造を作成して
その先頭のオブジェクトを誰も指さなくなったら
GCはリストされている全てのオブジェクトを解体してくれますか?
いくつかのオブジェクトでリング状に参照してるから気になったので
教えてください
636デフォルトの名無しさん:2005/12/15(木) 20:21:19
>>634
×if (m.matches())
○if (m.find())
637デフォルトの名無しさん:2005/12/15(木) 20:23:57
>>635
GCの実装による。
普通は循環参照あっても回収されるから大丈夫。
638635:2005/12/15(木) 20:26:45
>>637
ありがとうございます
639デフォルトの名無しさん:2005/12/15(木) 20:27:40
import java.util.regex.*;

public class DemoRegex {
public static void main(String[] args) {
Pattern p = Pattern.compile("([^:]+)");
Matcher m = p.matcher("abc:def:ghi");
int i=0;
while(m.find()){
System.out.println(i+":"+ m.group(1));
i++;
}
}
}
640デフォルトの名無しさん:2005/12/15(木) 20:36:49
>>636
>>639
find() 使うのそこかよorz
ありがとうございました
641デフォルトの名無しさん:2005/12/15(木) 23:28:54
Windows用の Java Communications API
が欲しいのですが、SUNでは削除されているようです。
ミラーとかご存知でしたらご教授願います
変な質問ですが、よろしくお願いします
642デフォルトの名無しさん:2005/12/15(木) 23:46:54
JWSについてなんだけど、JWSで表示したもの(例えばSWTで作った表)をユーザーに表示させている間、
javascriptでユーザーの動きを制御したりはできるの?
例えばユーザー側で3分間どこもクリックしたりしなかったら何かメッセージウインドウを出す、とか
あくまでjavascript限定で
643デフォルトの名無しさん:2005/12/16(金) 00:02:02
>>642
スレ違い
644デフォルトの名無しさん:2005/12/16(金) 00:12:47
初期のマリオみたいなアクションゲームを作りたいのですが、
参考になるようなサイト(書籍でもOKです)ってありませんか?
自分でも探してみたのですが、シューティングとかブロック崩しとかはあるのに
2Dアクションゲームのアルゴリズムが載ったサイトは見つかりませんでした。
BufferStrategy とか Timer とか GraphicsDevice(FullScreen) とかについては
そこそこ使える程度には理解しています。
画像処理についても、大昔に DirectDraw をかじったことがあるので基礎は分かっています。
なので最大の問題はアルゴリズムです。
Java はマインスイーパライクの簡単なゲームくらいしか作ったことがありません。
アクションゲームは全く未知の世界です(当たり判定とか)。
基本的なことが分かるサイトとかってないですかね?
645デフォルトの名無しさん:2005/12/16(金) 00:15:17
BufferStrategy使っておいてマインスイーパって先生・・・
646デフォルトの名無しさん:2005/12/16(金) 00:18:01
キャラの表示と移動ができれば
アルゴリズムって程のものでもないだろう。

あたり判定て四角の座標が重なってるかどうかとか
ビットマップで重なり判定とか
べつに普通に思いつくとおもうけど。
3Dはベクトルと行列とかわからないとつらいけど
2Dゲームは
動作画面見てコードがだいたい想像できないようなら
向いてないような。
647デフォルトの名無しさん:2005/12/16(金) 00:21:23
たぶんむいてないな
648デフォルトの名無しさん:2005/12/16(金) 00:25:40
>>646
中学生に、酷なこと言ってやるなよ。
649デフォルトの名無しさん:2005/12/16(金) 00:27:31
→を押すと右にいって、←を押すと左にいくようにすればよい。
Bだとダッシュできるようにすればいいし、Aならジャンプすればいい。
唯一難しいのはジャンプ中に慣性無視して戻ってこれるアルゴリズムくらいだ。
650デフォルトの名無しさん:2005/12/16(金) 00:27:31
アクション特有処理って何か思いつく?
シューティング作れりゃアクションは簡単。
sinカーブ上にキャラを配置できれば問題なし。
651デフォルトの名無しさん:2005/12/16(金) 00:28:57
>>648
中学なら十分に作れるだろ
みんな小学のころからコードよんでたぜ
652デフォルトの名無しさん:2005/12/16(金) 00:34:00
ベーマガ読んでた世代なら出来るっしょw
653デフォルトの名無しさん:2005/12/16(金) 01:12:24
ベーマガって何で無くなったの?
良い雑誌だったのに
654デフォルトの名無しさん:2005/12/16(金) 01:51:16
ゲームを作るとどうしてもコードがスパゲッティになるな。
655デフォルトの名無しさん:2005/12/16(金) 01:53:57
Javaでやってるのに?
AppletやケータイJavaでもなければちゃんとOOPするでしょ
656デフォルトの名無しさん:2005/12/16(金) 02:12:26
iモードのゲーム作るにはどうしたら良い?
657デフォルトの名無しさん:2005/12/16(金) 02:15:35
>>653
ソースコードを入力して動かす時代じゃなくなったから。
特に、有料の開発環境が必要だった時期に、普通の人にはソースコードが入力できなかったりした。

今なら無料のスクリプト処理系や開発環境がそろってるから、その点では解決してるけど、パソコンの使い方の多様化で、ゲームだけには絞れなくなったし。
ゲームをやるのがメインの層はプログラムを入力しようとは思わないし、プログラムを入力する層はゲームがやりたいわけじゃなかったりする。
658デフォルトの名無しさん:2005/12/16(金) 02:17:53
659デフォルトの名無しさん:2005/12/16(金) 02:19:58
>>655
ゲーム作ったことある?
制御やら判定処理は、OOPやったからといってきれいに書けるもんじゃないよ。
660デフォルトの名無しさん:2005/12/16(金) 02:24:21
>>633
JLabelに計算結果を出力させたいのですが、どのようなコードを書けば良いのでしょうか?
例えば足し算プログラムで、TextFieldが二つあり、そこに数値を入力して、
JButtonを押すと計算され、JLabel部分に計算結果が出力される といったような感じです。
661デフォルトの名無しさん:2005/12/16(金) 02:27:10
そこまで決まっていて何がわからないのかわからない。
662デフォルトの名無しさん:2005/12/16(金) 02:39:14
HeadlessException
663デフォルトの名無しさん:2005/12/16(金) 04:13:01
Swingの質問です。

どうも、BorderLayout環境でJTextFieldを使うと高さがびろ〜んと一行以上になってしまうようです。
JTextFieldにsetPreferedSize()を使う以外で、これを解決するスマートな方法はないでしょうか?
664デフォルトの名無しさん:2005/12/16(金) 06:45:37
・BorderLayout.NORTH か BorderLayout.SOUTH に入れる。
・BorderLayoutを使わない
665デフォルトの名無しさん:2005/12/16(金) 06:47:35
>>663
NetBeans5.0βでMatisse使って自由に配置。
めっちゃスマート。
666デフォルトの名無しさん:2005/12/16(金) 07:15:02
あ、BoxLayoutの間違いです orz
667デフォルトの名無しさん:2005/12/16(金) 07:38:49
>>661
JLabel部分に計算結果を出力する方法です…。
どうすればJLabel部分に出力出来るのかわからないので、
System.out.println を使って、DOS画面に出力結果を表示していますorz
668デフォルトの名無しさん:2005/12/16(金) 07:42:29
>>667
API見ろ
そして二度と来るな
669デフォルトの名無しさん:2005/12/16(金) 07:44:31
いたいけな中学生に向かってヒドすぎる!
670デフォルトの名無しさん:2005/12/16(金) 08:01:49
>>667
JLabel#setText()
じゃ、だめなんかい
671606:2005/12/16(金) 10:19:46
classがpublicってどういう意味?
672デフォルトの名無しさん:2005/12/16(金) 10:23:04
>>671
うせろ
673デフォルトの名無しさん:2005/12/16(金) 11:25:19
unix
jdk1.3でtifファイルを他の画像フォーマットに変換したいんですが
どんなやりかたがありますか?
jimiを使ってみたところ、windows環境では動いたんですがunixだとどうも動いてくれずjimi.getImageのimageの取得でこけてしまって悩んでます。
674デフォルトの名無しさん:2005/12/16(金) 13:23:18
byte b = 69;
int i = (b & 0xf0) >> 4;

ビット演算だと思うのですが、
このような処理を詳しく解説しているサイトを
ご存知でしたら、おねがいします。
675デフォルトの名無しさん:2005/12/16(金) 13:31:52
676デフォルトの名無しさん:2005/12/16(金) 13:41:58
>>674
普通にググれば山ほどでてくるどw
677デフォルトの名無しさん:2005/12/16(金) 13:50:31
>>675
わかりました。
上位4bitを取り出して、
右側に4回ずらしてその2進数をintにしたわけですね。
678デフォルトの名無しさん:2005/12/16(金) 13:58:07
>>677
さらに補足ですが、
byte b = 69;
int i = (int)b;
System.out.println(Integer.toHexString(i));
の表示の左側を10進数で取得したってことでOKでしょうか?
679デフォルトの名無しさん:2005/12/16(金) 14:19:47
Java で 3D ってできますか?
680デフォルトの名無しさん:2005/12/16(金) 14:26:40
標準APIだけではできません
たぶんこの質問レベルならこれでいいだろう
681デフォルトの名無しさん:2005/12/16(金) 14:29:14
JAVA:SWTでプログラム書いてて、

1.java(double A=1;)と設定した数値を2.javaにもっていきたい時ってどうすれば・・・汗

お手上げです・・・
682デフォルトの名無しさん:2005/12/16(金) 14:52:13
プロパティファイルには、キーと値の組を1行ずつ記述しますが、
値として複数行の文字列を記述するにはどうしたらいいですか。
hoge\n\fuga\n と書いて、プログラム側で \n を改行文字に置き換えていくしかないんでしょうか。

なお用途はメッセージの国際化です。
複数行のメッセージがあるので、これをどうやってプロパティファイルに記述すればいいのかわからず、質問してみました。
できれば複数行のメッセージは1行にまとめず複数行のままで記述したいと思っています。

よろしくお願いします。
683デフォルトの名無しさん:2005/12/16(金) 15:00:52
>>682
\(改行)
684デフォルトの名無しさん:2005/12/16(金) 15:02:27
>>680
それはウソだ。
ワイヤーフレームだったら、ほとんど勉強せずにAWTだけで書けるし、ポリゴンもそんなに難しくない。
Javaで3Dはできる。
685デフォルトの名無しさん:2005/12/16(金) 15:13:36
>>683
シェルとかで複数行みたいな使い方ができるってことか。
682じゃないけど参考になった。
サンクス。
686デフォルトの名無しさん:2005/12/16(金) 15:54:33
>>684
それを3Dといっていいのか?
687デフォルトの名無しさん:2005/12/16(金) 16:11:12
いいだろ
688デフォルトの名無しさん:2005/12/16(金) 16:13:15
見た目の結果と計算内容は3Dなんじゃね?
そう言い出したら、シェルスクリプトでも3D可能とかになっちゃうけどさ
689デフォルトの名無しさん:2005/12/16(金) 16:41:13
Javaで書いたソフトを売るときには
何か許可がいりますか?

あとJavaはSunの商標ですとかの商標表示も必須?
690デフォルトの名無しさん:2005/12/16(金) 16:56:31
>>667
誰もまともな答えを出してくれないみたいだから、俺が答えてやろう。
2chの連中は厳しいところもあるが、めげずにがんがれ。

まず、jLabelで出力する部分を指定してやる。
こんな感じだな。setBoundsは適当なので、自分のフレームにあわせてくれ。

output = new JLabel();
output.setText("");
output.setBounds(300,100,150,50);
contentPane.add(output);

次に、jButtonの計算セクション(多分、JButton clickedButton = (JButton)event.getSource();)の下に
で、int x = Integer.parseInt(textfield1.getText());
int y = Integer.parseInt(textfield2.getText());
のような感じで、TextFieldで入力した数値を持ってくる。

で、計算部分を作るんだが、足し算プログラムなら、

int calc = x+y;

といった感じだろうか。そして、その下に、

output.setText(calc);

と書いてやれば、上に書いたoutput.setText("");から出力される。
以上。
691デフォルトの名無しさん:2005/12/16(金) 17:27:48
>>673
ヘッドレスモードでぐぐれ
692デフォルトの名無しさん:2005/12/16(金) 22:09:13
ネット将棋のプログラムがjavaで
開くとNullPointerExceptionと出て起動しないんですが
原因教えていただけませんか?
693デフォルトの名無しさん:2005/12/16(金) 22:21:17
すいませんできました
↑のコメントなかったことにして下さい
694デフォルトの名無しさん:2005/12/16(金) 23:44:03
Javaで折れ線グラフを書きたいのですが、というか書かないといけないのですが、
いいサンプルがあれば教えてください。
JFreeChartを使うものでも結構ですので。
695デフォルトの名無しさん:2005/12/16(金) 23:46:40
>>694
補足です。
入力したいデータ形式はCSV形式です。
で、それをもとにグラフを描きたいわけです。
どうかよろしくお願いします。
696デフォルトの名無しさん:2005/12/16(金) 23:52:53
>>694
http://www.google.co.jp/

一生やってろ
697デフォルトの名無しさん:2005/12/16(金) 23:54:22
698デフォルトの名無しさん:2005/12/17(土) 00:42:19
Image imgがあったとして、imgはbmpかjpgかpngのいずれかで、どれが入ってるかはわかりません
これを同じフォーマットのファイルに出力したいです
例えばimgがbmpならimg.bmpに、pngならimg.pngにといった感じです
でImageIO.writeを使いたいと思っているのですが、二つ問題があります
まず、ImageIO.writeではRenderedImageの実装クラスしか扱えないようですが、
どうにかしてimgをRenderedImageの実装クラスに仕立て上げることはできますでしょうか?
もう一つ、imgのフォーマットはどうやって取得すればいいでしょうか?
よろしくお願いします
699デフォルトの名無しさん:2005/12/17(土) 00:45:30
ImageIO勉強して

まずreadとwriteしかほとんど使わないけど、他のメソッド使うとすごく細かいこと出来るよ
700デフォルトの名無しさん:2005/12/17(土) 02:03:27
自身を格納する以外のインスタンス変数のないシングルトンクラスって
スタティッククラスと何が違うんでしょうか?
この二つってどう使い分けるんでしょうか?
701デフォルトの名無しさん:2005/12/17(土) 02:11:58
自身を格納するという表現は新鮮だな。

デザインパターンの本を嫁ばわかる
702デフォルトの名無しさん:2005/12/17(土) 03:03:34
さーて、リフレクションは使ってはいけないと、言われた俺様が来ましたよ。
パホーマンス云々だってさ。今日は似たクラスいーぱい、を作り直しさせられた。
これが、世の中ってやつですかね?

ふと、工数水増し、開発費用水増しという犯罪では?という気がしました。
703デフォルトの名無しさん:2005/12/17(土) 03:41:33
すいません、AWTでコンポーネントを重ねて表示させているのですが、componentとcanvasを重ねるとcomponentga
先に描かれてしまいます。
canvasを後に描かせるにはどうしたらいいのでしょうか。
704デフォルトの名無しさん:2005/12/17(土) 06:14:54
>>702
とあるプログラムの保守で、リフレクションを使ってた為
ソースコードを追跡するのがエラい大変だった。
リフレクションを使うのは、粒度の大きいクラス・パッケージに限定して欲しい。
一つのモジュールの内部で完結するように使われるのは勘弁。
705デフォルトの名無しさん:2005/12/17(土) 06:20:48
>>704
ejbCreateメソッドみたいな、あるタイミングで呼ばれるメソッドが名前で決められてるやつ?
そういうのは、アノテーションが使えると明示的になるし型保証もできていいのだけどね。
706デフォルトの名無しさん:2005/12/17(土) 06:43:06
メソッド名を固定で持ってればまだいいのに、文字列結合でメソッド名文字列を作るからなあ。
707デフォルトの名無しさん:2005/12/17(土) 10:29:46
synchronizedって2つのメソッドに付けてたときに
あるのスレッドから一方のメソッドを呼び出している間に
ほかのスレッドからもう一つのメソッドを呼び出したらロックされないの?

そういう場合は
synchronized(this)みたいにしないとだめ?
708デフォルトの名無しさん:2005/12/17(土) 11:04:12
>>707
Javaはされない。これをリエントラント可能といいます。
709デフォルトの名無しさん:2005/12/17(土) 11:05:21
>>707
あ、よく読んでなかった。
他のスレッドか。ロックされるでしょ。
710デフォルトの名無しさん:2005/12/17(土) 11:42:00
すみません;
↓どこが間違っているか解りません。
h.java
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
import java.applet.*;
import java.awt.*;


public class h extends Applet{

Image img;


public void init() {
setBackground(Color.white);
setForeground(Color.black);

img = getImage(getClass().getResource("Title.gif"));
}

public void paint(Graphics g) {
g.drawImeag(img , 0 , 0 , 400 , 300 , this);
}
}
.......................................................................................................
711デフォルトの名無しさん:2005/12/17(土) 11:44:17
Title.gifがどこになあるかじゃない?
712デフォルトの名無しさん:2005/12/17(土) 11:46:52
>>709
サンクス
713デフォルトの名無しさん:2005/12/17(土) 11:58:25
>>711
同じフォルダ内です。

コンパイルすると

h.java:18: シンボルが解決できません。
シンボル: メソッド drawImeag (java.awt.Image,int,int,h)
場所 : java.awt.Graphics の クラス
          g.drawImeag(img , 0 , 0 , 400 , 300 , this);

          ^
エラー1個

、とコンパイルエラーになります。
何故ですか!?(;´Д`)
714デフォルトの名無しさん:2005/12/17(土) 12:25:28
>>710
drawImeag → drawImage
715デフォルトの名無しさん:2005/12/17(土) 12:25:46
Image
716デフォルトの名無しさん:2005/12/17(土) 12:33:11
出来ました!ありがとうございます。
スペルミスを脳内補完してたようです;
717デフォルトの名無しさん:2005/12/17(土) 12:43:27
J2SDK1.4.2 と JDK5 を切り替えてつかうにはどうしたらいいですか。
環境はWindowsXP。
Linuxだと、両方をインストールして、シンボリックリンクでディレクトリを切り替えるだけで簡単なんですけど、Windowsではどうやったらいいのかわかりません。
Eclipse使うのでもいいけど、できればコマンドラインからできる方法きぼう。
718デフォルトの名無しさん:2005/12/17(土) 12:53:25
>>717
システム環境変数のJAVA_HOMEとPATHの内容変更して、レジストリを切り替える
下のは1.5に変えたい場合

---ここから
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit]
"CurrentVersion"="1.5"

[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime environment]
"CurrentVersion"="1.5"
---ここまで

PATHの設定は%JAVA_HOME%\binが%windir%よりも前に来るようにしてする事
そうでない場合は%windir%にあるjava.exe/javaw.exeをバージョンによって切り替える必要あり
719717:2005/12/17(土) 13:20:23
>>718
さんきゅーです。
レジストリいじらんといけないのか。これをコマンドラインから一発で変換できるようにするには、・・・ぐぐってみよう。
720デフォルトの名無しさん:2005/12/17(土) 13:26:24
パスの切替えをやるならレジストリはいじらなくてもよい
721デフォルトの名無しさん:2005/12/17(土) 13:29:35
>>716
そういうミスはEclipseで自動チェックできそうな
722デフォルトの名無しさん:2005/12/17(土) 13:37:16
>>717
Apache Antの<classpath>タグを使え

さもなければjavacコマンドのオプションでclasspathを使え。

さもなければActive TCLをインストールせよ。
TclでWindowsにシンボリックリンクを張ることができる。


723デフォルトの名無しさん:2005/12/17(土) 13:50:13
Eclipse使用です。
DataLine.Infoを書くと、DataLineの下に赤波線がでて、Rename in file とでます。

ピリオドで区切られたクラス名を認識してない?みたいですが
Eclipseの設定の問題でしょうか?
724デフォルトの名無しさん:2005/12/17(土) 13:51:58
そもそもDataLine.Infoってのは
一体何なのか説明せよ。
お前が作ったクラスなのか、それともフィールド変数なのか
はっきりせい。
725723:2005/12/17(土) 13:56:06
DataLine.Infoはjavax.sound.sampledパッケージのクラスです。
これが、音声ファイルを読み込もうとしているメソッドです。

Clip mySoundRead(String fname){
try {
AudioInputStream aIS1=AudioSystem.
getAudioInputStream(getClass().getResource(fname));
DataLine.Info info1=new DataLine.Info(Clip.class,aIS1.getFormat());
Clip clip1=(Clip)AudioSystem.getLine(info1);
clip1.open(aIS1);
return clip1;
} catch (UnsupportedAudioFileException e) {
e.printStackTrace();
return null;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
726デフォルトの名無しさん:2005/12/17(土) 14:11:00
import忘れてるだけだろヴォケ
727デフォルトの名無しさん:2005/12/17(土) 15:19:08
volatile を指定するのとその変数を synchronized で囲うのとでは何が違うんでしょうか?
728デフォルトの名無しさん:2005/12/17(土) 16:36:58
環境はPostgreSQL8.1(jdbs2ee.jar)/JDK5/Tomcat5.5/Struts1.2.8です。

JavaでConnection取得してそこからStatement取得して
resultset = st.executeQuery("SELECT C FROM T");を実行しても、
結果が帰ってきてくれまへん。SQLExceptionも返って来ない・・・
でも、resultsetの中が空っぽなんです。

同じフローの中で・・・というか、上の文の一つ先に試しに
st.execute("INSERT INTO T(C, D) VALUE ('a', 'b')");
って実行してみると、テーブル見たらちゃんとデータ入ってるので、
その辺は問題なさげです。

何が問題っぽいでしょうか。解決の糸口が見つかりません・・・
729デフォルトの名無しさん:2005/12/17(土) 16:56:27
うは、俺ちょうバカス。
結論から申しますと、結果は取得できておりました。。
結果の見方とデバッガのresulsetの見方を両方間違えておりました。
スーパーごめんなさい。
730デフォルトの名無しさん:2005/12/17(土) 17:21:52
自分のグローバルIPってどうやって取得するんでしょうか?
InetAddressではlocalhostしか取得できないようです
731デフォルトの名無しさん:2005/12/17(土) 18:21:41
Runtimeクラスでipconfigコマンドを実行する
732デフォルトの名無しさん:2005/12/17(土) 18:21:59
いやifconfigコマンド
733デフォルトの名無しさん:2005/12/17(土) 18:22:35
System.getProperties


734デフォルトの名無しさん:2005/12/17(土) 18:22:48
JNDIを使う
735デフォルトの名無しさん:2005/12/17(土) 19:10:29
プロンプトでユーザに問い合わせる
736デフォルトの名無しさん:2005/12/17(土) 20:05:21
メンバクラスで親のthisを取得するにはどう記述すればよいのでしょうか?
737デフォルトの名無しさん:2005/12/17(土) 20:15:42
あらかじめローカル変数に入れておけばいいやん。
738デフォルトの名無しさん:2005/12/17(土) 20:19:45
Java入門HPとかみてると``Write once, Run anywhere''と
長所にあげてるのを見るとはらたってしょうがない。

そもそも組み込みとかだと動かないし、liunuxとかwindowsで動くとかならC++でも
ラッパーライブラリ使えば動く。
だいたいjavaランタイムとか一般人はほとんどwindowsに入れてないんだkら動かないだろハゲ。
739デフォルトの名無しさん:2005/12/17(土) 20:21:00
ん?なぜ俺がハゲだとわかったんだ?
740デフォルトの名無しさん:2005/12/17(土) 20:21:41
今まで結構順調だったのにGUIとかいうので全然分からんなった
741デフォルトの名無しさん:2005/12/17(土) 20:24:44
>>737
現在は回避策としてはそうしているんですけどね。
予約語でサクッと出来たほうが嬉しかった。
742デフォルトの名無しさん:2005/12/17(土) 20:32:26
親クラス名.this
だよ
743デフォルトの名無しさん:2005/12/17(土) 20:37:17
Javaのネイティブコンパイラについて調べています。
参考になりそうなwebページなどありましたら教えてください。
744デフォルトの名無しさん:2005/12/17(土) 20:38:54
>>742
ありがとうヽ(・∀・)ノ
745デフォルトの名無しさん:2005/12/17(土) 20:57:43
>>742
そりゃインナークラスの場合だろ。
通常のメンバーでは無理。
746デフォルトの名無しさん:2005/12/17(土) 20:59:50
インナークラスってなに?
747デフォルトの名無しさん:2005/12/17(土) 21:04:34
クラスの中に定義されたクラス。
748デフォルトの名無しさん:2005/12/17(土) 21:06:53
じゃあメンバクラスってなに?
749デフォルトの名無しさん:2005/12/17(土) 21:15:49
クラスのメンバフィールドに参照が保持されているクラス。
750デフォルトの名無しさん:2005/12/17(土) 21:23:05
いや static かどうかの違いだろ。
751デフォルトの名無しさん:2005/12/17(土) 21:36:17
ゲームを作ると、ランダムアクセスを行うリソースが沢山出てくるけど、
これの管理方法は次のような仕組みで問題ないでしょうか?

・ファイルをオープンするときは、必ず特定の静的クラス(AClass)のユーティリティメソッドを使用する。
・ユーティリティメソッドは、ファイルをオープンしてファイルストリームを返すと同時に、
 AClassの保持する静的リストにファイルストリームを格納する。
・ファイルクローズ時はAClassの静的ユーティリティメソッドを使用し、静的リストからファイルストリームを削除する
・mainメソッド内部をtryで囲み、finallyでAClassの持つ静的リストを総なめし、
 全てのファイルストリームをクローズする。
・総クローズ中のIOExceptionについては総なめループ中でcontinueにより対処する
752デフォルトの名無しさん:2005/12/17(土) 21:58:28
>>738
Javaの"Write Once, Run Anyware"は
「リコンパイルせずにどこでも動く(=バイナリレベルでポータブル)」を
目指しているのをわかっていない人が多い。
CでもC++でもリコンパイルすれば動く(=ソースレベルでポータブル)なのは
全然関係ない。
753デフォルトの名無しさん:2005/12/17(土) 22:05:34
バイト時代の会社の社長さん、Winで開発して、Linuxにうpするときはびびってコンパイルしてたな。
C屋だったらしいけど、バイトコードとはいえ改行コードが!って思ってたんだろうね。
754デフォルトの名無しさん:2005/12/17(土) 22:19:56
JavaServletを気軽にCGI鯖みたく使えるレンタルサーバってありませんか?
板違いになってるとは思いますが、言語を指定したいのでここでお願いします。
月額1000円くらいまでで無いでしょうか?
755デフォルトの名無しさん:2005/12/17(土) 22:27:54
わがままいうな。
756デフォルトの名無しさん:2005/12/17(土) 23:27:23
板違いだボケ
757デフォルトの名無しさん:2005/12/18(日) 00:18:12
こんばんわ
javaで電卓プログラムを作る場合で
もしもdouble型を超える数字を計算する場合(メモリが続く限り無限)
にはどうすれば良いでしょうか?
自分で考えてもよく分からなくて・・・・
よろしく御願いします。
758デフォルトの名無しさん:2005/12/18(日) 00:28:37
手元の電卓でためせば答えはすぐわかる。
759デフォルトの名無しさん:2005/12/18(日) 00:30:35
>>757
文字列でBigに生きればいい
760デフォルトの名無しさん:2005/12/18(日) 00:31:16
>>758
そこを何とかヒントだけでも・・・
自分が考えたのはエラーが出た時にtry catchするとか
桁を10とかで割るとか、文字列に変換してとか・・・・
あ、Integerか・・・
それとも再帰呼び出しとかが怪しいと思うのですが・・・・

この中に正解とか有りますでしょうか・・?
761デフォルトの名無しさん:2005/12/18(日) 00:32:10
BigDecimalじゃだめかね?
762デフォルトの名無しさん:2005/12/18(日) 00:42:23
どうやらBigIntegerを使うらしい
今からeclipseで・・・・
また分からなかったら質問するのでよろしく
御願いしますー
763デフォルトの名無しさん:2005/12/18(日) 00:55:13
>>736
super
もしくはスーパークラスにthisをかえすgetterメソッドを実装する
764デフォルトの名無しさん:2005/12/18(日) 00:57:42
>>738
そこでJavaWebStartの出番ですよ。
Flashのように勝手にJavaをインストールしてくれるので安心。
765デフォルトの名無しさん:2005/12/18(日) 00:58:54
JavaWebStartだとどんな制限がある?
ローカルに落とすならサンドボックスもいらない?
766デフォルトの名無しさん:2005/12/18(日) 01:01:50
>>738
Java入門ヒューレッドパッカード(HP)?
何それ?
767デフォルトの名無しさん:2005/12/18(日) 01:01:56
>>753
いまだにそういう馬鹿が多くてむだなことにテストに時間を
かける奴が多い。
768デフォルトの名無しさん:2005/12/18(日) 01:02:01
>>754
自宅でサーバ構築した方が良いぞ
769デフォルトの名無しさん:2005/12/18(日) 01:02:46
>>765
おいおいjarsignerを知らないのか?
770デフォルトの名無しさん:2005/12/18(日) 01:06:17
>>768
参考までに構成と初期費用とランニングコスト教えて。
DDNS便りのしょぼ鯖じゃないよね?
771デフォルトの名無しさん:2005/12/18(日) 01:28:55
>>738
C++だとエンディアンが違う環境で同じデータが使いにくい
ウィンドウだすのはかなりつらい。
772デフォルトの名無しさん:2005/12/18(日) 02:13:43
(こちらが良いのかな?)
初心者ですがちょっと教えていただけますか?

JavaアプリからWindowsアプリへウィンドウズメッセージは送れますか?
全く無理ですか?
773デフォルトの名無しさん:2005/12/18(日) 02:19:39
JNIを使えば可能
774デフォルトの名無しさん:2005/12/18(日) 02:32:47
>>773
どうもありがとうございます!
JNI、調べてみます。
775デフォルトの名無しさん:2005/12/18(日) 02:47:03
>>773
JNIって良く聞くんですけど
具体的にどんな時に利用するんですか?
776デフォルトの名無しさん:2005/12/18(日) 02:54:04
ネイティブ機能を使うとき
777デフォルトの名無しさん:2005/12/18(日) 06:39:39
単純なのですが、
どうしても分からないので質問させて下さい。
 double el = 52.9508;
 double d = 0.0167 / Math.tan(el + 8.6/(el + 4.4))
を計算すると d = 0.012538......
となるはずなのですが、-0.05280......
という値になってしまいます。
画面に入力した式を参考に、電卓で計算すると0.012538...
と正しい値になります。
どれだけ見ても間違っているようには見えないのですが、
お願いします。
778デフォルトの名無しさん:2005/12/18(日) 06:42:12
awt.Toolkit
JIMI
JAI
ImageI/O

なんでこう規格が乱立しているんですか?
何か理由があったんですか?
779デフォルトの名無しさん:2005/12/18(日) 06:52:44
それは規格なのか?
780デフォルトの名無しさん:2005/12/18(日) 06:57:26
>>777
その計算のどこで期待と違う値になってるか確認した?
781デフォルトの名無しさん:2005/12/18(日) 07:01:47
>>777
Math.tan() の角度はラジアン。
782デフォルトの名無しさん:2005/12/18(日) 07:08:05
>>780
>>781
すいません。自己解決しました。
>>781の通りでした。
疲れてるのかな。
783デフォルトの名無しさん:2005/12/18(日) 12:02:19
>>770
DDNSに頼るとそんなにしょぼいんだ。
うちでは難なく使えてるけど。自動更新できるように設定すればいいだけじゃん

初期費用は電気代がちょっと。親と同居なので2万超
鯖だけにかかる電気代はよくわからない。
 700MHz時代の古いマシンをそのまま流用して
いるのでマシン導入コストはゼロ。
 ValueDomainで10年間有効のドメインを購入。10年で1万程度だから安いものだ。
プロバイダはCATVのをそのまま使ってる。親も使ってるのでコストを表現するのが難しい。
当時3万ほどしたルータも親と共同でつかってる。自宅サーバのための設定はしたけど。

一人暮らしなら鯖立てても
生活に使われる光熱費全体込みでも月1000円で済んだ香具師がいる。
そいつはいま就職しているのかな? http://www.development-network.net/
というレンタルサーバを自宅で運営していた香具師なんだが。会員数も
多くそれで当時年間何十万か稼いでいたようだ。
784デフォルトの名無しさん:2005/12/18(日) 12:05:59
>>777
一瞬tanの誤差の問題かと思った

TeX本で有名な奥村晴彦が書いた
Javaによるアルゴリズム入門にtanかatanかtanhかatanhを自作するコードが
あって0に近づくところとπ/2に近づくところで誤差の影響がでるので
if文で分けて誤差を最小限に計算した方がいいとあったので


785デフォルトの名無しさん:2005/12/18(日) 13:03:05
質問お願いします。
独習JAVA(第3版)で独習してます。
第2章 例2.4 - Integerクラスにおいて、下記のようなコードが登場します。

class StringToInt {
public static void main(String args[]) {
String s = "125";
int i = Integer.valueOf(s).intValue();
i += 10;
System.out.println(i);
}
}


4行目 int i = Integer.valueOf(s).intValue(); の部分がいまいち理解できません

int i = Integer.valueOf(s); ←では駄目なのでしょうか?
実行結果は同じになるのですが…

786デフォルトの名無しさん:2005/12/18(日) 13:12:49
Integer.valueOf()はあくまでInteger型のオブジェクトを返すメソッド。
int i = Integer.valueOf(s)でも通るのは、
暗黙のうちにInteger型のオブジェクトをint型に変換してくれているから?
古いバージョンのjavaだと通らないんじゃない?

Integer.intValue()はInteger型のオブジェクトをintに変換するメソッド。
787デフォルトの名無しさん:2005/12/18(日) 13:14:30
>>785
Integer#valueOfはIntegerを取得するメソッド(intをクラス化させたもの)
Integer#intValueがintを取得する。
でも本当はそんなまどろっこしいことしなくてもInteger#parseIntで直接変換できる。

ちなみに785がそれで動くのは、君の実行環境がJava5.0だから。
オートボクシングという謎のマイクタイソンがJava5.0には住んでるから
その本読破したら5.0の特徴をネットで調べて於こう。(今は気にするなってこと)
788デフォルトの名無しさん:2005/12/18(日) 13:15:44
>>786
ウィットにとんだジョークまで一生懸命考えたのに何で被るんだヽ(`Д´)ノ!
789デフォルトの名無しさん:2005/12/18(日) 13:18:08
parseIntを何も考えず進めると大変なことになるでよ
790デフォルトの名無しさん:2005/12/18(日) 13:18:10
>>788
余計なことやってる間に出し抜かれる典型ですねw
791786:2005/12/18(日) 13:23:08
>>787
ワロスww
ごめんww
792デフォルトの名無しさん:2005/12/18(日) 13:27:52
>>785

intValue

public int intValue()

この Integer の値を int として返します。

定義:
クラス Number 内の intValue

戻り値:
このオブジェクトが表す数値を int 型に変換した値


793785:2005/12/18(日) 13:47:35
ご丁寧にありがとうございました。
ウィットにとんだジョークまで…

おかげさまで挫折せずにすみそうっす。
794デフォルトの名無しさん:2005/12/18(日) 14:46:39
マウスのカーソルを非表示にしたり、カーソルアイコンを変更したりするにはどうしたらよいのでしょうか?
795デフォルトの名無しさん:2005/12/18(日) 15:20:12
非表示は知らんがawt.Toolkitら辺に無いか?
796デフォルトの名無しさん:2005/12/18(日) 15:35:17
>>794
マウスカーソルを変更するのは Component#setCursor(Cursor)
カスタムカーソルを作成するのは Toolkit#createCustomCursor(Image, Point, String)
797デフォルトの名無しさん:2005/12/18(日) 15:37:16
KeyAdapterって何のためにあるの?
びっくりするくらい何もしてなくてKeyListenerの何が不満なのか分からない。
798デフォルトの名無しさん:2005/12/18(日) 15:41:36
>>797
無名クラスとかを簡単に書けるようにするため。

addKeyListener(new KeyAdapter(){
 public void keyPressed(KeyEvent e){
  //処理
 }
});

同じ処理をしようとするときに、KeyListener使うと
addKeyListener(new KeyListener(){
 public void keyPressed(KeyEvent e){
  //処理
 }
 public void keyReleased(KeyEvent e){ } //必要ないけど、書かないといけない。
 public void keyTyped(KeyEvent e){ } //必要ないけど、書かないといけない。
});
799デフォルトの名無しさん:2005/12/18(日) 15:44:08
なるほど無名クラスね・・・
やることをきっちりを分けて書くタイプだからその用途は盲点だった。
800デフォルトの名無しさん:2005/12/18(日) 16:38:24
RS232Cポートを利用したプログラムを作るために
ComunicationAPIを入れようとしたんですが、
Sunのページ(ttp://java.sun.com/products/javacomm/index.jsp
へ行ってもダウンロードできません。
もう公開されていないのでしょうか?
801デフォルトの名無しさん:2005/12/18(日) 16:43:19
ほんとだ、今ダウンロードできないね
802デフォルトの名無しさん:2005/12/18(日) 17:33:19
>>789
どうすればいいんですか?
803デフォルトの名無しさん:2005/12/18(日) 17:36:27
>>802
すでにあげられているそれ以外の2つのメソッドを使えばいいだけ

parseIntは先頭に0が着くと8進数処理がはいるとか
目的が違うものだよ
804デフォルトの名無しさん:2005/12/18(日) 17:39:02
ダウンロード画面のエラーメッセージが
No product selected. Please go back and select one.
なので、やり方が悪いんじゃないかと思うんですが
特に選ぶ項目が見つからないのでよく分かりません。
一時的な障害なんですかねぇ。

805デフォルトの名無しさん:2005/12/18(日) 17:40:28
parseIntはradix指定できるからこれだけで十分
806デフォルトの名無しさん:2005/12/18(日) 17:41:56
807デフォルトの名無しさん:2005/12/18(日) 17:59:43
parseIntで十分じゃん。
808デフォルトの名無しさん:2005/12/18(日) 18:01:22
>806
ありがとうございます。
これのWindows版が欲しかったんですが、
まだ無いみたいですね。
Linuxの方で考えてみます。
809デフォルトの名無しさん:2005/12/18(日) 18:58:29
>>808
2.0でよければ、UPできたりする。
810デフォルトの名無しさん:2005/12/18(日) 19:15:36
JDK5.0をインストールしたんですが、JRE5.0がインストールされませんでした。
JDKをインストールしただけでは、JREはインストールされないんでしょうか。
811デフォルトの名無しさん:2005/12/18(日) 19:18:44
されるされる。安心してよいぞ。
812810:2005/12/18(日) 19:19:49
>>811
いや、されなかったから質問しているんですが。
すでにJ2SDK1.4.2が入っているのがまずいのかな。
813デフォルトの名無しさん:2005/12/18(日) 19:19:55
>>810
オプションいじんなければデフォではいったと思うけど
814デフォルトの名無しさん:2005/12/18(日) 19:22:55
>>812
C:\java\jdk1.5.0_06\jre
こんな感じでjreディレクトリがあるしょ
815810:2005/12/18(日) 19:30:09
>>813
そうだと思ったのですが、そうじゃなかったので、なんでだろうと思って聞いてみました。

>>814
そのjreはフルスペックのJREなんでしょうか。よくわかってないんだけど、JDKのコマンドを動かすためだけの最低限のものということはない?
なんかWindowsのレジストリみても、Java Development KitのCurrent Versionは1.5で、
Java Runtime EnvrionmentのCurrent Versionは1.4のままなんですけど。
(書いてなかったけど、環境はWindowsXPです。)

というか、2ヶ月まえくらいにインストールしたときは、
C:\Program Files\java\jdk1.5.0._02
C:\Program Files\java\jre1.5.0_02
というかんじで、JDKとは別にJREがインストールされていたと思ったんだけど。
だから、JDKの下にあるjreディレクトリは必要最小限のだけで、フルスペックのJREは別にインストールされるんだーと思った覚えがある。
816デフォルトの名無しさん:2005/12/18(日) 19:35:49
>>815
C:\Program Files\java\jre1.5.0_02みたくなるのはjreのみを落としたときだけ
おまいが両方落としたからそうなったんでしょ
817デフォルトの名無しさん:2005/12/18(日) 19:36:00
jdkの最初のJREはPrivateJRE

JDKセットアップしたあとにPublicJREのインストーラが立ち上がるはずだけど
それをキャンセルつぃ他とか
818デフォルトの名無しさん:2005/12/18(日) 19:46:36
>>789
詳しく
819810:2005/12/18(日) 19:48:53
>>817
それでした。間違えてインストーラを2回クリックしたのかと思って、2つ目のインストーラを消してました。
いったんJDK5をアンインストールし、もう一度インストールしなおしました。
どうもありがとうございます。
ところでPrivate Javaってなんですか?

>>816
アドバイスしてくれてるのはありがたいんだが、あんまり適当なこといわないでくれ。混乱してしまうじゃないか。
820デフォルトの名無しさん:2005/12/18(日) 19:49:59
jdk\jreでいんだっての
人を信用しなさすぎだなおい
821810:2005/12/18(日) 19:51:18
>>819
PrivateJavaじゃなくてPrivateJREですね。
ぐぐったらこんなのが。
ttp://www.javaopen.org/jfriends/mlarchive/msg00145.html

> JRE には private バージョンと public バージョンがある。
> private バージョンは配付アプリケーションの一部として組み込む。
> public バージョンは実行環境として複数アプリケーションから共有する。
> JDK 自体は private バージョンの JRE を使用する。
822810:2005/12/18(日) 19:53:54
>>820
書き方がたりなかった。
JDKのコマンド自体は問題なくうごくようなんだけど、Eclipseを使ってるときに
プロジェクトで使用するJavaのバージョンを5にしてみたら、なんか警告がでた。
それで、あれ?と思って上のような質問になりました。
だから、Eclipseで動かすときはJRE5.0もたぶん必要なんじゃないでしょうか。
823デフォルトの名無しさん:2005/12/18(日) 19:57:10
いらねーよ(´д`)
何で開発版が、ただのランタイムより機能が制限されるのさ
824デフォルトの名無しさん:2005/12/18(日) 20:11:08
Eclipseが古いだけじゃね〜の?
825デフォルトの名無しさん:2005/12/18(日) 20:25:34
>>823
javacうごかすときはJDKのJREが使われるけど、
コンパイルしたものを動かすときは先にインストールされているJRE1.4が優先されて使われたんじゃないでしょうか。
もうJRE1.5がはいっちゃったんで確認できないけど。

>>824
3.1.1なのでそれはない。
826デフォルトの名無しさん:2005/12/18(日) 20:36:39
入力キーをフィルタリングするKeyListenerに
実際に値を送ってもらいたいKeyLintenerをチェインするのはまずい設計ですか?
値を送ってもらいたいKeyListenerが直接フィルタリングしたほうが良いのでしょうか?
827デフォルトの名無しさん:2005/12/18(日) 20:41:58
>>825
つうか、コンパイルはEclipse内蔵のコンパイラが使われるわけだが。
828デフォルトの名無しさん:2005/12/18(日) 20:46:07
オブジェクトをそのままファイルに保存し、
別の機会に呼び出してキャストしてそのまま使えるような仕組みってないのでしょうか。
829デフォルトの名無しさん:2005/12/18(日) 20:48:57
ObjectOutputStream, ObjectInputStream, Serializable
ここらへんのJavaDoc読んだらまた来てね
830デフォルトの名無しさん:2005/12/18(日) 21:01:16
>>827
そうですか。
でも話の主題はそこじゃないんですけどね。
831デフォルトの名無しさん:2005/12/18(日) 21:05:22
>>829
そうですか。
でも話の主題はそこじゃないんですけどね。
832デフォルトの名無しさん:2005/12/18(日) 21:07:09
>>830-831
そうですか。
でも話の主題はそこじゃないんですけどね。
833デフォルトの名無しさん:2005/12/18(日) 21:07:35
俺は間違ってないんだ!って初心者が来るといつもスレの空気が悪くなる
だったら質問しに来てんじゃねーよ、まじうざいっす(´д`)
834808:2005/12/18(日) 21:14:48
>>809
試しにRS232Cポートからデータを取得するプログラムを作成してみたいだけなので
2.0でも問題ないです。
よろしければUPお願いします。
835デフォルトの名無しさん:2005/12/18(日) 21:19:48
>>826
Swingの話?
836828:2005/12/18(日) 21:36:48
>>829
ありがとうございます。
JavaDocを読んでみます。

>>831は私ではないです。念のため。
837デフォルトの名無しさん:2005/12/18(日) 22:13:05
828じゃないけど、Serializableって、直列可したいクラスで宣言すれば、
メンバインスタンスのクラスが直列可指定してなくても大丈夫?
838デフォルトの名無しさん:2005/12/18(日) 22:29:08
>>835
Swingに限らずaddListenerのあるもの全般です。
Swingだと良いクラスがあるのでしょうか?
839デフォルトの名無しさん:2005/12/18(日) 22:32:10
まず最低限は書式付テキスト使って制御可能
1文字タイプするたびになんか処理したいのならドキュメントに対してイベントとって下され
840デフォルトの名無しさん:2005/12/18(日) 22:35:19
>>839
いやゲームで使いたかったのです
押しっぱなしにしても連続でイベントが投げられないようフィルタリングしようと
841デフォルトの名無しさん:2005/12/18(日) 23:00:04
842デフォルトの名無しさん:2005/12/18(日) 23:06:25
>>840
ゲームならそんな難しいこと考えなくていいと思うが。
843808:2005/12/18(日) 23:28:53
>>841
ありがとうございます!
844デフォルトの名無しさん:2005/12/18(日) 23:40:31
>>840
Windowsなら大丈夫
X-WindowSystemだとイベントの問題は残る
が、これはシステム上仕方ないようなのであきらめるしかない
845デフォルトの名無しさん:2005/12/19(月) 02:47:25
10×10の白いマスがあり、マスをクリックすると
黒になる、というプログラムなんですが
後一色追加したいんですよ、黒をクリックすると追加した色になるように

public AppFrame(String title){
super(title);
addMouseListener(new ma(this));
addMouseMotionListener(new mma(this));
for(int i=0; i<100; i++)
output[i] = -1;
setBackground(Color.white);
setForeground(Color.black);
}

public void paint(Graphics g){
for(int y=0; y<10; y++)
for(int x=0; x<10; x++){
if(output[y*10+x] == 1)
graphics.fillRect(10*x+50,10*y+50,10,10);
else{
graphics.setColor(Color.white);
graphics.fillRect(10*x+50,10*y+50,10,10);
graphics.setColor(Color.black);
}
}
多分この辺をいじればできると思うのですが
846デフォルトの名無しさん:2005/12/19(月) 02:53:40
エスパー募集とかやめて。
そんな一部分見せられても回答が返ってくる訳ない。
ソースポストとかどっかに全文あげてもう一回聞き直せ。
847デフォルトの名無しさん:2005/12/19(月) 02:54:27
というか宿題は宿題スレに池
848デフォルトの名無しさん:2005/12/19(月) 04:24:37
マウスイベントで
output[クリック位置] == 追加した色NO
paintで
if(output[y*10+x] == 追加した色NO)
でとりあえずええやろ
849デフォルトの名無しさん:2005/12/19(月) 04:29:16
入力した単語のyahoo!での検索ヒット件数を受け取りたいんですけど方法ありますか?あったら教えてください。
850デフォルトの名無しさん:2005/12/19(月) 04:49:08
>>845
paintメソッド内を以下のように修正
if(output[y*10+x] == 1){
graphics.fillRect(10*x+50,10*y+50,10,10);
//ここから追加部分
}else if(output[y*10+x] == 2){
graphics.setColor(Color.red);//好きな色を指定しろ
graphics.fillRect(10*x+50,10*y+50,10,10);
graphics.setColor(Color.black);
//ここまで追加部分
}else{
graphics.setColor(Color.white);
graphics.fillRect(10*x+50,10*y+50,10,10);
graphics.setColor(Color.black);
}

あと、mouseClickedかmousePressedの中でoutput[n](nはクリック位置から算出した値)に値が1なら-1そうでなければ1を代入している部分があると思うので、
ここを値が1なら2、2なら-1、どちらでもなければ1を代入に書き換える

次からはきちんと宿題スレに行くようにな。

>>846
スレ違いなのは間違いないけど、エスパー必要か?
851デフォルトの名無しさん:2005/12/19(月) 05:21:25
>>849
yahooに接続してHTML解析して件数取得
852デフォルトの名無しさん:2005/12/19(月) 09:46:36
 
853デフォルトの名無しさん:2005/12/19(月) 10:18:23
>>849
これ使えないかな?
ttp://developer.yahoo.co.jp/
854デフォルトの名無しさん:2005/12/19(月) 11:25:01
>>837
ダメ
Serializableされてないクラスのメンバインスタンスの直列化実行時に例外発生
855JutaeKim:2005/12/19(月) 11:48:01
Dear Everyone.

I'm sorry for writing this article in english.
Because I can't write in japaense, I'm very sorry.


I'm making a V-application, one of browser,
so, it can use http connection.

The application runs on emulator(V-appli Emulator for JSCL 1.2.1) correctly.
But, when I test it on my phone (V902T),
the application has some problem.
When the application try to connect to my server, it return 503 error.
503 error means "Server Unabailable..."
But, I can't find any log about the connection from the device.
So, I think, vodafone gateway rejects the connection.

As the last try, I download a http sample from Vodafone site.
(http://developers.vodafone.jp/dp/tool_dl/java/emu.php )
But, the sample application also made same result.

Are there some difference between emulator and V902T?
Are there some different way to use http connection ?

Thank you for read my question..
Sincerely.

856デフォルトの名無しさん:2005/12/19(月) 12:23:16
>>855
Are you able to read Japanese?
Can I anser in Japanese?
857デフォルトの名無しさん:2005/12/19(月) 12:49:20
byte型の変数を2桁の16進の文字列で表示したいのですが
いい方法を教えてください。

IntegerのtoHexStringだと、Integerに変換したときの値がマイナスの
場合、8桁(ffffffff〜)の文字列になってしまいます。

今はマイナスかどうか判断して下2桁を取っているのですが
もうすこしシンプルでスマートな方法をご教授ください。

858デフォルトの名無しさん:2005/12/19(月) 13:19:50
マスクを使え
859デフォルトの名無しさん:2005/12/19(月) 14:35:07
>>856
うるせー馬鹿。
860デフォルトの名無しさん:2005/12/19(月) 14:46:33
>>856
What the hell do you mean with the word "anser"?
861デフォルトの名無しさん:2005/12/19(月) 15:05:18
>>855

Hey, Fuckin'-Chosun-Sarang.

Internationally or historically, it cannot suspect that Takeshima is a Japanese territory.
The Korea-government is only loud voice and has escaped from Japan.
The Korea-government and almost Koreans cannot understand themselves objective.
We should go to the International Court of Justice in a hurry.

So, when you want to question Japanese people, study Japanese first.
Ah, Why do you use vodafone?
You like Samsung products.
About disagreeable Japanese products, you should not get interested.
ha ha ha.

Best regards.
862デフォルトの名無しさん:2005/12/19(月) 16:08:32
やあ元気?
863デフォルトの名無しさん:2005/12/19(月) 16:37:57
>>861
ワロス!w
知り合いの韓国人に聞いたんだが、サムスン製よりも日本の携帯の方が良いらしい。
ディスプレイのクオリティが悪いだの言ってた。

まあ、答えてやっていいんじゃないか?
864デフォルトの名無しさん:2005/12/19(月) 16:44:38
つまんない自演だな
865デフォルトの名無しさん:2005/12/19(月) 16:57:25
コリアンどもは、サムスンマンセー!KT-Telecomマンセー!なんだから、
日本の製品に興味もつなよ。
「世界最大の液晶作った!」「最大画素数のケータイ付きカメラ作った!」
「これで日本に勝った!」って連日やってんだから。
そのくせ、日本から工作機械買わないと液晶つくれねーし、着メロチップは
ほぼ100%、ヤマハや沖電子製だよ。
工作機械やパーツのお買い上げ、まいどあり!

まぁ、おまえらはおとなしく、いつまでも日本の技術属国やってなさいってこった。
866デフォルトの名無しさん:2005/12/19(月) 17:10:41
JAI って今どうなってるんですか?
JIMI のように既にサポートが打ち切られたりとかしてるんですか?
867デフォルトの名無しさん:2005/12/19(月) 17:23:33
>>866
javax.imageioで代用できんの?
868デフォルトの名無しさん:2005/12/19(月) 18:08:31
>>867
いや、機能的には代用可能ですけど、その場合
JAI の立場ってどうなってしまうのかぁって思ったので…。

このままお蔵入りですか? > JAI
869デフォルトの名無しさん:2005/12/19(月) 18:27:01
>>857
Integer.toHexString(0x000000ff & b);
(bはbyteの値)
870デフォルトの名無しさん:2005/12/19(月) 18:37:02
871デフォルトの名無しさん:2005/12/19(月) 19:06:44
何度もレスして済まないんだけど、現時点では
JAI がメインで ImageIO がオプションっていう扱いなの? (JIMI は死亡確定で)

内部的には JAI は ImageIO を呼び出してるけど。
872デフォルトの名無しさん:2005/12/19(月) 19:19:48
ImageIOはJAIのサブセットじゃないの?
873デフォルトの名無しさん:2005/12/19(月) 19:42:53
サポート範囲が違いすぎる
874デフォルトの名無しさん:2005/12/19(月) 20:24:03
ImageIOに出来てJAIに出来ないことって何?
875デフォルトの名無しさん:2005/12/19(月) 20:45:27
どうでもいいんですけど、サンの社員さん(?)もここ見てるんでしょ?

サンのJavaのページ、
http://jp.sun.com/java/

ページ真ん中辺に J2SE へのリンクがあるけど、いい加減リンク先変更してよw
いつまで 1.4.2 へのリンクを張ってるんだ?w
876デフォルトの名無しさん:2005/12/19(月) 20:47:52
例の印刷バグ発覚で引っ込めたとか
877デフォルトの名無しさん:2005/12/19(月) 21:03:11
親スレッドを作成し、子スレッドを三つ作成・実行するプログラム。子スレッドは
sleep()で一定時間停止、三つのスレッドを同期させるプログラム。
自分で作ってみたのですが
***.java:7: static でない 変数 this を static コンテキストから参照することは
できません。
ChildThread1 chd1 = new ChildThread1();
といったエラーが出るのですが、どうすればいいんでしょうか。
ご教授お願いします。
878デフォルトの名無しさん:2005/12/19(月) 21:05:21
どうスレッドを動同期させたいのか分からんけど、
コンカレントAPI使えば楽

879877:2005/12/19(月) 21:10:23
ただ単純にスレッドを同期させるだけです。
joinを使ってよいといわれているのですが..
ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=26525
これがソースです。
880デフォルトの名無しさん:2005/12/19(月) 21:45:24
>>873
http://www.javainthebox.net/laboratory/JDK1.4/Graphics/ImageIO/ImageIO.html

Image I/O はもともとは、この JAI の一部だったのですが、それが独立して JSR 15 になったという経緯を持ちます。

これは嘘ってこと?
881デフォルトの名無しさん:2005/12/19(月) 21:56:27
使ってよいって宿題かよ

宿題ならあちらへどうぞ
882デフォルトの名無しさん:2005/12/19(月) 21:57:00
>>880
サポート範囲違いすぎるでしょ?
あってるんじゃないの?
883877:2005/12/19(月) 22:02:36
すいません、スレ違いでした。
吊ってきます
884デフォルトの名無しさん:2005/12/19(月) 22:52:14
ってことは皆さん J2SE1.3 の時は何でイメージを読んでたんですか?
JIMI?
885デフォルトの名無しさん:2005/12/19(月) 23:10:06
awtだろ
886デフォルトの名無しさん:2005/12/19(月) 23:51:39
シリアライズを使って深いコピーを行うのってありですか?
何か問題がありますか?
887デフォルトの名無しさん:2005/12/19(月) 23:54:09
>>886
パフォーマンスじゃないかな。
あと、ちゃんと実装しておかないと、
シングルトンなオブジェクトでも複製できてしまう。
888sage:2005/12/20(火) 00:29:09
ファイル入出力について勉強してるのですが、
テキストファイル内の特定の行だけを削除、
例えば「2ちゃんねる」という言葉が入っている行だけを削除することって出来るでしょうか?
ファイルの読み込みはreadLine()を使って一行ずつ読みこんでます。
簡単に出来る方法あったら教えてください。
889888:2005/12/20(火) 00:29:55
sageミスすいません
890デフォルトの名無しさん:2005/12/20(火) 00:30:44
>>888
PetternとMatcher使えばいいよ。
891886:2005/12/20(火) 00:43:54
>>887
なるほど。パフォーマンスについては使いどころ次第と言えそうですが、
Singletonのオブジェクトが複製できてしまうのは困りものですね。
892デフォルトの名無しさん:2005/12/20(火) 00:55:51
Javaで文字じゃなくファイル送信する方法載ってる所とかないでしょうか?
随分Googleで探したのですが見つかりません(´・ω・`)
助言お願いします。
ファイルストリーム使ってみようともしたのですが、よく分かりませんでした・・・・
893デフォルトの名無しさん:2005/12/20(火) 01:04:06
>>855
Iをiとかかないスラングを使わない、
cannotをcan'tと書く、

あまりにも丁寧な文体である
ことから日本人である率が高い。
894デフォルトの名無しさん:2005/12/20(火) 01:34:43
imageI/O や JAI について調べてみたのですが、
どうしても1つだけ分からないことがあるので教えてください。

ImageI/O は J2SE 1.4 からコアパッケージとして搭載されるようになりましたが、
最初に(オプションパッケージ扱いで)登場したのはどのバージョンからなんでしょうか?
895デフォルトの名無しさん:2005/12/20(火) 01:38:25
>>891
複製したくないならちゃんとreadResolveを書けば問題ないよ
詳しくはEffective Javaでも読んでちょうだいな
896デフォルトの名無しさん:2005/12/20(火) 04:36:55
>>890
彼の言い方だとindexOfでもOKじゃね?
897デフォルトの名無しさん:2005/12/20(火) 09:30:24
>>892 サーブレットなら
http://www.h7.dion.ne.jp/~s_wat/jakarta/fileupload.html
これとか
898デフォルトの名無しさん:2005/12/20(火) 09:38:02
>>892
FileInputStream & OutputStream
899デフォルトの名無しさん:2005/12/20(火) 10:44:23
>>892
JavaなのでTCP/IPの事だとは思うが>>897の様なエスパーばかりじゃないので
質問の内容はもっと細かく書く様に
900デフォルトの名無しさん:2005/12/20(火) 14:56:34
Java でメッセージボックスを表示させるにはどうしたら良いですか?
901デフォルトの名無しさん:2005/12/20(火) 15:09:14
JOptionPane
902デフォルトの名無しさん:2005/12/20(火) 15:24:25
>>892
つ [Jakarta Commons FileUpload]
903デフォルトの名無しさん:2005/12/20(火) 15:57:39
>>901
ありがとうございます
904デフォルトの名無しさん:2005/12/20(火) 16:00:44
アノテーションと普通のインターフェースをどう使い分けるべきでしょうか。
哺乳類のサブクラスにライオン、羊、豚がある場合、
肉食、草食といった性質はどちらで表現すべきでしょうか。
905デフォルトの名無しさん:2005/12/20(火) 16:12:15
ロジックは普通に言語の範囲内で書くべし

アノテーションはツールやフレームワークが使うものとしたほうが便利かと
906デフォルトの名無しさん:2005/12/20(火) 16:33:32
>>904
そういった、モデルに関することはクラスやインターフェースであらわしたほうがよい。
アノテーションの使いどころは>>905に同意。
907デフォルトの名無しさん:2005/12/20(火) 16:34:40
次世代JUnit, TestNGとJBoss, EJB3.0, Hibernateを見れば
アノテーションの使い方が見えてくるかも知れない。
908904:2005/12/20(火) 17:27:50
>>905-907
有難うございます。
アノテーションの使い所はロジック以外の所にあるんですね。
JavaDOCの5.0の新機能で紹介されている例も簡易ツールでしたし。
909デフォルトの名無しさん:2005/12/20(火) 18:14:44
javaでstatic constなオブジェクトって作れないんですか
910デフォルトの名無しさん:2005/12/20(火) 18:19:08
試せよ
911デフォルトの名無しさん:2005/12/20(火) 19:05:51
試したらエラーが出るんです
public class B{
public B()
{
java.lang.System.out.println("construct");
}
public void func()
{
final static B b = new B();
}
public static void main(String[] s)
{
}
}

b.java:9: 修飾子 static をここで使うことはできません。
912デフォルトの名無しさん:2005/12/20(火) 19:10:14
ローカル変数にstaticを使用することは不可能
913911:2005/12/20(火) 19:19:12
クラスのメンバ変数として持つしかないということですか
ども
914デフォルトの名無しさん:2005/12/20(火) 19:58:06
staticの意味がわかってないな
915デフォルトの名無しさん:2005/12/20(火) 21:34:03
クラス変数だ
916892:2005/12/20(火) 22:04:16
>>899
TCP接続でチャットできるのを作ったのですが
それにファイル送受信の機能をつけたいのです。(^^;
917デフォルトの名無しさん:2005/12/20(火) 22:55:44
X-MODEMやKermitあたりを実装しる
918デフォルトの名無しさん:2005/12/20(火) 22:57:12
>>917 TCPの上に実装するのは効率悪すぎだな。
と、マジレス。
919デフォルトの名無しさん:2005/12/20(火) 23:03:24
>>916
「今からxxバイト送るよ〜」と言ってxxバイト送ればいい
920デフォルトの名無しさん:2005/12/20(火) 23:11:46
手順の勉強するならいいとおもわれ
921デフォルトの名無しさん:2005/12/20(火) 23:37:26
こんばんわ
前にここの人に言われて
結城浩先生のデザパタ入門を図書館で
借りてきたいのですけども
ちょっと難しいですけど目から鱗と言うか
勉強になってるのですが・・・・
流石にGoFの23個全部覚えるのはちょっとキツイので
これだけは覚えておけ!ってパターンが有ったら
教えて頂きたいのですが・・・・?
922デフォルトの名無しさん:2005/12/20(火) 23:45:38
業務なら
Iterator
Strategy
Bridge

ゲームなら
Flyweight
Prototype
Composit

うーん、やっぱ全部おぼえれ。ゆっくりでええで。
923デフォルトの名無しさん:2005/12/20(火) 23:56:45
>>922
やっぱりそうですか・・・
最近やっとオブジェクトも基本型の様に
フィールドやメソッドの引数で利用するのがオブジェクト指向
なんだなぁ〜と漠然と分かってきた気がしてたのですが
改めて見てみると結構大変で。

よく仕事ではオブジェクト指向や再利用よりも納期に合わせる為に
力業でコードを書くとか聞くのですが・・・?
でもやっぱり覚えてないよりは全然良さ気ですね。
924デフォルトの名無しさん:2005/12/20(火) 23:59:19
>>923
業務系はプログラマってかコーダーだから大体は力技でOK
コード書いてて「どうもここは設計に変更がありえるな」ってところにデザパタ
お客様の追加仕様や意識合わせ不足による誤解とかで結構変わるからね
925デフォルトの名無しさん:2005/12/21(水) 00:03:06
あとデザパタ至上主義名コードは結構嫌われる(やたらFactoryの付くクラスが多いとか)
プログラマ同士が設計を検討する中で「○○パターンでいいんじゃない?」みたいな
アルゴリズムを書いて見せなくてもそれと分かるための名前みたいなもんだよ

926デフォルトの名無しさん:2005/12/21(水) 00:09:01
>>924
設計はSEがして
プログラマの人はコードを書くとしたら
全体の設計で意思の統一が出来てないと
デザパタの意味があんまり無いですよね?
それにプログラマの仕事って下請けや孫請けとか
も多いらしいですが、今の多くの現場とかでも
デザパタとか浸透してるんでしょうか?
まだ初心者で自分の趣味程度でしかコードを書いた事が
無いので他人様との意思疎通にデザパタが役に立てば
イイとも思うのですが・・・・
まぁ雇って貰ってもどうせ下っ端ですけど・・・・
927デフォルトの名無しさん:2005/12/21(水) 00:10:49
Factoryばかりならぶのはたしかにきっついなぁ
本当に汎用的なライブラリならいいのだが

VBからの移行が多いので最近VBのコード見てるけど
このシンプルな命令はJavaにも欲しいとかはある
928デフォルトの名無しさん:2005/12/21(水) 00:14:35
jspからservletでセットしたセッション情報って読めないんですか?
----jsp
<form action="/Servlet" method="get">
name<input type="text" name="name"><br>
message<input type="text" name="message"><br>
<input type="submit" value="送信">
</form>
<%
String res = (String)request.getAttribute("res");
if(res == null){
res = "未入力";
}
out.println(res);
%>
</body>
</html>
----servlet
String old = (String)session.getAttribute("res");
//フォームの内容
String name = request.getParameter("name");
String message = request.getParameter("message");
String res = name + ":" + message + "<BR>" + old;
request.setAttribute("res",res);
RequestDispatcher dispatcher =
request.getRequestDispatcher("/a.jsp");
dispatcher.forward(request,response);
---
はしょってますが、こんな感じなんです・・・
セッション情報がいつもnullなんです。
929デフォルトの名無しさん:2005/12/21(水) 00:18:04
>>926
んなこたないIteratorとかはそもそも柔軟な設計を可能にするためのパターンだもん。
例えば表をJSPで出力するとして、あるときあるステータスのものは表示しないってなったら
JSPを変更(Strutsなら<logic:notEqual>とか)するより、hasNextでフィルタリングしたほうがスマートでしょ
930デフォルトの名無しさん:2005/12/21(水) 00:21:09
String old = (String)session.getAttribute("res");
がjspで

session.setAttribute("res", session);
がservlet

だろうが
931デフォルトの名無しさん:2005/12/21(水) 00:21:57
>>926
> デザパタとか浸透してるんでしょうか?
してないね。だから意識させずにすっと使えるとこだけ使う。
932930:2005/12/21(水) 00:27:14
session.setAttribute("res", session);
ってのはちょっとめんどくさがりすぎた

String old = "古い";
session.setAttribute("res", old);
933デフォルトの名無しさん:2005/12/21(水) 00:31:23
>>930
セッションとリクエストとは違うぞ
934932:2005/12/21(水) 00:48:09
>>933
何か俺間違ってる?
嘘教えたらいけないから、ちゃんと突っ込んでくれ。

>>928からのソースからしてこれで問題ないと思うのだが
935デフォルトの名無しさん:2005/12/21(水) 00:51:41
>>931
なるほど
浸透してなくて力業でコード書かされる場合は
使える所だけ使うって事ですね。
何でもかんでもデザパタで万能でも無いんでしょうし。
でもちゃんと使った方が保守やデバックは簡単ですよね。
でも意識させずに・・・・って何か悪い事してるみたいですね
936デフォルトの名無しさん:2005/12/21(水) 01:01:50
>>935
あのなデザインパターンなんて本に載ってる通り使うもんじゃないぞ
>>925 が言ってる「アルゴリズムを書いて見せなくてもそれと分かるための名前みたいなもんだよ 」
>>929 が言ってる「柔軟な設計を可能にするためのパターン」

こなへんを学ぶために各デザインパターンの1使用例
を本とかで見て、そのパターンの感覚を掴む事の方が大事だぞ。
937デフォルトの名無しさん:2005/12/21(水) 01:10:31
>>936
”感覚”ってやっぱり沢山コードを書く事が
一番の上達法なのでしょうか?
自分はjavaの基本もそこそこにjsp/servletや
データベースとかばっかりやってたんですが
javabeansを利用するにもやっぱり基本の大切さを
今更ながら気付いて再勉強中でして。
コードを読み書きする時とかに何かコツとかが有れば
アドバイスして頂けると有り難いのですが?
938デフォルトの名無しさん:2005/12/21(水) 01:13:51
>>934
セッションに格納するのが目的ではなくて
サーブレットからJSPへデータを渡したいだけだと思うが
939デフォルトの名無しさん:2005/12/21(水) 01:14:55
いままで作ってきたコードを振り返って
どうすれば仕様変更に対して、柔軟に対応できたかとか考える機会をもつとか

Javaならデザインパターンでinterfaceをどう活用するか
じっくり調べてみるとか
940デフォルトの名無しさん:2005/12/21(水) 01:15:43
>>937
他人の汚いソースを読み、他人の綺麗なソースを読み、納得すること。
他人の厨ライブラリを試し、他人の定番ライブラリを試し、納得すること。
941デフォルトの名無しさん:2005/12/21(水) 01:17:32
沢山コードを書くってのは、最初は中々難しいじゃないか。
誰かが、こう結果が出るプログラム組んでみろとか
言ってくれればいいけど、一人では最初中々難しい。

なのでやっぱり沢山読むのがいいな。
sunが出してるjavaの中身とか
jakartaのオープンソースとかは
さすがに非常に綺麗に書かれている。

インターフェースや抽象クラスがどう使われているのかを
特に注意して読んでれば、何となく分かる日がくる。

それでもまだ分からなければ、まだその時ではないって事だ。
そんなに神経過敏になる必要はない。
942デフォルトの名無しさん:2005/12/21(水) 01:20:00
>>938
>jspからservletでセットしたセッション情報って読めないんですか?
と書いてあるじゃないか。

そして、>>928 のソースには
どこにもセッションに設定されていないではないか
943デフォルトの名無しさん:2005/12/21(水) 01:22:18
未入力って表示されるのが問題って話じゃないの?
944デフォルトの名無しさん:2005/12/21(水) 01:23:06
>>939,949
なるほど・・・
”仕様変更”って結構重要っぽいですね。
自分でどうすれば後々便利で使い易く
分かり易いコードを書けるか色々試してみます。
有り難う御座いました。
945デフォルトの名無しさん:2005/12/21(水) 01:23:36
エスパー募集
946デフォルトの名無しさん:2005/12/21(水) 01:25:41
見る限りの>>928のソースには、セッションを取得もしてないし
セッションに設定もしてないし、nullなのは当たり前だわな。
947デフォルトの名無しさん:2005/12/21(水) 01:31:23
>>941
今までは本のサンプルなんかを読んで読んで
読みまくってjspとかを書いていたんですが・・・
自分で本に書いてる内容は理解出来ても
0から作るのがどうも苦手で・・・まぁそれはホントの
意味で理解出来て無いでしょうけど。
だからjavaの基本を勉強し直して自分の能力の底上げを
しようかと。
30秒見て分からないメソッド(コード?)は駄目駄目らしいですけど
如何せん実力が無いから良いコードと悪いコードの
判別も結構キツイかも知れません。
privateかpublic。staticかどうか。
戻り値に引数なんかを今頃やっとこさ
意識して読める様になったくらいで・・・・
修行が足りん。


948デフォルトの名無しさん:2005/12/21(水) 01:32:42
じゃあ修行しろ
949デフォルトの名無しさん:2005/12/21(水) 04:19:33
java.awt.Label
の表示している文字列を太字(ボールド)にするにはどうしたらいいんでしょうか?
教えてください
950デフォルトの名無しさん:2005/12/21(水) 06:39:39
java.util.GregorianCalendarについて。
set()
で年やら月やら時刻要素を設定しても、なんかうまくいかないんです。
toString()では表示されていた値が取り出せません
たとえば、
set(2005, 1, 5, 0, 0, 0);
とすると、toString()で取り出した文字列の中では
YEAR=2005 MONTH=0 DAY_OF_MONTH=4
等となっているのに、.YEAR等で取り出した文字列は
.YEAR=1 .MONTH=2 . DATE=5
と由来不明の数字が出てしまいます。
引っかかる点としては
toString()で
time=? 等の設定していない項目が全て?になっている点でしょうか。
さっぱり分からないのでお願いします。
951デフォルトの名無しさん:2005/12/21(水) 07:01:38
>>949
いまどきAWTなんか使ってるなよ
952デフォルトの名無しさん:2005/12/21(水) 07:20:08
馬鹿は減らない
むしろ悲しいくらいに増えている
953950:2005/12/21(水) 07:31:33
なんとか解決しました。
instance.get(instance.YEAR)
で出来ました。(instanceはGregorianCalendarクラスのインスタンス)
instanceを2回書かなければならないのが面倒ですが。

馬鹿ですいません。
954デフォルトの名無しさん:2005/12/21(水) 07:53:38
955950:2005/12/21(水) 09:43:18
>>954
ありがとうございます。
今まで読んでいて遅くなりましたが
いろいろ勉強になりました。
956デフォルトの名無しさん:2005/12/21(水) 09:44:08
>>949
label.setFont(new Font(null, Font.BOLD, 12));
957デフォルトの名無しさん:2005/12/21(水) 09:53:11
http://page.freett.com/kb100000/CalcServer.javaのマルチスレッドサーバの
作り方を教えていただけませんか?課題説明は以下のような感じです・・
スレ違いなのですが本当にお願いします・・

class Handler implements Runnable {
Socket s;
Handler(Socket s) {
this.s = s;
}
public void run() {
try {
第1行を除いたサーバのループの内容
} catch(Exception e) {e.printStackTrace();}
}
}
元のサーバのループは以下のようになる。
while(true) {
Socket s = ss.accept();
Thread t = new Thread(new Handler(s));
t.start();
}
958デフォルトの名無しさん:2005/12/21(水) 09:55:26
宿題スレに池
959デフォルトの名無しさん:2005/12/21(水) 09:56:51
>>957
説明の通り。
960デフォルトの名無しさん:2005/12/21(水) 10:07:22
全然分かりません・・
こんな感じでしょうか?
import java.io.*;
import java.net.*;
import java.util.*;
class Handler implements Runnable {
Socket s;
Handler(Socket s) {
this.s = s;
}
public void run() {
try {

while(true) {
Socket s = ss.accept();
Thread t = new Thread(new Handler(s));
t.start();
}

} catch(Exception e) {e.printStackTrace();}
}
}
961デフォルトの名無しさん:2005/12/21(水) 10:29:50
>>960
で、それだとどうなったの?
962デフォルトの名無しさん:2005/12/21(水) 10:46:54
Handler3.java:13: シンボルを見つけられません。
シンボル: 変数 ss
場所 : Handler の クラス
Socket s = ss.accept();

ってなりました。てか、根本的に違うんですかね。。
ネットで調べたの真似てテキトーに繋げたけど全く違うようなもの↓
963デフォルトの名無しさん:2005/12/21(水) 10:48:00
class Handler implements Runnable {
Socket s;
Handler(Socket s) {
this.s = s;}
public void run() {
while(true) {
try {
Socket s = ss.accept();
Thread t = new Thread(new Handler(s));
t.start();
}} catch(Exception e) {e.printStackTrace();}}}
public static void main(String args[]) {
try {
int port = Integer.parseInt(args[0]);
ServerSocket ss = new ServerSocket(port);
while (true) {
Socket s = ss.accept();
InputStreamReader isr = new InputStreamReader(s.getInputStream());
BufferedReader reader = new BufferedReader(isr);
int x = Integer.parseInt(reader.readLine());
int y = Integer.parseInt(reader.readLine());
OutputStreamWriter osw = new OutputStreamWriter(s.getOutputStream());
BufferedWriter writer = new BufferedWriter(osw);
PrintWriter out = new PrintWriter(writer);
out.println(x+y);
out.flush();
s.close(); }} catch(Exception e) {e.printStackTrace();}}}
964デフォルトの名無しさん:2005/12/21(水) 10:50:36
相手するなよ
965デフォルトの名無しさん:2005/12/21(水) 11:26:54
>>953
.YEAR等はstaticなフィールドなので、Calendar.YEARで使える
966950:2005/12/21(水) 14:42:46
>>965
ありがとうございます。
そうですね。
instance.get(Calendar.YEAR) とすると。
これはなんとか理解できました。
967デフォルトの名無しさん:2005/12/21(水) 20:51:21
ループ内で変数(整数型)を宣言するのと
ループ外で宣言した変数をループ中で使い回すのと
どちらの方が効率がいいのでしょうか?
ループ内で宣言しても一周ごとに破棄されると思っていましたが
あまりよくないみたいなことが書いてあったので。
また、一般の変数使い回しについても情報お願いします。
968デフォルトの名無しさん:2005/12/21(水) 20:56:56
サーブレットの破棄されるタイミングについて教えてください。

サーブレットは初回起動時にインスタンスが作成され、それ以降は
要求待ち状態で次からのリクエストを待つとなっています。
2度目以降のリクエストを待つはわかるのですが、破棄されるタイミングは
どのタイミングになるのでしょうか?

Tomcatが管理しているらしいことは書籍に書いてあったのですが・・・
969デフォルトの名無しさん:2005/12/21(水) 23:01:33
>>968
コンテナを止めるときじゃないかな?
970デフォルトの名無しさん:2005/12/21(水) 23:07:31
>>967
変数の使いまわしは常に悪
971デフォルトの名無しさん:2005/12/21(水) 23:08:00
>>967
とりあえず気にするな
まずは分かり易いコードを書く独力した方がいい
変数も可能な限り使いまわさない
その辺のコストはパフォーマンスが問題になってからでもいい
分り易く書いていれば修正もできる
972デフォルトの名無しさん:2005/12/21(水) 23:09:32
独力じゃなく努力だ、すまん
973デフォルトの名無しさん:2005/12/22(木) 00:27:06
Javaでプログラムを作るとき、時系列はシーケンス図で考えるべきでしょうか。
どうしてもただのフローチャートになってしまうのです・・・。
何かコツがあるのでしょうか。

(1)Webアプリ
画面JSPでボタン押下 → リクエストの取得 → DBへのアクセス → 結果の取得 → 画面JSP

(2)シューティングゲーム
オープニングタイトル → ステージ → ボス戦 → リザルト ◇→ エンディング
                  ↑                    │
                  └─────────────┘

もちろん、エンティティとかレコード構造体とか、敵キャラとか弾とかは
オブジェクトで考えるのですが・・・。
974デフォルトの名無しさん:2005/12/22(木) 00:43:15
シーケンス図で"考えるべき"かといったらNOだなぁ

どうしてもフローチャートになってしまうのなら、
フローチャートによる記述が最適ってことだと思うよ
→結局オブジェクト間のメッセージのやりとりを書こうとしているのではなく、
  処理の流れを書こうとしてるってことだと思う。

シーケンス図はどちらかというと、処理の流れを実現するには
オブジェクト間のメッセージがどんな感じでやりとりされるかを
記述するものだからね

(1)や(2)を描くのならアクティビティ図の方がいいんじゃない?
975973:2005/12/22(木) 01:15:03
>>974
なるほど。
UMLはまだ勉強中でアクティビティ図はまだ未着手だったんですが、
早速考えてみます。
ありがとうございました。
976デフォルトの名無しさん:2005/12/22(木) 01:19:49

>>923
> >>922
> やっぱりそうですか・・・
> 最近やっとオブジェクトも基本型の様に
> フィールドやメソッドの引数で利用するのがオブジェクト指向
> なんだなぁ〜と漠然と分かってきた気がしてたのですが
> 改めて見てみると結構大変で。
>
> よく仕事ではオブジェクト指向や再利用よりも納期に合わせる為に
> 力業でコードを書くとか聞くのですが・・・?

そういう悪い会社や組織、プロジェクトを基準に考えちゃいけないよ。
何が良くて何が悪いのかを見極めることが大事。
団塊の世代という人口が日本でも最も多い層が
儒教精神じみた古いことをいっているからといってかならずしも
その通りに従う必要はない。


団塊という長いものに巻かれる必要がないのと
同じように古い考え方に取り憑かれたものに
己の創造力を自ら蹂躙させられるようなことを
する必要もない。
977デフォルトの名無しさん:2005/12/22(木) 02:19:24
オブジェクト指向とか力技とかでなくXPしてるなら再利用性よりシンプルコードを目指しても良い
978デフォルトの名無しさん:2005/12/22(木) 02:59:25
> 最近やっとオブジェクトも基本型の様に
> フィールドやメソッドの引数で利用するのがオブジェクト指向
> なんだなぁ〜と漠然と分かってきた気がしてたのですが

間違えてる気がする
っていうか、ずれてるのかな
979デフォルトの名無しさん:2005/12/22(木) 03:03:45
>>978
ちがうねぇ。

でもまあ、業務アプリケーションだとあまりオブジェクト指向必要ないし使うの難しいからしかたないのかも。
とくにWeb。
980デフォルトの名無しさん:2005/12/22(木) 03:08:50
>>976
全くもって仰る通りなのですが理想を貫きには
納得させるだけの力が無いと駄目ですね・・・・
上の人がちゃんとしててSEとかもデザパタに精通
してて意思の疎通もスムーズなら・・ってそんな
職場とかが少数で有るなら自分以外のコードが力業で
その中に再利用や保守しやすいコードが含まれてるのも
結局全体から見たら汚いコードの様な。
>>977
”シンプル”って言うのも難しいですね・・・
初心者の”シンプル”さとプロの”シンプル”さは
違うだろうし。。
デザパタってのも実力が有る人には使い易い指針に
なるでしょうし・・・自分には結構難解ですけど。
ハードに修行しないとな
981デフォルトの名無しさん:2005/12/22(木) 03:11:09
>>978
マジですか?
ニュアンスとかじゃ無くて完全に間違えてるなら
javaにとっての”オブジェクト指向”とやら具体的に
教えてください。
982デフォルトの名無しさん:2005/12/22(木) 04:00:58
>>981
完全に間違ってるので、「勉強しなおせ」としかいえない。
金払ってくれるなら、時間さいて教えてやるけど。
983デフォルトの名無しさん:2005/12/22(木) 04:02:29
>>981
気を悪くしたのであれば謝る。

で、平気で『javaにとっての”オブジェクト指向”とやら具体的に教えろ』と
言えるのは素直で良いとも言えるが、オブジェクト指向そのものを
理解していないのではないかと思う。

俺個人は、言語によって"オブジェクト指向"に違いはないと思っている。


教科書的にオブジェクト指向を言ってしまえば、
内部に情報を持っていて、外部から活性化される振る舞い(メソッド)を
持っている”オブジェクト”と、オブジェクトが持っている振る舞いを活性化
させる”メッセージ”で考えるのが”オブジェクト指向(の考え方)”

たとえば、文章を処理するシステムを作ろうと、文字列と
文字列を操作する処理(たとえばsubstring)を考えることにした。

・旧来的な考えでは、情報と振る舞いが何の脈絡もなく定義されていた。
 文字列→文字の配列(ほかの表現手段でも良い)
 substring→渡された文字の配列から部分配列を作る関数(→要は引数xを渡すと結果yが返る)

あなたの言うオブジェクト指向はこれと何ら変わらない。(と思えてしまう)


・Javaにとっての"オブジェクト指向"として考えるとStringオブジェクトというもが生まれた。
内部の情報として自身が表す文字列を保持し(配列でもコレクションでも実装方法は何でもいい)
文字列を操作する振る舞いを保持している。
文章処理システムはこのStringオブジェクトにメッセージを送ることで処理を行う。
984デフォルトの名無しさん:2005/12/22(木) 04:07:48
>>982
単なるオナニストか・・・・
無視して勉強しよっと
985デフォルトの名無しさん:2005/12/22(木) 04:23:50
>>937
自他のコードをたくさん読んで、直すこと(を考える)も必要かな
自分は、いかに重複コードを書かないようにするかってのから始めた

たとえばこんなのがよくあった。
 superとsubで処理シーケンスがほとんど同じで
 違うと言ったら、newするクラスが違うくらい
 ・・・どうにかならないだろうか
 って考えてみる

 newするところだけメソッド化すればsubはそのnewするメソッドを
 オーバーライドするだけだよな、と気づく。・・・結果的にFactoryMethodパターン
 そもそも、この処理シーケンスってほかも同じじゃね?
 インターフェースをうまく決められればインターフェースに対して実装できるじゃん
 で、そいつは共通のクラスとすっかぁ・・・Templateパターン

 と言った具合

こんな感じを繰り返すと、設計段階でどんなパターンが適用できるか
見えてきたりする。
986982:2005/12/22(木) 04:37:39
>>984
おう。
たくさん勉強しろ。
987デフォルトの名無しさん:2005/12/22(木) 04:52:16
>>983
あなたは982の人とは別の型ですよね?
同じ人ならご無礼をすいません。
>>986
ちょっと言い過ぎましたけど
ちゃんと応酬出来るくらいに成長して戻ってきます

でもオブジェクトにメッセージを送るって時に
普通javaならオブジェクトを変数にしてアクセスするか
メソッドの引数にするかとか
インターフェイスを介してアクセスするか委譲?とか有って・・・・
後はデザパタ宜しく自分の設計に従ってそれらを組み合わせて作る
しかでは無いのでしょうか?
Cは知りませんけどデータとサブルーチン?が分離されてるらしい
から手続き型になると・・・・間違ってたらすいません、テヘ



988デフォルトの名無しさん:2005/12/22(木) 05:14:47
まあソースはいっぱい出回ってるから読んで良いと思ったとこ真似していけば自然と覚えると思うけど。
ただこれで覚えると「XXパターン」といわれてもわからん。例だして「こんな感じの」って言ってもらわないと。
989デフォルトの名無しさん:2005/12/22(木) 06:16:21
>>987
Javaは「オブジェクトにメッセージを送る」という言語ではないので、そこは気にしないほうがいい。
990デフォルトの名無しさん:2005/12/22(木) 06:20:57
991デフォルトの名無しさん:2005/12/22(木) 06:37:11
この本読んで、「Javaにはポインタしかない」とか言っちゃう痛い子にならないためにひとつアドバイスだ。
Java言語にはポインタはない。あるのは「参照」
JavaVMでは「参照」の実装にポインタを使っている。
「参照」とポインタは同じような働きをするが、別のものだぞ。
992デフォルトの名無しさん:2005/12/22(木) 08:13:42
オブジェクト指向の定義がここの人も
考え方(信念、指向「嗜好」、哲学?)みたいなのが
バラバラな感じがする。
まぁ言葉で表現するから余計に衒学的。
983と989で言ってる事がズレてるし
”メッセージで考える”と”メッセージを送る”
此処ではそれぞれ何を意味してるの?

或いはこれの違いがjavaの肝なのか・・・・
993デフォルトの名無しさん:2005/12/22(木) 08:24:30
>>991
どうちがうのかな?
994デフォルトの名無しさん:2005/12/22(木) 09:20:34
>>993
ポインタという言葉の意味も文脈による罠。
ここのスレ(http://pc8.2ch.net/test/read.cgi/tech/1131273918/)の終わりの方でポインタを一意的にしか見れない困ったちゃんが必死こいてたよ。
991もその一人ではないかと想像。
995デフォルトの名無しさん:2005/12/22(木) 10:02:23
>>993
ポインタはアドレスで、参照はID
996デフォルトの名無しさん:2005/12/22(木) 10:25:02
「ポインタ」「参照」の言葉の定義はなんだ?c++というこでいいのかな?
とするとjavaのObject型はどちらでもないよな。どっちかというと演算はできんがポインタか。
997デフォルトの名無しさん:2005/12/22(木) 11:07:15
Javaの参照とCのポインタは違うのに、わざわざ参照のことをポインタと呼んで、それで「JavaのポインタとC++の参照の違い」などという章を作るなら、ポインタという言葉を使わずに参照で説明して欲しかった。
あの時代はCからの転向組を強く意識する必要があったのだろうけど。
998デフォルトの名無しさん:2005/12/22(木) 11:08:26
×「JavaのポインタとC++の参照の違い」などという章
○「JavaのポインタとC++のポインタの違い」などという章

カコワルイ・・・orz
999デフォルトの名無しさん:2005/12/22(木) 11:13:47
1000デフォルトの名無しさん:2005/12/22(木) 11:14:25
1000なら
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。