1 名前:デフォルトの名無しさん [2007/03/31(土) 13:57:18 ] 過去ログ、関連スレッド、よくある質問とその回答、 質問をする前に、貴方が見なければならないサイトについての情報は、 下のwikiのページにまとめてあります。 www.wikiroom.com/java/ これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、 wikiからのリンクをおたどりください。 よくある質問 ・「コマンドまたはファイル名が違います」 「'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 「Exception in thread "main" java.lang.NoClassDefFoundError: 」 www.wikiroom.com/java/?path,classpath ・String に == は使うな。equals() を使え。 ・「\12288 は不正な文字です。」 文字リテラル以外で全角スペースは使えません。半角スペースに。 ・その他の質問→「APIのjavadoc見ろ」 前スレッド 【初心者】Java質問・相談スレッド99【大歓迎】 pc11.2ch.net/test/read.cgi/tech/1173026128/ /* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。 質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */ また、当スレで質問をするかたは、回答をもらえたときに、 wikiの更新をして頂ければ、忝なく存じます。 JavaScript, Ajaxの質問は、ここでは受け付けていません。 Web製作板をご利用ください。pc10.2ch.net/hp/ 次スレは>>980 あたりで。
237 名前:197 [2007/04/06(金) 01:51:20 ] >>206 レス有難うございます。 おお、確かにそうですね。 ラベルは表示するだけって思い込んでたので イベントハンドラの事をぽっくり忘れてました。 >>218-221 レス有難うございました。 クリックのイベントで実装してみたいと思うのですが javaからURLを指定してブラウザを起動する事はできますか? 解るかたいましたら教えてください。
238 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 01:55:07 ] >>237 つ java.awt.Desktop
239 名前:197 mailto:sage [2007/04/06(金) 01:56:08 ] すいません。連続して質問します。 JLabelに表示される文字列を スクロールして流れるように表示させたいです。 自分ではTimerクラスを使って文字列を 少しずつ編集すれば出来るかと思ってますが、 重そうであまり賢い方法とは思えません。 そういった機能を持つクラスや別の方法はありますか?
240 名前:197 mailto:sage [2007/04/06(金) 01:56:51 ] >>238 うっす。どうもっす。 早速調べてみます。
241 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 02:53:28 ] >>239 環境にもよるし編集内容にもよると思うが全然重くなかった public class MarqueeLabel extends javax.swing.JLabel implements java.awt.event.ActionListener { private StringBuilder sb = new StringBuilder(); public MarqueeLabel(String text) { sb.append(text); setText(sb.toString()); new javax.swing.Timer(40, this).start(); } public void actionPerformed(java.awt.event.ActionEvent e) { char c = sb.charAt(0); setText(sb.deleteCharAt(0).append(c).toString()); } public static void main(String[] args) { javax.swing.JFrame f = new javax.swing.JFrame(); f.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE); f.add(new MarqueeLabel("abc def ghq jkl mno pir stu vwx yz@ ")); f.pack(); f.setVisible(true); } }
242 名前:197 mailto:sage [2007/04/06(金) 03:48:44 ] >>241 レス有難うございます。 確認までして頂いて感謝です。 あの、全く関係ないんですけど 今あるjavaGUIらしいデスクトップアプリを使っていて その中の文字列がスクロールしている部分があります。 その文字列のスクロールが文字単位ではないんです。 Timer使って文字列を編集しながらスクロールさせると どうしても文字毎単位になっちゃうじゃないですか? なんか意味不明な説明になってきたような・・・ 例えば、Timerを使った方法だと "abcde"という文字列がラベル上に左詰で表示されているとして 次にスクロールしたら"bcde"という表示になりますよね。 左端のaは絶対にあるかないかです。 でも、最初に話しましたアプリだと、aの一部も 表示しながらスクロールされるんです。 文字列としてではなく画像として扱ってるんかな・・・ なので、そういったスクロールさせるクラスとかメソッドが あるのかと思って>>239 で質問しました。 でも、これ以上時間かけても解らないので もう>>241 の方法で行きたいと思います。 有難うございました。
243 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 03:51:01 ] servletではなく,クライアントPCで動作するアプリケーションとして ファイルのアップロードをするプログラムを作りたいと考えています サーバ側でファイルを受け取るのは一般的な画像掲示板を想定しています その際multipart/form-dataでエンコードされたデータをPOSTすれば良いことまでわかりました エンコードにjavax.mail.Multipartを利用すれば良さそうだと思いましたが, デフォルトでform-dataに対応していない(サブクラスの記述をしなければいけない)ため, 現在の私に使えそうにありません そこで参考になりそうなサイト/書籍を紹介していただけませんでしょうか
244 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 03:56:58 ] >>242 自前で描いちゃえ
245 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 04:50:35 ] >>242 >>244 の言うようにJComponentあたりを継承して自前で書くのが一番描画の自由度が高いね 自由度は低いけどこういう手もある public class SmoothScrollLabel extends javax.swing.JScrollPane implements java.awt.event.ActionListener { private javax.swing.JViewport viewport; private java.awt.Point point = new java.awt.Point(); public SmoothScrollLabel(String text) { viewport = getViewport(); viewport.setView(new javax.swing.JLabel(text)); new javax.swing.Timer(40, this).start(); } public void actionPerformed(java.awt.event.ActionEvent e) { int width = viewport.getView().getSize().width; if (point.x > width) point.x = -width; else point.x++; viewport.setViewPosition(point); } public static void main(String[] args) { javax.swing.JFrame f = new javax.swing.JFrame(); f.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE); f.add(new SmoothScrollLabel("abc def ghq jkl mno pir stu vwx yz@ ")); f.pack(); f.setVisible(true); } }
246 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 05:21:26 ] >>243 このままで動作するかどうかは分からんが、これを基点に調べてみたら? ttp://java-house.jp/ml/archive/j-h-b/051432.html これならjavamailもいらない。
247 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 09:11:52 ] >>243 ttp://jakarta.apache.org/commons/httpclient/ ttp://svn.apache.org/viewvc/jakarta/commons/proper/httpclient/trunk/src/examples/MultipartFileUploadApp.java?revision=480424&view=markup
248 名前:230 mailto:sage [2007/04/06(金) 09:48:49 ] >>234 ありがとうございます。 オーバーフローの検出はどうするんでしょう? マイナスになったら、と思いましたが、 足し算は出来てもでかい数字同士の掛け算だとマイナスにならないと気付きました。
249 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 09:57:26 ] BigInteger使ったら?
250 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 10:18:56 ] >>249 iアプリ作ってるんで。
251 名前:デフォルトの名無しさん [2007/04/06(金) 10:36:26 ] 画像をナナメに表示するにはどうしたらいいのでしょうか? drawImage(image[0],x, y,width,height,this);しか知らず…orz
252 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 10:40:27 ] >>251 ヒント:AffineTransform
253 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 10:43:07 ] 何でヒントだけ?
254 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 10:47:35 ] >>248 > オーバーフローの検出はどうするんでしょう? 自前でやるしかない。 速度気にしないなら、c = a * b; した後で、 c / a == b ならオーバーフローしてないと判断する、とかね。
255 名前:デフォルトの名無しさん [2007/04/06(金) 10:52:16 ] >>252 ありがとうございました。 rotate();だとか、それっぽい関数がありましたので勉強してみます。
256 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 10:58:48 ] >>254 それでやると、 -1 * Long.MIN_VALUE でオーバーフローしてても検出できない。 他にもあるかもしらんけど。
257 名前:名無しさん mailto:sage [2007/04/06(金) 11:43:55 ] ttp://gihyo.jp/dev/serial/01/java-calculation ってどうよ
258 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 11:57:29 ] >>254 ありがとうございます。 それで出来ました。
259 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 15:33:14 ] Webアプリを作成しています。 画像ファイル用のディレクトリにある一部の画像が表示されないのですが、これ はどの辺りに原因があるでしょうか。 開発環境から持っていった画像は表示されるのですが、フォームからアップロー ドした画像が表示されません。いろいろ調べましたら、サーバ上の別のディレクト リからコピーした画像も表示されないようです。画像ファイルのURLを直接指定 しても404NotFoundになってしまいます。 つまり、初期段階からあるHTML用の画像は表示されるのですが、後から追加し た画像、フォームからアップロードした画像が表示されません。表示されない画 像を開発環境上のディレクトリにコピーして、それをサーバ上に持っていくと表示 されました。 初歩的な質問かもしれませんが、分かる方いらっしゃいましたら教えてください。
260 名前:251 [2007/04/06(金) 17:30:52 ] 画像の回転について詰まってしまっています。 以下のプログラムにおいて、rotateする前に(50,50)に表示しようとした画像まで 回転して表示されてしまうのはなぜなのでしょうか? また、それを回避するにはどう書けばいいのでしょうか? ソース www.za.ztv.ne.jp/yosi-h/page001 実際のアプレット www.za.ztv.ne.jp/yosi-h/Java.html
261 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 17:52:57 ] >>260 ざっと見たところここが怪しい。 >g2.setTransform(at); omote.setTransform(at);
262 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 18:00:42 ] >>260 > Graphics2D#setTransform(AffineTransform Tx) > Graphics2D コンテキストで Transform を上書きします。警告:このメソッドは新しい座標変換を既存の変換上で適用する > 目的では使用しないでください。 > 座標変換を追加するために、transform、rotate、scale、またはshear メソッドを使用します。 この「transform、rotate、scale、またはshear メソッド」はGraphics2Dのね。
263 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 18:14:42 ] >>260 omote,uraのネーミング変じゃないかい?混乱したぞ。 Graphics2D g2=(Graphics2D) g; omote.drawImage(image[0],50,50,this); //AffineTransform at=new AffineTransform(); //at.rotate(90*Math.PI/150.0,150+18,150+18); //画像の中心を回転の中心に合わせる //g2.setTransform(at); AffineTransform at = ((Graphics2D)omote).getTransform(); ((Graphics2D)omote).rotate(90*Math.PI/150.0,150+18,150+18); omote.drawImage(image[0],150,150,this); ((Graphics2D)omote).setTransform(at); g.drawImage(ura,0,0,this);
264 名前:251 mailto:sage [2007/04/06(金) 18:15:38 ] >>261 GraphicsクラスのomoteにはsetTransformメソッドがないと怒られてしまいました。 >>262 う〜ん、setTransformで座標を変えるやり方自体がよくないってことなのでしょうか。 最終的にやりたいのはマウスなりキーボードなりに反応して画像が回転して動く、ちらつきのないアニメーションです。 せっかく回答してもらってるのにいまいちピンとこない辺り、 勉強が足りないのかもしれませんねorz
265 名前:デフォルトの名無しさん mailto:sage [2007/04/06(金) 18:18:32 ] あ、g2もいらんね。 //Graphics2D g2=(Graphics2D) g;
266 名前:251 mailto:sage [2007/04/06(金) 18:55:09 ] >>263 >>265 おかしなネーミングで申し訳ないですorz とりあえずやりたかった動作が確認できました。ありがとうございました。 完全に置き換えずにその時々で変換してやる必要があるってことですね。
267 名前:243 mailto:sage [2007/04/06(金) 21:50:01 ] >>246-247 今帰ってきました ありがとうございます これから読んで,頑張ろうと思います
268 名前:デフォルトの名無しさん [2007/04/07(土) 08:48:29 ] AXISのTCPMonitorを使用して外部インターネット(HTTP)との通信内容を調べたいのですが可能でしょうか? ローカルマシンのwebアプリとの通信内容は見れたのですが。
269 名前:Java ◆KbC0ODWrJ2 [2007/04/07(土) 09:38:18 ] 可能
270 名前:デフォルトの名無しさん [2007/04/07(土) 10:51:46 ] >>269 具体的にはListenPort,TragetHost,TargetPortをどのように設定したらよいでしょうか。
271 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 11:51:50 ] リクエスト送った時と送らない時で netstat -aの差分とってみりゃいいじゃん
272 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 15:59:03 ] pattern、Matcherクラスの勉強してるときにある本の中にこういうコードがあったんですが Pattern p = Pattern.compile("[a-z]");//正規表現をPatternクラスのオブジェクトにコンパイル Matcher m = p.matches("aaaaaaaa");//指定されたパターンと、マッチング対象の入力テキストとが含まれることになるMatcherオブジェクトを作成する この2行目のメソッド名はmatcherと間違ってるように思うんですがどうなんでしょうか? JDKの資料調べてみて戻り値や引数の数からおかしいように思えます。 本の正誤表には載ってませんでした。おねがいします。
273 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 16:13:54 ] matchesはbooleanを返す macherはMatcherインスタンスを返す ので、本が間違ってるね。
274 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 18:34:46 ] javaでビープ音出したいんですけど どうやったらできますか?
275 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 19:33:18 ] Toolkit.beep()
276 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 19:33:42 ] 開発言語:JAVA、データベース:Postgresql8.1の環境で開発してます。 Driver driver = DriverManager.getManager(url文字列); ※url文字列 jdbc:postgresql:プロジェクト名 上記コードでSQLExceptionが発生します。 データベースアクセスエラーのようですが何故発生するか分かりません。 jdbcドライバが認識されていないのでしょうか!? ご回答、アドバイスの方よろしくお願いします。
277 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 19:37:41 ] 接続できてないんじゃないのか。 コマンドラインから接続できるか確認すべき。
278 名前:276 mailto:sage [2007/04/07(土) 19:44:29 ] >>277 ローカルのDBなので、DOSプロンプトからログインできることも確認できました。
279 名前:デフォルトの名無しさん [2007/04/07(土) 19:47:26 ] boolean型の値を出す関数を組み合わせて、if(A&&B)のように使うことは出来ますでしょうか? また、全てfalseの場合にある動作をさせたいのですがどう書けばよろしいでしょうか? -func1()&&-func2()&&…のようにマイナスで反転させることってできませんよねorz
280 名前:274 [2007/04/07(土) 19:55:10 ] >>275 レス有難うございます。 あの、指定した秒数だけビープ音を出したいんですけどできますか? 別にビープ音じゃなくても音なら何でも構いません。
281 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 19:55:36 ] !func()で反転するじゃん
282 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 20:01:12 ] >>273 ありがとうございました。
283 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 21:29:23 ] >>276 原因はよく判らんけどとりあえずorg.postgresql.ds.PGPoolingDataSource使ってみれば? JavaDocでも >データソースへの接続時には DataSource オブジェクトの使用をお勧めします。 とかいってるし。
284 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 21:38:25 ] >>279 そもそも && や || は1行目みたいなことのために使うものだ。 全てがfalseの場合、は !A && !B のように書く。論理の反転(否定)は!演算子。 また、ド・モルガンの法則というものがあり、 !A && !B は ! ( A || B )ともかける。
285 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 21:51:10 ] >>280 何に使うのかわかんないけど System.out.printでbeepをあらわすエスケープシーケンス出すとか javax.soundを使ってみるとか
286 名前:276 mailto:sage [2007/04/07(土) 22:15:45 ] >>283 回答ありがとうございます。 >org.postgresql.ds.PGPoolingDataSource使ってみれば? 使ったことが無いのでなんとも言えませんが、やってみます。
287 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 22:20:06 ] >>276 エラーの内容を晒さないと無理かと
288 名前:デフォルトの名無しさん [2007/04/07(土) 22:31:52 ] >>271 わかんねっす
289 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 00:50:51 ] >>288 ごめん書き方悪かったかな。 TCPモニタを使用しない状態(<ここ重要)で、リクエスト送った時のローカルportとリモートhost,port をDOSプロンプト(Windows?)のnetstatを使って見てみればということ。 やり方は、結果はネットワーク的に何もしない状態でもたくさんでてくるから(単一マシン内で起こるパイプとか、いろんなサービス(共有)とかのレシーバ待機)、 リクエスト送った時と送らない時のnetstatの結果を比較してみてその差が求めたいものだと思う。 例えば、 netstat -a 1>c:tcpmon.txt とかやれば、1[interval]のオプションついてるから1秒おきにctrl+c押すまで延々とnetstat発行してくれてtcpmon.txtにキャプチャーしてくれる。(netstat ?でヘルプを見て) その状態の途中で、リモートにリクエストを送ってやる。 そして、おもむろに時間がすぎた後ctrl+c押してnetstatコマンドを止めてやる。 そして連続して出されたnetstatの結果の差を見る。差の中にリモートhostとリモートportがあると思う。 あとはリスナーのやり方含めてローカルホストの場合と同じでしょう。
290 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 01:23:42 ] EclipseってC#みたいですね
291 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 08:27:17 ] 未だにifの条件式考えるときに、||がいいか&&がいいか頭をひねってしまう。 特に条件が!の時に。みんなこんな?それとも俺が低脳なだけ?orz
292 名前:291 mailto:sage [2007/04/08(日) 08:44:23 ] 失礼、あまりにも低脳な発言ですた。
293 名前:デフォルトの名無しさん [2007/04/08(日) 09:39:07 ] MPGの全フレームを抽出するためのソフトを作るために Javaライブラリを探しているんだけど、 こういうのってどこで探せば見つかるの?
294 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 11:07:08 ] google
295 名前:デフォルトの名無しさん [2007/04/08(日) 11:10:53 ] >>294 探したけど無かったw
296 名前:デフォルトの名無しさん [2007/04/08(日) 11:13:57 ] もっとがんばれ
297 名前:質問 mailto:age [2007/04/08(日) 11:35:41 ] JavaとCどっち学んだほうがいいか?
298 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 11:48:51 ] どっちって。。。当然両方だろ。 プログラマなら何種類かの言語使えるのが普通。 そこまでじゃないならVBやスクリプトで充分。
299 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 11:52:19 ] >>295 JMF以上のことがいるのか? ibmにも有償ライセンスのがあった気がするが
300 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 11:54:49 ] >>297 初心者ならJavaとC#覚えればいいと思う 熟練者ならC++・JavaScript・PL/SQLなども覚えるべき
301 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 11:55:07 ] >>297 どっちでもいいと思う 俺はJavaとperlだけだな
302 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 23:33:24 ] >>295 JMFで十分。それ以上は自前。
303 名前:デフォルトの名無しさん [2007/04/09(月) 18:53:27 ] よろしくお願いします。 次のようなコードで、あるクラスのプロパティに、新規に作成した オブジェクトを代入する場合、func2のように、一度、メソッドの 中で一次変数的に作ったものを代入するのは、よくないのでしょうか。 C++などでは、駄目なことは理解してますが、Javaでもマズイことなのか どうか半信半疑なのですが。。 class someclass { ArrayList arr; void func1(){ this.arr = new ArrayList(); } void func2(){ ArrayList tarr = new ArrayList(); this.arr = tarr; } }
304 名前:303 mailto:sage [2007/04/09(月) 19:01:05 ] あ、失礼しました。new による作成ならC++でもヒープですね。 Javaでも、上記は問題ないように思いましたが、もし違っていましたら ご指摘頂ければ幸いですが、とるに足らない内容でしたら、スルーして 頂ければと思います。すみませんでした。
305 名前:デフォルトの名無しさん mailto:sage [2007/04/09(月) 19:45:28 ] 全く何の問題もないにょ
306 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 09:28:03 ] ん、何が問題かよく分からんね。スコープは変数に掛かってくるのであって オブジェクトの生成場所ではないですよ。
307 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 20:49:47 ] import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class TestClass extends Applet{ public void init() { Scrollbar S = new Scrollbar(Scrollbar.HORIZONTAL); S.setBounds(new Rectangle(15, 15, 180, 25));//ここがうまくいってない add(S); } } 上のようなコードを書いて実行してもスクロールバーの位置・サイズが変更できません どのように修正したらよいのでしょうか?
308 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 21:07:29 ] >>307 www.google.com/search?q=setLayout
309 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 21:17:00 ] >>308 ありがとうございます setLayout(null); とすることで解決できました
310 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 21:25:35 ] プログラミングに関しては全くの初心者です。 iアプリを作りたいと思ってるんですが、プログラム組むのになにか専用のツールがあるんでしょうか? それともメモ帳に打ち込んで作るのでしょうか?
311 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 21:26:48 ] >>310 ttp://www.smg.co.jp/seminar/java/index.html
312 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 21:56:30 ] すいませんプログラム初心者です。%=について悩んでおります。 具体的には public class Enzan { public static void main(String[] args) { int x = 11; int y = 10; x %= 2 * 100; System.out.println(x); } } についてコンソールに11と表示されます。 自分ではx %= 2が1なので1*100で100がxに代入されると考えたのですが・・・。
313 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 22:03:57 ] >>312 演算子の結合順位調べろ。 > 自分ではx %= 2が1なので1*100で100がxに代入されると考えたのですが・・・。 仮に、前半の「x %= 2が1」が 先に実行されたとしても 後半の「1*100で100がxに代入される」は絶対ないだろ。 前半部分には代入演算子あるけど、後半には何処にも代入演算子が無いし。
314 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 22:52:28 ] equalsメソッドのオーバーライドについて質問です。制約として ・対称性 (symmetric): null 以外の参照値 x と y について、x.equals(y) は、y.equals(x) が true を返す場合だけ true を返す などがありますが、これらの制約は、x,yが同クラスのインスタンスとしたことを前提としてるんですよね? てなると、オーバーライドしたequalsメソッドで、AクラスオブジェクトとBクラスオブジェクトを 比較してtrueを返すような使われ方は、一般的ではないわけですか?
315 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 23:03:03 ] >>314 一般的ではないという以前に、別のクラスのオブジェクトが等しいとみなされる場合があるのか?
316 名前:デフォルトの名無しさん mailto:sage [2007/04/11(水) 23:07:06 ] >>315 Mapのイコーリティって仕様で決まってんじゃなかったっけ。
317 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 00:17:17 ] >>314 そんな実装、やってみれば無謀な事がわかる A の何と B の何を比べるつもりなのか
318 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 01:11:02 ] equals を再定義するにあたって、うっかり getClass の比較を忘れてたりすると、そんなことが起きたりする。
319 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 01:16:14 ] >>318 getClass() での比較忘れてても、キャスト時に ClassCastException が飛ぶだけでは?
320 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 01:17:22 ] generics使ってるとそんなequalsは使えない Collectionで使う以外でequalsのオーバーライドはしたことないし
321 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 01:25:30 ] ……。 Generics があっても equals の引数型は Object で固定だし。
322 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 01:37:36 ] >>319 ちがうちがう class Sample { private final String id; // ... public boolean equals(Object obj) { return (obj instanceof Sample) && ((Sample)obj).name.equals(this.name); } } 適当だけど、こういうプログラムを昔よく書いてた経験がありましてですね。 尤も、この解決策は、 1) instanceof を getClass の比較に変更 2) Sample または equals の宣言に final をつける 3) クラスが異なっていても id が同じなら同じとみなすようにマニュアルを変更 の3種類あるけど。
323 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 01:41:34 ] いや、3種類も無いな。3番は忘れてくれ。
324 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 01:47:50 ] java.util.Date が3番(?)だったりする罠。 どーでも良いけど、3番だと実装が name 比較してるから拙い罠。
325 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 01:50:00 ] >>315 ListやMapの実装クラスは中身が一緒だったらequalsがtrueを返したような。 そういう意味ではクラス自体が違ってても等しいとみなしてよいことも なくはない。
326 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 07:38:33 ] >>325 うん、普通にあるよな。
327 名前:デフォルトの名無しさん [2007/04/12(木) 08:22:47 ] 車を運転する簡単なゲームを作っています。 左回転と右回転で何故か回転半径が違ったりする問題はありますが、 とりあえず車の挙動は完成しました。 現在壁にぶつかったら止まる動作を作っているのですが、 どうも上手くいかずここに書き込ませていただいた次第です。 アプレットの赤い点は、画像の表示位置である(car_x, car_y)を示したものです。 現在はこの座標を衝突判定に使っているので、前進しながらこの点が黒枠にぶつかると止まるはずです。 画像を回転させているからか画像左上の角と赤い点が一致しないことがあり、悩んでいるのはその修正です。 crash_check()内にあるコメントアウトは私があれこれ考えて修正させてみた式なのですが、 この修正を行ってRectangleに修正値である(car_x_check, car_y_check)を用いてもそれはそれでおかしな点を指してしまいます。 アプレット左上の数値はcar_angle(車の向いている方向)を示しています。 画像の回転もこの数値を元に行われます。 ソース www.za.ztv.ne.jp/yosi-h/page001 アプレット www.za.ztv.ne.jp/yosi-h/Java.html
328 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 11:45:17 ] Javaの勉強をしようと思うのですが 触り始める前に前提知識としてこっちの言語かじっとけみたいなのってありますか
329 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 12:17:53 ] 言語難易度 C#>JAVA>C>C++ 言語ルーツ 1.C(基本情報技術者試験と一緒に学習すると効率が良い) 2.C++(Cを学習済みの人でないと厳しい) 3-1.JAVA(UMLの勉強と一緒に行うと効率が良い) 3-2.C#(VisualStudioでGUIの作成を一緒に学習すると効率が良い)
330 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 13:00:31 ] オブジェクト指向とMVCくらいは覚えた方が良いかも。 #ここでSmalltalkとか出してくると荒れる原因か・・・ 俺はSelfの方が好きだが。
331 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 13:48:41 ] >>328 まず英語。
332 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 14:06:24 ] JAVA初心者にオススメのIDEを教えてください。
333 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 14:10:15 ] >>332 eclipse以上
334 名前:332 mailto:sage [2007/04/12(木) 14:21:18 ] ありがとうこざいます。 もうひとつ質問なんですが、携帯のアプリは専用のツールを用いないと作成できないのでしょうか?
335 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 14:33:06 ] うん
336 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 14:44:55 ] そのツールは、プログラミングするときに必要なのか、単にファイルを変換するときだけに必要なのかどちらなんでしょう?
337 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 15:24:03 ] javaでグラフ描画したいのですがどんな手法が
ありますかね?
今のところJFreeChartがフリーだし
シェア ○
信頼性 ?
拡張性 ○
性能 ○
と思ってるのですが他にいいヤツありますか?