【初心者】Java質問・相談スレッド77【大歓迎】
1 :
デフォルトの名無しさん :
2005/12/08(木) 14:26:57
2防止
3 :
デフォルトの名無しさん :2005/12/08(木) 16:12:30
文字コードの変換をするメソッドを作りたいと思っています。 byte[] method(byte[] source, String srcEnc, String transEnc) { // source を srcEnc形式 → transEnc形式に変換しbyte配列で返す } CharsetEncoder,Charsetなどを使えばできることはわかったのですが これらのインスタンスを生成する方法などがわからずこまっています。 もしよろしければアドバイス等おねがいいたします。
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つを読み込むにはどのようにすればいいですか?
10 :
デフォルトの名無しさん :2005/12/08(木) 21:43:39
>>9 教科書持ってません。ネットで調べても,1行にひとつの数字がある場合しか見つかりません。
じゃあもっと探せ 正規表現ならいっぱいあるから
>>3 そもそもCharseEncoderもCharsetも必要ない。
return new String(source, srcEnc).getBytes(transEnc);
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 です。
>>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();
}
}
>14 とりあえずどんなメソッドにその文をかいている? もう少し前後のプログラムを書けよ。 おそらくstaticフィールドをとかEclipseに警告はかれてるんじゃないか?
初期化の順序が問題とか?
18 :
デフォルトの名無しさん :2005/12/08(木) 22:15:15
>>15 変ですね・・・こちらの環境だけですかね?
>>16 コンストラクタからメインループに飛んで、
そこのループ開始直前で使っています。
初期化の順序が問題
デバッガで追っていけ
マルチスレッド環境でユーティリティクラスを作るときの注意点などありますか? 生成されたスレッドの中身の処理が担当です。
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(){ }のところ削除で解決しました。
デフォルトのブラウザを呼ぶAPIってありますか? exec Start じゃなくて。
>>1 乙。
教科書ぐらい買えとは思うな。
無料で済ませても大した勉強には成らない。
>>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
勝手に困ってなさい
32 :
デフォルトの名無しさん :2005/12/09(金) 08:05:06
>>31 どうした?その短絡的反能。
おまえは友達の数にコンプレックスでもあるのか?
>27 ヒープ領域とかヒープサイズとかの設定でぐぐれ。 正直環境かいてないと答えにくいわ。
ビット演算子とシフト演算子は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; ^ と出ています。 どなたかわかる方いらっしゃいますか?
定期的に処理を行うアプリを作りたいと思います。 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クラスという便利なクラスがありまする。
>>34 x <<= 1;
x |= 1;
キャストでやる場合は
x = (byte)(x << 1);
x = (byte)(x | 1);
>>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)に月 みたいにとりたいのです。おしえれください
Javaアプリでコンソールウィンドウを開かずに JFrameを出したいんですがどのようにすればいいんでしょうか?
javaw
42 :
36 :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
45 :
デフォルトの名無しさん :2005/12/09(金) 12:10:44
ちっくしょー、タイムマシンがあれば みんなの分をみらいから買ってきて5万円で売ってあげるのに
文字列にハイフンと数字以外の文字が入っていたらエラーを返す プログラムを書けと学校の宿題で言われたのですが、どうIf分を書けば いいか分かりません。どなたか教えてください。
48 :
デフォルトの名無しさん :2005/12/09(金) 12:35:52
>>48 そこだと丸投げしろと書いてあるので・・・
できれば自分で書きたいのでやり方だけ教えてもらいたいんです。すいません。
50 :
デフォルトの名無しさん :2005/12/09(金) 12:50:14
>>49 ごめん、なんか正規表現使うやり方しか思いつかない。
if使ってってめんどくさそう。
>>47 if文の書き方は以下の通り
if ( エラーになるときの条件 ){
エラーを返す処理
}
正規表現使うか、ループで全部の文字を検査するか。 そのぐらいのif文なら簡単だろ。
ループなしで、一つのif文でやれってか? だったら正規表現だな。
>>24 JDIC 使え。
org.jdeskto.jdic.desktop.Desktop#browse(URL)
55 :
34 :2005/12/09(金) 13:21:39
>>35 さんありがとうございました。そのやり方でできました。
明日が提出期限の課題だったんですが、先ほどプログラム完成しました。・゚・(ノ∀`)・゚・。
そのプログラムが「Huffman Coding Algorithm」を使ってStringをencodeしてdecodeするというものなのですが、
日本でもこのアルゴリズムって習いますか?
56 :
34 :2005/12/09(金) 13:26:19
>>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) って出るんだけどなんでかな?
60 :
34 :2005/12/09(金) 17:13:46
>>57 基礎なんですか。
基礎なのにプログラム書くのにめちゃくちゃ時間かかったorz
もっと勉強しないとだめですね。
>>58 pdfを自作できるんなら自作でいいんじゃね?
一ヶ月くらい時間はかかるだろうが、創れると思うよ
その時間を金はらって買ってるだけ
1.3までのフォーマットなら書籍で見れる
>>59 実行環境が J2SE 1.3 だったりとか?
>>61 >
>>58 > pdfを自作できるんなら自作でいいんじゃね?
> 一ヶ月くらい時間はかかるだろうが、創れると思うよ
> その時間を金はらって買ってるだけ
> 1.3までのフォーマットなら書籍で見れる
iTextとかを使えば自作できそうです。
でも言われたように時間がかかりそうですが・・・
さくっと金払ってでも結合機能のあるコンポーネントを買ったほうが良さそう。
>46 ずっとか。そうか…… 教えてくれてありがとう。 これで遠慮なくSunにゴルァできるよ。 しかし今まで直ってなかったってことは、 Sun社員は誰も直そうとしなかったってことなのか? それともUserが誰一人ゴルァしなかったのか?
画像は誰も見てないんじゃないかな
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くらいです。 結構開いていますが、これはキャラの速さ(移動量)には関係ないですよね? これは描画切り替えの滑らかさの問題だと思うので。
タイマー使う。 ……あと、そこそこ高速の描画 API 使わない限り、FPS=60 は期待したくない。
>>67 質問、.show()したら.dispose()しないとだめなの?
2次元配列test[10][2]で 第1列をint 第2列をdouble にする事はできますか?
71 :
67 :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共通の上位クラス型の配列
>>73 Integer と Double だったら共通の上位クラスがあるけど、
int と double には、そんなものはありません。
76 :
デフォルトの名無しさん :2005/12/09(金) 19:51:01
>>74 ヒント:オートボクシング/オートアンボクシング(Java SE 5の新機能)
unboxingってNumber からintとかdoubleに変換してくれたっけか?
80 :
デフォルトの名無しさん :2005/12/09(金) 20:20:57
これ以上何を教えろというのだ。
>>67 sleepは固定の時間停止
じゃぁ1ループでの処理時間がかわったときどうなるの?ってこと
つまりsleepの値が動的に変わるような感じに創らないといけない
1ループの時間を一定にするってことだね
これはJavaの話でもなんでもないよ
>>67 フレーム毎にnドット移動とかせずに 経過時間 * 移動速度で移動距離決める。
>>71 みたいのでも良いけど。
>>83 2Dゲーといってるのにそんなことしたらひどいことになるんじゃね?
>>84 1ドットずれたら致命的みたいなゲームだと拙いだろうね。
その辺は
>>67 が情報出さないのでこっちは判断できない。
拙ければ
>>71 みたいので擬似的にフレーム/秒を固定するしかないのでは?
86 :
71 :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リソースをかなり独占してしまいそうなので不安なのですが・・・
それだとループスピードが変わるんじゃ できなくもないけど、処理ははるかに難しいよ
FPS 幾つにしたいのよ。60 は無謀。精々 10 〜 20。
Javaで60fpsは普通に出来ますが・・・
描画内容によるけどな。弾幕シューだったら無謀っぽいが。
>>62 レスありがd
なんかJDBCのバージョンとPostgreSQLのバージョンが合わなかっただけみたいだわ
どうにか解決したよm(_ _)m
初歩的なことですいません。 cmdを用いて "Javac"でコンパイルはできるのですが その後の実行ができません。 しばらく使ってなかったのですが 以前はちゃんと動いてました。 原因がわからないので どなたか教えてくださいm(__)m
Javaがゲームに向いていない理由はパッドが使えないとかそういう理由のが大きい どっかフリーで出てるJNIライブラリを落としてこないといかんな。 主要OS全てに対応してなきゃJavaらしさはないが。
95 :
デフォルトの名無しさん :2005/12/09(金) 21:22:37
>>87 >ループスピードが変わる
>処理ははるかに難しい
ど、どういうことですか?
正直、初心者なのでそこまでは分からないのですが・・・
>>88 趣味で作るだけなので、そこそこ見られるレベルであれば問題ないです。
フレッシュレートの半分の30fpsくらいですかね?
Flashは12FPSがデフォだし チープと思われようがそこらへんにしとけば 低スペックマシンでも動くはず。
というか、BufferStrategy方式ならTimer使うだろうから設定ファイルでいいじゃん。
>>94 一応jinputとかLWJGLっていうのがあるけど・・・
実際のところ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に変える事ってできないでしょうか?
>>101 %SYSTEMDIR% (C:\Windows\System)にある java.exe とか javaw.exe 使ってるんじゃないかと思われ。
PATH変数を変更する。
>>100 1ループにかかる速度がかわったら
普通非同期処理になるから初心者には難しいでしょ
>>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) で良いようにしたいのです。 どうにかなりませんかね?
x(12), y(34)とかにすればいいじゃん。
>>107 図形をあらわすクラスイロイロあるやん。それnewしてdrawしなされ。
111 :
71 :2005/12/09(金) 22:35:42
タイマーの意味がようやく分かりました。 java.util.Timer クラスを使えってことですね? 色々と勘違いをしてしまっていたようで、お恥ずかしい。 つまり、コンストラクタから呼ばれるメインループ(メインスレッド)では常に描画を、 そして Timer で定期的かつ並列的にキャラの動作状況とかタイムカウントとかを行い、 描画に使うフィールド値に反映させれば良いと。 こういうことでしょうか?
いや、並列にやらんほうがいいかと Timerはあくまでもメインスレッドを起こすだけにしとくべし
java.util.Timerって動画用途で使い物になるの? 一定時間Sleepくり返すだけだと、GC走った時にとまって まうのでは? …コンカレントGCって実装済みだっけ?
TimerTaskを二つ使うのが俺流。 1つは当然描画用。もうひとつはメインループ。 描画用は30fpsくらいで、メインは60fpsみたいな使い方をする。
115 :
デフォルトの名無しさん :2005/12/09(金) 22:55:57
>>108-110 すみません。
Graphics クラスの解説読んだら即解決しました。
g.translate(this.getInsets().left, this.getInsets().top);
メソッドに対する知識不足でした。
猛省します。
自力で解決できたんだから大丈夫 聞く前にまずいろいろと試してからにすればいいだけ ゲーム方面が目的ならゲーム製作の板のほうがあってるかも
117 :
デフォルトの名無しさん :2005/12/09(金) 23:16:21
物凄く初歩的な質問ですみません。 今、どの言語から入ろうかと色々試しているのですが、 Javaの場合、.exeのようなそのまま実行出来る形式は作れないのでしょうか?
>>117 JARという形式に固めれば、Windowsマシンでダブルクリックで起動できるお。
>>117 Sun の JDK だけだと無理。
GCJ とか Excelsior JET みたいな AOTコンパイラ使えば作れる。
120 :
デフォルトの名無しさん :2005/12/09(金) 23:27:36
>>118 >>119 なるほど、ご回答有難うございます。
>>119 様の察しの通り、
SunのJDKを使ってサンプルを作ってみたのですが、
実行形式への作り方がいまいちわからず…でした。
GCJとExcelsior JETについて調べてみます。
ありがとうございます。
Javaをフックするexe作ればいいだけでは
一瞬コンソールが立ち上がるけど結局最後はJavaだけが立ち上がるタイプのJavaアプリは多いね。
123 :
デフォルトの名無しさん :2005/12/09(金) 23:41:32
Frame を継承したら Eclipse に static final long serialVersionUID フィールドが定義されていない とか警告されるんだけど・・・ こいつにはどんな値をセットすればいいの?
見かけだけ.exeになっていればいいのであれば、exewrap
>>123 テキトーでヨシ。定義しないと、実行時のクラス情報から自動計算
されるので、定義しなくても動かないわけじゃない。
問題になることがあるのは、そのクラスのオブジェクトをシリアライズ
した時なので、シリアライズすることが絶対無いならヤッパリ定義不要。
JPEGとかってシリアライズできる?
>>126 ハァ?
JPEG形式ですでにシリアライズしてあるじゃんよ・・・
128 :
デフォルトの名無しさん :2005/12/09(金) 23:58:11
>>130 今度はどう読み込めばいいのか想像が付かない
バイナリでテンポラリディレクトリにファイル化させてから再読み込み?
DBについてに知識ゼロかよ
DBじゃなくてImageのほうがわからない。 バイト列やInputStreamからどうやって画像に変換するの?
ストリームやバイト列から変換できないってそっちまず勉強してよ 検索すればいくらでも引っかかるし、APIみればいくらでも
まあ、初心者に分かりにくいところにはあるよな。 Toolkit.getDefaultToolkit().createImage
BufferedImage ImageIO.read(InputStream) あったこれかも。 バイト列で変換できたほうが嬉しいな
自分が作ったプログラムがPureJavaであるかどうかは、どうやって確認すればいいのでしょうか? うっかり改行を\nにしたり、ディレクトリセパレータを\にしていたりすれば、 環境依存になってしまいますよね。 「どこかでやらかしてないか」を確認する方法はあるでしょうか?
>>137 ByteArrayInputStream 噛ませてみれば良いのでは?
細かいこというとすごい大変なんで一応JNI使ってなければ大丈夫じゃない? ファイルのパス指定はスラッシュなら大丈夫 改行とかそのへんだけはさすがに埋め込んだらダメだけど
>>140 おお、そんなキチガイ染みたラッパクラスがあるとは。
これで何でもBufferedImageで取れるようになったよ。
ありがとね。
>>136 Toolkitも簡単でいいね。
ImageIOが登場するまではこっちが使われてたのかな。
今Toolkit使う必要性はまったくないけどね
>>143 >おお、そんなキチガイ染みたラッパクラスがあるとは。
今までどんなライブラリ使ってたのよ。
普通の業務プログラマはbyte配列なんて使わないしなぁ。
147 :
139 :2005/12/10(土) 02:02:35
>>141 なるほど。JNIを使うつもりは勿論無いので、
文字周りを注意すれば何とかなる、と言うところでしょうか。
>>142 FindBugsは使ったことが有りませんでした。
調べてみます。
>>147 ちなみにFindBugsの記事が
JavaPress Vol.45に載ってたりする
149 :
デフォルトの名無しさん :2005/12/10(土) 07:44:39
>>111 java.util.Timerのほうではなくて、java.swing.Timerじゃないの?
util.Timerであってるよ ひとつのスレッドで複数のTimerTaskを動かせる優れたスレッドだ
151 :
デフォルトの名無しさん :2005/12/10(土) 09:44:25
>>150 javax.swing.Timerだって、複数の処理を動かせるけど?
同じタイミングで複数の処理をでしょ? utils.Timerは違うタイミングで複数の処理を単一スレッドで行う。
153 :
デフォルトの名無しさん :2005/12/10(土) 09:50:33
>>152 なるほどね。
でもそれってほんとに一つのスレッドでやってるの?
くわしくはAPI参照。当然TimerTask#runに思い奴があれば他が遅延する可能性はあるよ。
155 :
デフォルトの名無しさん :2005/12/10(土) 10:06:21
いまAPI読んでみた。 なーんか、いまいちだね。 俺がjavax.swing.Timerがいいなぁと思う理由はね、 ポーズがかけられる(一時停止/再開) 途中で何回でも処理間隔を変更できる のふたつ。 テトリスのように、レベルアップするたびに 処理が速くなる奴には向いてる。
メインルーチンと描画ルーチンを分けられることや イヴェントキューを介さないから正確なことがutilのメリット TimerTaskそのもの切り替えれば感覚も変更できる。 まぁswingのが分かりやすい場面も多いだろうけどね。
157 :
デフォルトの名無しさん :2005/12/10(土) 10:32:45
それぞれ、長所短所があるということだね。 場面によって使い分ければいいのかな
自分が勧めたやつがけなされたからって粘着宇材ね
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() を呼び出したい場合にはどうしたらいいの?
countHoge();
>>155 普通はループスピードを調整するんじゃなくて、
ゲーム内処理は一定で、ウエイトを調整するんじゃないか?
165 :
デフォルトの名無しさん :2005/12/10(土) 13:08:44
インナークラス辞めてコンストラクタで渡せばいいじゃない という話が1スレに1度はでてくるね
あれ? 描画はイベントディスパッチスレッドでやらないと、AWTの動作保証外ですよ という話の考慮が抜けてる流れ?
168 :
デフォルトの名無しさん :2005/12/10(土) 13:43:16
>>166 こゆこと?
new TimerTask(this);
public TimerTask(Frame f) {
>>167 AWTイベント使わない話でしょ?
BufferStrategy使用の話じゃないの?
>>168 クラス名がダブってるからだめだけどそういうこと
171 :
デフォルトの名無しさん :2005/12/10(土) 13:57:02
描画なんてものはメインループの最後でやれば良いんだよ 描画のための変数値変更(描画位置とか画像とか)をTimerとか別スレッドとかでやってさ 所詮は描画なんだしさ 30fpsだろうが100fpsだろうが1000000fpsだろうがどうでも良いだろ 描画の回転にあわせて描画位置とか決定しているアフォプログラムでなければな
>>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++とかと比べて遅いの?
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やアセンブラが使えるからね。
Javaだっていざとなれば、Cやアセンブラを使(ry
>>179 そのたとえはおかしいような
それだとJNIでCがさわれるしねといわれてしまう
アルゴリズムの研究用だったら最近はほとんどJavaで書く気がするが。
183 :
デフォルトの名無しさん :2005/12/10(土) 15:01:49
そりゃそうだが、同じ処理系の中では使えんでしょ。 JNIは、単にネイティブライブラリを作る手段が別にあるというだけ。 C++の場合は、処理系が同じ。
ゲームを作るときに、いざというときが何割を占めるんですか?
C++でアセンブラを動処理するかは実装依存だろ
186 :
デフォルトの名無しさん :2005/12/10(土) 15:11:29
COBOL の勉強でも始めるかな
187 :
デフォルトの名無しさん :2005/12/10(土) 15:14:51
>>184 むかしはほとんどがいざというときだったんじゃね?
今でももっさりとしたシミュレーションやアクションゲームを見かけるので
やっぱりいざという時はまだまだありそうだね。
でもハードの高性能化でいざという時はかなり減ってきてるよね。
今のハードならゲームでもCだけよりはJavaのほうがさすがにらくだね。
189 :
デフォルトの名無しさん :2005/12/10(土) 16:06:40
Java ゲームってさ、ゲーム中にFrame と FullScreen の動的な切り替えってできる?
出来ないことはないが、辞めた方がいいという感じ とゲーム作成スレでも結論が出てたな ヒープと違ってVRAMの破棄タイミングが大変っぽい
ゲーム特有の話はゲーム製作板いったほうがよさげ
192 :
デフォルトの名無しさん :2005/12/10(土) 16:35:09
>>190 そっか・・・
じゃあ、起動時に選択するようにするしかないな
193 :
デフォルトの名無しさん :2005/12/10(土) 18:14:47
>>178 > じゃあさ、何でゲームに不向きとか研究用PGに不向きとか言われてるの?
何か、勘違いしているようだが、Javaを使った研究は盛んなわけだが。
大学では講義に使われる言語をC++からJavaに
切り替えたところが増えてきたわけだし。
>>184 何割を示すかなんて固定的な数値で示せるとはとても思えないが、
ゲームというと、
PS2のようにビデオメモリとCPUとの間にかかるブリッジの帯域が
非常に小さくビデオメモリ自体も小さいため
メモリを大量消費するJavaでの開発がしづらいというのがある。
Javaが抱えている問題はメモリくらいしかない。
速度問題はさほどきにならなくなってきた。
メモリ問題もハードウェア次第。512MBが当たり前の時代には気にすることは
少ない。ただ人気のあるゲーム機に使われるメモリ容量が
小さいのがJavaが使いにくい原因だったりする。
携帯Javaでは昔のゲームの移植が盛んに行われてはいるが
開発のやりづらさ、開発効率の悪さ、はJavaサーバ製品開発とは比べものにならない。
>>187 シミュレーションゲームだったら
アクション性を求めないのでもっさり感は
少ないと思われるが。
特にCivilizationのようなターン制シミュレーション(ストラテジー)なら。
ターン待ちだけに時間をかければ良いだけで。
それからあの手のゲームは、各々の文明が領土が拡大すればするほど、
各々の文明が所持するユニット数が大ければ多いほど
もっさりしてくる。当然と言えば当然だが。
あのゲームCivシリーズから派生したAge Of Empireシリーズも同様。
SimシリーズやA列車シリーズなどにもいえてくるが。
文明同士の外交処理を考えると、文明をいくつか滅ぼすと
その分余分な処理が減ってもっさり感が減るというのはあるがw
実はあのゲームPythonが使われていて、Pythonでスクリプト書くと
改造とか細かいシナリオを作れてしまうわけだが。
>>192 次期Java バージョン
Java SE 6 Mustangではデスクトップ周り
が改善されているようだからそっちに期待してみては
どだろ。
パフォーマンスもあがるらしいし
DVDビデオデッキやゲームボーイ(死語?)もJavaで動いてるって本当?
System.out.printlnのSystem.out辺りを省略したいと思って、 import System.out.*; とやってもパッケージがないらしく無理でした。 省略する術はありますでしょうか?
import static java.lang.System.out; : : out.println(...
System.out の out はパッケージじゃなくて変数。out を省略することは不可能。
とりあえずおまいらPC初心者が使ってそうな 256mbしかメモリつんでない環境にして、 適当にJavaのIDEとか動かしてみろよ。 マジでぶちぎれそうになるから。
俺ノートだから 224 しか積んでないよ。んで?
>>199 ありがざいます! いままで、僕はどれだけ指を痛めてきたことか…
本当にあったとは、少し感動してしまいました。
>>200 なるほど(・д・)フムフム
>>201 メモリ64MのノートPCでEclipse使ってる
俺に対するあてつけか?
205 :
デフォルトの名無しさん :2005/12/10(土) 21:02:43
>>201 俺がPC買った数年前の当時では、メモリ256MBでも相当なハイスペックだったのだがな
さっき気持ち1分ぐらいCPU使用率99lでsunのideが フリーズしやがったから、ぶちぎれてたわけですよ。 しかもコンパイルとかの時にソケットとか使ってるみたいで、 ファイヤーウォールで通信遮断状態だとコンパイル実行できない。 本当にありがとうございました。
>>206 localhostへの通信遮断しなきゃいいんじゃね
>>198 static importのほかに
PrintStream p = System.out;
p.println();
というやり方もできる。
>>200 PrintStreamを使えば問題ない
>>201 NetBeansやEclipse3.1なら問題なく軽いので
気にならない。
プラグイン追加やプロジェクト内の警告数、ファイル数増加
に伴ってEclipseが重たくなることはあるが
>>203 面倒くさいならIDE使えよ。
Eclipseでエディタ上でsysoutと入力してCtrl + Space
と推して皆。
NetNeansでsysなんとかとCtrl + Space
と押してみな
211 :
200 :2005/12/10(土) 21:16:04
>>208 質問の意図を汲み取る限り、質問者は
System.out.println();
を
println();
まで省略したいと言っているように感じたんだが。
そういう意味で out の省略はムリ。メソッド作れば何とかなるが、逆に長くなるだろう。
>>206 どうせ
Norton Internet Securityとかが
悪さしてるんだろ
>>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("あああああああああ");
}
}
}
>>214 あのさ、俺が何のために最後の一文を書いたか分かってないだろ。
バカだろお前ら クラスごとにprintlnメソッド書けばいいだけの話じゃないか ど素人が
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); } }
>>215 おまえにはこれが長いのか?
import static net.2ch.www.printer.Printer.*;
ならばPrinterクラスのpackage宣言を
package java.lang;に(ry
Genericsってプリミティブ変換できたっけ?
>210 そんなのしらんかったorz
>>210 お前はたぶん悪い奴じゃないから突っこまない。
揚げ足なんてとらないからな!
NetBeansはSwing使ってるだけに各マシンに合わせたチューニングで恐ろしいほど速度変わるな
Enterprise使ってる人いたら、使い勝手教えて。 NetBeansの高級版?それとも毛色変えてきてる?
224 :
デフォルトの名無しさん :2005/12/10(土) 23:08:29
225 :
デフォルトの名無しさん :2005/12/10(土) 23:11:28
eclipseで良いならわざわざEnterprise を使う理由も分からない まぁ俺は個人で趣味程度でやってるから Enterpriseじゃ無くてcreatorの方が良かったのかも
226 :
デフォルトの名無しさん :2005/12/10(土) 23:15:35
インターフェイスを使う意義って いわゆるそのメソッドを必ず使わせるという保証というか確約させる以外にあるのでしょうか?
>>226 Serializableインタフェースの使い方を盛れば
制約以外にも意義がある。
というか前スレでも同じ質問があったような。
デジャブ?
>>227 で、どういうリアクションがお望みだい?
>>224 とにかくといわず、
マシンスペックを教えれ
とにかく=兎に角
という意味を教えてくれた友人よ
あくまで=飽くまで 悪魔でじゃないぞ。
233 :
デフォルトの名無しさん :2005/12/10(土) 23:27:48
ウィンドウアプリケーションを作成するためFrameを継承したクラスでさ、 周りの枠の部分も含めた全体のサイズを設定するにはどうしたら良い? リファレンスを読むとgetInsets()を使えば良さそうなんだけど、コンストラクタで left+right+sizeXとtop+bottom+sizeYをやってみたけどなぜか変更されないんだ どうすれば良いですか?
そういやJavaの共通ヘルプ環境ってある? JavaDocじゃなくてアプリのほうのやつね。 MSだとコンパイル済みHTMLとかいうのがスタンダードだよな
>>233 それであってるが推奨サイズのほう弄ってないかい?
236 :
デフォルトの名無しさん :2005/12/10(土) 23:31:21
preなんたらsizeってやつ
238 :
デフォルトの名無しさん :2005/12/10(土) 23:38:36
>>226 インターフェース関連で質問ですが
ItestClass(インターフェース)
testClass(クラス)
こうあった場合よく
ItestClass tc = new testClass();
上記みたいにインスタンス化するときに、インターフェースを返してする場合が多々ありますが
あれってなぜそうするのでしょうか?
いまいちそれをするメリットがわかりにくいのですが
・インターフェイスは返してない。 ・そのうち分かる。無理に分かろうとしなくても良い。
>>238 そのインターフェースを継承したクラスなら
受け取ることが出来るから
241 :
デフォルトの名無しさん :2005/12/10(土) 23:42:51
createBufferStrategy(n)の前にsetVisible(true)を呼び出す必要ってありますか?
試せば分かることだよ。
243 :
デフォルトの名無しさん :2005/12/10(土) 23:47:00
前々から聞こうかと思ってたけど、 windowClosing(WindowEvent e) の設定はフルスクリーンの場合は不要? だって閉じるボタンもタイトルバーもないじゃん
Alt+F4
alt + F4 で呼び出されてたような気がする。
>>238 メソッドの引数に
method(ItestClass testClass)
と指定されているものがあるから
>>234 Java help API
ただしもう古い
HTMLで十分。
不満ならDoxygenで生成せよ
249 :
デフォルトの名無しさん :2005/12/10(土) 23:57:16
>>240 ありがとうございます
具体的にそこらへんの詳細な説明があるサイトとかあるのでしょうか?
ぐぐってもみつからなかったので
>>249 java の本を一冊買ってけろ。多少の厚みがあるやつだったら、それ一冊で当分の疑問点は全部消えるから。
MSのコンパイル済みHTMLって奴の凄さは、検索機能が付いてるとこにあるんだよな Swingでそういうのを作らないと、Javaもまだまだフリーソフト作家に気に入られることができない。 もっと頑張れSUN。
>>250 関係ないが、SUNの分厚い奴買ったけど読まずじまいだった。
SJCPとかの資格参考書と標準のJavaDocとかのが身につくと思った。
インターフェースの話はJAVA本より オブジェクト指向の本読むと良いよ
InputStreamとかの家計図をJavaDocで追っていくのが最強。 あとCollectionFrameworkあたりもそうだね。 実際にどう使われているのかを追うのが理解と実践度の向上に役立つ。
255 :
デフォルトの名無しさん :2005/12/11(日) 00:27:41
>>226 振る舞いを他のクラスに任せて
実装を自分で書く事。
例えばThread run()が実装で
start()が振る舞い
大体javaで多様性(?)を実現しようと思ったら
継承かインターフェイスを実装するのが普通と思う。
と結城先生の本を読んでインターフェイスがクラスのグループ分け
が主な目的では無いと最近思う。
>>230 athon64 3000+
512
単に使い方が悪いだけかも分からんが
アクセレータを下げないとPCがフリーズ
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を付ける場面は一生ないと考えて よろしいでしょうか?
>>258 んなこたない。テンプレートパターンというのがある。
abstractメソッドの使われ方は同じ、だけど実装方が違うとかあるとき使う。
>>258 返値がvoid以外のメソッドで試してみろ。
>>255 それビデオカードとドライバの問題では?
DirectX使って描画してるんだよ>Java
設定でoffにもできるけど
>>233 コンストラクタということは表示してないね
表示、もしくは表示の準備をしないとインセットは取得できない
通常そういうのを考えたくないときはボーダーレイアウトで配置、
それの推奨サイズを指定するのが一般的
263 :
デフォルトの名無しさん :2005/12/11(日) 01:01:30
GraphicsDevice device = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice(); GraphicsDevice device2 = device.getDefaultConfiguration().getDevice(); 上の GraphicsDevice と下の GraphicsDevice は同じものですか?
>>251 そう思うならお前が作れ。検索程度ならそう難しいことではないぞ。
EclipseにはすでにJavaで似たような検索エンジンを搭載しているぞ。
フリーソフト作家の「作家」という表現がなんだかな。
開発経験のない単なる芸術家や文学小説家レベル程度の人間じゃあるまいし。
標準のこともよく考えてテストもよくやってより多くの人にレビューして貰ってる
オープンソースソフトウェア開発者と
単なる個人の自己満足で終わってしまう傾向の強いVectorや窓の杜の
ようなフリーソフトウェア開発者とを比較するのもどうかと。
>>252 結城浩の「Java言語で学ぶデザインパターン入門」を嫁。
前スレ、前々スレ、いやその前スレ以前から何度も何度もこの本の紹介が出てると思うが。
Effective Java、Javaの格言、結城本あたりがメジャーどころか。
初心者には検索機能必要かもね 経験があれば検索なしですぐにわかるんだが
JavaDocならFireFox使ってるけどね。 お手製ヘルプともなるとクラスの羅列みたいな表記じゃなくなるし 検索機能は必須かも。swingのHTMLって評判どうなん?
文字列みたいならgoogleで検索という手がある これは逆にhtmlだからこその強みだな
>>255 >
>>226 > 振る舞いを他のクラスに任せて
> 実装を自分で書く事。
> 例えばThread run()が実装で
> start()が振る舞い
UMLとオブジェクト指向という視点で見れば
どちらもクラスを構成する「振る舞い(メソッド)」なのだが。
インターフェースはレシーバーオブジェクトが 特定のメッセージを受けとれることを保障するためのものだな
オブジェクトをシリアライズして書き込み&読み込みをしようとしてるんですけど、 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
環境変数の設定かバッチファイル書け
>>268 DocJarのことか?
http://www.docjar.com/ Firefoxつかってるってことか
XPIファイルでプラグインをインストールして検索窓に
追加して使ってるということか。
Eclipseのプラグインにも追加されて
自分、あるいは誰かが書いたコードの
クラスからJavadocを検索できるが。
クラスのヘルプじゃなくてアプリのヘルプだろ
>>273 Apache Antの<classpath>タスクを使え。
>>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(); } } } } 長くてすみません
ソースコードの添削などタダで人にお願いするんじゃねえぞと
>>280 そうそう、今こそDocJarが真価を発揮するときだ
285 :
デフォルトの名無しさん :2005/12/11(日) 02:15:35
だめな人のコードって大抵 変数名がうんち クラス名がうんち あとからリファクタリングできるのだから 多少長くても判り易くしようぜ
>>280 をみると、
Javadocを読んでないというよりも
どうも自分で作ったクラスの読み方をわかってないというか。
287 :
デフォルトの名無しさん :2005/12/11(日) 02:39:45
BufferStrategy の show() メソッドを実行したら例外が発生して そのメッセージを表示させてみたら Buffers have not been created と表示されたのですが、どうしてですか?
お前の畑は豆を作ってないって意味
配列の最大値を求めたんですけど、最大値の配列番号を知るには どうすればいいんでしょうか?
ary.length-1
>>289 昇順にソートしたら、最後尾になるんでね?
292 :
273 :2005/12/11(日) 02:48:24
>>274 ここのCLASSPATHって所の末尾に;.ってつければ良いの?
何か全く上手く遺憾
ぐぐってもどこも説明が「.」を追加しろみたいってワカンネェヨ!
>>289 java.util.Arrays#sort()
unsigned int32 が限界のJava longですがそれ以上はどうするの?
296 :
273 :2005/12/11(日) 02:56:01
297 :
289 :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; } どうすればいいでしょうか。
>>297 maxを入れ替えるときにiを保存しておけ
>>295 BigInteger, BigDecimal
>>279 どうでもいいけどさ、よほどの必要性がない限りInnerClassやめようぜ。
301 :
デフォルトの名無しさん :2005/12/11(日) 05:04:43
どんな終了の仕方をしてもディスプレイモードを元に戻す方法はありませんか? 変な終わり方をすると再起動しないといけなくなるので
>>297 indexだけをreturnすればいい。
303 :
279 :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);
表示しないとバッファは作られない というより表示準備だったかも DirectXも表示後じゃないと駄目なんでそれでいいかと
>>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);
最大値を求めたいのではない ばかか?
彼は一体、最大値を求めたいのか、 それとも最大値のindexを求めたいの いったいどちらなのだろうか、はっきりしない。 最初は最大値を求めたいといっていたのに こんどは最大値のindexを求めたいと主張。 さて、どっちだ?
/** * 最大値のインデックスを求める. * @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; }
>>276 Eclipseのヘルプはええぞ。
最初の起動はインデックス作成で重たいが
次回からはかなり軽くなる。
Eclipse3.1になってから大部軽くなってきた。
310 :
デフォルトの名無しさん :2005/12/11(日) 15:53:26
>>308 先頭要素は検査しないの?
intの最小値使うとかそんなテクニックより注意すべきところはあるんじゃない?
すまん、勘違いだ
>307 最初からindex求めたいって言ってなかった?
313 :
デフォルトの名無しさん :2005/12/11(日) 15:59:03
へんなロジック考えるのやめて、TreeSetに放り込めば?
>>310 すまん、int maxはゴミだった。
>>312 >>289 の一行目で最大値を求めたいと書いてある。
だが、その後にインデックスを求めたいとも言ってる。
最大値を求めるためにインデックスをまず先に求めたいと
彼は主張している。
つまり、彼は、インデックスを求めるのが
目的ではなく最大値を求めるのが目的なのだろう。
>>313 それもそうだな。
しかし彼が順番を意識していて、
さらに配列内に同じ値が存在することを
許すようにしないといけないとすればSetオブジェクトは使えない。
デブがどこの家に住んでいるのか特定しろみたいなアルゴリズム なにやら恐ろしいことを考えているようで寒気がする
>314 一行目のどこを見て最大値を求めたいって読めるのか教えて欲しい。
デブの定義が最大値であるというなら特定は難しくない
なるほど、配列の最大値を求めたいんですけど ではなく配列の最大値を求めたんですけど か 「い」が隠れていることに気づかなかった。 彼は、つまり、求めた配列の最大値から逆算して インデックスを求めようとしているのか?
既に起動しているJavaプロセスを 後から起動したJavaプロセスからアクセスするにはどうしたらいいのでしょうか。
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 #
というメッセージが表示されます。
が、英語なのでまったく意味が分かりません。
何か良い対処法はありませんか?
>が、英語なのでまったく意味が分かりません。 義務教育を受けていないという場合を除いては そんな台詞吐く資格はない
>>324 > が、英語なのでまったく意味が分かりません。
> 何か良い対処法はありませんか?
英語を勉強して英語力を付ける。
327 :
デフォルトの名無しさん :2005/12/11(日) 17:03:28
>>324 外人がたむろってそうな街に行って聞いてみろよ
フルスクリーンからの復帰時にVRAM構成が動的に変わるんで そのままshowとかはうごかんはず フルスクリーンにするときのたまにエラー発生&VMおちは 1.4.0からずっと今のところ改善される気配なし ただ、タイミングがなんかあるようなのでそれ調べるといいかも
329 :
324 :2005/12/11(日) 17:08:31
>>328 回答ありがとうございます。
show の方は try-catch で無視することにします(どうせ終了時の例外なので)。
後者の方は仕方が無いのでおとなしく改善されるのを待つことにします。
コミュニティには報告してる?
331 :
デフォルトの名無しさん :2005/12/11(日) 17:21:46
>>330 コミュニティって何ですか?
すみません、Java の世界はまだ初心者なので・・・
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は?
>>333 すみません、
>>332 には書き忘れてました。
ですが、ソースコード中にはきちんと書いてあります。
class A {
private ArrayList<B>[] lists;
public A(size) {
this.lists = new ArrayList<B>[size];
}
}
でした。
>>334 それだと、AをnewするときにどうやってBに対する具象型を指定
するんでしょうか。これでわかる?
>>334 import java.util.ArrayList;
class A {
ArrayList list;//ここも ArrayList<String> list; でもいけた
public A(int size){
list = new ArrayList<String>(size);
}
}
とりあえずこれだけではeclipse3.1ではエラーでなかったけど。
動くかどうかは知らん。
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様 ご指導ありがとうございました。 同じディレクトリの他のサーブレットが作動したのと、そもそもここまで環境を整えたのがまぐれに近いものなので、結局環境設定 に関する知識が今のところ皆無に近いので、恐れをなして避けていたのです。これも、課題として勉強していくつもりです。 どうもありがとうございました。
>>334 Genericなクラスの配列は作れない。
340 :
334 :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 をセットした方が良いですか?
>>340 これじゃ拙いの?
this.lists = (ArrayList<B>[]) new ArrayList[size];
343 :
デフォルトの名無しさん :2005/12/11(日) 21:33:58
よく言われる「newする」とインスタンス化ってのは同義語なんでしょうか? それとも微妙に違うのでしょうか?
344 :
334 :2005/12/11(日) 21:34:45
>>339 なんと、仕様なんですか。
今までGenericは直感で使ってたので、今度仕様を確認してみます。
>>342 それも試したのですが、動作は問題ないのですが、警告が出ちゃうので使用を止めました。
ともあれ、最終目標だったArrayList<B>を要素にもつ配列の配列が
ArrayList<B>[][] table = (ArrayList<B>[][])Array.newInstance(ArrayList[].class, size);
と定義・動作確認できたので問題は解決しました。
みなさん、ありがとうございました。
J2EEなんですが、イチからCRMっぽいアプリケーションを設計しようと思ってます。 Strutsやなんかの技術がありますが、 いまから採用するなら何がよいでしょうかねぇ。 自分のサイト用に作るんで流行とかは特別追わなくちゃいけない事はないです。
プログラムするわけではないんですが・・質問です。 Java Runtime Environment バージョン 5.0をインストールしようとするとエラーが出ます。 このWindowsインストーラーパッケージには問題があります。セットアップの一部として実行されるプログラム は正しく完了されませんでした。 公式にあるインストーラーすべて試しましたが、同じエラーが出るのでコチラに問題があると思います。 よろしくお願いします(´・ェ・`)
347 :
デフォルトの名無しさん :2005/12/11(日) 22:04:34
ぬ ま る ー る ぽ い ん た ー
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 とはどういうエラーですか? コンパイルはできるのですが実行しようとするとこのようなエラーが出てきて困っています。
>>353 そんなクラスねーよ、名前間違ってんじゃね? というエラー
>>354 そうですか・・・。
もう一度確認してみます。
どうもありがとうございました。
指定された場所に行けばmainさんが居るっていうから着たのにいないじゃんかよヽ(`Д´)ノ んでmainさんは居るにはいるんだけど、人違いというケースが多発している。 俺たちが会わなきゃいけないのはpublic static mainさん。 よく間違われる方はpublic maianさん。つまりミドルネームを持っていない。
maian さんなど居ない。 想像だけで答えてみるけど、クラス Sample をコンパイルすると Sample.class が出来る。 これを実行する時のコマンドは 『 java Sample 』 だからな。.class は要らないからな。念のため。
>>357 おまい以外の俺たちの心の中にいるんだよ。
あと
package hogeとしてて
/hoge >java Sampleみたくしてるとヤバイ。
親切なエスパー募集わらた
360 :
デフォルトの名無しさん :2005/12/12(月) 00:55:47
ClassA class = new ClassB とあった場合 ClassBは必ずClassAの親クラスなんでしょうか? 逆に言えばClassBはClassAを継承している状態なんでしょうか?
>>360 とりあえず、そのコードは絶対にコンパイラを通らない。
>>360 逆だろ?機能が弱く抽象度の強いClassAが親だ。
継承クラスは子なの。
>>360 親子というと間違えるが、そういうこと
多態とかで重要な書き方だね
>>361 うそ教えないで
>>363 うそ教えないで……って、
>>360 の一行目は変数定義&初期化文だろ?
…… ClassB の後ろに (); が付いていないのはおいとくとしても、変数名 class とかは絶対に通らない。
365 :
デフォルトの名無しさん :2005/12/12(月) 01:35:42
Javaはゲームに向いてないのかねえ ゲーム製作板の香具師にボロクソに言われたぞ
>>365 WinAPIで作ったゲームよりJavaのゲームは速い。
DirectXで作ったゲームよりJavaのゲームは遅い。
つまりはそういうこと。
Java2DはDirectX使ってるんだけどね
VC++&DirectXってことだよ。 JavaゲームスレだとBufferedImageやVolatileImageの話題で盛り上がってる。 Javaゲームの欠点はPureJavaに拘ると 物理的なインタフェースに限りが出来ること メモリの消費が膨大なことの2つくらい。
>>366 API の名前だけでゲームが速くなるなら Java3D やら JOGL 使えば良い。
実際には速度なんかよりも JNI 使わんとゲームパッドからの入力が取れない方が致命的だと思うけど。
>>368 盛り上がっているというより既出情報だけだが
>>369 俺もパッドの2軸+4ボタンだけでいいからPureJavaでいれてほしいとずっと思っていたが
ぜんぜん実行に移さないんだよなぁ
マウスやキーボードと同じ入力デバイスなのに
おれのパッドなんてネイティブドライバでもセレクトとスタートが受け付けないよ。 LRボタンが2対あるから手前のほうをそれに設定して代用してる。
てかどこでバカにされてるんだ? マ板のJava厨しかけさせてやるよ。
374 :
デフォルトの名無しさん :2005/12/12(月) 02:16:49
BufferStrategyとTimerとGraphicsDevice(フルスク)で大抵のゲームはできる気がする
RPGに於けるFPSコントロールのパターンを知りたいところだ。 草が揺れてるマップとかで60FPSってアホだしな。
376 :
デフォルトの名無しさん :2005/12/12(月) 02:36:30
俺の知り合いにさ、2年前に卒業して業界入りしたのが居るんよ こいつがさ、趣味で簡単なゲーム作ったってんで参考程度にソース見せてもらったんだよ そしたらさ、さすがにスパゲティってほどじゃないけど酷いもんだった Javaのソースだったんだけどさ、まずカプセル化とか基本的なことは完全無視 まとまった機能とかクラスに分けたりしないで、1つのクラス内に全部詰め込んであるんだよ しかも変数名だけじゃなくメソッド名にまで変なローマ字使ってるし もっと英単語使えよ英単語 綴り間違ってるのあるし こんな読み辛いソース初めてだよ しかも本人には分かり易いのか「どうだっ!凄えだろ!俺頭良すぎね?」って自信満々だし ああ、別の意味で凄いよ、あんた こんな変人でも一応先輩だしさ、「そうですね」って適当に言っといたけどさ 正直、こんなんでも動くのが不思議だった コンピュータって凄いね
その先輩は天才だよ。携帯アプリ市場の星になれる。
それ以外の世界では他人に迷惑かけるだけのクズだがな
「趣味で簡単なゲーム作った」 って言ってんだから携帯アプリ用だからそうしたんだろ 普通の市場では普通の書き方出来るんじゃないのか
380 :
デフォルトの名無しさん :2005/12/12(月) 07:29:29
void hoge(long& num) { ++long; } このようなことをJavaでしたいんですけどどうすればいいでしょうか?
381 :
380 :2005/12/12(月) 07:30:21
訂正: 2行めのlong -> num
382 :
337 :2005/12/12(月) 08:13:56
自己解決しました ご迷惑をおかけしました 自分の書き込みを改めて見てみるとスペースも改行もおかしい・・
>>380 Javaは言語機能として参照引数みたいなものを持ってないから無理。
どうしてもやりたいなら num を参照変数にもたせ それを変える事で代用する。
具体的には
class Num{ public long num; }
void hoge(Num ref){ ref.num++; }
もしくは
void hoge(long[] num){ num[0]++; }
384 :
380 :2005/12/12(月) 09:07:59
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が付与されていません。 サーバの設定により回避可能なのであれば、その方法をご教授ください。 以上、よろしくお願いいたします。
List ls = new LinkedList<Integer>(); List<Integer>sharedContentList = Collections.synchronizedList(ls); というふうにスレッドセーフなリストをつくろうとしたんですが コンパイルで警告([unchecked]無検査変換/無検査メソッド呼び出し)がでてしまいます この警告がでないようにするにはどうしたらいいんでしょうか?
> List ls = new LinkedList<Integer>(); List<Integer> ls = new LinkedList<Integer>();
Javaは印刷が満足に出来ないと聞いていますが、どうすればいいのでしょうか?
諦める
実際のところ現状対処方法はまったくなしだな 1.4.1までは動くだけに残念
>>390 Java2Dの印刷機能じゃだめなん?
あと、こういう仕様が健闘されてたような↓
Unified Printing API (Java Print Service API)
>>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 こんな感じです。 よろしくお願いします。
JDBCでDBにつないでデータ引っ張ってきて出力するだけだろ
398 :
デフォルトの名無しさん :2005/12/12(月) 15:36:16
JAVAとJavaScriptってどう違うんですか?
うんことかりんとうぐらい違う
すいません、標準クラスライブラリのソースはどこにあるのでしたっけ?
JDKインストールするときに、入れるかどうか聞かれる
ちょっとやってみます
src.zip
>>397 動くけど5.0や1.4.2は使い物にならないが正解
日本語使わなければ問題でないからね
407 :
デフォルトの名無しさん :2005/12/12(月) 18:30:08
ゲーム画面のサイズって Width=640/Height=480 がデフォですか?
そんなこと無いさ
410 :
407 :2005/12/12(月) 18:58:09
フルスクリーンにする場合っす
フルスクリーンでWidth=640/Height=480 っていつの時代だよ
やっぱWidth=320/Height=240がトレンドだよな
413 :
デフォルトの名無しさん :2005/12/12(月) 20:35:21
配列に3,4,1,2,6,5,10,9,7,8が入ってます。 二番目に大きい値と二番目に小さい値を入れ替えて、配列を表示させる。 どうしてもアルゴリズムが思いつかないので、お願いします。
>>413 別の配列にコピーしてソートして、必要な値を求めてから
もとの配列での位置を調べたら?
ソートして、必要な値は求めることは出来ているんですが、 その後が分からないんです。
>>415 そこまでやってるのに、何がわからんのかわからん
いきなりすごいアルゴリズムなんて考えなくていいんじゃないの? ソートできてるのなら、対象となる二つの値がわかる。 元の配列から二つの値のインデックスを探す。 二つの値を入れ替える。 ここまで恥ずかしがらずにベタに考える。 で、それが気に入らなければ、使えるAPIがあるか調べればいい。
418 :
デフォルトの名無しさん :2005/12/12(月) 21:11:48
>>411-412 初心者の自分に教えて欲しいのですが、フルスクリーンの時の横幅が320の倍数に、
縦幅が240の倍数になっているのにはどういった理由があるのですか?
>>418 332の倍数や238の倍数だと嫌でしょ?
ブラウン管の横縦比が4:3だからじゃね?( ^ω^)
421 :
デフォルトの名無しさん :2005/12/12(月) 21:16:01
>>413 最大値検索の応用で簡単にできるよ
配列の最初から最後まで一回転させて、
一番目に大きな数のインデックス、
二番目に大きな数のインデックス、
三番目に大きな数のインデックスを記録すれば良いんだ
そんで二番目に大きな数のインデックスと
三番目に大きな数のインデックスを基に入れ替えを行えば良い
422 :
421 :2005/12/12(月) 21:16:44
すまん・・・ 質問を読み間違えた・・・ 逝ってくるわ・・・
423 :
デフォルトの名無しさん :2005/12/12(月) 21:18:10
>>420 液晶ディスプレイでもそれが当てはまりますか?
>>423 ものによる。
最近は5:4があったり、ワイドがあるけどね。
ありがとうございます。アルゴリズムは分かりました。 しかし 元の配列から二つの値のインデックスを探す。 ↑これができないです・・・。
>>418 Width=800/Height=600とかWidth=1024/Height=768が
320や240の倍数だとは知らなかったよ。どこの世界の話ですか?
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];
429 :
Java初心者 :2005/12/12(月) 21:30:15
えーと、つまり、
>>420 氏の言うように4:3になっていれば基本的にOKって事ですか?
430 :
428 :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日以降") がだった場合×を出力させたいのですが こういった処理は可能なんでしょうか?
出来ないと思う理由は・・・
433 :
428 :2005/12/12(月) 21:39:12
>431 手入力させなきゃいいじゃん
>>431 みたいなのってjava.util.Dateオブジェクトにして
比較するとかできるのかなあ
435 :
428 :2005/12/12(月) 21:44:11
>>434 できる気がするけど、手を動かす気なしw
>>431 20051201 といった単純な形式で入力させれば簡単
>>429 8の倍数。
つシフト演算。Javaとは関係ない。
>>430 できました。他の方法でもできるように努力してみたいと思います。
みなさんありがとうございました。
439 :
デフォルトの名無しさん :2005/12/12(月) 21:56:50
440 :
デフォルトの名無しさん :2005/12/12(月) 22:02:46
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("×");
2chでいうところの厨房に質問する前にググらせたいのですがどうすればいいですか?
445 :
JAVA初心者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 );
JavaでWindows上のファイルを移動させるには、 元ファイル読込み ↓ 移動先フォルダに新しいファイル作成 ↓ 元ファイル削除 こうゆうやり方なんですか? 直接移動させるようなメソッドとかないんですか?
447 :
442 :2005/12/12(月) 22:28:08
>>444 それ私に言ってます?ググってもわからないので聞いてます。
今実行してるスレッドを取得すればいいようですが私にはさっぱりわかりません。
>>446 Windows に限らず File#renameTo(File) を試して、失敗したら
>>446 の移動。
451 :
デフォルトの名無しさん :2005/12/12(月) 22:34:18
452 :
デフォルトの名無しさん :2005/12/12(月) 22:36:14
>>447 try {
Thread.currentThread().sleep(10000);
} catch (IntrruptedException ex) {}
453 :
442 :2005/12/12(月) 22:41:29
454 :
JAVA初心者440&445 :2005/12/12(月) 22:57:08
451さんのサイトから検索してj3d-core-utils-1.3.1.jarなどの クラスライブラリいれてみましたが、同じエラーでした・・。
>>431 ,434,436
SimpleDateFormat一個作るだけの話だろ。
456 :
デフォルトの名無しさん :2005/12/12(月) 23:02:17
要素数が4つのbyte配列があって、これをintに変換するにはどうすればいいですか?
>>454 jarファイルへのクラスパスの指定した?
459 :
456 :2005/12/12(月) 23:08:42
460 :
446 :2005/12/12(月) 23:09:09
>>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です。
みなさんのパソコンでは実行できますか??
ちなみに最初のほうにでるエラー
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
>>461 Java3Dのライブラリの説明書に何か書いてなかった?
〜.jarをクラスパスに追加しろとか。
>>463 SunのJava3Dはjre/lib/extにjarを追加するタイプだから、まともに
インストールされていればクラスパスを自分で設定する必要はないはず。
>>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();
}
}
466 :
456 :2005/12/12(月) 23:31:23
>>465 うまくいきました。
わざわざコード書いていただいてどうもありがとうございます。
>>465 シフト演算時にintになるのでintキャストはいらない。
逆に0xffとのビットマスクが必要。465のコードだとbyteの負数がないからOKだけど。
jarファイル中のファイルにアクセスするには、 どう指定すればいいのでしょうか? 例えば、sample.jar中の com/test/test.propertiesにアクセスしたいとして、 FileInputStream fis = new FileInputStream("com/test/test.properties"); としてもダメですよね・・・。
プログラムを出来るだけいじらないのならクラスパスに追加が一番楽かな
>>468 つ ClassLoader#getResourceAsStream
ResourceBundleならResourceBundle.getBundle("com.test.test")でいける。
472 :
468 :2005/12/13(火) 08:30:16
>>469-471 ありがとうございます。
使用するクラスとメソッドを教えて頂いたので、
あとはJavaDocで何とかなりそうです。
473 :
デフォルトの名無しさん :2005/12/13(火) 15:46:44
>>376 昔のCOBOLerにそっくりだが
携帯電話開発者みたいな先輩だな。携帯開発ならありえる話だし。
そのコード、Eclipse + Checkstyle + FindBugsで
警告設定全部オンにしたらすごいことになりそうだな。
警告数が何万件にもなるぞ。
>>464 しっかしそれってかなり曲者なんだよね
JDKアップデートしたら無効になりやがるし。
j3d.jarをApache Mavenでダウソできるようにしたほうがまし。
Maven Repo Searchで検索して
Java 3D APIの情報を取得して<dependency>タグに追加して
maven実行するだけのほうがJava3DAPIをSunからダウソするよりも開発が楽。
>>399 ワラタ
それにしてもJava花林糖旨いな
ウンコScriptは勘弁してほすぃ
>>390 PDF生成APIをダウソして使いなさい
477 :
デフォルトの名無しさん :2005/12/13(火) 15:55:18
だれかさ、package-info.javaの書き方わかる香具師いない? パッケージにアノテーション定義する方法がわからなくて。 これがあるとパッケージ用ドキュメントとしてpackage.html もいらなくなってしまうのか?
>>476 pdfを生成した後それを開いて印刷するにはどうしたらいいのでしょうか
Adobe社のサイトへGO!
AdobeReaderではまともに印刷できないのですね ありがとうございました Java単体では結局印刷系無理なようですので JNIでやりたいと思います
自分でPS吐くライブラリ作ればいいんじゃね?
pdfと同じくpsはいたあとが問題なのでは?
charAt以外のStringのメソッドを使わずに文字列の文字数を調べる方法ってありますか? ご教授願います。
>>480 は誰も言ってないことを勝手に理由にして結論を出して何がしたいんだろう?
>charAt以外のStringのメソッドを使わずに って charAtを使って と同意
>>483 先頭からインデックスを1つずつ増やしていってcharAtで文字をとりだしていって
IndexOutOfBoundsExceptionが投げられたらおわりなんで
そのときのインデックスを見る
>>484 1.3.1などにバージョン下げれば解決しますね
>>489 ところで「AdobeReaderではまともに印刷できない」って誰が言ってるの?
AdobeReaderを立ち上げないで印刷ができない
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 の中にまとめる方法ってないのでしょうか?
ない。
>>493 ファイル一つにまとめたいなら jar にすればいい。
Hoge.class だけにしたいなら、局所クラスや無名クラスを含む メンバ型を使用するのを止めろ。
すいません質問なんですが、 imageIO で tga ファイルって読み書き共にサポートされてないですよね? どうしても targa ファイルを読み書きするアプリケーションを作る必要性に駆られたのですが、 この場合は自分で java.ImageIO プラグインを作成するしかないのでしょうか?
>>494 がーん、ないんですか・・・orz
>>495 jarとか、局所クラスとか無名クラスとかよく分かってないでの
勉強してみます。さんくすでした。
>>498 レスサンクスです。
検索したら targa の仕様書を見つけたのですが、もし自分で全部 targa のプラグインを作成した場合
TrueVision 社の了解を得ずに配布してもいいんですよね?
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");
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(); }
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(); } }; } なんか宿題くさい質問ですみませんが…よろしくお願いします。
>>502 > 少しやってみたんですが、できませんでした。
具体的に何をやってみてどうなったのか
507 :
502 :2005/12/13(火) 21:09:26
>506 あ、ごめんなさい。 AbstractActionをextendsしてHogeというクラスを作ったんです。 で、>505の中身をそのまんま移し変えてみて、 >504のbuttonに付加させたんですが、押しても反応がありません。 Hogeクラスの中にSystem.out.print("hoge");とか書いて 様子を伺ってみたんですが、hogeと鳴いてくれないんです。 AbstractActionの理解が薄いせいだと思うんですが、対処法を教えてください。
>>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 代入もした方が良いでしょうか? それともメソッド呼び出しだけでもガベージコレクションの対象になるのでしょうか?
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分も砂時計に またされなきゃならないんだ畜生!!!!!
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> への参照はパラメーター化される必要があります。 で何も変わってない・・・ どうすればいいんだ・・・
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; } } } } }
>>511 そんなわけは無い。
とりあえず、変数というものがどういうものか分かってない気がする。がんがれ。
オブジェクトは、使われなくなったら勝手に消えていく。
直後で新しい Timer を代入しているのに、わざわざ null を代入する必要が無い。
>>512 dataI と dataJ を持ってるなら
入れ替えは data[i] = dataJ; data[j] = dataI; で良いんじゃないか
半角スペース 全角スペース
javaっていつからテンプレート対応になったの?
522 :
デフォルトの名無しさん :2005/12/13(火) 22:55:20
>>518 あ、確かにそうですね
すみません、“参照”について勉強し直します
>>521 generics正式対応は去年の終わりごろの JDK5.0 から。
そういえば、もう1年以上経つのか。
524 :
デフォルトの名無しさん :2005/12/13(火) 22:58:53
既存のクラスAを継承して、最初から自分が使いやすい設定されているクラスBを作成したとします この場合、BはAを拡張したものであると言っても良いのですか? それとも、何かしら機能(メソッド)を追加しないと「拡張」とは言わないのですか?
525 :
デフォルトの名無しさん :2005/12/13(火) 23:01:13
それが何か?
>>524 class B extends A の extends を直訳すれば拡張。
527 :
デフォルトの名無しさん :2005/12/13(火) 23:13:59
ということは、 public class B extends A { } のように何も変更されていない無意味なクラスBでも Java的にはAを拡張していることになるのですか?
うん。そもそも B 自体が変更。
>>527 > Java的にはAを拡張していることになるのですか?
「Java的」を定義してくれないと答えられません。
言葉遊びだな
javaってCで書かれてるんでしたっけ?
Rubyで書かれてるのとかもあったな
Genericsが出てから1年経ったもののGenericsのノウハウが少ないからなのか このスレではGenericsのことをわかっている者はまだまだ少ないか
>>512 Genericsがわからないのなら1.4互換でコンパイルしようぜ
できればGenericsを使いたいのでそれは却下したい。 なぜならGenericsによって型安全性が保証され かつクラス検索の手間を省けることにより パフォーマンスがあがるから使いたいのだが。 しれに1.4にダウングレードしたらさらにパフォーマンスが下がる。
>>521 Java GenericsはC++templateとは同義じゃないぞ
JavaDocを見ると癖が分かるよ インタフェース Comparable<T> みたいにね。何をしなきゃいけないのか、もうわかったな?
>>536 Javaでもパフォーマンス向上されるの?
仕事は1.4メインだからほとんど1.5の情報知らないんだけど、
JavaのGenericsってコンパイル時の型チェック程度じゃないんだっけ?
違ってたらごめん
ソースはそのままで最新バージョンでコンパイルすると速度がぐんとあがるってこともあるんでないかな。
>>540 それはGenericsと関係ないよね。
>なぜならGenericsによって型安全性が保証され
>かつクラス検索の手間を省けることにより
>パフォーマンスがあがるから使いたいのだが。
この最後のパフォーマンスが上がるってのがよくわからない。
これはGenericsを使ってるから向上したのではなく、
VMのバージョンがあがったからではないの?
JavaのGenericsってコンパイル後は型情報はバイトコードから削除されるよね?
なんで、たとえばコレクションフレームワーク系では最終的なバイトコードって
Objectを引数とする、従来のものと同じになる。(互換性のため)
C++の場合は、コンパイル時に型情報が埋め込まれる(インライン化)されるから
パフォーマンス向上はあるけど。その代わり、指定した型の数だけテンプレートが
展開され、バイナリが大きくなってしまうけど。
いろいろ書いたけど、どうでもいいや。
パフォーマンスが向上されると思ってがんばってGenericsを勉強してください。
陰ながら応援しています。
>>536
>>538 試行錯誤を練っているのだが、
引数にComparableオブジェクト
入れるのを諦めてComparale<T>#compareTo(T t)
をオーバライドしたメソッドを実装させるしかなさそう
なのか・・・。思った通りには行かないようだ。
>>539 コレクション系クラスを使用するとき
取り出した型をObjectから目的の型へダウンキャストの手間が省けることは
パフォーマンス向上につながる。
JVM自体もTigerからはかなり速くなってEclipseの起動速度も速くなった。
544 :
デフォルトの名無しさん :2005/12/14(水) 02:11:50
Genericsでどこがどう性能向上するんだYO!!!
ばかだな、彼は綺麗なコードを書くことによる、トータルパフォーマンス最適化論者なんだよ。 コーナーの立ち上がりが最速な奴がトータルで速いんだ。
キャストのコストは高い だからGenericsを使えば速くなることがあることは間違いない
>>543 してるよ。キャスト。Genericsってね、早い話がプリプロセッサなんだよ。
バイトコードのどこにもGenerics構文独自の要素は出てこない。
548 :
デフォルトの名無しさん :2005/12/14(水) 02:13:30
>>543 >取り出した型をObjectから目的の型へダウンキャストの手間が省けることは
バイトコードからダウンキャスト相当の命令がなくなるってこと?
>>547 そうなんだ。正式版が出る前は層だったと聞いたけど
正式版が出てからTigerでコンパイルされたバイトコードには
何か変化が現れたらしい。
JVMを本格的にいじるのは6.0からで、5.0は1.4をちょこちょこ触っただけじゃない?
総称は「型消去」によって実装されます。総称情報は、コンパイル時にしか存在せず、 コンパイル後はコンパイラによって「消去」されます。このアプローチの主な利点としては、 総称コードと、パラメータ化されていない型 (技術的には「raw」型と呼ばれる) を使用する レガシーコードとの間に、総合的な相互運用性が実現する点です。主な欠点としては、 パラメータの型情報を実行時に利用できない点と、動作が適切でないレガシーコードと 相互運用すると、自動的に生成されたキャストが失敗するおそれがある点です。しかし、 動作が適切でないレガシーコードと相互運用するときも、総称コレクションに対して実行時の 型の安全性が保証されます。 ↓抜粋;つまり、キャストは自動的に生成されるのだよ。 パラメータの型情報を実行時に利用できない点と、動作が適切でないレガシーコードと 相互運用すると、自動的に生成されたキャストが失敗するおそれがある点です。
553 :
デフォルトの名無しさん :2005/12/14(水) 02:20:15
>>548 ArrayListに型を入れたいとき、複数の型を指定できる。
だが入れたい型を一つだけ(またはその型のサブクラスの型のみ)に絞り込むことができる。
その分、Iterator#next()やList#get()で取り出したオブジェクトを
どのクラスにキャストするかという、検索処理を省くことができ、
予め指定しておいた型を使うのでパフォーマンスが上がる。
1.4だったらダウンキャストするほか、複数の型をListに入れていた場合は
取り出すたびに毎回if文でinstanceofやgetClass()で型チェックをしなきゃ
ならなかった。しかもチェックに失敗したらtry-catchでClassCastExceptionを
細くできるようにしなきゃならなかった。
その手間が省けたことはコードが綺麗になるだけでなく
無駄な検査ロジックを省けるのでパフォーマンスは上がるというわけだ。
>>552 何処の抜粋?
IBMのdwの記事ではないよね?
dwでgenericsについて解説してるのがあったけど
内容が古かったような
>>553 何かズレた言ってるね。
Genericsなしでも入れる型が一つだけなら
Genericありと何も変わらない。
複数の型をぶちこむ設計がまずいだけだ。
あ、変わらないのはパフォーマンスね。 生産性はもちろんあがる。
超初心者の質問で申し訳ないですが、 引数のあるコンストラクタと抽象クラスってどう違うんですか?
Stringのように不変クラスになっていればStringのサブクラスが存在しようがないので そういう制限をすることは簡単さ。 だが可変でfinal宣言無しクラスでサブクラス型がコレクションに いくらでも入るようなものや、interface型だと そうもいかないんだよなこれが。
>>558 引数のあるコンストラクタと抽象クラスってどう同じなんですか?
>>558 えっと・・・かなり違う。
抽象クラスは派生クラスを実装しないとインスタンスに出来ない。
引数のあるコンストラクタは、引数なしと違いヒントや材料が指定できるだけのコンストラクタ。
コンストラクタと抽象クラスをあまり理解出来てないかも。 引数のあるコンストラクタと、抽象クラスを型として参照変数を宣言するの、どう違うのかなぁと・・・
BufferedImageにカラーの画像、jpgかなんかが入ってるとして, そこから各ピクセルのRGB情報を取り出したいんですが, どのようにするのが一般的でしょうか? なんか適当なAPIあります? 画像認識や画像判別的なコトをやりたいんですが… 風景画像と人物画像を自動判別したりとか
>>564 PixelGrabber#grabPixels()かなあ
566 :
デフォルトの名無しさん :2005/12/14(水) 04:49:03
本当に初心者なんですが、ホームページのソースを見られないようにする方法ってありますでしょうか?
568 :
デフォルトの名無しさん :2005/12/14(水) 05:02:34
567さん。 ありがとうございます! すごく助かりました!!!
570 :
デフォルトの名無しさん :2005/12/14(水) 08:53:47
571 :
570 :2005/12/14(水) 09:06:39
2はなんとかできそうです。4は自分で頑張ります。すんません。。
byte f = -1; って代入して16進表示すると 0xff なのに byte f = 0xff; と代入するとエラーになってしまいます どうしてなんでしょう? byte型で1バイトの16進数を直接代入したいんですが どうやったらいいんでしょう?
574 :
デフォルトの名無しさん :2005/12/14(水) 10:49:52
グローバル化を考える際、リソースは外出しして、言語に合わせられますけど、 JavaDOCはどうすれば良いのですか?
>>574 普通に英語で書けば良いんじゃないですか?
>>573 byte が扱えるのは -128 〜 127 まで。 0xFFは範囲外。
byte f = (byte)0xFF; みたいにキャストすれ
今、サーバークライアント型でクライアントがアプレットのプログラムを 組んでいます。 それで、eclipse3.1からアプレットビューアで起動すると、うまくいくんですが、 IEで起動するとデータのやり取りがおかしくなって、バグってしまいます。 そこで、質問です。 アプレットビューアとブラウザでは何か違いがあるのでしょうか? よろしくお願いします。
>IEで起動するとデータのやり取りがおかしくなって、バグってしまいます。 この部分がわからんと何ともいえない。 どんなエラーが出たのかぐらい書け。
579 :
577 :2005/12/14(水) 12:13:18
>578 エラーというエラーはでないのですが、チャットメッセージが名前一覧に 表示されたり、その他のデータがチャットエリアに表示されたりと、データの 受け取り内容がおかしくなってしまいます。 わかりずらくてすみません。 アプレットビューアではそのようなことは無くたぶん正常に動いています。。。 IEではとある機能を追加したらこのようなことになり、それ以前は普通に動いてました。
プログラム実行時のコマンドラインオプションや引数を簡単に管理できる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]; } } } というような処理をさせてます。 どうすれば処理速度を上げることができますでしょうか?
>>582 1次元配列に置き換えて先頭からのシ一ケンス処理として置き換えできないか考える
むりならそもそもの口ジックを見直す
586 :
デフォルトの名無しさん :2005/12/14(水) 12:54:37
587 :
574 :2005/12/14(水) 12:55:15
>575 それしかないですか。 英語でリアルタイム思考はできないので、 翻訳で思考が中断しそうだなあ。
588 :
577 :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
おれはあまり使わないけど。
>>589 java.util.StringTokenizer
java.io.StreamTokenizer
String#split()
好きなの使え。
592 :
590 :2005/12/14(水) 15:12:18
>>590 ありがとうございます。
やってみます。
593 :
589 :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} では生成コストにどれぐらいの差があるんでしょうか?
>>595 たぶん new Integer(0) のほうが軽いと思うけど、計測してないから断定はできん。
といっても、100万回繰り返しても1秒以下の差しかでないと思うから、生成コストはあまり気にしなくていいと思う。
キーとして使いやすいほうを選べばいいんじゃないでしょうか。
あるメソッドを定義しているんだけど、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文が使えないんです。) どっちでもいいちゃあどっちでもいいんだけど、えらいひとの意見ちょーだい。
598 :
595 :2005/12/14(水) 18:34:44
>>596 わかりました。どうもありがとうございます。
>>597 Collections#unmodifiableListで、読み取り専用のリストを返すとかは?
600 :
589 :2005/12/14(水) 18:47:47
>>594 なるほど!
勉強になりました。
ありがとうございます。
>>597 generics 使えないとキャスト必要になるから String[] の方が便利っちゃ便利。
>>574 前はSunがjavadocの国際化作業を支援するdocletを出してたみたいだけど
最近はどうなんだろうな。
603 :
597 :2005/12/14(水) 20:43:22
>>599 そんなものがあるんですか。勉強になります。
ただ、まずはListにするか配列にするかを先に決めないと。
>>601 そうなんですよね。長いコードでもEclipse使えば書くのはちょっと楽になるけど、読みづらくなるし。
String#split() (というかPattern#split())では、内部でListを使ってて、それを Stirng[] に変換して返してます。
やっぱり配列に変換するのがJavaの流儀なんでしょうか。
>>595 ,596
new Integer(0).equals(new Integer(0)) は true になるけど
new int[] {0}.equals(new int[] {0}) は false になるから int[] はキーとしては不適当。
相対または絶対パスをキー、Fileを値に持つTreeMapを使いたいんですが この場合並び順はどうなりますでしょうか? なんかうまい具合に階層順ファイル名順に並びが定義されているとありがたいんですが
606 :
デフォルトの名無しさん :2005/12/14(水) 23:33:39
基本情報の問題で プログラム1 public class A{・・・ などととなってるがこのpublicはどういう意味、使われ方なのでしょうか? JAVAの本ではパッケージのところにpublicの説明があるが、パッケージも関係あるのですか?
607 :
っ :2005/12/14(水) 23:34:16
>>605 パスをキーって事は文字列か? だったら文字列の並び順になる。
絶対パスはOSによって書式が違うから、本当にやりたかったらPathクラスかなんか作って
実際に動かすOSに合わせてComparable実装したほうがいい。
ってcommonsとかKodersに有りそうなネタだな。探せば世界のどっかにあるはず。
>>603 1.4以前は型指定のCollectionを使えなかったから、
要素の型付リストを返したければ配列を使うしかなかった。
1.5からはGenericsがあるのでunmodifiableなList<T>を使うのがベスト。
LinkedListが活躍するのって何件くらいから? 10件くらいだとArrayListのが早い気がする
>>604 TreeMap だから Comparatorつっこめば int[] でも良いんじゃないか?
どちらかというと、int[] の中身は変え放題っつー方が問題あるような。
>>609 んんー
ではputした順番を保持するMapとかは無いですかね?
List<Map<String, File>>でできるとは思うけど、ちょっと美しくないので
LinkedHashMapだろ、MapとかインタフェースのJavaDocは既知の実装としていっぱい実現クラスが載ってるから辿ってみ
>>614 あーどうもです
SortedMapかと思ってTreeMapしか実装がないぞとかやってました
>>611 測ってないけど、高々1000とか10000ならArrayListは十分速いと思う
ふと思ったが1,000,000件のデータの挿入、削除なんてしないんだよな・・・ そんなデータ普通DBに読みに行くだけだ。
1万件だとリストのつなぎなおしに時間がかかる場合もあるけど 用途しだい 0.1msもかかると使い物にならないとかそういうこともあるし
>>612 ソートはできるだろうが get で値を取得するときは
キーと == で同値な int[] じゃないと取り出せないぞ。
常に entrySet か keySet か values 使ってアクセスするならいいけど。
int[] の中身変え放題ってのももちろん問題だが。
生と死のANDが愛って有名?
622 :
デフォルトの名無しさん :2005/12/15(木) 08:55:50
生と死のORはどうみても精子です。有難うございました。
623 :
デフォルトの名無しさん :2005/12/15(木) 10:30:56
>>608 クラスがpublicってどういうこと?
>>624 System.out.println((char)('生' & '死'));
UNIC SJIS EUC JIS 生 751F 90B6 C0B8 4038 死 6B7B 8E80 BBE0 3B60 愛 611B 88A4 B0A6 3026
629 :
デフォルトの名無しさん :2005/12/15(木) 14:06:52
>>621 凄いが、一般の人に話しても絶対理解されない雑学だなぁ。
他に無いのかな
>>626 ( ・∀・)つ〃∩ ヘェーヘェーヘェー
IBMのカエサルシフトがHALみたいなもんか。
JavaのGUIプログラミングで質問があります。 GUI画面で数値を入力させて、それを計算して結果を出力する といったようなプログラムは どのように組めば良いのでしょうか?
データをテキストフィールドかなんかに入れて、 それを読み取って計算して表示
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はリストされている全てのオブジェクトを解体してくれますか? いくつかのオブジェクトでリング状に参照してるから気になったので 教えてください
>>634 ×if (m.matches())
○if (m.find())
>>635 GCの実装による。
普通は循環参照あっても回収されるから大丈夫。
638 :
635 :2005/12/15(木) 20:26:45
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++; } } }
641 :
デフォルトの名無しさん :2005/12/15(木) 23:28:54
Windows用の Java Communications API が欲しいのですが、SUNでは削除されているようです。 ミラーとかご存知でしたらご教授願います 変な質問ですが、よろしくお願いします
JWSについてなんだけど、JWSで表示したもの(例えばSWTで作った表)をユーザーに表示させている間、 javascriptでユーザーの動きを制御したりはできるの? 例えばユーザー側で3分間どこもクリックしたりしなかったら何かメッセージウインドウを出す、とか あくまでjavascript限定で
644 :
デフォルトの名無しさん :2005/12/16(金) 00:12:47
初期のマリオみたいなアクションゲームを作りたいのですが、 参考になるようなサイト(書籍でもOKです)ってありませんか? 自分でも探してみたのですが、シューティングとかブロック崩しとかはあるのに 2Dアクションゲームのアルゴリズムが載ったサイトは見つかりませんでした。 BufferStrategy とか Timer とか GraphicsDevice(FullScreen) とかについては そこそこ使える程度には理解しています。 画像処理についても、大昔に DirectDraw をかじったことがあるので基礎は分かっています。 なので最大の問題はアルゴリズムです。 Java はマインスイーパライクの簡単なゲームくらいしか作ったことがありません。 アクションゲームは全く未知の世界です(当たり判定とか)。 基本的なことが分かるサイトとかってないですかね?
BufferStrategy使っておいてマインスイーパって先生・・・
キャラの表示と移動ができれば アルゴリズムって程のものでもないだろう。 あたり判定て四角の座標が重なってるかどうかとか ビットマップで重なり判定とか べつに普通に思いつくとおもうけど。 3Dはベクトルと行列とかわからないとつらいけど 2Dゲームは 動作画面見てコードがだいたい想像できないようなら 向いてないような。
たぶんむいてないな
→を押すと右にいって、←を押すと左にいくようにすればよい。 Bだとダッシュできるようにすればいいし、Aならジャンプすればいい。 唯一難しいのはジャンプ中に慣性無視して戻ってこれるアルゴリズムくらいだ。
650 :
デフォルトの名無しさん :2005/12/16(金) 00:27:31
アクション特有処理って何か思いつく? シューティング作れりゃアクションは簡単。 sinカーブ上にキャラを配置できれば問題なし。
>>648 中学なら十分に作れるだろ
みんな小学のころからコードよんでたぜ
ベーマガ読んでた世代なら出来るっしょw
653 :
デフォルトの名無しさん :2005/12/16(金) 01:12:24
ベーマガって何で無くなったの? 良い雑誌だったのに
ゲームを作るとどうしてもコードがスパゲッティになるな。
Javaでやってるのに? AppletやケータイJavaでもなければちゃんとOOPするでしょ
656 :
デフォルトの名無しさん :2005/12/16(金) 02:12:26
iモードのゲーム作るにはどうしたら良い?
>>653 ソースコードを入力して動かす時代じゃなくなったから。
特に、有料の開発環境が必要だった時期に、普通の人にはソースコードが入力できなかったりした。
今なら無料のスクリプト処理系や開発環境がそろってるから、その点では解決してるけど、パソコンの使い方の多様化で、ゲームだけには絞れなくなったし。
ゲームをやるのがメインの層はプログラムを入力しようとは思わないし、プログラムを入力する層はゲームがやりたいわけじゃなかったりする。
>>655 ゲーム作ったことある?
制御やら判定処理は、OOPやったからといってきれいに書けるもんじゃないよ。
>>633 JLabelに計算結果を出力させたいのですが、どのようなコードを書けば良いのでしょうか?
例えば足し算プログラムで、TextFieldが二つあり、そこに数値を入力して、
JButtonを押すと計算され、JLabel部分に計算結果が出力される といったような感じです。
そこまで決まっていて何がわからないのかわからない。
662 :
デフォルトの名無しさん :2005/12/16(金) 02:39:14
HeadlessException
Swingの質問です。 どうも、BorderLayout環境でJTextFieldを使うと高さがびろ〜んと一行以上になってしまうようです。 JTextFieldにsetPreferedSize()を使う以外で、これを解決するスマートな方法はないでしょうか?
・BorderLayout.NORTH か BorderLayout.SOUTH に入れる。 ・BorderLayoutを使わない
>>663 NetBeans5.0βでMatisse使って自由に配置。
めっちゃスマート。
あ、BoxLayoutの間違いです orz
>>661 JLabel部分に計算結果を出力する方法です…。
どうすればJLabel部分に出力出来るのかわからないので、
System.out.println を使って、DOS画面に出力結果を表示していますorz
いたいけな中学生に向かってヒドすぎる!
>>667 JLabel#setText()
じゃ、だめなんかい
671 :
606 :2005/12/16(金) 10:19:46
classがpublicってどういう意味?
673 :
デフォルトの名無しさん :2005/12/16(金) 11:25:19
unix jdk1.3でtifファイルを他の画像フォーマットに変換したいんですが どんなやりかたがありますか? jimiを使ってみたところ、windows環境では動いたんですがunixだとどうも動いてくれずjimi.getImageのimageの取得でこけてしまって悩んでます。
byte b = 69; int i = (b & 0xf0) >> 4; ビット演算だと思うのですが、 このような処理を詳しく解説しているサイトを ご存知でしたら、おねがいします。
>>675 わかりました。
上位4bitを取り出して、
右側に4回ずらしてその2進数をintにしたわけですね。
>>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 ってできますか?
標準APIだけではできません たぶんこの質問レベルならこれでいいだろう
681 :
デフォルトの名無しさん :2005/12/16(金) 14:29:14
JAVA:SWTでプログラム書いてて、 1.java(double A=1;)と設定した数値を2.javaにもっていきたい時ってどうすれば・・・汗 お手上げです・・・
プロパティファイルには、キーと値の組を1行ずつ記述しますが、 値として複数行の文字列を記述するにはどうしたらいいですか。 hoge\n\fuga\n と書いて、プログラム側で \n を改行文字に置き換えていくしかないんでしょうか。 なお用途はメッセージの国際化です。 複数行のメッセージがあるので、これをどうやってプロパティファイルに記述すればいいのかわからず、質問してみました。 できれば複数行のメッセージは1行にまとめず複数行のままで記述したいと思っています。 よろしくお願いします。
>>680 それはウソだ。
ワイヤーフレームだったら、ほとんど勉強せずにAWTだけで書けるし、ポリゴンもそんなに難しくない。
Javaで3Dはできる。
>>683 シェルとかで複数行みたいな使い方ができるってことか。
682じゃないけど参考になった。
サンクス。
いいだろ
見た目の結果と計算内容は3Dなんじゃね? そう言い出したら、シェルスクリプトでも3D可能とかになっちゃうけどさ
Javaで書いたソフトを売るときには 何か許可がいりますか? あとJavaはSunの商標ですとかの商標表示も必須?
>>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("");から出力される。
以上。
ネット将棋のプログラムが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形式です。
で、それをもとにグラフを描きたいわけです。
どうかよろしくお願いします。
Image imgがあったとして、imgはbmpかjpgかpngのいずれかで、どれが入ってるかはわかりません これを同じフォーマットのファイルに出力したいです 例えばimgがbmpならimg.bmpに、pngならimg.pngにといった感じです でImageIO.writeを使いたいと思っているのですが、二つ問題があります まず、ImageIO.writeではRenderedImageの実装クラスしか扱えないようですが、 どうにかしてimgをRenderedImageの実装クラスに仕立て上げることはできますでしょうか? もう一つ、imgのフォーマットはどうやって取得すればいいでしょうか? よろしくお願いします
ImageIO勉強して まずreadとwriteしかほとんど使わないけど、他のメソッド使うとすごく細かいこと出来るよ
700 :
デフォルトの名無しさん :2005/12/17(土) 02:03:27
自身を格納する以外のインスタンス変数のないシングルトンクラスって スタティッククラスと何が違うんでしょうか? この二つってどう使い分けるんでしょうか?
自身を格納するという表現は新鮮だな。 デザインパターンの本を嫁ばわかる
702 :
デフォルトの名無しさん :2005/12/17(土) 03:03:34
さーて、リフレクションは使ってはいけないと、言われた俺様が来ましたよ。 パホーマンス云々だってさ。今日は似たクラスいーぱい、を作り直しさせられた。 これが、世の中ってやつですかね? ふと、工数水増し、開発費用水増しという犯罪では?という気がしました。
すいません、AWTでコンポーネントを重ねて表示させているのですが、componentとcanvasを重ねるとcomponentga 先に描かれてしまいます。 canvasを後に描かせるにはどうしたらいいのでしょうか。
>>702 とあるプログラムの保守で、リフレクションを使ってた為
ソースコードを追跡するのがエラい大変だった。
リフレクションを使うのは、粒度の大きいクラス・パッケージに限定して欲しい。
一つのモジュールの内部で完結するように使われるのは勘弁。
>>704 ejbCreateメソッドみたいな、あるタイミングで呼ばれるメソッドが名前で決められてるやつ?
そういうのは、アノテーションが使えると明示的になるし型保証もできていいのだけどね。
メソッド名を固定で持ってればまだいいのに、文字列結合でメソッド名文字列を作るからなあ。
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 あ、よく読んでなかった。
他のスレッドか。ロックされるでしょ。
すみません; ↓どこが間違っているか解りません。 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); } } .......................................................................................................
Title.gifがどこになあるかじゃない?
>>711 同じフォルダ内です。
コンパイルすると
h.java:18: シンボルが解決できません。
シンボル: メソッド drawImeag (java.awt.Image,int,int,h)
場所 : java.awt.Graphics の クラス
g.drawImeag(img , 0 , 0 , 400 , 300 , this);
^
エラー1個
、とコンパイルエラーになります。
何故ですか!?(;´Д`)
>>710 drawImeag → drawImage
Image
出来ました!ありがとうございます。 スペルミスを脳内補完してたようです;
J2SDK1.4.2 と JDK5 を切り替えてつかうにはどうしたらいいですか。 環境はWindowsXP。 Linuxだと、両方をインストールして、シンボリックリンクでディレクトリを切り替えるだけで簡単なんですけど、Windowsではどうやったらいいのかわかりません。 Eclipse使うのでもいいけど、できればコマンドラインからできる方法きぼう。
>>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をバージョンによって切り替える必要あり
719 :
717 :2005/12/17(土) 13:20:23
>>718 さんきゅーです。
レジストリいじらんといけないのか。これをコマンドラインから一発で変換できるようにするには、・・・ぐぐってみよう。
パスの切替えをやるならレジストリはいじらなくてもよい
>>716 そういうミスはEclipseで自動チェックできそうな
>>717 Apache Antの<classpath>タグを使え
さもなければjavacコマンドのオプションでclasspathを使え。
さもなければActive TCLをインストールせよ。
TclでWindowsにシンボリックリンクを張ることができる。
Eclipse使用です。 DataLine.Infoを書くと、DataLineの下に赤波線がでて、Rename in file とでます。 ピリオドで区切られたクラス名を認識してない?みたいですが Eclipseの設定の問題でしょうか?
724 :
デフォルトの名無しさん :2005/12/17(土) 13:51:58
そもそもDataLine.Infoってのは 一体何なのか説明せよ。 お前が作ったクラスなのか、それともフィールド変数なのか はっきりせい。
725 :
723 :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; } }
import忘れてるだけだろヴォケ
727 :
デフォルトの名無しさん :2005/12/17(土) 15:19:08
volatile を指定するのとその変数を synchronized で囲うのとでは何が違うんでしょうか?
環境は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')"); って実行してみると、テーブル見たらちゃんとデータ入ってるので、 その辺は問題なさげです。 何が問題っぽいでしょうか。解決の糸口が見つかりません・・・
うは、俺ちょうバカス。 結論から申しますと、結果は取得できておりました。。 結果の見方とデバッガのresulsetの見方を両方間違えておりました。 スーパーごめんなさい。
730 :
デフォルトの名無しさん :2005/12/17(土) 17:21:52
自分のグローバルIPってどうやって取得するんでしょうか? InetAddressではlocalhostしか取得できないようです
Runtimeクラスでipconfigコマンドを実行する
いやifconfigコマンド
System.getProperties
734 :
デフォルトの名無しさん :2005/12/17(土) 18:22:48
JNDIを使う
プロンプトでユーザに問い合わせる
メンバクラスで親のthisを取得するにはどう記述すればよいのでしょうか?
あらかじめローカル変数に入れておけばいいやん。
Java入門HPとかみてると``Write once, Run anywhere''と 長所にあげてるのを見るとはらたってしょうがない。 そもそも組み込みとかだと動かないし、liunuxとかwindowsで動くとかならC++でも ラッパーライブラリ使えば動く。 だいたいjavaランタイムとか一般人はほとんどwindowsに入れてないんだkら動かないだろハゲ。
ん?なぜ俺がハゲだとわかったんだ?
今まで結構順調だったのにGUIとかいうので全然分からんなった
>>737 現在は回避策としてはそうしているんですけどね。
予約語でサクッと出来たほうが嬉しかった。
親クラス名.this だよ
Javaのネイティブコンパイラについて調べています。 参考になりそうなwebページなどありましたら教えてください。
745 :
デフォルトの名無しさん :2005/12/17(土) 20:57:43
>>742 そりゃインナークラスの場合だろ。
通常のメンバーでは無理。
インナークラスってなに?
クラスの中に定義されたクラス。
じゃあメンバクラスってなに?
クラスのメンバフィールドに参照が保持されているクラス。
いや static かどうかの違いだろ。
ゲームを作ると、ランダムアクセスを行うリソースが沢山出てくるけど、 これの管理方法は次のような仕組みで問題ないでしょうか? ・ファイルをオープンするときは、必ず特定の静的クラス(AClass)のユーティリティメソッドを使用する。 ・ユーティリティメソッドは、ファイルをオープンしてファイルストリームを返すと同時に、 AClassの保持する静的リストにファイルストリームを格納する。 ・ファイルクローズ時はAClassの静的ユーティリティメソッドを使用し、静的リストからファイルストリームを削除する ・mainメソッド内部をtryで囲み、finallyでAClassの持つ静的リストを総なめし、 全てのファイルストリームをクローズする。 ・総クローズ中のIOExceptionについては総なめループ中でcontinueにより対処する
>>738 Javaの"Write Once, Run Anyware"は
「リコンパイルせずにどこでも動く(=バイナリレベルでポータブル)」を
目指しているのをわかっていない人が多い。
CでもC++でもリコンパイルすれば動く(=ソースレベルでポータブル)なのは
全然関係ない。
バイト時代の会社の社長さん、Winで開発して、Linuxにうpするときはびびってコンパイルしてたな。 C屋だったらしいけど、バイトコードとはいえ改行コードが!って思ってたんだろうね。
JavaServletを気軽にCGI鯖みたく使えるレンタルサーバってありませんか? 板違いになってるとは思いますが、言語を指定したいのでここでお願いします。 月額1000円くらいまでで無いでしょうか?
わがままいうな。
板違いだボケ
757 :
デフォルトの名無しさん :2005/12/18(日) 00:18:12
こんばんわ javaで電卓プログラムを作る場合で もしもdouble型を超える数字を計算する場合(メモリが続く限り無限) にはどうすれば良いでしょうか? 自分で考えてもよく分からなくて・・・・ よろしく御願いします。
手元の電卓でためせば答えはすぐわかる。
760 :
デフォルトの名無しさん :2005/12/18(日) 00:31:16
>>758 そこを何とかヒントだけでも・・・
自分が考えたのはエラーが出た時にtry catchするとか
桁を10とかで割るとか、文字列に変換してとか・・・・
あ、Integerか・・・
それとも再帰呼び出しとかが怪しいと思うのですが・・・・
この中に正解とか有りますでしょうか・・?
BigDecimalじゃだめかね?
どうやらBigIntegerを使うらしい 今からeclipseで・・・・ また分からなかったら質問するのでよろしく 御願いしますー
>>736 super
もしくはスーパークラスにthisをかえすgetterメソッドを実装する
>>738 そこでJavaWebStartの出番ですよ。
Flashのように勝手にJavaをインストールしてくれるので安心。
JavaWebStartだとどんな制限がある? ローカルに落とすならサンドボックスもいらない?
766 :
デフォルトの名無しさん :2005/12/18(日) 01:01:50
>>738 Java入門ヒューレッドパッカード(HP)?
何それ?
>>753 いまだにそういう馬鹿が多くてむだなことにテストに時間を
かける奴が多い。
769 :
デフォルトの名無しさん :2005/12/18(日) 01:02:46
>>765 おいおいjarsignerを知らないのか?
>>768 参考までに構成と初期費用とランニングコスト教えて。
DDNS便りのしょぼ鯖じゃないよね?
>>738 C++だとエンディアンが違う環境で同じデータが使いにくい
ウィンドウだすのはかなりつらい。
(こちらが良いのかな?) 初心者ですがちょっと教えていただけますか? JavaアプリからWindowsアプリへウィンドウズメッセージは送れますか? 全く無理ですか?
JNIを使えば可能
>>773 どうもありがとうございます!
JNI、調べてみます。
775 :
デフォルトの名無しさん :2005/12/18(日) 02:47:03
>>773 JNIって良く聞くんですけど
具体的にどんな時に利用するんですか?
ネイティブ機能を使うとき
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... と正しい値になります。 どれだけ見ても間違っているようには見えないのですが、 お願いします。
awt.Toolkit JIMI JAI ImageI/O なんでこう規格が乱立しているんですか? 何か理由があったんですか?
それは規格なのか?
>>777 その計算のどこで期待と違う値になってるか確認した?
>>777 Math.tan() の角度はラジアン。
782 :
デフォルトの名無しさん :2005/12/18(日) 07:08:05
>>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に変換するメソッド。
>>785 Integer#valueOfはIntegerを取得するメソッド(intをクラス化させたもの)
Integer#intValueがintを取得する。
でも本当はそんなまどろっこしいことしなくてもInteger#parseIntで直接変換できる。
ちなみに785がそれで動くのは、君の実行環境がJava5.0だから。
オートボクシングという謎のマイクタイソンがJava5.0には住んでるから
その本読破したら5.0の特徴をネットで調べて於こう。(今は気にするなってこと)
>>786 ウィットにとんだジョークまで一生懸命考えたのに何で被るんだヽ(`Д´)ノ!
parseIntを何も考えず進めると大変なことになるでよ
>>788 余計なことやってる間に出し抜かれる典型ですねw
791 :
786 :2005/12/18(日) 13:23:08
>>785 intValue
public int intValue()
この Integer の値を int として返します。
定義:
クラス Number 内の intValue
戻り値:
このオブジェクトが表す数値を int 型に変換した値
793 :
785 :2005/12/18(日) 13:47:35
ご丁寧にありがとうございました。 ウィットにとんだジョークまで… おかげさまで挫折せずにすみそうっす。
マウスのカーソルを非表示にしたり、カーソルアイコンを変更したりするにはどうしたらよいのでしょうか?
非表示は知らんがawt.Toolkitら辺に無いか?
>>794 マウスカーソルを変更するのは Component#setCursor(Cursor)
カスタムカーソルを作成するのは Toolkit#createCustomCursor(Image, Point, String)
KeyAdapterって何のためにあるの? びっくりするくらい何もしてなくてKeyListenerの何が不満なのか分からない。
>>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){ } //必要ないけど、書かないといけない。
});
なるほど無名クラスね・・・ やることをきっちりを分けて書くタイプだからその用途は盲点だった。
ほんとだ、今ダウンロードできないね
>>802 すでにあげられているそれ以外の2つのメソッドを使えばいいだけ
parseIntは先頭に0が着くと8進数処理がはいるとか
目的が違うものだよ
ダウンロード画面のエラーメッセージが No product selected. Please go back and select one. なので、やり方が悪いんじゃないかと思うんですが 特に選ぶ項目が見つからないのでよく分かりません。 一時的な障害なんですかねぇ。
parseIntはradix指定できるからこれだけで十分
807 :
デフォルトの名無しさん :2005/12/18(日) 17:59:43
parseIntで十分じゃん。
>806 ありがとうございます。 これのWindows版が欲しかったんですが、 まだ無いみたいですね。 Linuxの方で考えてみます。
JDK5.0をインストールしたんですが、JRE5.0がインストールされませんでした。 JDKをインストールしただけでは、JREはインストールされないんでしょうか。
されるされる。安心してよいぞ。
812 :
810 :2005/12/18(日) 19:19:49
>>811 いや、されなかったから質問しているんですが。
すでにJ2SDK1.4.2が入っているのがまずいのかな。
>>810 オプションいじんなければデフォではいったと思うけど
>>812 C:\java\jdk1.5.0_06\jre
こんな感じでjreディレクトリがあるしょ
815 :
810 :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は別にインストールされるんだーと思った覚えがある。
>>815 C:\Program Files\java\jre1.5.0_02みたくなるのはjreのみを落としたときだけ
おまいが両方落としたからそうなったんでしょ
jdkの最初のJREはPrivateJRE JDKセットアップしたあとにPublicJREのインストーラが立ち上がるはずだけど それをキャンセルつぃ他とか
819 :
810 :2005/12/18(日) 19:48:53
>>817 それでした。間違えてインストーラを2回クリックしたのかと思って、2つ目のインストーラを消してました。
いったんJDK5をアンインストールし、もう一度インストールしなおしました。
どうもありがとうございます。
ところでPrivate Javaってなんですか?
>>816 アドバイスしてくれてるのはありがたいんだが、あんまり適当なこといわないでくれ。混乱してしまうじゃないか。
jdk\jreでいんだっての 人を信用しなさすぎだなおい
821 :
810 :2005/12/18(日) 19:51:18
822 :
810 :2005/12/18(日) 19:53:54
>>820 書き方がたりなかった。
JDKのコマンド自体は問題なくうごくようなんだけど、Eclipseを使ってるときに
プロジェクトで使用するJavaのバージョンを5にしてみたら、なんか警告がでた。
それで、あれ?と思って上のような質問になりました。
だから、Eclipseで動かすときはJRE5.0もたぶん必要なんじゃないでしょうか。
いらねーよ(´д`) 何で開発版が、ただのランタイムより機能が制限されるのさ
Eclipseが古いだけじゃね〜の?
>>823 javacうごかすときはJDKのJREが使われるけど、
コンパイルしたものを動かすときは先にインストールされているJRE1.4が優先されて使われたんじゃないでしょうか。
もうJRE1.5がはいっちゃったんで確認できないけど。
>>824 3.1.1なのでそれはない。
入力キーをフィルタリングするKeyListenerに 実際に値を送ってもらいたいKeyLintenerをチェインするのはまずい設計ですか? 値を送ってもらいたいKeyListenerが直接フィルタリングしたほうが良いのでしょうか?
>>825 つうか、コンパイルはEclipse内蔵のコンパイラが使われるわけだが。
オブジェクトをそのままファイルに保存し、 別の機会に呼び出してキャストしてそのまま使えるような仕組みってないのでしょうか。
ObjectOutputStream, ObjectInputStream, Serializable ここらへんのJavaDoc読んだらまた来てね
>>827 そうですか。
でも話の主題はそこじゃないんですけどね。
>>829 そうですか。
でも話の主題はそこじゃないんですけどね。
俺は間違ってないんだ!って初心者が来るといつもスレの空気が悪くなる だったら質問しに来てんじゃねーよ、まじうざいっす(´д`)
834 :
808 :2005/12/18(日) 21:14:48
>>809 試しにRS232Cポートからデータを取得するプログラムを作成してみたいだけなので
2.0でも問題ないです。
よろしければUPお願いします。
836 :
828 :2005/12/18(日) 21:36:48
>>829 ありがとうございます。
JavaDocを読んでみます。
>>831 は私ではないです。念のため。
828じゃないけど、Serializableって、直列可したいクラスで宣言すれば、 メンバインスタンスのクラスが直列可指定してなくても大丈夫?
>>835 Swingに限らずaddListenerのあるもの全般です。
Swingだと良いクラスがあるのでしょうか?
まず最低限は書式付テキスト使って制御可能 1文字タイプするたびになんか処理したいのならドキュメントに対してイベントとって下され
>>839 いやゲームで使いたかったのです
押しっぱなしにしても連続でイベントが投げられないようフィルタリングしようと
>>840 ゲームならそんな難しいこと考えなくていいと思うが。
843 :
808 :2005/12/18(日) 23:28:53
>>840 Windowsなら大丈夫
X-WindowSystemだとイベントの問題は残る
が、これはシステム上仕方ないようなのであきらめるしかない
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); } } 多分この辺をいじればできると思うのですが
エスパー募集とかやめて。 そんな一部分見せられても回答が返ってくる訳ない。 ソースポストとかどっかに全文あげてもう一回聞き直せ。
というか宿題は宿題スレに池
マウスイベントで output[クリック位置] == 追加した色NO paintで if(output[y*10+x] == 追加した色NO) でとりあえずええやろ
849 :
デフォルトの名無しさん :2005/12/19(月) 04:29:16
入力した単語のyahoo!での検索ヒット件数を受け取りたいんですけど方法ありますか?あったら教えてください。
>>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 スレ違いなのは間違いないけど、エスパー必要か?
>>849 yahooに接続してHTML解析して件数取得
>>837 ダメ
Serializableされてないクラスのメンバインスタンスの直列化実行時に例外発生
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.
>>855 Are you able to read Japanese?
Can I anser in Japanese?
byte型の変数を2桁の16進の文字列で表示したいのですが いい方法を教えてください。 IntegerのtoHexStringだと、Integerに変換したときの値がマイナスの 場合、8桁(ffffffff〜)の文字列になってしまいます。 今はマイナスかどうか判断して下2桁を取っているのですが もうすこしシンプルでスマートな方法をご教授ください。
マスクを使え
>>856 What the hell do you mean with the word "anser"?
>>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
やあ元気?
>>861 ワロス!w
知り合いの韓国人に聞いたんだが、サムスン製よりも日本の携帯の方が良いらしい。
ディスプレイのクオリティが悪いだの言ってた。
まあ、答えてやっていいんじゃないか?
つまんない自演だな
865 :
デフォルトの名無しさん :2005/12/19(月) 16:57:25
コリアンどもは、サムスンマンセー!KT-Telecomマンセー!なんだから、 日本の製品に興味もつなよ。 「世界最大の液晶作った!」「最大画素数のケータイ付きカメラ作った!」 「これで日本に勝った!」って連日やってんだから。 そのくせ、日本から工作機械買わないと液晶つくれねーし、着メロチップは ほぼ100%、ヤマハや沖電子製だよ。 工作機械やパーツのお買い上げ、まいどあり! まぁ、おまえらはおとなしく、いつまでも日本の技術属国やってなさいってこった。
JAI って今どうなってるんですか? JIMI のように既にサポートが打ち切られたりとかしてるんですか?
>>866 javax.imageioで代用できんの?
>>867 いや、機能的には代用可能ですけど、その場合
JAI の立場ってどうなってしまうのかぁって思ったので…。
このままお蔵入りですか? > JAI
>>857 Integer.toHexString(0x000000ff & b);
(bはbyteの値)
何度もレスして済まないんだけど、現時点では JAI がメインで ImageIO がオプションっていう扱いなの? (JIMI は死亡確定で) 内部的には JAI は ImageIO を呼び出してるけど。
ImageIOはJAIのサブセットじゃないの?
サポート範囲が違いすぎる
ImageIOに出来てJAIに出来ないことって何?
どうでもいいんですけど、サンの社員さん(?)もここ見てるんでしょ?
サンのJavaのページ、
http://jp.sun.com/java/ ページ真ん中辺に J2SE へのリンクがあるけど、いい加減リンク先変更してよw
いつまで 1.4.2 へのリンクを張ってるんだ?w
例の印刷バグ発覚で引っ込めたとか
親スレッドを作成し、子スレッドを三つ作成・実行するプログラム。子スレッドは sleep()で一定時間停止、三つのスレッドを同期させるプログラム。 自分で作ってみたのですが ***.java:7: static でない 変数 this を static コンテキストから参照することは できません。 ChildThread1 chd1 = new ChildThread1(); といったエラーが出るのですが、どうすればいいんでしょうか。 ご教授お願いします。
どうスレッドを動同期させたいのか分からんけど、 コンカレントAPI使えば楽
879 :
877 :2005/12/19(月) 21:10:23
使ってよいって宿題かよ 宿題ならあちらへどうぞ
>>880 サポート範囲違いすぎるでしょ?
あってるんじゃないの?
883 :
877 :2005/12/19(月) 22:02:36
すいません、スレ違いでした。 吊ってきます
ってことは皆さん J2SE1.3 の時は何でイメージを読んでたんですか? JIMI?
awtだろ
シリアライズを使って深いコピーを行うのってありですか? 何か問題がありますか?
>>886 パフォーマンスじゃないかな。
あと、ちゃんと実装しておかないと、
シングルトンなオブジェクトでも複製できてしまう。
888 :
sage :2005/12/20(火) 00:29:09
ファイル入出力について勉強してるのですが、 テキストファイル内の特定の行だけを削除、 例えば「2ちゃんねる」という言葉が入っている行だけを削除することって出来るでしょうか? ファイルの読み込みはreadLine()を使って一行ずつ読みこんでます。 簡単に出来る方法あったら教えてください。
889 :
888 :2005/12/20(火) 00:29:55
sageミスすいません
>>888 PetternとMatcher使えばいいよ。
891 :
886 :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と書く、
あまりにも丁寧な文体である
ことから日本人である率が高い。
imageI/O や JAI について調べてみたのですが、 どうしても1つだけ分からないことがあるので教えてください。 ImageI/O は J2SE 1.4 からコアパッケージとして搭載されるようになりましたが、 最初に(オプションパッケージ扱いで)登場したのはどのバージョンからなんでしょうか?
>>891 複製したくないならちゃんとreadResolveを書けば問題ないよ
詳しくはEffective Javaでも読んでちょうだいな
>>890 彼の言い方だとindexOfでもOKじゃね?
897 :
デフォルトの名無しさん :2005/12/20(火) 09:30:24
>>892 FileInputStream & OutputStream
899 :
デフォルトの名無しさん :2005/12/20(火) 10:44:23
>>892 JavaなのでTCP/IPの事だとは思うが
>>897 の様なエスパーばかりじゃないので
質問の内容はもっと細かく書く様に
900 :
デフォルトの名無しさん :2005/12/20(火) 14:56:34
Java でメッセージボックスを表示させるにはどうしたら良いですか?
JOptionPane
>>892 つ [Jakarta Commons FileUpload]
903 :
デフォルトの名無しさん :2005/12/20(火) 15:57:39
アノテーションと普通のインターフェースをどう使い分けるべきでしょうか。 哺乳類のサブクラスにライオン、羊、豚がある場合、 肉食、草食といった性質はどちらで表現すべきでしょうか。
ロジックは普通に言語の範囲内で書くべし アノテーションはツールやフレームワークが使うものとしたほうが便利かと
>>904 そういった、モデルに関することはクラスやインターフェースであらわしたほうがよい。
アノテーションの使いどころは
>>905 に同意。
次世代JUnit, TestNGとJBoss, EJB3.0, Hibernateを見れば アノテーションの使い方が見えてくるかも知れない。
908 :
904 :2005/12/20(火) 17:27:50
>>905-907 有難うございます。
アノテーションの使い所はロジック以外の所にあるんですね。
JavaDOCの5.0の新機能で紹介されている例も簡易ツールでしたし。
909 :
デフォルトの名無しさん :2005/12/20(火) 18:14:44
javaでstatic constなオブジェクトって作れないんですか
試せよ
試したらエラーが出るんです 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 をここで使うことはできません。
ローカル変数にstaticを使用することは不可能
913 :
911 :2005/12/20(火) 19:19:12
クラスのメンバ変数として持つしかないということですか ども
staticの意味がわかってないな
クラス変数だ
916 :
892 :2005/12/20(火) 22:04:16
>>899 TCP接続でチャットできるのを作ったのですが
それにファイル送受信の機能をつけたいのです。(^^;
X-MODEMやKermitあたりを実装しる
>>917 TCPの上に実装するのは効率悪すぎだな。
と、マジレス。
>>916 「今からxxバイト送るよ〜」と言ってxxバイト送ればいい
手順の勉強するならいいとおもわれ
921 :
デフォルトの名無しさん :2005/12/20(火) 23:37:26
こんばんわ 前にここの人に言われて 結城浩先生のデザパタ入門を図書館で 借りてきたいのですけども ちょっと難しいですけど目から鱗と言うか 勉強になってるのですが・・・・ 流石にGoFの23個全部覚えるのはちょっとキツイので これだけは覚えておけ!ってパターンが有ったら 教えて頂きたいのですが・・・・?
業務なら Iterator Strategy Bridge ゲームなら Flyweight Prototype Composit うーん、やっぱ全部おぼえれ。ゆっくりでええで。
>>922 やっぱりそうですか・・・
最近やっとオブジェクトも基本型の様に
フィールドやメソッドの引数で利用するのがオブジェクト指向
なんだなぁ〜と漠然と分かってきた気がしてたのですが
改めて見てみると結構大変で。
よく仕事ではオブジェクト指向や再利用よりも納期に合わせる為に
力業でコードを書くとか聞くのですが・・・?
でもやっぱり覚えてないよりは全然良さ気ですね。
>>923 業務系はプログラマってかコーダーだから大体は力技でOK
コード書いてて「どうもここは設計に変更がありえるな」ってところにデザパタ
お客様の追加仕様や意識合わせ不足による誤解とかで結構変わるからね
あとデザパタ至上主義名コードは結構嫌われる(やたらFactoryの付くクラスが多いとか) プログラマ同士が設計を検討する中で「○○パターンでいいんじゃない?」みたいな アルゴリズムを書いて見せなくてもそれと分かるための名前みたいなもんだよ
>>924 設計はSEがして
プログラマの人はコードを書くとしたら
全体の設計で意思の統一が出来てないと
デザパタの意味があんまり無いですよね?
それにプログラマの仕事って下請けや孫請けとか
も多いらしいですが、今の多くの現場とかでも
デザパタとか浸透してるんでしょうか?
まだ初心者で自分の趣味程度でしかコードを書いた事が
無いので他人様との意思疎通にデザパタが役に立てば
イイとも思うのですが・・・・
まぁ雇って貰ってもどうせ下っ端ですけど・・・・
Factoryばかりならぶのはたしかにきっついなぁ 本当に汎用的なライブラリならいいのだが VBからの移行が多いので最近VBのコード見てるけど このシンプルな命令はJavaにも欲しいとかはある
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なんです。
>>926 んなこたないIteratorとかはそもそも柔軟な設計を可能にするためのパターンだもん。
例えば表をJSPで出力するとして、あるときあるステータスのものは表示しないってなったら
JSPを変更(Strutsなら<logic:notEqual>とか)するより、hasNextでフィルタリングしたほうがスマートでしょ
String old = (String)session.getAttribute("res"); がjspで session.setAttribute("res", session); がservlet だろうが
>>926 > デザパタとか浸透してるんでしょうか?
してないね。だから意識させずにすっと使えるとこだけ使う。
932 :
930 :2005/12/21(水) 00:27:14
session.setAttribute("res", session); ってのはちょっとめんどくさがりすぎた String old = "古い"; session.setAttribute("res", old);
934 :
932 :2005/12/21(水) 00:48:09
>>933 何か俺間違ってる?
嘘教えたらいけないから、ちゃんと突っ込んでくれ。
>>928 からのソースからしてこれで問題ないと思うのだが
935 :
デフォルトの名無しさん :2005/12/21(水) 00:51:41
>>931 なるほど
浸透してなくて力業でコード書かされる場合は
使える所だけ使うって事ですね。
何でもかんでもデザパタで万能でも無いんでしょうし。
でもちゃんと使った方が保守やデバックは簡単ですよね。
でも意識させずに・・・・って何か悪い事してるみたいですね
>>935 あのなデザインパターンなんて本に載ってる通り使うもんじゃないぞ
>>925 が言ってる「アルゴリズムを書いて見せなくてもそれと分かるための名前みたいなもんだよ 」
>>929 が言ってる「柔軟な設計を可能にするためのパターン」
こなへんを学ぶために各デザインパターンの1使用例
を本とかで見て、そのパターンの感覚を掴む事の方が大事だぞ。
>>936 ”感覚”ってやっぱり沢山コードを書く事が
一番の上達法なのでしょうか?
自分はjavaの基本もそこそこにjsp/servletや
データベースとかばっかりやってたんですが
javabeansを利用するにもやっぱり基本の大切さを
今更ながら気付いて再勉強中でして。
コードを読み書きする時とかに何かコツとかが有れば
アドバイスして頂けると有り難いのですが?
>>934 セッションに格納するのが目的ではなくて
サーブレットからJSPへデータを渡したいだけだと思うが
いままで作ってきたコードを振り返って どうすれば仕様変更に対して、柔軟に対応できたかとか考える機会をもつとか Javaならデザインパターンでinterfaceをどう活用するか じっくり調べてみるとか
>>937 他人の汚いソースを読み、他人の綺麗なソースを読み、納得すること。
他人の厨ライブラリを試し、他人の定番ライブラリを試し、納得すること。
沢山コードを書くってのは、最初は中々難しいじゃないか。 誰かが、こう結果が出るプログラム組んでみろとか 言ってくれればいいけど、一人では最初中々難しい。 なのでやっぱり沢山読むのがいいな。 sunが出してるjavaの中身とか jakartaのオープンソースとかは さすがに非常に綺麗に書かれている。 インターフェースや抽象クラスがどう使われているのかを 特に注意して読んでれば、何となく分かる日がくる。 それでもまだ分からなければ、まだその時ではないって事だ。 そんなに神経過敏になる必要はない。
>>938 >jspからservletでセットしたセッション情報って読めないんですか?
と書いてあるじゃないか。
そして、
>>928 のソースには
どこにもセッションに設定されていないではないか
未入力って表示されるのが問題って話じゃないの?
>>939 ,949
なるほど・・・
”仕様変更”って結構重要っぽいですね。
自分でどうすれば後々便利で使い易く
分かり易いコードを書けるか色々試してみます。
有り難う御座いました。
エスパー募集
見る限りの
>>928 のソースには、セッションを取得もしてないし
セッションに設定もしてないし、nullなのは当たり前だわな。
>>941 今までは本のサンプルなんかを読んで読んで
読みまくってjspとかを書いていたんですが・・・
自分で本に書いてる内容は理解出来ても
0から作るのがどうも苦手で・・・まぁそれはホントの
意味で理解出来て無いでしょうけど。
だからjavaの基本を勉強し直して自分の能力の底上げを
しようかと。
30秒見て分からないメソッド(コード?)は駄目駄目らしいですけど
如何せん実力が無いから良いコードと悪いコードの
判別も結構キツイかも知れません。
privateかpublic。staticかどうか。
戻り値に引数なんかを今頃やっとこさ
意識して読める様になったくらいで・・・・
修行が足りん。
じゃあ修行しろ
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
952 :
デフォルトの名無しさん :2005/12/21(水) 07:20:08
馬鹿は減らない むしろ悲しいくらいに増えている
953 :
950 :2005/12/21(水) 07:31:33
なんとか解決しました。 instance.get(instance.YEAR) で出来ました。(instanceはGregorianCalendarクラスのインスタンス) instanceを2回書かなければならないのが面倒ですが。 馬鹿ですいません。
955 :
950 :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();
}
宿題スレに池
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();} } }
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();}}}
相手するなよ
965 :
デフォルトの名無しさん :2005/12/21(水) 11:26:54
>>953 .YEAR等はstaticなフィールドなので、Calendar.YEARで使える
966 :
950 :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が管理しているらしいことは書籍に書いてあったのですが・・・
>>967 とりあえず気にするな
まずは分かり易いコードを書く独力した方がいい
変数も可能な限り使いまわさない
その辺のコストはパフォーマンスが問題になってからでもいい
分り易く書いていれば修正もできる
独力じゃなく努力だ、すまん
Javaでプログラムを作るとき、時系列はシーケンス図で考えるべきでしょうか。 どうしてもただのフローチャートになってしまうのです・・・。 何かコツがあるのでしょうか。 (1)Webアプリ 画面JSPでボタン押下 → リクエストの取得 → DBへのアクセス → 結果の取得 → 画面JSP (2)シューティングゲーム オープニングタイトル → ステージ → ボス戦 → リザルト ◇→ エンディング ↑ │ └─────────────┘ もちろん、エンティティとかレコード構造体とか、敵キャラとか弾とかは オブジェクトで考えるのですが・・・。
シーケンス図で"考えるべき"かといったらNOだなぁ どうしてもフローチャートになってしまうのなら、 フローチャートによる記述が最適ってことだと思うよ →結局オブジェクト間のメッセージのやりとりを書こうとしているのではなく、 処理の流れを書こうとしてるってことだと思う。 シーケンス図はどちらかというと、処理の流れを実現するには オブジェクト間のメッセージがどんな感じでやりとりされるかを 記述するものだからね (1)や(2)を描くのならアクティビティ図の方がいいんじゃない?
975 :
973 :2005/12/22(木) 01:15:03
>>974 なるほど。
UMLはまだ勉強中でアクティビティ図はまだ未着手だったんですが、
早速考えてみます。
ありがとうございました。
976 :
デフォルトの名無しさん :2005/12/22(木) 01:19:49
>>923 >
>>922 > やっぱりそうですか・・・
> 最近やっとオブジェクトも基本型の様に
> フィールドやメソッドの引数で利用するのがオブジェクト指向
> なんだなぁ〜と漠然と分かってきた気がしてたのですが
> 改めて見てみると結構大変で。
>
> よく仕事ではオブジェクト指向や再利用よりも納期に合わせる為に
> 力業でコードを書くとか聞くのですが・・・?
そういう悪い会社や組織、プロジェクトを基準に考えちゃいけないよ。
何が良くて何が悪いのかを見極めることが大事。
団塊の世代という人口が日本でも最も多い層が
儒教精神じみた古いことをいっているからといってかならずしも
その通りに従う必要はない。
団塊という長いものに巻かれる必要がないのと
同じように古い考え方に取り憑かれたものに
己の創造力を自ら蹂躙させられるようなことを
する必要もない。
オブジェクト指向とか力技とかでなくXPしてるなら再利用性よりシンプルコードを目指しても良い
> 最近やっとオブジェクトも基本型の様に > フィールドやメソッドの引数で利用するのがオブジェクト指向 > なんだなぁ〜と漠然と分かってきた気がしてたのですが 間違えてる気がする っていうか、ずれてるのかな
>>978 ちがうねぇ。
でもまあ、業務アプリケーションだとあまりオブジェクト指向必要ないし使うの難しいからしかたないのかも。
とくにWeb。
>>976 全くもって仰る通りなのですが理想を貫きには
納得させるだけの力が無いと駄目ですね・・・・
上の人がちゃんとしててSEとかもデザパタに精通
してて意思の疎通もスムーズなら・・ってそんな
職場とかが少数で有るなら自分以外のコードが力業で
その中に再利用や保守しやすいコードが含まれてるのも
結局全体から見たら汚いコードの様な。
>>977 ”シンプル”って言うのも難しいですね・・・
初心者の”シンプル”さとプロの”シンプル”さは
違うだろうし。。
デザパタってのも実力が有る人には使い易い指針に
なるでしょうし・・・自分には結構難解ですけど。
ハードに修行しないとな
981 :
デフォルトの名無しさん :2005/12/22(木) 03:11:09
>>978 マジですか?
ニュアンスとかじゃ無くて完全に間違えてるなら
javaにとっての”オブジェクト指向”とやら具体的に
教えてください。
>>981 完全に間違ってるので、「勉強しなおせ」としかいえない。
金払ってくれるなら、時間さいて教えてやるけど。
>>981 気を悪くしたのであれば謝る。
で、平気で『javaにとっての”オブジェクト指向”とやら具体的に教えろ』と
言えるのは素直で良いとも言えるが、オブジェクト指向そのものを
理解していないのではないかと思う。
俺個人は、言語によって"オブジェクト指向"に違いはないと思っている。
教科書的にオブジェクト指向を言ってしまえば、
内部に情報を持っていて、外部から活性化される振る舞い(メソッド)を
持っている”オブジェクト”と、オブジェクトが持っている振る舞いを活性化
させる”メッセージ”で考えるのが”オブジェクト指向(の考え方)”
たとえば、文章を処理するシステムを作ろうと、文字列と
文字列を操作する処理(たとえばsubstring)を考えることにした。
・旧来的な考えでは、情報と振る舞いが何の脈絡もなく定義されていた。
文字列→文字の配列(ほかの表現手段でも良い)
substring→渡された文字の配列から部分配列を作る関数(→要は引数xを渡すと結果yが返る)
あなたの言うオブジェクト指向はこれと何ら変わらない。(と思えてしまう)
・Javaにとっての"オブジェクト指向"として考えるとStringオブジェクトというもが生まれた。
内部の情報として自身が表す文字列を保持し(配列でもコレクションでも実装方法は何でもいい)
文字列を操作する振る舞いを保持している。
文章処理システムはこのStringオブジェクトにメッセージを送ることで処理を行う。
984 :
デフォルトの名無しさん :2005/12/22(木) 04:07:48
>>982 単なるオナニストか・・・・
無視して勉強しよっと
>>937 自他のコードをたくさん読んで、直すこと(を考える)も必要かな
自分は、いかに重複コードを書かないようにするかってのから始めた
たとえばこんなのがよくあった。
superとsubで処理シーケンスがほとんど同じで
違うと言ったら、newするクラスが違うくらい
・・・どうにかならないだろうか
って考えてみる
newするところだけメソッド化すればsubはそのnewするメソッドを
オーバーライドするだけだよな、と気づく。・・・結果的にFactoryMethodパターン
そもそも、この処理シーケンスってほかも同じじゃね?
インターフェースをうまく決められればインターフェースに対して実装できるじゃん
で、そいつは共通のクラスとすっかぁ・・・Templateパターン
と言った具合
こんな感じを繰り返すと、設計段階でどんなパターンが適用できるか
見えてきたりする。
986 :
982 :2005/12/22(木) 04:37:39
>>983 あなたは982の人とは別の型ですよね?
同じ人ならご無礼をすいません。
>>986 ちょっと言い過ぎましたけど
ちゃんと応酬出来るくらいに成長して戻ってきます
でもオブジェクトにメッセージを送るって時に
普通javaならオブジェクトを変数にしてアクセスするか
メソッドの引数にするかとか
インターフェイスを介してアクセスするか委譲?とか有って・・・・
後はデザパタ宜しく自分の設計に従ってそれらを組み合わせて作る
しかでは無いのでしょうか?
Cは知りませんけどデータとサブルーチン?が分離されてるらしい
から手続き型になると・・・・間違ってたらすいません、テヘ
まあソースはいっぱい出回ってるから読んで良いと思ったとこ真似していけば自然と覚えると思うけど。 ただこれで覚えると「XXパターン」といわれてもわからん。例だして「こんな感じの」って言ってもらわないと。
>>987 Javaは「オブジェクトにメッセージを送る」という言語ではないので、そこは気にしないほうがいい。
この本読んで、「Javaにはポインタしかない」とか言っちゃう痛い子にならないためにひとつアドバイスだ。 Java言語にはポインタはない。あるのは「参照」 JavaVMでは「参照」の実装にポインタを使っている。 「参照」とポインタは同じような働きをするが、別のものだぞ。
オブジェクト指向の定義がここの人も 考え方(信念、指向「嗜好」、哲学?)みたいなのが バラバラな感じがする。 まぁ言葉で表現するから余計に衒学的。 983と989で言ってる事がズレてるし ”メッセージで考える”と”メッセージを送る” 此処ではそれぞれ何を意味してるの? 或いはこれの違いがjavaの肝なのか・・・・
「ポインタ」「参照」の言葉の定義はなんだ?c++というこでいいのかな? とするとjavaのObject型はどちらでもないよな。どっちかというと演算はできんがポインタか。
Javaの参照とCのポインタは違うのに、わざわざ参照のことをポインタと呼んで、それで「JavaのポインタとC++の参照の違い」などという章を作るなら、ポインタという言葉を使わずに参照で説明して欲しかった。 あの時代はCからの転向組を強く意識する必要があったのだろうけど。
×「JavaのポインタとC++の参照の違い」などという章 ○「JavaのポインタとC++のポインタの違い」などという章 カコワルイ・・・orz
1000なら
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。