1 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 01:35:28 ] 過去ログ、関連スレッド、よくある質問とその回答、 質問をする前に、貴方が見なければならないサイトについての情報は、 下の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質問・相談スレッド98【大歓迎】 pc11.2ch.net/test/read.cgi/tech/1171787388/ /* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。 質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */ また、当スレで質問をするかたは、回答をもらえたときに、 wikiの更新をして頂ければ、忝なく存じます。 JavaScript, Ajaxの質問は、ここでは受け付けていません。 Web製作板をご利用ください。pc10.2ch.net/hp/ 次スレは>>980 あたりで。
175 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 14:14:21 ] >>172 split
176 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 14:17:22 ] 2chに宿題訊きにくるような奴と将来一緒に仕事したくないなあ
177 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 15:09:13 ] >>168 そして再帰的にやって 相互リンクで永久ループにハマってあぼーん
178 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 15:11:00 ] >>176 たんと礼儀とルールと一般常識をわきまえて聞くなら良いけど 質問に答えてくれないと逆ギレするようなやつとは一緒に仕事したくないよな〜
179 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 17:30:50 ] >>177 基底条件ってもんくらい分かってるだろ? でなきゃループ内で再帰やったとき止まらんw
180 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 18:32:06 ] 1つのjavaファイルに、複数の public class を記述すると、 コンパイルしたときに、$付きの class ファイルが生成されます。 こんな書き方ありなんでしょうか?
181 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 18:47:22 ] >>180 JVMの身にもなってみろ
182 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 19:16:30 ] >>180 あり。 > 1つのjavaファイルに、複数の public class を記述すると、 入れ子になったクラスなら $ とかがつくし、 トップレベルに public なクラスが複数あったら コンパイルエラーにしないと言語仕様に反する。
183 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 19:57:55 ] Javaのことはまったくわかりません。 場違いだったら構わず指摘してください。よろしくお願いします。 www.strangepuzzle.com/jnetcube.html このサイトにあるルービックキューブ用のタイマーを 動かしたいのですが、ダウンロードしたあと 何をしたらいいのかまったくわからないんです。 どうすればタイマーを動かすことができるのでしょうか。
184 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 21:09:20 ] >複数の public class コンパイラ通るのか!?
185 名前:デフォルトの名無しさん [2007/03/08(木) 21:10:26 ] 質問させてください。 例えば、DBの1レコードごとに一つのHTMLページのソースが入ってる状態があります。 例 1レコード目 1 トップページ 2レコード 2 サブページ1 3レコード 3 サブページ2 HTTPリクエストに応じたレコードをJSPで表示で表示しているとします。 通常ならリクエストの形は hogehoge.jsp?id=2 とかだと思います。 これをクエリを使わないで/で区切ったリクエストに応じて表示する方法はないでしょうか? 例えば hogehoge.jsp/2/ ↑のリクエストの形で2レコード目の要求として扱う方法はないでしょうか? 2ちゃんねるみたいに pc11.2ch.net/test/read.cgi/tech/1173026128/ というふうにクエリ使わないで/だけでやる方法をさがしています
186 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 21:46:42 ] javax.servlet.http.HttpServletRequest#getPathInfo()
187 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 00:14:40 ] javaで英単語教材を作ってます。 今は、ボタンを押すごとに //空所補充問題文 The rocket launch had to be ( ) because of unexpected bad weather. //空所に入る選択肢 ・aborted ・allotted ・ascribed ・accumulated といった感じで、50個ぐらいある問題文と選択肢のセットをテキストファイルから画面に readLine()で表示させているのですが、今の方法だとテキストファイルに並んでいる 順番でしか表示されません。やりたいことは次のとおりです。 1.この問題文と選択肢のセットをランダムな順番で表示させたい。 2.選択肢も、常に同じ4つの単語ではなくランダムな組み合わせで表示させたい。 ちなみに今は問題文と選択肢のテキストを別々のファイルに保存しているのですが これも問題ありでしょうか?よろしくお願いします。
188 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 00:45:19 ] import java.io.*; import java.util.*; public class EnglishTest1 { public static void main(String[] args) throws IOException { String dataBody = "The rocket launch had to be ( ) because of unexpected bad weather.;aborted;allotted;ascribed;accumulated;other word1;other word2\n" + "The missile launch had to be ( ) because of unexpected bad weather.;aborted;allotted;ascribed;accumulated;other word1;other word2\n" + "The Vista launch had to be ( ) because of unexpected bad weather.;aborted;allotted;ascribed;accumulated;other word1;other word2\n"; ArrayList<Question> questions = new ArrayList<Question>(); BufferedReader r = new BufferedReader(new StringReader(dataBody)); try { for (String line; (line = r.readLine()) != null;) { ArrayList<String> data = new ArrayList<String>(Arrays.asList(line.split(";"))); Question q = new Question(); q.questionText = data.remove(0); q.choices = data; q.correctAnswerNumber = 0; questions.add(q); } } finally { r.close(); } Random random = new Random(); while (questions.size() > 0) { Question q = questions.remove(random.nextInt(questions.size())); System.out.println(q.questionText); } } } class Question { String questionText; ArrayList<String> choices; int correctAnswerNumber; }
189 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 00:46:11 ] あとは自分で。
190 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 00:59:52 ] すまん Collections.shuffle(List) の方がいいな import java.io.*; import java.util.*; public class EnglishTest2 { public static void main(String[] args) throws IOException { String dataBody = "The rocket launch had to be ( ) because of unexpected bad weather.;aborted;allotted;ascribed;accumulated;other word1;other word2\n" + "The missile launch had to be ( ) because of unexpected bad weather.;aborted;allotted;ascribed;accumulated;other word1;other word2\n" + "The Vista launch had to be ( ) because of unexpected bad weather.;aborted;allotted;ascribed;accumulated;other word1;other word2\n"; ArrayList<Question> questions = new ArrayList<Question>(); BufferedReader r = new BufferedReader(new StringReader(dataBody)); try { for (String line; (line = r.readLine()) != null;) { ArrayList<String> data = new ArrayList<String>(Arrays.asList(line.split(";"))); Question q = new Question(data.remove(0), data, 0); questions.add(q); } } finally { r.close(); } Collections.shuffle(questions); for (Question q : questions) { System.out.println(q.questionText); for (String choice : q.choices) System.out.println(" - " + choice); } } } class Question { final String questionText; final List<String> choices; final int correctAnswerNumber; public Question (String questionText, List<String> choices, int correctAnswerNumber) { this.questionText = questionText; this.choices = Collections.unmodifiableList(choices); this.correctAnswerNumber = correctAnswerNumber; } }
191 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 01:09:34 ] Generics関係でArrays.sortの質問です。 やじるしのところで警告が出てしまいます。 抑えるにはどうすればいいでしょうかよろしくお願いします。<(_ _)> ArrayList<Sensyu> al = new ArrayList<Sensyu>(); al.add(new Sensyu("tako", 20 ));// ArrayListにデータを追加 al.add(new Sensyu("yuura", 30 )); al.add(new Sensyu("ponko", 53 )); Object[] oa = al.toArray();// 配列に変換 DataComparator dcom = new DataComparator(); Arrays.sort( oa, dcom); //←‥ここで警告:[unchecked] 無検査変換が出てしまいます。 ---- ---- ---- ----- public Sensyu(String namaeMoji, int ten ){ namae = namaeMoji; tokuten = ten ; } ---- ---- ---- ----- public class DataComparator implements java.util.Comparator{ public int compare(Object o1, Object o2){ return ((Sensyu)o2).tokuten - ((Sensyu)o1).tokuten; } }
192 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 01:31:39 ] >>191 public class DataComparator implements java.util.Comparator<Sensyu> {
193 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 02:41:11 ] >>192 さんありがとうございます。 でもまだうまくいきません‥ public class DataComparator implements java.util.Comparator<Sensyu> { になおして中身を public int compare(HairetuArraysTest.Sensyu o1, HairetuArraysTest.Sensyu o2) { return o2.tokuten - o1.tokuten; } ---- ---- ---- ----- Arrays.sort( oa, dcom); の部分を ↓ Arrays.sort( (Sensyu[]) oa, dcom); //この行番号でエラーメッセージが出てしまう。 するとコンパイル時に何の警告も出ません。しかし、 実行すると Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [LHairetuArraysTest$Sensyu; というメッセージが出てしまうのですが、どうしましょ?(o・・o)/~
194 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 02:49:47 ] toArray で Object[] に変換してるから。 Sensy[] に変換するよう引数をとる toArray の方を使いましょう。
195 名前:193 mailto:sage [2007/03/09(金) 03:05:33 ] >>194 さんありがとう toArray public <T> T[] toArray(T[] a) のことですね、 Sensyu[] oa = al.toArray( ここがわかりませんどうしましょドジですいません );
196 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 04:09:57 ] >>195 new Sensyu[0]でも何でもいいからSensyu[]型を放り込んでおけば、 もしサイズが足りなければ新たに確保してくれる。 APIリファレンスのtoArrayの項目をきちんと読むんだ。
197 名前:193 mailto:sage [2007/03/09(金) 04:29:14 ] >>196 さんありがとうございます。 でっ、できました。ヽ(^o^)丿 難解だけどAPIリファレンス出来るだけ読むようにします。 つきあってくれてありがとう‥
198 名前:デフォルトの名無しさん [2007/03/09(金) 04:48:13 ] 音声の再生についての質問です。 好きなタイミングで音声を鳴らしたり消したりしたいのですが、 スレッド処理を用いている場合はどう書いたらいいのでしょうか? startメソッドにac.loop;と書くと延々鳴ってしまいますし、 runメソッド内に書くとやはり音声の冒頭部分だけが繰り返し再生されてしまいます。 ソース sourcepost.sytes.net/sourceview.aspx?source_id=29248 startメソッドに再生部分を記述 www.za.ztv.ne.jp/yosi-h/Java_Ski.html
199 名前:デフォルトの名無しさん [2007/03/09(金) 10:26:18 ] どなたかご存知でしたら教えてください。 JavaでPDFを作成するiTEXTにて テーブルを作成するときに途中でページからはみ出そうなときは 次ページに改ページしてくれる方法ってないでしょうか? よろしくおねがいします。
200 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 11:21:38 ] >>198 アプレットは単音鳴らすか鳴らせ続けるかだからループさせつつ任意のタイミング止めて再開とかしたいなら適当なサウンドエンジン使った方が良いよ。 >>199 どっかで制御方法見た気がするが・・・javadocくらい叩き込んだ?
201 名前:デフォルトの名無しさん [2007/03/09(金) 11:30:17 ] >200 javadocはよくわかりませんが こちらのサイトでiTEXTのコマンドについては大体わかったのですが ttp://itextdocs.lowagie.com/tutorial/ 質問した内容のサンプルコードが無かったので悩んでます。
202 名前:デフォルトの名無しさん [2007/03/09(金) 11:36:18 ] >200 ありがとうございます。 iTEXTのJAVAdoc見つかりました。 理解できるか分かりませんがちょっと読んでみようと思います。
203 名前:デフォルトの名無しさん [2007/03/09(金) 11:39:01 ] table.tableFitsPage きっとコレジャン! 200サンクス!
204 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 13:53:33 ] >>191 いろいろ解決方法はあるみたいだが、 al = Collections.checkedList(al, Sensyu.class); を使いたくなってくるなあ。これならObjectなど他の型に渡しても 警告が出なくなる。 @SupressWarning("unchecked")でもいいけどさ
205 名前:デフォルトの名無しさん [2007/03/09(金) 14:54:12 ] https://sdlc6e.sun.com/ECom/EComActionServlet/DownloadPage:~:com.sun.sunit.sdlc.content.DownloadPageInfo;jsessionid=A232C894EA5C4D2F03723CB5357D7872;jsessionid=A232C894EA5C4D2F03723CB5357D7872 まとめ見てここからダウンロードしようとしてるんですけどこの後どうすればいいんですか?
206 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 16:47:43 ] >>205 Accept License Agreement してから Java(TM) SE Development Kit Documentation 6, Japanese 選べば? 英語版欲しいなら、English の方選んで。
207 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 16:50:25 ] >>206 サンクス
208 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 19:47:33 ] 英語読めない奴が英語版欲しいと思えんが、jdk6のl10n終わって良かったな。 相変わらず変な訳だが
209 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 20:04:01 ] そういやなんでJavaって日本語版あるんだろ?
210 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 20:18:14 ] むしろ英語マニュアルのが読みやすい俺ガイル
211 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 21:09:04 ] >>208 i10n って、日本語訳終わっただけで中国語訳とかまだじゃない?
212 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 21:37:28 ] >>209 1. 市場が大きい。 2. 訳の需要が大きい。 日本語は造語力が大きいので高等教育で用いられる用語も訳すことが出来、 結果として日本語しかできなくても高等教育が受けられる。 アジアの準先進国の言語などでそれほど造語力が高くない場合、そこまで できないので、英語で高等教育を行わざるを得なくなり、結果として高等 教育を受けた人はみな英語が出来るので、英語で困らなくなってしまう。 という意見を聞いたことがある。
213 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 21:43:59 ] 日本だろうと曲がりなりにも高等教育を受けたら普通英語ぐらいできると思うのだが もし高等教育の意味が文字通り高卒の事だったのなら謝る
214 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 21:49:04 ] >>213 学校教育英語に幻想持ってないか?
215 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 21:52:08 ] ただ単にi18nの一環でかつ日本人は母国語版を欲しがる人種ってだけじゃね? 技術文書の翻訳版を欲しがるのは日本人くらいだし
216 名前:125 mailto:sage [2007/03/09(金) 22:32:27 ] Rubyでは簡単に実現できたので、再びJavaに戻ってきて作成しています。 ファイルのコピー、移動はFileクラスとFileInputStream,FileOutputStreamあたりを使うことで、簡単に実現できました。 ところでお聞きしたいのですが、InputStreamのread( byte[] buffer )、OutputStreamのwrite( byte[] buffer )で使用する 配列サイズというのは、どれくらいが適しているのでしょうか? バッファーが大きければ処理が早く済むがメモリの消費量が大きくなる、ということはなんとなくわかるのですが、 適量のバッファーサイズの見当がつきません。 現在主流となっているマシンスペックだと、適量のバッファーサイズとはどれくらいなのでしょうか?
217 名前:187 mailto:sage [2007/03/09(金) 22:37:51 ] >>190 返事が遅くなってしまってすみません。 提示していただいたコードを参考にやってみます。 ありがとうございました。
218 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 22:40:22 ] >>213 英語で小説読もうとして三日であきらめたことを思い出した 資料としてなら読み進めるのは大して苦じゃないが大量になるとかなりウザい メインで英語使うなんて信じられん
219 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 22:54:05 ] >>216 セオリーは無いと思う。 俺はなんとなく 4kB 〜 16kB あたり取ってるが。
220 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 23:01:30 ] >>218 小説と技術文書は全然違うでしょ。 語彙空間がまるで違うよ。 俺自分の専攻の論文ならすらすら読めるけど、 一般向けの小説(ハリウッド映画の原作)は 3ページで挫折しかけてるw
221 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 00:26:59 ] jarファイルをダブルクリックしても反応してくれません。 (Test.classファイル) class Test{ public static void main(String[] args){ System.out.println("aaa"); } } これを jar cf Test.jar Test.class でjarファイル生成 jar xf Test.jar でjarを解凍 マニフェストファイルにMain-Class: Testを追加して保存 jar cfm Test.jar META-INF\MANIFEST.MF Test.class で再びjarに圧縮 こいつをダブルクリックしてもコマンドプロンプトが出てきてくれないです。 エラーメッセージも出ず無反応です。 ただし、コマンドプロンプトから java -jar Test.jar と打ち込むと aaa と表示されます。 どなたかお助けください。
222 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 00:47:21 ] 関連付けの問題か、あるいはコマンドプロンプトが一瞬出ているのに気付かないかのどっちか
223 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 01:00:44 ] 3つの整数をキーボード入力させてそこから計算させるプログラムを作っているのですが、 入力させた文字列の中に英字または小数がある場合、「○個目には整数を入力してください」という メッセージを表示させたいのですが、Integer.parseIntでの例外をNumberFormatException で拾うという手段を取ってみたのですが、この場合何個目の入力が整数でないのかを個別に 表示することが出来ません。どの入力が間違っていても同一のメッセージ表示しか出来ません。 この方法以外に入力された文字列の中で整数以外の入力を判別して、どの入力がエラーなのかを知らせる方法はありますか?
224 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 01:02:50 ] ちとその部分のコード書いてみ?
225 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 01:10:12 ] >>221 Windowsだとjavaじゃなくjavawに関連づけられてるかもしれない。
226 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 01:31:23 ] >>222 >>225 ありがとうございます。今見てみましたが、javawなってました。 javaにかえて再びwクリックしてみると一瞬だけコマンドプロンプトが表示されましたが、すぐに消えてしまいました。 これはこういうものなのでしょうか?コマンドプロンプトの画面をずっと表示させておくことは出来ますか?
227 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 01:45:48 ] BufferReaderか何か使ってキーボード入力待ちにするのが一番お手軽w
228 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 01:50:28 ] 今ならjava.util.Scannerを薦めたい。 ttp://www.javadrive.jp/start/scanner/index1.html
229 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 02:04:30 ] なるほど。勉強になりました。ありがとうございました。
230 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 03:57:05 ] 空の文字列 "" と、null の違いがよくわからない。。。
231 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 04:16:57 ] >>230 空の文字列は、長さは0だけど文字列。つまり、Stringのオブジェクトが存在する。 nullは、何もないということ、オブジェクトがないという状態を表す。
232 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 04:20:30 ] >>221 パッケージ作っといて修飾名でクラス指定してないって訳じゃなさそうだね。 winの関連づけはjavawだからそれはいじらないでコマンドプロンプトから打て。 CUIプログラムをクリックしても動きません!って発想が既におかしい。プロンプト立ち上げてからならjavaが終了してもプロンプトが残ってて消えないはず。 OSのしくみとかそこら辺を分かってないだけだからまずそこら辺を勉強した方が良い。 てか独学?専門生? >>230 MS VMだと同義w nullはObject派生型なんだけど値は何にも関連付けられてない。 空文字列は"\u000000"になるんだっけ? 他言語やってて言語によって定義が違うから掴めないの? ただ単にjavaのnullが分かってない? 後者ならjavaの本見ればいい。
233 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 04:39:01 ] >>232 > MS VMだと同義w そんな話は聞いた事がない。 > nullはObject派生型なんだけど値は何にも関連付けられてない。 Java では null は null型だよ。空型とか訳される事もあるけど。 Object からは派生してない特別な型。 > 空文字列は"\u000000"になるんだっけ? は? 薀蓄語りたいなら、ちゃんと言語仕様ぐらい見てからやれ。
234 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 04:39:56 ] >>232 >nullはObject派生型なんだけど値は何にも関連付けられてない。 null は null 型のただ一つの値。 Object 派生型でもないし値が関連付けられていないわけでもない。
235 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 05:39:34 ] >>232 何か自分の知識を語りたいのは分かるんだが その表現をする言語力が伴っていないようで少し哀れ 相手の理解力を超えた表現しか出来てないよ・・・・
236 名前:223 mailto:sage [2007/03/10(土) 06:45:41 ] >>224 遅いレスで申し訳ありません。 try{ timeAtBat = Integer.parseInt(str1); sacrifice = Integer.parseInt(str2); hit = Integer.parseInt(str3); average = (double)hit / (timeAtBat - sacrifice); NumberFormat formatter = NumberFormat.getNumberInstance(); formatter.setMaximumFractionDigits(3); System.out.println("打率は" + formatter.format(average) + "です。"); } catch (NumberFormatException e) { System.out.println("数は0〜1000の整数で入力ください"); } str1,2,3はBufferedReaderを使って読み込んでいます。 System.out.println("数は0〜1000の整数で入力ください");の部分を 打席数、安打数、犠打数のどの入力が整数でないのかを"〜数は0〜1000の整数で入力ください" でそれぞれメッセージを表示させたいのです。 助言をいただけたら幸いです。
237 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 09:01:07 ] >>236 parseInt を3つまとめてtry-catchするんじゃなくて、 ひとつづつtry-catchすればわかるじゃん。 あとはカウンタ変数でも作って、今何番目のparseIntやってるかわかるようにするとか。
238 名前:223 mailto:sage [2007/03/10(土) 09:06:27 ] >>237 ひとつずつキャッチする手はもうやってみたのですが、やっぱりそれが一番早いですかね? カウンタ変数のほうをチャレンジしてみたいと思います。 ありがとうございました!
239 名前:223 mailto:sage [2007/03/10(土) 09:17:34 ] >>237 忘れてました。ひとつずつtryのすぐあとでcatchしていくと例外は拾えるんですけど、 処理をそこで終われないですよね?その後にある計算式は例外でも実行されてしまって エラーになってしまいました。 もし、ひとつずつtry-catchしていくのであれば、どこに計算式などを入れるべきですか?
240 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 09:41:12 ] >>236 入力ください で吹いたw
241 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 09:42:37 ] >処理をそこで終われないですよね? return;
242 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 10:39:34 ] >>239 try-catchだと記述が長ったらしくなるから、parseをラップするメソッドを作る手もある。 引数は文字列、戻り値はInteger但しparse失敗時はnull。 そのメソッドの中でtry-catchを使う。 .NETにあるTryPaseの亜流みたいなもん。
243 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 10:55:31 ] HashMapを使って文字列と数字を扱いたいのですが HashMap<String, int>はintがObjectじゃないからできないんでしょうか? この場合HashMap<String, Integer>とするべきですか?
244 名前:221 mailto:sage [2007/03/10(土) 10:59:49 ] >>232 スクールに通ってましたが素人同然です('A`) 関連付けはjavawを変更できないとすると、 結局>>221 のプログラムはwクリックでは実行出来ないということでしょうか? 誰かにこのプログラムを使ってもらう時に 「コマンドプロンプトからjava -jar Test.jarって入力してね」 と言うのはちと苦しいです。
245 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 11:03:57 ] >>243 プリミティブ型は入れられないのでそうする必要がある。 使うときはautoboxing/unboxingが効くので直接プリミティブを使う コードを書いてもOK。コンパイラがこっそりIntegerに入れたり出したり してくれる。
246 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 11:05:08 ] @echo OFF java -jar Test.jar なバッチを一緒に置いておいてもダメだっけか? 最近WindowsでJava使ってないから忘れたわ。
247 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 11:15:38 ] >>245 ありがとうございます 色々調べたり実験したりでちょっと遅れてしましました 宣言だけIntegerにすれば、他ではintとして扱っても問題ないんですね
248 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 11:52:50 ] >>244 ダブルクリックみたいなGUIど真ん中なことやりたかったら、普通はswingとか使う。 コマンドプロンプトがどうしても必要な場合は>>246 の言うとおりバッチでラップすればおk。
249 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 14:31:28 ] >>219 ありがとうございます。 調べてみたら、Javaの上位IOクラスは内部バッファとして8192byteつかっていることがわかりました。 その値に統一して使いたいと思います。
250 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 14:34:43 ] バッチファイル使うんなら、pause で入力待ちすればOKか。
251 名前:221 mailto:sage [2007/03/10(土) 15:47:13 ] バッチファイルというのは初耳でした。 >>246 をTest.jarのあるフォルダにa.batとして保存してこれをwクリックで無事実行できました! 皆さんに感謝します。
252 名前:230 mailto:sage [2007/03/10(土) 17:44:56 ] なるほど、ヌル文字列とヌルポインタの関係みたいなもんですね(`・ω・´) 遅レスですが、ありがとうございました。
253 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 17:55:32 ] Cのようなポインタを使用するプログラムだと常識として覚えてるものだが、 JAVAのようなオブジェクト指向だとポインタ意識しなくていいから知らない人が増えてきたな。 便利になると共に起こる、知識不足の弊害だな。
254 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 18:10:00 ] >>253 >JAVAのようなオブジェクト指向だとポインタ意識しなくていいから んなアホな
255 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 18:13:10 ] >>254 ポインタ操作って普通に使わないでしょう。
256 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 19:23:16 ] ポインタ演算とか冗長な書き方を許容してないだけでポインタを使ってることを意識しないわけじゃないだろ
257 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 19:27:04 ] 意識しなくていいというと語弊があるが、 実際に意識していない初心者が増えてきたってことだと思う。
258 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 21:02:20 ] private int id; public int getId(){return id;} public void showId(){ System.out.println("idは" + ● + "です。"); } この場合、●に入れるのはidかgetId()のどっちがいいんかな。 好みの問題でおk?
259 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 21:03:49 ] >>216 つうか、他のIOクラスでデコレートすれば サイズなんて気にしなくても良いはずだが。
260 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 21:06:24 ] >>246 つうか、マニフェストとJava Web Start使えよ
261 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 21:22:11 ] >>258 getId() がいいと思う。
262 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 21:27:19 ] >>261 thx
263 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 21:39:39 ] >>261 おなじ暮らすないならidでもいいとは思うけど。
264 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 23:06:13 ] >>261 うーん、悩ましい問題だなぁ…好みというか、目的による? けど、まぁ、getId()のほうが良いと思う。 例えばそのクラスのサブクラスでgetId()をオーバーライドして getId() { return "00" + id; } とかしたときに・・・
265 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 23:11:29 ] >>264 を風呂入る前に訂正 まず、アンカーは>>258 に。 あと、 ×getId() { return "00" + id; } ○getId() { return "00" + super.getId(); }
266 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 23:13:02 ] >>265 …駄目だ俺(笑 getId()は int なのな。 まぁ意図は汲み取ってください(汗
267 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 01:21:31 ] 抽象化はその部分における汎用性・再利用性を増すが 同時に複雑さが増し、保守が難しくなる。 また、よく考えられていない抽象化は、 結局それを使う場合に1から考え直す必要があり、 無駄な労力になる。むしろ、誤解を生む弊害すらある。 そして、「よく考える」とは言っても難しく、的外れになることが多く、 無駄な抽象化がプログラム中に散乱することになりやすい。 そこで、アジャイル的には、まず単純に作って、 例えば顧客に叩いてもらって、抽象化が必要なところを早期に発見する。 (テスト駆動なら、まずテストに叩かれるだろう) その観点から見ると、 必要と分かるときが来るまで getId() よりも id を使うのがいい。
268 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 03:00:38 ] 外から見ることを基準に考えちゃ駄目なのかな。 getId で取得した値と showId で表示した値は、大抵の場合で一致しなければおかしいから、 直感的に考えた場合は id より getId のほうが適切だろうと思う。たとえ getId が final だったとしてもね。
269 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 03:05:07 ] 追記:「外から見る」ってのは、id が private であって外から見れないことも含めてる。 外から見た場合、id を使うと 『何かよく分からないけど ID の内部表現を showId が表示している』 ってなって分かり難いんじゃないかと。
270 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 08:53:30 ] >>268-269 同意 使う側の視点で考えるのがいいと思う idという情報をを操作したい人のためのものなのだからその人のことを 考えなければ、悪く言えば独りよがりな実装になってしまうと思う
271 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 09:06:40 ] 俺の経験から言うと、極力生のフィールドは使うべきではない。 ボトルネックになる可能性、どうしても生フィールドでなければできない処理などは 例外的に使用を許可する、くらいの縛りを加えるようにする方が良い。 トラブル対応、仕様変更対応には絶対にこの方針が必要。無いと死ぬ。大規模だとね。
272 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 09:19:12 ] 使う場所によってフィールドを直接参照したりgetter経由だったり まちまちなのは良くない。
273 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 11:09:41 ] モジュール結合度の観点から考える結合度は低い方が独立性が高いため、 データ結合で単一のデータを引数として渡すべき。
274 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 11:29:20 ] iを打てば補完できるのでid。 getterはgetIまで打たないと補完が面倒。
275 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 12:02:11 ] >>271 同意! >>274 開発時に面倒臭がって楽しようとすると後々痛い目にあったりする予感