1 名前:Javaが初心者 mailto:sage [2008/05/12(月) 03:05:27 ] プログラミング言語Javaに関する質問スレです。 JavaScript, Ajaxの質問は、ここでは受け付けていません。 Web製作管理 pc11.2ch.net/hp/ Webプログラミング pc11.2ch.net/php/ をご利用下さい。 よくある質問 ・「コマンドまたはファイル名が違います」 「'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 「Exception in thread "main" java.lang.NoClassDefFoundError: 」 www.wikiroom.com/java/?path,classpath ・String に == は使うな。equals() を使え。 ・「\12288 は不正な文字です。」 文字リテラル以外で全角スペースは使えません。半角スペースに。 ・その他の質問→「APIのjavadoc見ろ」 前スレッド 【初心者】Java質問・相談スレッド114【大歓迎】 pc11.2ch.net/test/read.cgi/tech/1207385614/ 次スレは>>990 あたりで。 過去ログ、関連スレッド、よくある質問とその回答など、 質問をする前に、貴方が見なければならないサイトについての情報は、 下のwikiのページにまとめてあります。 www.wikiroom.com/java/
902 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 02:47:39 ] それで最終的にはCUIに仕上がるんですね。わかります。
903 名前:デフォルトの名無しさん [2008/06/09(月) 11:16:33 ] cは廃れるだろうね
904 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 12:23:20 ] X-Windowsにはつっこんでいいの?
905 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 13:00:21 ] sのあるなしだけだったらつまらないからほってたほうが 他にあるならどぞ CはC++と互換の無いC99はいらない
906 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 14:24:58 ] あるTextFieldに入力するとタイプ毎に任意のJLabelにその文字に 規定の変換がされたものを表示されていくプログラムを作ろうと思ったのですが、 何故かタイプとラベルに表示される文字に時間差があります。 具体的にはこういうコードを書くと、 public void keyTyped(KeyEvent e) { System.out.println("タイプされた文字:"+e.getKeyChar()); System.out.println("表示文字:"+example.getText()); exlabel.setText(example.getText()); } 出力はこうなります。 タイプされた文字:a 表示文字: タイプされた文字:b 表示文字:a タイプされた文字:c 表示文字:ab タイプされた文字:d 表示文字:abc これってどうしてなのでしょうか?
907 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 14:53:41 ] >>906 keyTyped()が呼ばれたときには、まだexampleへのキー入力処理が実行さ れていないから。
908 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 15:57:20 ] うむ
909 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 17:07:45 ] >>907 なるほど、タイプ→フィールドに追加だからですね。 意識したことがなかったので気づきませんでした。 exlabel.setText(example.getText()+e.getKeyChar()); これでいけました、ありがとうございます。
910 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 17:57:49 ] >>909 「文字」と「文字列」を区別したほうがいいと思うけど、それはともかく DocumentListener というものはご存知かな
911 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 18:07:37 ] Javaのjava.util.regex.Patternの動作について質問です。 正規表現に文字クラス"[a-z0-9&&[3-8]c-h]"を与えたところ、 この文字クラスにマッチする文字は 'c'、'd'、'e'、'f'、'g'、'h'の6字になるんです。 これってどういう仕様なのでしょうか? 以下は、マッチする文字を表示するサンプルです。参考に他の文字クラスも表示していますが "[a-z0-9&&[3-8]c-h]"を渡した場合の挙動だけが、なぜそうなるのか良くわからないのです。 ----- import java.util.regex.Pattern; public class RegexTest { public static void main(String[] args) { printMatchingChars("[a-z0-9&&[3-8]c-h]"); printMatchingChars("[a-z0-9&&[3-8][c-h]]"); printMatchingChars("[a-z0-9&&[3-8]&&[c-h]]"); } private static void printMatchingChars(String regex) { Pattern p = Pattern.compile(regex); StringBuilder buf = new StringBuilder(); for (int cp = 0; cp < Character.MAX_CODE_POINT; cp++) { if (p.matcher(new String(Character.toChars(cp))).matches()) { buf.append((char) cp); } } System.out.println(regex + ":" + buf + ':'); } } ----- 出力結果 [a-z0-9&&[3-8]c-h]:cdefgh: [a-z0-9&&[3-8][c-h]]:345678cdefgh: [a-z0-9&&[3-8]&&[c-h]]:: P.S.代理レスでの書き込みなので、返信が遅れるかもしれません。
912 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 18:54:29 ] java.sun.com/javase/ja/6/docs/ja/api/java/util/regex/Pattern.html >文字クラス >[abc] a、b、または c (単純クラス) >[^abc] a、b、c 以外の文字 (否定) >[a-zA-Z] a 〜 z または A 〜 Z (範囲) >[a-d[m-p]] a 〜 d、または m 〜 p:[a-dm-p] (結合) >[a-z&&[def]] d、e、f (交差) >[a-z&&[^bc]] b と c を除く a 〜 z:[ad-z] (減算) >[a-z&&[^m-p]] m 〜 p を除く a 〜 z:[a-lq-z] (減算) > 文字クラス演算子は、次の順で優先順位が高くなります。 > 1 リテラルエスケープ \x > 2 グループ化 [...] > 3 Range a-z > 4 論理和 [a-e][i-u] > 5 論理積 [a-z&&[aeiou]] これを見る限り、 [α-ω[...]] はともかく、 [[...]α-ω] の形がどうなるのかは書かれていない(=例外でもおかしくない?)ように見えるけど、どう? >正規表現構文の動作の詳細については、『Mastering Regular Expressions, 2nd Edition』 > (Jeffrey E. F. Friedl 著、O'Reilly and Associates、2002 年) を参照してください。 だそーですが
913 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 19:38:14 ] >>911-912 BUG-BUG-SunMicro に報告、、ってどうやるの?
914 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 20:38:32 ] >>911 とりあえず現象だけ見ると、 [a-h0-8&&[3-9]c-z] [a-h0-8&&[あ-ん]c-z] [a-h0-8&&[3-9][あ-ん]c-z] [a-h0-8&&c-z] は、同じく [c-h] と等価になっちゃうっぽいね
915 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 20:57:52 ] >>912-914 さん、返信ありがとうございます。 >>914 さん、 &&の前の文字セットと、&&の後ろの定義済みあるいは[]で閉じられていない文字セットを論理積してるみたいですね。 &&の前後の文字セットの結果は無視されているような。 そして否定が付くと、(ますます良くわからないのですが) [a-zあ-ん&&[3-8]c-h]:cdefgh: [^a-zあ-ん&&[3-8]c-h]:: (何もマッチしない) となります。 こんな面倒な構文使わなければいいと思われると思いますが、 正規表現からそれにマッチするランダムな文字列を生成するクラスを作っていまして 生成した文字がPatternで必ずマッチするようにしたいのです。
916 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 20:58:02 ] [a-h0-8&&[c-z]] この基本形を入れとくべきか
917 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 21:08:45 ] >>915 「ちゃんと例外をスローしてもらわないとなあ」というのが私の感想ですがw
918 名前:913 mailto:sage [2008/06/09(月) 21:51:26 ] [^a-z&&[3-8]c-h] [[^a-z]&&[3-8]c-h] 否定は問題ない
919 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 02:57:34 ] >>912 そのオライリーの本、 「正規表現 第二版」のことだよね。 ちゃんと日本語訳された本があるからそっち紹介してもいいんじゃないかと
920 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 09:48:31 ] [...][...]&&[...]&&[...][...]&&[...][...]&&[...]&&[...] [...[...]]&&[...]&&[...[...]]&&[...[...]]&&[...]&&[...] [...[...]]&&[...&&[...[...]&&[...[...]&&[...&&[...]]]]] [...][...]&&[...]&&[...][...]&&[...][...]&&[...]&&[...] [[...]...]&&[...]&&[[...]...]&&[[...]...]&&[...]&&[...] [[[[[[...]...]&&...]&&[...]...]&&[...]...]&&...]&&[...]
921 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 17:20:25 ] >>912 正規表現 第3版 出てる。
922 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 19:59:46 ] そういえばそうだったあね
923 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:44:49 ] スレ違いかもしれませんが、JAVAのことで質問です。 JAVAを使える無料レンサバは何故少ない(というか無い) んでしょうか?
924 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:50:27 ] Perlではなくて?
925 名前:923 mailto:sage [2008/06/11(水) 17:57:15 ] >>924 はい、JAVA(できればstruts)で作ったWEBアプリをレンサバ で動かそうにも無料のがなく、有料だと高くて…。 確かにPerlもみかけませんよね。phpはどこでも使えるのに・・・ orz
926 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:15:47 ] >>925 無料では見たことがないな。
927 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:22:02 ] 自分でサーバーたてちまえ
928 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:22:44 ] ただで鯖使おうって根性が間違ってる。
929 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:27:48 ] そんなに大変じゃないだろ
930 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:58:12 ] >>926-929 そうですね、やっぱり自鯖をたててみます。 レス有難う御座いました。
931 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:03:33 ] サーブレットとかってwww鯖の申請通ればあとはアパッチとかの設定だけだしな。
932 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:15:03 ] >有料だと高くて… Tomcatでいいんだろ?月500円でも高いのか? www.easytone.jp/ 無料なのがないのはJavaだと自由度が高すぎてセキュリティに問題が起きる可能性が高いからだと思うけどな? それにJavaはphpなどに比べれば難しいから需要も少ないってこともあるだろうなあ?
933 名前:デフォルトの名無しさん [2008/06/11(水) 19:22:10 ] 質問です public void paint(Graphics g) { g.drawImage(); } 上記の場合、アプレットだと public void paint(Graphics g)のgの部分はブラウザから 受け取るとあるのですが、アプリケーションの場合、オブジェクトのgはどこで作られるのでしょうか? 自分でオブジェクトgを作らなくても動くのですがどうしてでしょう?
934 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:28:23 ] >>932 金払ってるのに何のセキュリティが問題になるんだよwアホかおまえは
935 名前:デフォルトの名無しさん [2008/06/11(水) 19:31:34 ] 別に鯖缶に文句は無いけど、客を選んでるようじゃそのうち縮小していって、淘汰されるだろうよ
936 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:36:57 ] >>934 無料の場合の話だろ(wアホはおまえじゃ(w
937 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:37:45 ] >>933 ブラウザっていうか,sunの中の人がGraphicsオブジェクトを作って それを引数に指定してpaintを呼び出すようなコードを書いてて,裏ではそれが動いてる アプリケーションも一緒
938 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:40:05 ] >>932 あ、こんな安いレンサバあるんですね。 なるほど、ありがとうございます。
939 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:43:50 ] >>938 使ったことはないんでいいかどうかはわからないよ。 無料10日間お試しコースってのがあるから試してみたら?
940 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:46:26 ] JTreeのTreeWillExpansionListenerを使い展開時に DefaultMutableTreeNode型のインスタンスからそのノードに至るまでの ルートからのパスを取得したいのですが、どうやったら良いのでしょうか?
941 名前:デフォルトの名無しさん [2008/06/11(水) 19:52:31 ] >>937 paintを呼び出す時に自動的に、Grapnicsオブジェクトが作られる という事でしょうか?
942 名前:デフォルトの名無しさん [2008/06/11(水) 19:57:15 ] >>936 セキュリティが問題になるとかいいのがれじゃん。無料とか言って話しをそらすなw
943 名前:デフォルトの名無しさん [2008/06/11(水) 20:02:08 ] JSpinner で 普段は浮動少数(double) 〜〜dB(デシベル) と手打ちした時は 自動で対応する値に変換 (6dB -> 2、20dB -> 10) というのをやりたいのですが、どんな感じで実装するのがスマートなんでしょうか?
944 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 20:07:46 ] >>941 違う 中の人が作って呼んでる
945 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 20:33:51 ] >>933 >自分でオブジェクトgを作らなくても動くのですがどうしてでしょう? 初心者的にはまあごもっともな疑問だと思う。ちょっとかみ砕いてみる。 「paintメソッドを作る」ということは、 「もし「ここに自分の姿を描いてね」と言われたらこう描く(こう対応する)、と決める」ということ。 何をどう描くかは決められるけど、何に描くべきかは外から指定される。 「paintメソッドを呼ぶ」ということは、 「「ここ(=Graphicsオブジェクト)に自分の姿を描いてね」と頼む」ということ。 どういう絵ができるかは相手次第だけど、「描く場所」はちゃんと用意してから注文する。 ふつうは、アプレットとは別に画面作りの本部(中の人)みたいなのが動いていて、 必要なときに(paint/updateを呼ぶ前に)Graphicsオブジェクトを用意する、 と考えていればいいと思う。 それ以外にも、画像に描画するGraphicsオブジェクトを生成してpaintに渡せば、 その時の表示内容を画像にできたり、というような使い方もできる。
946 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 20:36:56 ] >>940 JTreeの展開のどの部分のパスなのかしら?
947 名前:945 mailto:sage [2008/06/11(水) 20:40:48 ] ごめん、読んでなかったw >アプリケーションの場合は かw
948 名前:デフォルトの名無しさん [2008/06/11(水) 20:57:47 ] >>945 文句は無いんだけど、もし君が学校か何かの講師ならイマイチ。 安物のJava教本を読んだほうがいいかな
949 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 21:05:08 ] ageるな厨房
950 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 21:10:47 ] >>946 すいません、C:\Program Files\Adobeとかいう階層があったら、 Adobeを開いた時にC:\Program Files\Adobeという絶対パスを取得してFileに渡したいという感じです。 一応ググったりしながら下のようにやってみたのですが、関数で既にそういうものが用意されていたりするでしょうか? TreeNode paths[]=konode.get(i).getPath(); String path=""; for(int j=0;j<paths.length;j++) path+=paths[j]+"\\";
951 名前:945 mailto:sage [2008/06/11(水) 21:11:07 ] >>948 個人的にはイマイチ講師程度ならうれしいよw
952 名前:デフォルトの名無しさん [2008/06/11(水) 21:50:03 ] こういうアホ講師は得意げになっていって、後々面倒になるんだよね・・
953 名前:デフォルトの名無しさん [2008/06/11(水) 22:13:24 ] >>949 怒るとすぐこんなふうになるし、こいつは短気なんだろw
954 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 22:28:56 ] >>950 JTreeが実際に何を象徴しているか、JVMは知らないんじゃないかしら?
955 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 22:34:36 ] >>939 丁寧にdクス。
956 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 23:03:20 ] >>940 TreeWillExpandListenerに渡されるTreeExpansionEventから引っ張れる、これ java.sun.com/javase/ja/6/docs/ja/api/javax/swing/event/TreeExpansionEvent.html#getPath () とは別のもの?
957 名前:933 mailto:sage [2008/06/12(木) 06:07:03 ] ありがとう
958 名前:デフォルトの名無しさん [2008/06/12(木) 14:33:54 ] すいません、最近javaをはじめた者です。 buf[i+1]<<8|buf[i]&0xFF これの"|"は何を意味しているのですか?
959 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 14:36:55 ] 論理和
960 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 14:55:12 ] >>958 ビット単位のOR
961 名前:デフォルトの名無しさん [2008/06/12(木) 15:20:06 ] たぶんバグw
962 名前:デフォルトの名無しさん [2008/06/12(木) 15:39:46 ] jsp:invokeの意味が全然わからないんだが、 これって要するに他言語で言うeval? jsp:doBodyとのちがいもわからん
963 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 15:58:14 ] >>958 他のは分かるけど、ということ?なんか不自然な気が
964 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 16:29:31 ] >>962 JSPはほとんど知らないけど、 java.sun.com/products/jsp/syntax/2.0/syntaxref2017.html <jsp:doBody> java.sun.com/products/jsp/syntax/2.0/syntaxref2021.html <jsp:invoke> このへんざっと見る限り、 ・doBodyは、そのタグで囲まれた部分全体を(フツーのJSP文法で?)解釈して処理する ・invokeは、タグの中身に複数のfragment(attributeの一種らしい)があるような複雑な構成で、 個々のfragmentを指名して、その内容をdoBody的に処理 みたいな感じ?とすれば「全部eval」と「一部eval」ということになるかもしれんね。
965 名前:デフォルトの名無しさん [2008/06/12(木) 17:28:58 ] 会社の経費精算システムがjavaアプリで作られており、Windowsマシンで動いております。 作りが悪くて各項目ごとに、出発・到着・金額はいいとして、国や日本円とかをいちいち 入れなくてはならず、毎回入れる項目はだいたい同じなのでスクリプトで自動入力させたいのですが javaアプリのフォームにデータを入れてボタンをクリックさせるツールとか方法は あるのでしょうか? vbscriptとか自動入力クリックツールとかはjavaアプリは全然動かすことができません。
966 名前:デフォルトの名無しさん [2008/06/12(木) 17:31:53 ] 何の作りが悪いって?
967 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 18:12:26 ] 入力した整数を自動的に因数分解するプログラムを作るにはどうすればいいのでしょうか
968 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 18:16:28 ] >>967 自分が手計算で因数分解するときの手順をそのままプログラムで書けば良い
969 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 18:19:53 ] >>967 1は任意の整数xの約数であるから、x=1・xと因数分解できる。■ Java 素因数分解 でぐぐるとか?
970 名前:デフォルトの名無しさん [2008/06/12(木) 18:29:02 ] ■は一体何の意味?
971 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 18:31:17 ] >>968 >>969 すみません。もう少し勉強しなおしてきます。
972 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 18:43:19 ] >>965 作った業者に改良を依頼したらいいと思うよ
973 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 18:48:38 ] >>970 D.Q.N.(「父さんこのイモ何のイモ?」の略)
974 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 18:49:35 ] int x = 9801; java.util.Map<Integer, Integer> map = new java.util.TreeMap<Integer, Integer>(); int f = 2; while (x >= f) if (x % f == 0) {x /= f; if (map.get(f) == null) map.put(f, 1); else map.put(f, map.get(f) + 1);} else f++; System.out.println(map);
975 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 19:04:54 ] 整数xの約数 とあるけど、-23*1とか0*1でもいいのかな 君のプログラムはどういう仕様になってるの?
976 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 21:54:56 ] >>967 の問題が素因数分解であるなら、入力は正整数だから>>975 は心配無用 アルゴリズムは基本的に>>974 の方法で良いが、細かいことをいうと y = ⌊√x⌋ とすると、 ループ継続条件は x > 1 かつ f ≤ y (ループ終了時 x > 1 なら、その x が最後の素因数)
977 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:20:23 ] >>962 >>964 jspは実行前にコンパイルされるはずだからevalというには語弊があるな。funcallとかapply?
978 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:29:13 ] 質問です。 JAVAで、指定したフォルダをエクスプローラで開くことは出来るでしょうか? Windows以外で動作しなくても構いません ひょっとしたらRuntimeやProcessで出来るかとも思ったのですが、 あれはexeやjarファイル等の起動しか出来ないようで……
979 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:31:08 ] Windowsに限るならexplorer.exe使えばいいよ。 オプションはスレ違いなので調べてちょ。
980 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:37:28 ] >>979 即答ありがとうございます 何とかなりそうです
981 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:37:42 ] >>978 JDK6以降なら java.awt.Desktop#open(java.io.File) でも開けるっぽい。
982 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:53:22 ] >>978 explorer C:\Program Files みたいに引数つければRuntimeでいける。
983 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 01:18:47 ] >>981 こんなのがあったのか…… JDKのバージョンにこだわりはないので、エクスプローラの引数指定よりこっちの方がスマートですね 色々試してみます。 回答ありがとうございました
984 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 05:28:52 ] >>976 少し苦しいけど許してあげるよw 以後軽率な発言は控えるように