1 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 11:54:09 ] このスレッドは、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。 Java使いが優しくコメントを返しますが、 お礼はJavaの布教と初心者の救済をお願いします。 Java SunのHome Page www.java.com/ja/ 前スレ くだすれJava(超初心者用) pc10.2ch.net/test/read.cgi/tech/1126470659/l50
565 名前:デフォルトの名無しさん [2008/02/02(土) 17:47:05 ] レスありがとうございます。 最後の>はずしたら今度は 'Documents' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 って出てきました。質問ばっかですんません
566 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 17:54:13 ] とりあえず入力するのは cd C:\program Files\Java\jdk1.6.0_04 これだけだ。 Javaより、まずはコマンドプロンプトの勉強しろよ。
567 名前:デフォルトの名無しさん [2008/02/02(土) 18:00:36 ] できました。ありがとうございます。まずはコマンドプロントからがんばって いきたいと思います。
568 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 18:44:45 ] >>563 いまから始めるJava 第1回「Java2 SDKで学習の準備」 www.atmarkit.co.jp/fjava/rensai2/javaent01/javaent01.html
569 名前:558 mailto:sage [2008/02/02(土) 22:46:11 ] >>559 さん、ありがとうございます。 インストーラにしたがってnextをポンポン押して進めていくと、インストール中に 「Failed to install Tomcat6 service. Check your setting and permissions. Ignore and continue anyway(not recommended)?」 というメッセージが出て来て、中止or再試行or無視の選択を迫られます。 (このときの進捗状況が Using Jvm:C:Program Files\jre1.5.0_07\bin\client\jvm.dll でした) 再試行しても、やっぱりこのメッセージが出てきます。 無視してインストールを進めて、その後 スタートメニュー → プログラム → apache Tomcat6.0 → monitor Tomcat から起動させてみると、 「C:\Program Files\Apache Software Foundation\Tomcat 6.0\bin\tomcat6w.exe システムに接続されたデバイスが機能していません」 「プログラム開始エラー TOMCAT6W.EXEファイルがリンクしている エクスポート NETAPI32.DLL:NetApiBufferFreeは見つかりません」 という二つのメッセージが同時に出て来てtomcatは起動できませんでした。 あとコマンドプロンプトで、「%JAVA_HOME$\bin\java -version」と入力したところ、 「コマンドまたはファイル名が正しくありません」 と表示されました。これはJAVA_HOMEの設定が正しくされていないという事なんでしょうか?
570 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 01:38:03 ] インストール済みの既存の Tomcatサービスをとめればいいんだよ。 Windowsだったら、常駐プログラムとしてTomcatサービスが起動していると思う。 まずはそれを切る。常駐アイコンが見当たらなければタスクマネージャでtomcatを強制終了するか 設定-サービスでTomcatのサービスを探してTomcatサービスを終了すればいい。 もしくは、既存のTomcatをアンインストールしてみてはどうだろう?
571 名前:558 mailto:sage [2008/02/03(日) 13:05:55 ] >>570 さん 常駐プログラムとしてTomcatは起動していないみたいです。 タスクマネージャって、[Ctrl]+[Alt]+[Delete]押して出てくるやつですよね? そこにもTomcatの名前はありませんでした。 [アプリケーションの追加と削除]からTomcatをアンインストールして 再びインストールを試みても、>>569 のような状況になってしまいます。
572 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:56:21 ] 正直言って tomcat の事はあまり詳しくないんだけど あんまし有用なレスもついてないっぽいので・・・ OS は Me だという事で、それじゃ「サービス」には登録できない。 9x 系 (Win95, 98, Me) には「サービス」が無いから。 もしかしたら「Failed to install Tomcat6 service.」はその警告なのかも。 > エクスポート NETAPI32.DLL:NetApiBufferFreeは見つかりません これ、Win2000 や XP 専用のアプリを 9x 上で動かそうとした時に よく見かけるよなあ。9x には NETAPI32.DLL が存在しないんだっけ? もしかしたら tomcat6 って、もう 9x 系じゃ動かないのでは? あるいは、別バイナリが配布されているとか???
573 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 19:09:01 ] あわわ、追記。 tomcat ってピュア java なんだっけ? EXE ファイルは、起動やらモニタリングを便利にする、ただのオプション? じゃあ JRE さえ動くなら、java -jar tomcat.jar みたいな感じで手動で起動できるのかも。
574 名前:558 mailto:sage [2008/02/03(日) 21:28:09 ] >>572-573 >9x には NETAPI32.DLL が存在しないんだっけ? [ファイルやフォルダの検索]から NETAPI32.DLL を検索かけてみたところ、 [C:\WINDDOWS\SYSTEM]フォルダにありました。 >java -jar tomcat.jar みたいな感じで手動で起動できるのかも。 プロンプトから入力してみたところ、 「Unable to access jarfile tomcat.jar」 と表示されました。
575 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 21:43:20 ] Apache-TomcatとEclipseを使っているのですが、 追加したディレクトリがlocalhostで表示されません。 localhost:8080/ プロジェクト名/ のディレクトリは見えるのですが、 Eclipseで追加した、 webapp直下のxxxxというフォルダが見れません。 どうしたらいいでしょうか?
576 名前:575 mailto:sage [2008/02/03(日) 23:58:18 ] web.xmlを直せばいいかもしれないと分かりましたが どう直せばいいのか分かりません。 どなたかアドバイスいただけますか?
577 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 00:10:17 ] お前さんには、そう当たりで試して切り開いて行く精神が足りないと思う
578 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 18:48:57 ] >>575 は意志が弱いが総当り方式が効率が良いとはとても思えんぞ。 >>576 の態度ではいつまでたっても何も成就できないが
579 名前:デフォルトの名無しさん [2008/02/06(水) 00:06:52 ] 質問です。 java3DのPoint3dで書いた頂点をcanvasに表示し、その座標値をテキストフィールドに表示できるのですが、 自分でテキストフィールドに書い座標値をその頂点に対応させることができません。 たぶん、getText()で持ってきた値を頂点の座標に対応させれば出来るとは思うのですが、 String型をPoint3d型に変換することが出来ません。 どなたか、型の変換方法か、それに代わるもっとよい方法があれば教えていただけないでしょうか? よろしくお願いします。 また、板違いでしたら申し訳ありません。
580 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 10:19:01 ] たぶんこんな感じか? String s = ... ; Scanner sc = new Scanner(s); sc.useDelimiter(","); Point3d p = new Point3d(sc.nextDouble(), sc.nextDouble(), sc.nextDouble());
581 名前:デフォルトの名無しさん [2008/02/06(水) 10:37:15 ] デバッグ用に、メソッド実行中に自分のクラスの名前をprintfしたいです。 で文字列で "hoge" とか hoge.class.getName() とか、自クラス名 hoge を ソース中に書きたくありません。 普通のメソッドだと this.class.getName() で名前がとれるのだけど、staticメソッドだと this がないので どうやってとればいいのかわかりません。 教えてください。
582 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 10:39:21 ] スタックトレースとってこればいいんじゃね?
583 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 10:44:50 ] 1.5以降だったら StackTraceElement[] s = Thread.currentThread().getStackTrace(); で、それ以前だったら StackTraceElement[] s = null; try { throw new Exception(); } catch (Exception e) { s = e.getStackTrace(); } で取得できるよ
584 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 11:05:55 ] ありがとうです。でも StackTraceElement stack = Thread.currentThread().getStackTrace()[0]; System.out.printf(stack.getClassName() + "\n"); だと、java.lang.Thread が表示されました。 Thread.currentThread() を (new Throwable()) にして得たい表示ができました^o^v
585 名前:デフォルトの名無しさん [2008/02/06(水) 12:31:03 ] >>515 のコードが読める位まで到達するにはどうすればいい? SJC-P持っているけど、コードが読めないorz
586 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 13:19:06 ] リバーシを作ってるんですが どこかオススメのサイトとかありますかね? いろいろ見たのですが盤を作るところからよくわからないのですが
587 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 13:23:25 ] >>586 盤って int[][] board = new int[8][8]; とかじゃだめなのか?
588 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 13:28:00 ] >>586 Javaでリバーシを作る初心者向けの本があったはず… これだ www.amazon.co.jp/dp/4875934289/
589 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 13:33:07 ] その本マジでやめといたほうがいい。 JavaにしてもC++にしてもかなりダメなくせが付く、最低の本
590 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 14:03:11 ] >>587 どうもです 配列でそうやってやるだけでいいんですね…… >>588-589 そうなんですか…… どこかオススメとかないですかねぇ
591 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 14:58:14 ] >>587 これをどうやってパネル化すればいいんですかね……?
592 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 15:08:41 ] >>589 まじですか 設計に関しても最低?
593 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 15:12:03 ] >>590 もちろん配列でも良いけど Javaの勉強と言うことなら、盤・列・マスといったクラスを設計する方が楽しいぞ
594 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 15:13:00 ] 設計に関して最低。 アルゴリズムとかは別に悪くない、 というか、普通なんだけど、 「オブジェクト指向」を謳っておきながら酷い設計 というか、オブジェクト指向をなんか勘違いしてる本。 ってことで、よほどの初心者じゃなければ別にいいのかも。 ただ、>>591 じゃね・・・
595 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 15:50:07 ] ttp://javagame.main.jp/index.php ttp://netresearch.ics.uci.edu/kfujii/java/howto-othello/index-j.html まあこの辺でどうかな パネルは使ってないみたいだが
596 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 16:24:43 ] 8x8のGridLayoutにJLabelを64個置くのが簡単かと
597 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 20:38:42 ] なんというVB
598 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 21:24:20 ] ボタンの表示を反転したいんですが、 現在のボタンがTrueなのか、Falseなのか、取得する方法ってありませんか? お願いします。
599 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 23:04:56 ] ありますよ
600 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 00:30:06 ] ボタン自身にON/OFF有ったっけ?フラグはアクションリスナーで実装するんでないけ?
601 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 08:56:23 ] 現在のボタンがTrueかFalseか言ってる時点でラジオボタンか何かか、 有効無効のことを言ってるんだと思ったけど。
602 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 11:55:19 ] ButtonModel#isPressedかisSelectedあたりだろう
603 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 15:07:32 ] Java3Dを使わずにJavaで立体を作りました。 ボタンをクリックするとx軸を中心に回転させるプログラムを作りたいのですが どうすれば良いのでしょうか? ボタンは↓のようにしています。 btn1 = new Button("x軸を中心に回転"); this.add(btn1);
604 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 15:22:49 ] ガワだけですか… x軸を中心に回転させたいなら回転行列を使って各点座標を変換すれば良いだけでは?
605 名前:デフォルトの名無しさん [2008/02/07(木) 18:10:14 ] 私も少し分からなくて検索してみて自分なりの解答を作ってみた。 プログラムはエクリプスなので一番上のpackage Chap2;は 要らないと思うけどね。 >436 質問時期より結構遅れてしまったけど こんな感じで良いかと。 package Chap2; import java.util.Random; class En29{ public static void main(String[]args){ Random rand=new Random(); double x=rand.nextDouble(); double y=rand.nextDouble()*9.9; double z=rand.nextDouble()*1.9-0.9; System.out.println("xのランダム実数値:"+x); System.out.println("yのランダム実数値:"+y); System.out.println("zのランダム実数値:"+z); } }
606 名前:デフォルトの名無しさん [2008/02/07(木) 18:15:10 ] >477 これで良いかと。 package Chap2; import java.util.Scanner; class En28{ public static void main(String[]args){ Scanner stdIn=new Scanner(System.in); System.out.print("整数値:"); int x=stdIn.nextInt(); int y=(int)(Math.random()*-11)+5; int z; z=x+y; System.out.println("その値の+-5の乱数を生成した。"); System.out.println("それは"+z+"です。"); } } 明解java入門編 柴田望洋(著)の 演習の解答の1つの例となれば幸いです。
607 名前:デフォルトの名無しさん [2008/02/07(木) 18:45:34 ] 訂正です。 1.9-0.9だと低確率で1が出てしまい1未満ではなくなるので 1.9-0.9を1.9-0.91に修正。 >436 package Chap2; import java.util.Random; class En29{ public static void main(String[]args){ Random rand=new Random(); double x=rand.nextDouble(); double y=rand.nextDouble()*9.9; double z=rand.nextDouble()*1.9-0.91; System.out.println("xのランダム実数値:"+x); System.out.println("yのランダム実数値:"+y); System.out.println("zのランダム実数値:"+z); } }
608 名前:デフォルトの名無しさん [2008/02/07(木) 19:12:15 ] zが0を表示した際に-0.91になり それ以下の数値を表示できない点 yが9.9より上の9.999999999等を表示できない問題点を 忘れていました。^^; >>436 以下、訂正後のプログラムです。 何度もすみません。 package Chap2; import java.util.Random; class En29{ public static void main(String[]args){ Random rand=new Random(); double x=rand.nextDouble(); double y=rand.nextDouble()*9; double z=rand.nextDouble(); double a=rand.nextDouble(); double b=rand.nextDouble(); System.out.println("xのランダム実数値:"+x); System.out.println("yのランダム実数値:"+(y+b)); System.out.println("zのランダム実数値:"+(z-a)); } }
609 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 19:22:18 ] 二ヶ月以上前のになぜいまさらそんなにがんばるwwwwww
610 名前:デフォルトの名無しさん [2008/02/07(木) 21:06:03 ] >>609 私もつい最近この本を買ったばかりで 今日ちょうどココをやってたんですよ。 で、問題は一応無かったと思って見直したら 問題点が出てきて直して見直してを繰り返して これならほぼ問題ないだろwという所まで 凝ってしまったんですよww
611 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 14:16:05 ] >>604 古い本を使ってるのでボタンを押して動作するという事が載ってないです マウスでドラッグしたら動くようにはしてるんですが… btn1 = new Button("x軸を中心に回転"); **************←普通はここに記述すれば良いですかね? this.add(btn1); x = x * cosθ + z * sinθ
612 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 15:40:01 ] >>611 いや、イベント処理になるから 回転・表示させるactionPerformedメソッドを書いたActionListnerを用意して (JFrameにimplementsすることが多い) そのボタンにそのActionListnerを登録すればいい
613 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 19:25:15 ] > (JFrameにimplementsすることが多い) MVC派の俺様はコントローラクラス作ってそこにactionPerformedを書くぜぃ とか言ってみる
614 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 20:15:57 ] 無名クラス派ですが何か?
615 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 21:27:44 ] >>603 >ボタンをクリックするとx軸を中心に回転させるプログラムを作りたいのですが 作ってみた。 rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/209.java
616 名前:デフォルトの名無しさん [2008/02/08(金) 23:28:19 ] インスタンスって何?ラーメン?
617 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 10:43:18 ] それはインスタント
618 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 12:29:28 ] 素朴な疑問なんですが、Javaのキャッチコピーって 「一度コードを書けばどんな環境でも動作する」ですよね 欠点って何でしょう?
619 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 12:36:29 ] >>618 そのせいで起動に時間がかかる 起動時にメモリを食う がよく言われます 起動したあとの実行速度とかメモリ消費はよく誤解されます
620 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 12:37:03 ] 特定の環境にしかない機能が使えない DirectXとかCoreAnimationとか
621 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 15:34:14 ] int a = args.length; 上のプログラムでよくわからないことがあるんですが 配列変数名.メソッド; の形ですよね? 今まで、 インスタンス化したメソッド.メソッド名(); の形でしかだめだと思っていたんですが、どういうことなんでしょうか?
622 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 15:36:30 ] >の形ですよね? 違う 配列変数名.フィールド名 の形 >インスタンス化したメソッド そんなものはない
623 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 15:45:15 ] >>622 なるほど、ありがとうございます。 インスタンス化したメソッドは私の参考書に書いてありました。 〜main(){ keisan keisan1 = new keisan(); keisan1.tate=1.3; p=keisan1.tasizan(); } class keisan{ double tate; double tasizan(){ 見たいな感じで keisan1.tateと言う変数がそうなってるみたいです
624 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 16:18:14 ] keisan1はkeisanのインスタンスが入ってるローカル変数 tateはkeisanのインスタンス変数 tasizanはkeisanのインスタンスメソッド 君の読み違いでなければその参考書は今すぐ焼き捨てるべき
625 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 16:52:22 ] >>619 >>620 ありがとうございます。 やはりどんなモノにも欠点はあるんですね
626 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:11:08 ] >>621 Javaでは、配列は実質クラス
627 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:57:15 ] けど length は配列のインスタンスフィールドではない
628 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 19:28:52 ] >>624 >>626 >>627 皆様ありがとうございます。インスタンスかした”クラス”でした、。申し訳ありません。 keisan1がインスタンスかしたクラスなんですね。 >keisan1はkeisanのインスタンスが入ってるローカル変数 なるほど、やっと分かりました。これも変数なんですね そう考えると確かにkeisan1.tateは変数名.フィールド名になってますね。 配列が特殊なんだと考えて起きます ありがとうございました
629 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 22:16:15 ] >>627 しかし言語仕様にはフィールドだと書いてある java.sun.com/docs/books/jls/third_edition/html/arrays.html#10.7 >The public final field length
630 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 22:47:33 ] 変数の型についての質問です。 byte型は1バイト、short型は2バイト、int型は4バイト、long型は8バイトまでの整数を扱えるとのことですが、それ以外の違いはないのでしょうか? だとしたら、あらゆる整数を格納できるlong型を常に使えば他の整数型を意識する必要がなくなって便利だと思うのですが・・・。 int型の範囲を超える整数を扱うことは滅多にないので通常はint型を使うにしても、byte型やshort型はなんのためにあるのでしょうか? 素朴な疑問って感じですが、お答えお願いします。
631 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 23:04:02 ] それだけメモリをたくさん使う たとえば10000000個のデータを扱う場合、 byteが10000000個だったら10MBで済むが、 longが10000000個だったら80MBになってしまう
632 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 23:20:53 ] >>631 なるほど、メモリの問題があるのですね・・・。 回答ありがとうございました。
633 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 13:35:45 ] 実際、short なんて滅多に使わないね。
634 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 14:37:03 ] >>612 >>615 参考にさせてもらいます。 文系の出で、プログラムに触れた事がないので助かります。
635 名前:sage [2008/02/11(月) 17:30:28 ] javaに近いと思うのですがoctaveというのを使っていて、以下のプログラムを少し変えて出さなければなりません。 (なぜなら以下のプログラムは友達が作ったもののため) プログラムの本質自体はかわらないようにちょっとでもいいので変え方わかる方いましたらぜひ教えてください。 ・ダイクストラ法 ☆Dijkstra.m function [distance, pointer] = Dijkstra(A) n = size(A)(1); %Aはn×n行列 S = zeros(1, n); d = zeros(1, n); for i=2:1:n d(i) = Inf; % d = [inf, inf, inf, ... ] endfor pointer = zeros(1, n); %Pointer for previous check point check = 0 while(check < 1 && check > -10) if(sum(S) == 4) check = 1 else check -= 1 d S [minimum, v] = minD(d, S) S(v) = 1; for j=1:1:n if(d(j) > d(v)+A(v, j)) d(j) = d(v) + A(v, j) %過程を見せたい場合;をのぞく pointer(j) = v endif endfor endif endwhile distance = d; pointer; endfunction
636 名前:つづき mailto:sage [2008/02/11(月) 17:31:23 ] ☆minD.m function [min, min_index] = minD(d, S) % min : min(d) not included to S % min_index : d(min_index) = min % d[] : distance array % S[] : searched = 1 : not yet = 0 min = inf; min_index = 0; n = size(d)(2); for i=1:1:n if( S(i)==0 && d(i) < min ) min_index = i min = d(i) endif endfor endfunction
637 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 17:34:09 ] なるほど つまりまったく一緒だと怒られるから適当にいじりたいけど まったく分からないからなんとかしてくれということですね
638 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 17:39:59 ] そういうことなんです、1mmもわからないので変えようがないのです。。。 どなたかお願いします。
639 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 18:01:56 ] Javaに近いとは思いません >Gnu Octave とは、MATLABと互換性を持ったフリーな数値解析ソフトウェアであり、 >GNUによって開発されている。
640 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 18:17:07 ] javaに近いという理由でoctaveの宿題の解答の偽装依頼をこのスレで見る日が来ようとは
641 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 14:22:30 ] うん、とりあえず逝ってくれ。 あと、名前欄にsageは入れないほうがいいと思うよw
642 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 19:24:45 ] int i,j; for(i=0;i<2;i++){ for(j=0;j<2:j++){}} System.out.println(i,j); ってやるとj「だけ」未定義エラーになるのですが何故なんですかね 両方エラーならまだわかるんだが・・・
643 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 19:26:18 ] あ、最後(i,j)じゃなくて System.out.println(i+":"+j); ってことで
644 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 19:31:41 ] 外側のループが条件によっては実行されないから 内側のループでjが必ず初期化されるかは不明としている この場合は外側のループは必ず実行されるけど その条件が成立するかどうかまでは検査していない
645 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 19:57:38 ] やっぱそれだけのことなのか どうせソース見るなら最後まで見てくれよな、って思う 型キャストとかのあたりとか特に、 自動でキャストしたりコンパイルエラーだったり実行時エラーだったりはっきりしてくれぃ! >>644 さんくす
646 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 00:08:17 ] ttp://java.sun.com/docs/books/jls/third_edition/html/defAssign.html 言語仕様では、(原文ではi,jはn,kだけど>>642 に合わせれば) > a Java compiler must produce a compile-time error > ... > even though the value of (i) is known at compile time, > and in principle it can be known at compile time that > the assignment to (j) will always be executed だから、そのエラーについてはコンパイラは言語仕様に従ってるだけ。 フロー解析をどこまで詳細にやるかの規定次第で人にとっては妙に思える結果も出てくるけど、 解析の精度を高めることとコンパイラの負荷とのバランスの問題でここに落ち着いたんじゃないかな。 とりあえず、はっきりしてくれと思ったときにはまず言語仕様を見てみる癖を。
647 名前:デフォルトの名無しさん [2008/02/14(木) 00:28:06 ] JPanelを継承したMainPanelとJLabelのhazimeとLoadがあるんですが Startというクラスのコンストラクタで Start(MainPanel panel){ hazime.setSize(new Dimension(LabelSizeWIDTH,LabelSizeHEIGHT)); Load.setSize(new Dimension(LabelSizeWIDTH,LabelSizeHEIGHT)); hazime.setLocation(100,33); Load.setLocation(100,266); panel.add(hazime); panel.add(Load); } と書いてMainPanelのコンストラクタでStartを初期化してJFrameを継承したクラスにMainPanelを貼り付けたんですが hazimeとLoadに書いてある文字は表示されたんですがサイズと位置が変わりません なんででしょうか?
648 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 00:32:42 ] >>647 MainPanelのレイアウトマネージャがサイズと位置を自分のポリシーに合わせて自動で変更してるとか レイアウトマネージャはnullまたはコンポーネントの勝手に任せるようなものになってる?
649 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 01:04:21 ] >>648 MainPanelの引数にも何もとっていないのでレイアウトマネージャーは何も設定していません 自分でnullに設定しないといけないのでしょうか?
650 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 01:15:45 ] JPanelはデフォルトでレイアウトマネージャが設定されてるので レイアウトマネージャを無くしたいならsetLayout(null)しないと 継承先のMainPanelでも同じものがつかわれる
651 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 01:19:19 ] デフォルトで設定されていたんですか うまく解決できました、どうもありがとうございます
652 名前:デフォルトの名無しさん [2008/02/14(木) 14:35:25 ] Java3Dじゃなくても3次元モデルが出来るようですが Javaで作るのとJava3Dで作るのって何が違うんでしょうか?
653 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 17:28:18 ] >>652 Java3Dは3Dグラフィックス関連のプログラムを簡単に書くためのためのJava API群。 コアJava APIではないけれど準標準的なライブラリ。 Java3Dを使わなくても座標計算や表示を自分で実装したり、 Java3D以外のJavaとのインタフェースを持った3Dグラフィックスライブラリを使えば、 Java3Dと似たようなことができる。 ただ、他のライブラリを使うのは別として、自分で実装していくのはかなりの労力がいる。 まあ、Java3Dの全機能は不要で、立方体のワイヤーフレーム表示をしたいだけです、 とかの単純なことなら、頂点の座標変換計算を自前のコードでしてJava2D APIで線を描画しても、 それほど難しくないと思う。 それと、Java3Dや他の3DCGライブラリを使う場合はJREやJDKに最初から入ってるわけではないので、 別にインストールしないといけないのが少し手間といえば手間かも。特に他人に使ってもらう場合。 あと、Java3DはOS依存の機能を使って表示を高速化するとかも行ってるので、 そこまで自分で実装するとかになると大変だと思う。 自分の用途に合わせて選択を考えてみては?
654 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 23:18:17 ] スレッドのrunメソッドに引数をとりたいのですが、Startメソッドで呼び出して実行するため引数をいれることができません どのように引数をいれればいいのでしょうか?
655 名前:デフォルトの名無しさん mailto:start [2008/02/15(金) 02:48:20 ] start()の呼び出しタイミングでなく、 ThreadやRunnableのインスタンス生成の段階で引数を与えてもいいのなら、 class AThread extends Thread { private int arg1; private Object arg2; public AThread(int arg1, Object arg2) { this.arg1 = arg1; this.arg2 = arg2; } public void run() { System.out.println(arg1 + ", " + arg2); } } new AThread(1, "hoge").start(); みたいな感じでどう? new時点でなくstart時点でないとってことなら、 コンストラクタで設定する代わりに引数を与えるメソッドを定義したサブクラスにして、 startの直前でそれを呼び出して設定するとか。
656 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 02:09:18 ] >>655 そういうやりかたがありましたか、ありがとうございます
657 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 12:52:49 ] >>653 ありがとうございます まだJavaを触り始めたばかりなのでJava3Dは止めておきます
658 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 16:01:20 ] Javaの全身であるOakの呼び方って「おーえーけー」で良かった?
659 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 16:02:03 ] 全身=前身でお願いしますorz
660 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 16:07:26 ] オーク
661 名前:デフォルトの名無しさん [2008/02/16(土) 18:54:12 ] >>660 ありがとう!!!!!
662 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 00:49:48 ] ローカル変数の存在意義って何ですか? 全てメンバ変数にしたほうが扱いやすい気がするのですが・・・
663 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 01:59:23 ] >>662 そう思うならそうすればいいじゃん 君のコードとの接点を俺が持たない限り止めはしないよ
664 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 03:57:19 ] 接点t! 接点t!
665 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 04:38:59 ] >>662 メンバ変数って用語はあまりJavaでは使われないかもしれない。 存在する理由はいろいろあると思うけど、例えば、 同じクラス内でも別スコープなら同じ変数名が使えるローカル変数と違い、 フィールドはクラス全体が同じスコープになるから名前がダブらないように気をつけないといけない。 名前付けが面倒だからと同じ変数を違う場所で違う役割に使用するのはバグの元になりやすい。 また、ローカル変数の方がフィールドに定義されたものよりアクセスがたいていのJVM実装では速いはず。 それに、スレッドごとにメソッドの呼出しごとに違う場所が用意されるローカル変数と違って、 フィールドはインスタンスまたはクラスごとに一つしかないという違いもある。 マルチスレッドプログラミングやメソッドの再帰呼び出しをやり始めればその違いが分かる。 ごくごく小さなプログラムだけなら、そうは感じないのかもしれないけれど、 自分でプログラムを書き始めればローカル変数を全て排除しようとすると扱いにくくなると感じると思うよ。