1 名前:デフォルトの名無しさん [2007/06/27(水) 07:23:27 ] プログラミング言語Javaに関する質問スレです。 JavaScript, Ajaxの質問は、ここでは受け付けていません。 Web製作板をご利用ください。pc10.2ch.net/hp/ 過去ログ、関連スレッド、よくある質問とその回答など、 質問をする前に、貴方が見なければならないサイトについての情報は、 下の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質問・相談スレッド102【大歓迎】 pc11.2ch.net/test/read.cgi/tech/1180419689/ /* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。 質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */ また、当スレで質問をするかたは、回答をもらえたときに、 wikiの更新をして頂ければ、忝なく存じます。 次スレは>>980 あたりで。
469 名前:2人の女性と付き合っている高1です mailto:sage [2007/07/08(日) 19:54:12 ] >>467 よこから割り込みますがCLASSPATHを環境変数に設定するとまずいという ご意見がありますが、どういう時にまずいのでしょうか? 僕は現在JavaSE6up2しかマシンにインストールしていませんが、そんな 状況で起こりうる誤作動の事例をよろしければ教えてください。
470 名前:桜井葵 [2007/07/08(日) 20:11:37 ] ビジュアルクラスを開いたら『新規ファイルをエディターに設定しよぅとしてエラーが発生しました』『java.lang.NullPointerException』って出てプログラムしか出ないんですけど、誰か助けて下さい(ノ_・。)
471 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 20:46:41 ] >>469 CLASSPATHでググれカス
472 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 20:47:50 ] >>469 2人とも妊娠
473 名前:デフォルトの名無しさん [2007/07/08(日) 23:43:42 ] ちった、役に立つかも! ↓ www.yukinko-net.jp/
474 名前:デフォルトの名無しさん [2007/07/09(月) 12:48:21 ] ど素人質問です。失礼します。 JDKを使って勉強したいのですが、 どれを使えばいいのでしょうか。 ・JDK 5.0 Update 12 with NetBeans 5.5.1 ・JDK 5.0 Update 9 with Java EE ・JDK 5.0 Update 12 ・完全な環境と実行環境はGet the JDK download からダウンロードできます。 JDK5の次が7になっているのですが6のバージョンってないのでしょうか
475 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 12:56:49 ] >>474 JDK 6 はあるよ。>>1 のWikiサイトからたどれる。 ttp://java.sun.com/javase/ja/6/download.html ここのJDK 6u2をダウンロードすればおけ。 with BetBeansってのは、IDEが付いてくる。 最初はエディタでやろうとしているなら、いらない。 with Java EEは、初心者なら忘れてしまってもかまわない。
476 名前:デフォルトの名無しさん [2007/07/09(月) 13:10:49 ] 質問です。 URLConnectionでGETパラメータを送ろうとしているんですが どの時点で送信しているのかがわかりません。 String urlString = "hoge.com/hogehoge.jsp?a1=test&a2=TEST"; URL url = new URL( urlString ); URLConnection uc = url.openConnection(); DataInputStream dis = new DataInputStream( uc.getInputStream() ); String s; while( ( s = dis.readLine() ) != null ) { System.out.println( s ); } dis.close(); リファレンス等を参考にするとopenConnection()で接続を確立しているらしいのですが ここでhogehoge.jspに通信しているんでしょうか? DataInputStream dis = new DataInputStream( uc.getInputStream() ); 上の部分でhogehoge.jspに送信してそのまま受信に入っているんでしょうか? タイミングがイマイチわからないので教えてください。
477 名前:474 [2007/07/09(月) 13:14:35 ] >>475 ありがとうございます。 後のいろいろな機能はあとから付けられるのでしょうか。 どのようにつけたらよいのでしょうか。 よろしくお願いします。
478 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 14:06:21 ] >>477 Java EEはここから ttp://java.sun.com/javaee/downloads/index.jsp NetBeansはここから ttp://www.netbeans.org/products/ 後でダウンロードしてインストールできる。最初からなくても大丈夫。
479 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 14:10:17 ] JDK6はあるはずだが・・・
480 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 16:10:37 ] >>476 自分の書いたレスをじっくり読み直すんだ 前者以外に答えがあると思うかね
481 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 16:44:22 ] ポップアップについての質問です いまJPanel上を右クリックでJPopupMenuを表示するところまではできたのですが、メニューを選んだときの処理をどうすべきかわかりません。 MouseEventだとどのメニューを選んだかわからず、ポップアップにつけたJMenuItemにsetActionCommandを付けようにも、JPanelにaddActionListenerがないため、どのように識別させるのかがわかりません。 また、上の識別の問題に関連するものですが、JPanel別にメニューを付けてるのですが、大部分が重なる処理なので、呼び出し元(JPanel)を識別して、イベント処理で振り分けるということはできないでしょうか。 以上2点、お願いします。
482 名前:481 mailto:sage [2007/07/09(月) 17:01:07 ] 書いた直後なんですが、1つ目できました ボタン処理のようにJMenuItemごとにアクションリスナーを登録するという方法があるようで、そうするとメニュー選択時に呼ばれるようになりました。 どうも、検索したときのキーワードの範囲が広すぎたようね… 2つ目はいまだわからず、getComponentだとパネルの位置はわかるんですが、ActionCommandのように得ることはできないですかね。
483 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 17:25:50 ] 処理名称は一緒だが処理内容が異なるのなら、 (Wordなら、文字の削除とオートシェイプの削除、など) ActionMapで振り分けるとか。 JPanel p1 = new JPanel(); p1.getActionMap().put("edit", new AbstractAction(){ public void actionPerformed(ActionEvent e){ // 編集時の処理 } }; p1.getActionMap().put("delete", new AbstractAction(){ public void actionPerformed(ActionEvent e){ // 削除時の処理 } }; のようなJPanelを用意しておいて、JPopupMenu表示時には ActionMapからJMenuItemを組み立てる。こんな感じ private JPopupMenu createMenu(ActionMap map){ JPoppuMenu menu = new JPopupMenu(); JMenuItem editItem = new JMenuItem("編集"); if(map.get("edit") != null){ editItem.setAction(map.get("edit")); } else { editItem.setEnable(false); } menu.add(editItem); // 以下略 return menu; }
484 名前:481 mailto:sage [2007/07/09(月) 17:37:35 ] >>483 なるほど、ActionMapってそういう使い方をするためにあったんですね。 もう少し調べて試してみます。 ありがとうございました。
485 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 18:24:07 ] 初歩的な質問です。 一度描画したものをドラッグで移動させるにはどのような方法があるのでしょうか? 「java ドラッグ」とかでググっても出てこない・・・
486 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 18:26:55 ] >>485 [1] ドラッグされたことを知る [2] 描画したものを移動させる がんがれ
487 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 18:32:29 ] >>486 [1]についてはマウスイベントで成功しました。 [2]がよくわかりません。 いちいち白塗りして細かく描きなおすのでしょうか。
488 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 19:43:28 ] >>487 スプライト処理でぐぐってみれ。 要はTVゲームのスプライトと同じで描画領域と位置をコントロールする 後はマウスのイベントで移動量を測ればOK
489 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 22:54:08 ] >>487 昔WebStartのサンプルで画像エディタがあって、コンポーネント単位で画像の移動、重ね貼りが 出来るのがあったけど、そういうのを作ろうとしているの?
490 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 23:09:17 ] 会社の先輩がドラッグアンドドロップできるカードゲーム作ってたな。 あれだ、ソリティアみたいなやつ 結構簡単に出来るといっていたけど、ソースみてもわからんorz
491 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 23:40:07 ] 昔はXORしたりしてたけど 今ならレイヤーで簡単
492 名前:デフォルトの名無しさん [2007/07/10(火) 00:32:21 ] すみません。ごくごく簡単なカウントアップするサーブレットをつくったんですが、 ブラウザを2つ立ち上げると2つとも同じ数をカウントしていきます。int変数でカウントを記録しています。 ブラウザAを立ち上げる→1と表示される ブラウザBを立ち上げる→2と表示される ブラウザAの更新ボタンを2回クリック→4と表示される ブラウザBの更新ボタンを1回クリック→5と表示される これだと、いろんなユーザにint変数が共有されてしまうようにおもうんですが これでいいものなんですか? 以下、ソースを載せます。
493 名前:492 mailto:1sage [2007/07/10(火) 00:34:04 ] import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Lesson03 extends HttpServlet { int intCount = 0; public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html; charset=iso-2022-jp"); intCount++; PrintWriter pw = response.getWriter(); pw.println("<html><head><title>カウントアップするサーブレット</title></head>\n" + "<center><br><br>読み込む度にカウントアップします<hr><br><br>\n" + intCount + "回読み込まれました。<br></center></body></html>\n"); } }
494 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 00:35:53 ] 素人の俺でも分かる。 サーブレットのインスタンスは通常1個しか生成されず、 複数のリクエストは同じインスタンスを呼び出す
495 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 00:38:07 ] ついでに言うと、スレッドセーフにしなければならないから、 原則、インスタンスフィールドは作らない
496 名前:492 mailto:1sage [2007/07/10(火) 00:42:53 ] >>494-495 さん どうもありがとうございます。よ〜くわかりました。doGetメソッドの中で宣言したらよかったです。 ありがとうございました。
497 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 00:45:29 ] doGetのなかで宣言したら毎回0→1になるだけ
498 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 00:49:54 ] >>490 DnDをどうやって認識させるかで書き方が変わるね。
499 名前:デフォルトの名無しさん [2007/07/10(火) 01:16:58 ] (わかっているx座標:x,わかっているy座標:y,斜辺,傾き)を引数で受け取って 求めたいX座標Y座標の値を返す関数を作りたいのですが教えてください。
500 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 03:10:10 ] >>499 java.awt.geom.Point2D method(java.awt.geom.Point2D p, 斜辺の型 a, 傾きの型 b) { return new java.awt.geom.Point2D(p,a,bから求めたx, p,a,bから求めたy); } 実際にはjava.awt.geom.Point2Dは抽象クラスなんでnewでインスタンスを作れないから、 必要な精度に合わせてjava.awt.Pointとかjava.awt.geom.Point2D.Doubleとかを生成して返す。 引数の方はjava.awt.geom.Point2Dでなく問いのようにx,yを別々に指定するようにしても。 両方のメソッドを作ってオーバーロードしておいてもいいかと。
501 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 08:28:03 ] メール受信のためのプロキシーを作りたいのですが…。 パソコンのバックグラウンドで待機して、メール受信時にまずプロキシがメールデータ を取得し、迷惑メールでなければそのままメールクライアントにメールデータを渡したい です。 サーバーソケットを作って待機しているのですが、メール受信時にローカルにバインド されるポート番号を検出できず悩んでいます。当然、110番で待機してはダメですよね? メールクライアント側でプロキシサーバーアドレス、ポートを指定できれば早いのですが…。 (IEのように) アンチウィルスソフトは、ローカルにプロキシサーバーを置いているように見受けられる のですが、どうやって実現しているのでしょう? どなたか、アドバイスをお願いいたします。
502 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 10:33:56 ] JTableなんだけど、他のコンポーネントからTABでフォーカス移動してくると、 まだ一度もセルにフォーカス取得してない状態だとフォーカスが消えたようになる。 もう一度TABを押すとようやくセルが選択状態になるのだが・・・・・。 一度セルにフォーカスを取得すると他のコンポーネントから一発で移動できるように なるんだがな・・。 ちなみにScrollPaneは使っても使わなくても同じでした。 JDKは1.5す。 どなた原因&回避策おながいします。
503 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 10:43:18 ] >>501 あれはシステムに食い込んでるからこそできること。 Java では原理的に無理。 メーラーではメールサーバーに localhost を指定して、 設定その他は自分のプログラムでやるしかないと思う。
504 名前:501 mailto:sage [2007/07/10(火) 11:35:41 ] >>503 レスありがとうございます。 メーラーのメールサーバーに localhost を指定して、通信をパイプする ような感じで実装してみようと思います。 この場合、メールアカウントごとの設定がめんどくさいっすねー・・・。 どうやって保持しようかしら。
505 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 14:25:52 ] そもそも、メーラー側が優秀なフィルタを持ってるこのご時世に自分で作っても意味はないよ。 屑メーラーを捨てれば良いだけ。 それとも、まともなスパムフィルタを作れるほどの 技術があるならメーラーそのものから作るって方法もある。
506 名前:デフォルトの名無しさん [2007/07/10(火) 14:44:29 ] >>505 既にあるから作る意味ないって? つまらない考え方だな。
507 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 14:44:52 ] 業務ロジッククラスXでDB接続とBEGIN ↓ DBクラスYで振込情報をINSERT ↓ DBクラスZで入金情報をINSERT ↓ 業務ロジッククラスXでCOMMITとDB切断 をする際にDBクラスY,Zでconnection.commit()をさせない、 コンパイルエラーにする方法ってありますか? INSERTをさせるためにはDBクラスY,Zにconnectionを渡さなければならず connectionを渡せばcommit()が可能になってしまいます。 commit()やrollback()が不可能なDB接続を渡すとかできないでしょうか? テストでバグ潰せばいいじゃんというのもわかりますができればコンパイル時にはじきたいです。
508 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 15:22:18 ] メーラーの(優秀な)フィルタと自分のフィルタを置き換えなくちゃ いけないならともかく、上乗せできるなら悪いことじゃないでしょ、 普通に考えても
509 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 16:25:27 ] >>507 java.sql.Connectionをラップしたクラスを作れば? ほとんど全てのメソッドはスルーするけど、 commit()やrollback()が呼ばれたらIllegalStateExceptionを投げるようなの。
510 名前:509 mailto:sage [2007/07/10(火) 16:28:05 ] コンパイルではじきたいのね。スマン。 それならAspectJという手も。 ttp://www.kronos-jp.net/tech/tech100/tech100.html
511 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 16:49:20 ] commit()やrollback()が無いインターフェイスNewConnectionを新しく作る。 DBクラスY,ZにはNewConnectionを渡す。 NewConnectionのラッパークラスを作り、DBクラスY,Zからconnectionのアクセスが出来るようにする。 で、どうよ?
512 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 17:16:50 ] 実行入力画面でアルファベットでなく日本語を入力するにはどうすればいいのですか?
513 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 17:40:48 ] てか、それはJavaの質問なのか? WindowsマシンならALT+変換押せ
514 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 17:56:06 ] >>509-510 ありがとうございます。そうです、コンパイル時にはじきたいです。 >>511 その場合、 Connection connection = DriverManager.getConnection( 略 ); ↓※ NewConnection newConnection = new NewConnectionWrapper(); ※の部分の、実際のconnectionをnewConnectionにどうやって渡してあげればいいですか? 頭がこんがらがってきた・・・
515 名前:デフォルトの名無しさん [2007/07/10(火) 18:02:00 ] >>514 まずは落ち着け。
516 名前:デフォルトの名無しさん [2007/07/10(火) 18:06:05 ] 変数の型を調べる方法ってありますか?
517 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 18:07:04 ] これでよかろ。 NewConnection newConnection = new NewConnection(connection); ただし、NewConnection は java.sql.Connection になれないので、 java.sql.Connectionを前提にしているプログラムが既にあるなら、 それを書き直さないといけなくなる。新規開発ならいいけどね。 あとは個人的な感覚だけど、独自規則のAPIを強制されるのはイヤダ。 APIは標準だが実装は(APIの範囲内で)独自、なら許せるが。
518 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 18:17:13 ] >>517 なるほど。newConnectionの中でconnectionをprivateで持っておいて commit()とrollback()は作らず、それ以外はnewConnectionのpublicメソッドを通して connectionに投げると。ありがとうございます。 >あとは個人的な感覚だけど、独自規則のAPIを強制されるのはイヤダ。 >APIは標準だが実装は(APIの範囲内で)独自、なら許せるが。 自分も独自APIを強制して自由度を奪うのは好きじゃないですが DB関連クラスだけでcommit()とrollback()のみの制限ならギリギリ許容範囲内かなと思っています
519 名前:デフォルトの名無しさん [2007/07/10(火) 18:20:17 ] >>516 判定したい型が決まっているなら instanceof演算子 とりあえず型を知りたいだけなら "不明オブジェクト".getClass().getName()
520 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 19:57:44 ] SPAMメールを受けたときに 逆に送信者に攻撃を仕掛けて 二度と送ってこないようにするには Javaではどのような方法がありますか?
521 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 20:32:13 ] Javaを辞めるしかないです。 さようなら。
522 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 20:48:44 ] >>520 オーケー。いい方法を思いついた。 試してみたいので、お前のメールアドレスを教えてくれ。
523 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 21:41:06 ] root@localhost
524 名前:デフォルトの名無しさん [2007/07/10(火) 21:58:09 ] javaのプログラムからコマンドプロントを使ってcdコマンドなどで自動的に特定のフォルダに移動して、特定のファイルを実行したいのですが、探しても方法が見つかりません。 よろしければ教えていただけないでしょうか?
525 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 22:05:35 ] フレームのサイズ変更についての質問です。 サイズを変更したことをリアルタイムに感知したいんですが、どのような方法があるでしょうか? MouseMotionだとD&Dしてる間はメッセージが送られず、componentResizedも試しましたがマウスボタンを離した瞬間しか感知しません (できればその移動距離か変更後のサイズも知りたいです) JAVAではそういうのは想定してないんでしょうか。 >>524 Windowsなら、○○.batっていうファイルつくって右クリック編集 中に ------------ cd 移動先 java メインクラスの名前 ----------- の2行を書けばできるます。 詳しくはバッチファイルでしらべてくらはい
526 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 22:06:09 ] Excelのファイルがいくつかのフォルダに分かれて存在していて それぞれのフォルダはさらにサブフォルダをいくつか持っています 全部のフォルダをたどって全部のExcelファイルから 特定のシートの特定のセルを抽出していきたいのですが どのようにすればよいのか検討も付きません
527 名前:524 [2007/07/10(火) 22:12:30 ] バッチファイルをつかってjavaのクラスファイルを実行するのではなく、javaのプログラムからコマンドプロントのコマンドを入力して特定の処理をしたいのですが。 そのやり方を知っていたら教えて下さい。
528 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 22:14:57 ] >>527 そういうことね、勘違いしてた
529 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 22:57:20 ] >>524 Runtime.getRuntime().exec(☆DOSコマンド☆); 特定の処理がわからないのでここまで
530 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 23:06:56 ] >>527 jrunscriptつかえ。そういうときのためにわざわざ用意されたんだから
531 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 23:27:40 ] ワンランク上になりたいんだけどなにしたらいい Java歴半年くらいでいまJSPとかデータベース使って小規模なシステム作ってる
532 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 23:42:01 ] >>524 java1.5ならProcessBuilderが熱い
533 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 23:49:44 ] >>531 EclipseのプラグインとかSwingなどのGUI イベントドリブンなアプリケーションに慣れ、スレッドをある程度使いこなすと差は出来る
534 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 00:29:28 ] >イベントドリブン そこで Visual C++ ですよ
535 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 00:40:07 ] >>533 EDTで時間かけてイベントキュー詰まらせてアーーーー!!とか・・・ VMのスレッド実装の差異やCPUの数が2以上あってアーーー−!!とか? 個人的にはJWSに触れとくのお勧め。
536 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 02:45:59 ] MouseListenerとMouseMotionListenerは同時に使えない?なんてことはないよな・・・ どっちかを消すと上手くいくのに、 どちらも宣言するとシンボルが見つかりませんといわれる・・・
537 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 02:51:48 ] 自己解決。頭がおかしくなっていたようだった
538 名前:デフォルトの名無しさん [2007/07/11(水) 13:28:05 ] Javaを用いて掲示板を作っています 形はそこそこ出来てきたので「同一人物(同IP)からの二重投稿を禁止する」機能をつけようとしているのですが こういったものを作るのに便利なクラスはあるのでしょうか?
539 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 15:19:11 ] インデント不良って何ですか?
540 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 15:23:12 ] if (a > b) b = a; a = 1; System.out.println(b); みたいに書いてa > bでないときでもa = 1;が実行されるように錯覚させる悪い奴のこと
541 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 15:25:29 ] 逆だ a > bの時にしかa = 1;が実行されないように、だ
542 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 17:19:25 ] はじめからブロックにしとけば良いんだよ。 どうせ後から変更されるんだし。 if (a > b){ b = a; } a = 1; System.out.println(b);
543 名前:デフォルトの名無しさん [2007/07/11(水) 19:31:51 ] if (a>b) b=a; a = 1; System.out.println(b); こう書けば短い。
544 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 23:26:19 ] 1:JSPの画面での入力処理 2:javaでcsvファイル読んだりあれこれしてDBに書き込む 3:DB書き込み結果をJSPで表示、というのを作っています。 これに規定の時間を越したらエラーとしてタイムアウト画面へ遷移する機能を 追加しようと思っています。 で、Actionで try{ Timer timer = new Timer(); timer.schedule(new myTimer(),3000); 色々 }catch(myTimeoutException e){ return (mapping.findForward("error")); } myTimer#run() ←TimerTask継承クラス myTimeoutException e = new myTimeoutException (); throw e; みたいにやってみましたが myTimer#run()までは来るけどActionの方にmyTimeoutException で飛んでこないです。 なんでException飛んでこないのでしょうか?
545 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 23:33:56 ] >>544 Threadに関して基本から学びなおして来い 簡単なサンプルをおいておくので実行してみてくれ class ThreadA extends Thread { public void run() { throw new RuntimeException(); } public static void main(String[] args) { new ThreadA().start(); } }
546 名前:デフォルトの名無しさん [2007/07/11(水) 23:56:24 ] swingのフレームワークで定番なのは何なのでしょうか? 今注目されてるのがあれば教えてください。
547 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 00:12:42 ] swingの定番って意味ワカラネーよ java3dとかその拡張ライブラリのことか?
548 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 00:21:01 ] たった2行正確に読めないのかよ。 "フレームワークの"定番って書いてあるだろ
549 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 00:21:57 ] Swing自体がフレームワークのような気もする。
550 名前:デフォルトの名無しさん [2007/07/12(木) 00:31:47 ] そうだね
551 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 00:34:40 ] フレークワークの意味が解っていないに1票。 定番はBorderLayoutとGridBagLayoutだよ、で満足するのかな(=ω=.)
552 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 00:36:31 ] >>544 runメソッド内でThread.currentThread().getName()を出力してみれば? あと、myTimeoutExceptionクラスのコンストラクタの中でもThread.currentThread().getName()を出力して 違いが分かれば無問題♪
553 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 00:43:35 ] >>544 Webサーバとクライアントのイベントのやり取りを調べてくれ、それじゃ実装できん 1.クライアントでタイムアウトを検知したい ⇒ JavaScriptなどで実装 2.サーバーでタイムアウトを検知したい ⇒ 最初のアクセス時間を記録していて差分を取ればいい 尚、2の場合、「せっかっく頑張って入力したのに><」ってなるので注意。
554 名前:546 [2007/07/12(木) 00:46:37 ] >>546 です。 swing自体フレームワークなのですが、 journal.mycom.co.jp/news/2007/04/27/015/index.html itpro.nikkeibp.co.jp/article/COLUMN/20070516/271165/ をみて、只気になっただけです。
555 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 05:40:19 ] 結局、どれもSwing作法の定型句を隠ぺいして楽する枠組みに落ち着く気がする。 javaでswing以上のGUI出しても高度なだけでどのOSでも通用するGUIが提供できなくなるんじゃないかな? LnFがjavaなだけでwin/macユーザーは避けるし。 ポトペタ支援はJSRガンガン出すだろうね。 そんなところじゃない? やっぱベクターベースのGUIツールキットはまだ早いだろうか?
556 名前:デフォルトの名無しさん [2007/07/12(木) 06:50:33 ] java.lang.Mathクラスを使わずに、double型の変数を 小数点以下二桁まで残して切り捨てたいです。 第一感はこういう感じですが、もっと良い方法があれば教えてください。 double total = 1234.5678; int tmp = (int)(total*100); total = tmp/100.00;
557 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 07:00:49 ] >>556 表示の時にのみ切り捨てるべきと考えて、NumberFormat 小数点2桁と固定ならば、intで【全て】計算して、表示する時に100で割る。
558 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 07:13:07 ] >>556 total = new BigDecimal(total).setScale(2, BigDecimal.ROUND_DOWN).doubleValue();
559 名前:あ [2007/07/12(木) 10:31:48 ] 部分検索するプログラムを考えています。 String型のabcがあってabcともにnullならDBの内容を全部返し、bcだけnullならaの値を返すなど全8通りのif文をうまく考えられません。 どなたか1つでもいいのでお願いします。
560 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 10:36:26 ] aを返すとか全部返すとかどういう意味? 全部返すときはa列とb列とc列を連結して返すの?
561 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 10:42:08 ] SQLのWHERE句をStringのパラメータによって変更するってこと?
562 名前:あ [2007/07/12(木) 10:55:29 ] 559です。 値を取得するってことです。 いまアプリケーション作っててサーブレットに書く内容がうまく表現できなくて… if (i == null && t == null && p == null) { String sql = "select * from *****"; ResultSet rs = stmt.executeQuery(sql); とか考えてたんですけど…
563 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 11:40:11 ] なにがしたいのかさっぱりわからない。説明足りなすぎ
564 名前:デフォルトの名無しさん [2007/07/12(木) 11:45:05 ] String abcという書き方ではなく、a,b,cの3つのStringがあり、それぞれnullかnullでないかを判断する必要があるということなのでしょう。
565 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 11:56:27 ] 質問というか、Javaの可変長引数の仕様で疑問に思ったのですが、 void test(int... vector) { if (vector.length == 0) System.out.println("vectorは空です."); else for (int i : vector) System.out.print(i + " "); } こういうメソッドを書くと、可変長引数は引数なしでも実行できるので、 test(); と呼び出すと、"vectorは空です."と表示されます。 ですが、同名の以下のメソッドを同じクラスで定義すると、 オーバーロードされますので、引数が0のときの振る舞いが不定のように見えます。 void test() { test(1); } 実際にやってみたところ、下の関数が呼び出され、"1 "が表示されました。 可変長引数よりもオーバーロードのほうが優先されることがわかりましたが、 引数的にはどちらでも呼び出せるので、しっくりこません。 よければこのようになる理由を教えてもらえますか?
566 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 12:43:04 ] >>565 java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.12.2.5 あたりだね。
567 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 12:52:47 ] >>566 もうちっと上だった。 15.12.2.3 の一番最後に > If no method applicable by method invocation conversion is found, > the search for applicable methods continues with phase 3 (§15.12.2.4). > Otherwise, the most specific method (§15.12.2.5) is chosen among the methods that are applicable by method invocation conversion. メソッド呼び出し変換で適用可能なメソッドが見つからなければ、 メソッド探索はフェイズ3(可変長引数で適用可能なメソッドを探すフェイズ)に移行。 そうでなければ、最適なメソッドはメソッド呼び出し変換で適用可能なメソッドから選ばれる。
568 名前:565 mailto:sage [2007/07/12(木) 13:09:21 ] >>566-567 こんな質問に、的確な返答をありがとうございます。 そうですか、文書で定義されているんですね。 以下チラ裏 Javaって言語の定義が明確なイメージがあるから、こういうどっちとも取れる構文を許容するのは少し以外。 C++なんかでも、オーバーロードには定義が重ならないように注意しているのに、なんか意図して許容してるのかなあ。 まあ、「実装するのがややこしいorパフォーマンスに問題が出る」っていう可能性が一番高い気もする。
569 名前:デフォルトの名無しさん [2007/07/12(木) 13:15:48 ] >>568 printfがやりたかっただけ。