1 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 12:32:06 ] プログラミング言語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質問・相談スレッド116【歓迎】 pc11.2ch.net/test/read.cgi/tech/1213347130/ 次スレは>>990 あたりで。 過去ログ、関連スレッド、よくある質問とその回答など、 質問をする前に、貴方が見なければならないサイトについての情報は、 下のwikiのページにまとめてあります。 www.wikiroom.com/java/
237 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 15:58:52 ] >>233 メモリの割り当てはこの辺だけど、プログラムを見直したほうが良いんじゃね? ttp://sdc.sun.co.jp/java/docs/j2se/1.5.0/ja/docs/ja/tooldocs/windows/java.html#Xms
238 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 16:15:50 ] >>236 そういう考え方も出来るんですね。勉強になります。
239 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 18:34:52 ] >>208 JDBCドライバのフルパスの場所に、ドライバのjar置いてあるだけ、とか言う落ち?
240 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 19:15:17 ] >208 マニフェストファイルにクラスパス以外にフルパスを記述、って具体的に何をしたんだか ttp://java.sun.com/j2se/1.3/ja/docs/ja/guide/jar/jar.html#Main%20Attributes # Class-Path: この属性の値には、このアプリケーションまたは拡張機能に必要な拡張機能 またはライブラリの相対 URL を指定する。URL は 1 つ以上の空白で区切る。
241 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 21:18:27 ] >>8 >>10 は一体何何だ? 福田やすおチンパン総理のことかと思った
242 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 21:36:57 ] 2週間弱でアドベンチャー作るっていまいちよくわからんな
243 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 22:43:33 ] すみません、板違いになるかと思いますが、教えていただけますか。 <form mothed="post" action="./Result"> <input type="submit" name="id" value="hello" /> </form> フォームから送信した値を、request.getString("id")で取得して、これを、下記例URLのように表示できますか? example.com/Relust?id=hello ではなくて、このような形で↓ example.com/Result/hello/ web.xmlをいじる必要はありますか? よろしくお願いします。
244 名前:243 mailto:sage [2008/07/14(月) 22:47:12 ] すみません メソッドまちがえました。 request.getParameter() でしたorz
245 名前:デフォルトの名無しさん [2008/07/14(月) 23:03:40 ] javaでGUIでゲームを作ろうとしています。 制限時間30秒のゲームを作ろうと思うんですが、 どうやって時間をカウントダウンさせればいいかわかんないです… たぶんそういうコンポーネント?があるのかなと予想してるんですが…
246 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 23:08:19 ] >>243 filter
247 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 23:15:08 ] >>245 Timer
248 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 23:16:10 ] >>245 java.util.Timerないしはjava.util.concurrent.ScheduledExecutorService 後者はJava SE 5.0以降のみ あとjavax.swing.Timerなんてのもあったな
249 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 00:47:30 ] やはりコンカレント工学
250 名前:デフォルトの名無しさん [2008/07/15(火) 10:52:22 ] すいません、質問お願いします。 Fileクラスのコンストラクタを作るのに "File(String parent,String child)"でつくると、 mkdirsは実行できるcreateNewFileのところで実行エラーになります。 フォルダを見るとParentフォルダの中にchildフォルダができています。 たとえばString childに"test.txt"と入れても"test.txt"というフォルダが作られてしまいます。 はじめに"File(String pathname)"でmkdirsでディレクトリを作っておいて、 "File(File parent,String child)"だとうまくファイルが作成されるのですが。 APIを見てもわからなく本当に困っています。 よろしく、お願いいたします。
251 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 10:55:43 ] >>250 何がわからないんですか? 両方とも、その動作で正しいですよ。
252 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 11:32:17 ] mkdirsは、parentまでではなく、自分自身のところまでディレクトリを作る new File("c:\\foo\\bar\\test.txt").mkdirs() なら、c:\foo\bar\test.txt というディレクトリを作る ちなみに new File("c:\\foo\\bar\\test.txt") と new File("c:\\foo\\bar", "test.txt") は同じ
253 名前:217 [2008/07/15(火) 12:31:06 ] アドバイスしてくれた方々、ありがとうございました。 いろいろ調べ、改良も考えたのですが、うまくいきません。 以下は私の作成したソースです。改良できそうなところをご指摘ください。 package javaapplication2; import java.io.*; import java.util.*; public class LoadtoSave { public static void main(String[] args) { //データ格納用Listの準備 List<String[]> list = new ArrayList<String[]>(); double WAh[] = new double [600000]; try { FileReader fr =new FileReader("WA.txt"); BufferedReader bf = new BufferedReader(fr); String st = null;
254 名前:217 [2008/07/15(火) 12:31:38 ] while ((st = bf.readLine()) != null) { String[] line = st.split(","); list.add(line);//ファイル上1行の各数値を文字列として格納 } bf.close(); int i=0; for(String[] values: list){ for(String value: values){ double num = Double.parseDouble(value);//文字列を数値型に変換 WAh[i]= num; i=i+1; }}} catch(IOException e) { e.printStackTrace(); } //ここでWAhについて大量の計算(並列的) try { File outFile = new File("WA.txt"); FileWriter out = new FileWriter(outFile); PrintWriter pw = new PrintWriter("WA.txt"); //(8)書き込むデータがなくなるまで書き込み for(int j=0;j<600000;j++){ pw.print(WAh[j]); pw.print(","); } pw.close();} catch(IOException e){ }}}
255 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 12:37:15 ] package pkgweb; class Test { private String str; Test(String s){str=s;} public String getStr() {return str;} public void setStr(String str) {this.str = str;} } このファイルに対してjavac pkgweb\Test.java -d ..\WEB-INF\classesを実行してWEB-INF\classes以下にクラスファイルを作成し、jspから使用したいのですが pkgweb.Test cannot be resolved to a typeとエラーが出ます。 jspの中身は以下のものです。 <%@ page contentType="text/html; charset=Windows-31J"%> <html lang="ja"><head></head> <body> <%pkgweb.Test a=new pkgweb.Test("hoge");%> <%=a.getStr()%> </body></html> 色々ググったりしたのですが解決方法が分かりません。 どうしたら良いのか教えてください。
256 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 12:52:23 ] >>255 まず、貼り付けずに、どこかへアップするべきだったな。 ttp://rg550.hp.infoseek.co.jp/cgi-bin/joyful/main.htm とか
257 名前:256 mailto:sage [2008/07/15(火) 12:59:27 ] >>255 ごめん。 253-254から繋がってるかと思った。
258 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 13:02:52 ] >>253 1レスに入りきらないようなコードを貼られても見づらいし、 並列か並行か知らないけど、分けられるなら、一辺にやらなければよいのでは?
259 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 13:13:21 ] >>253 ,254 入力で、ファイル内容を全部Stringに入れてからdoubleに変換してる所と、 出力で、改行入れないで1行に出力してる所が少し気になった。
260 名前:デフォルトの名無しさん [2008/07/15(火) 13:17:46 ] >>253 250 で書いているような個所が見当たらないぞ。 >>250 あるファイルを示すパス path があるとして、その親ディレクトリを含めてファイルを作成したいなら File file = new File(path); file.getAbsoluteFile().getParentFile().mkdirs(); file.createNewFile(); としたらどうだろうか。
261 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 13:58:35 ] Windows環境でProcessBuilderでコマンドをバックグラウンドで実行して放置しておきたいのですが、 コマンドが標準出力メッセージを多量に出し、別スレッドでInputStreamを適宜読み込まないと コマンドがバッファ一杯で途中で止まってしまいます。 標準出力・エラー出力がたまらない方法ありましたら教えてください。
262 名前:デフォルトの名無しさん [2008/07/15(火) 14:11:35 ] コマンドを標準出力に出力しないオプション付けて実行 nullにリダイレクトw
263 名前:250 [2008/07/15(火) 14:17:16 ] >>250 です。 皆様、ありがとうございました。 >>252 様 >>new File("c:\\foo\\bar\\test.txt") と new File("c:\\foo\\bar", "test.txt") 後者のようにコンストラクタを作って、 そのあとmkdirsとcleatefileしたらファイルを作るところでエラーで 確認すると foo/bar/test.txt/というようなすべてがフォルダでできていたのです。 >>260 様 >>253 は私の書いたものではありません。 教えていただいた方法試してみます。 ありがとうございます。 ただ、疑問なのですが、普通は >>new File("c:\\foo\\bar", "test.txt") ではbarの中にtest.txtという「ファイル」ができるはずですよね?
264 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 14:25:02 ] >>263 いいえ barの中にtest.txtというディレクトリを作ります mkdirsはディレクトリを作るメソッドです
265 名前:260 [2008/07/15(火) 15:00:08 ] >>263 >>253 すまない、名前ちゃんと見ていなかった。 恥かし隠しに話題を変えるかw >コンストラクタを作って という表現は変だ。 コンストラクタはクラスのインスタンスを作るためのメソッドの名前みたいなもんで、 new クラス名(〜) というのはインスタンスを実際に作っている。 なので「コンストラクトしている」とかならまだいいかもれないが、 「コンストラクタを作って」はいない。 また、Fileクラスは(その名前に反して)ファイルだけを処理するわけじゃない。 基本はパス名を処理するものであって、パスの最後の部分がファイルかどうかは気にしない。 ”この名前のディレクトリを作れ”と指示(mkdirs())されたら(指示したほうは 最後の部分はファイルのつもりでも)Fileクラスはディレクトリとして作ってくれてしまうし、 それが仕様となってる。
266 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 15:29:32 ] >>255 public class Test { にして public Test(String s){str=s;} にすれば、どう?
267 名前:デフォルトの名無しさん [2008/07/15(火) 15:51:31 ] >>253 package javaapplication2; import java.io.*; public class LoadtoSave { public static void main(String[] args) throws IOException { double WAh[] = new double[600000]; BufferedReader br = null; try { br = new BufferedReader(new FileReader("WA.txt")); String line; for(int i=0; (line=br.readLine())!=null; ) { for(String value : line.split(",")) WAh[i++]= Double.parseDouble(value); } } finally { if(br != null) try { br.close(); } catch(IOException e) { /*無視*/ } } // ここでWAhについて大量の計算(並列的) PrintWriter pw = null; try { pw = new PrintWriter("WA.txt"); //(8)書き込むデータがなくなるまで書き込み for(double v : WAh) pw.print(v+","); } finally { if(pw != null) pw.close(); }}} 動かしてないがこんな感じには纏まるだろう。後はその多量の計算というところを 例えば10万件ずつ6回の処理に分けられないかとかだな。
268 名前:217 [2008/07/15(火) 16:05:35 ] >>259 >入力で、ファイル内容を全部Stringに入れてからdoubleに変換してる所と、 その他のやり方というか、王道的なものがありましたら、 教えて貰えると助かります。 >出力で、改行入れないで1行に出力してる所が少し気になった。 csv形式で書き込み、読み込むのを目的としてそうしました。 >>267 具体的なソースありがとうございます。 私の書いたソースと大きく変わったところは私には分かりませんが、 それを用いたときOutOfMemoryとならないか試してみます。
269 名前:255 mailto:sage [2008/07/15(火) 19:32:12 ] >>266 レスありがとうございます。 今public修飾詞に変更してコンパイルしてみましたがやっぱりダメでした。
270 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 19:33:11 ] ところで最大ヒープサイズの設定はしたのかね 大量の計算何してるのかしらないけど 40〜50万で64m使い切るなら256mにすりゃ160〜200万くらいまでいけるんじゃないのか? とりあえず動かすだけだったら.
271 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 19:52:34 ] >>269 WEB-INF以下のパスはあってる? \WEB-INF\classes\pkgweb\Test.class
272 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 20:05:58 ] プログラムって大変だな。学期末のレポート提出のために頑張ってるけど だるすぎる。内容は初歩中の初歩なのに。
273 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 20:29:46 ] >>271 今各デプロイを見直したところ、 Tomcat 5.5\conf\Catalina\localhost以下の web.xmlのdocBaseに書いたパスが一階層間違っていました! /webをアプリケーションフォルダに設定したつもりが/web/jspになっていて WEB-INFディレクトリを/web以下に置いていたための間違いだったようです。 レス頂き構成を見直したことが発見に繋がりました、ありがとうございます!
274 名前:デフォルトの名無しさん [2008/07/15(火) 22:13:16 ] >>217 20桁くらいの数字が40万もあれば10Mくらいいきそうだな。 まぁどうすればいいかは知らんけど
275 名前:デフォルトの名無しさん [2008/07/15(火) 23:37:04 ] 質問させて下さい。 全角半角の混ざった文字列の先頭から10byte分切り出したいのですが、 もし、10byteの切れ目が全角文字の1byte目だった場合、 9byteで切り出したいというような処理ってどうやって書けばいいでしょうか?
276 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 23:46:22 ] NIOでバイト単位で扱うとか
277 名前:デフォルトの名無しさん [2008/07/16(水) 00:01:24 ] >>275 結果文字列="" 合計バイト数=0 取出文字位置=0 while(取出文字位置 < 文字列の文字数) { 文字=文字列[取出文字位置++] 合計バイト数+=文字のバイト数 if(合計バイト数 > 10) break 結果文字列=結果文字列+文字 }
278 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 00:10:11 ] >>275 そのデータはどのような形式で保持してるの? byte[]? エンコーディングは?
279 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 00:26:24 ] 全角が堂のこうの言ってるんだからwindows-31Jじゃね?
280 名前:250 [2008/07/16(水) 09:23:50 ] >>250 です。 >>246 様>>247 様、どうもありがとうございました。 インスタンスを作成する、ですね。 ここでご指摘いただけてよかったです。 そしてわかりました! どうもありがとうございました。
281 名前:デフォルトの名無しさん [2008/07/16(水) 11:17:10 ] J2EEの日本語APIリファレンスを 探してるのですが SUNのページを探しても見つかりません どこでダウンロード可能でしょうか
282 名前:デフォルトの名無しさん [2008/07/16(水) 11:54:50 ] byte[] b = {(byte)0x01, (byte)0x02}; これをキャストせずにきれいに書くことはできませんか?
283 名前:デフォルトの名無しさん [2008/07/16(水) 11:59:12 ] 16進で表現したいので byte[] b = {(byte)0xFE, (byte)0xFF}; のように書きたいです。 10進でしたら byte[] b = {254, 255};でよいのですが。
284 名前:デフォルトの名無しさん [2008/07/16(水) 12:02:51 ] 数値は数値でしかないし、その表現方法(文字で)が変わるだけでしょ
285 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 13:52:27 ] >>283 キャストしたくないだけなら byte[] array = { 0xFFFFFFFE, 0xFFFFFFFF };
286 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 14:17:38 ] コストが掛かるがこんなん使うとか static byte[] b(int...is) { byte[] bs = new byte[is.length]; for(int i=0; i<is.length; i++) bs[i] = (byte) is[i]; return bs; } // byte[] b = b(0x01, 0x02, 0xFE, 0xFF); // {1, 2, -2, -1}
287 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 14:47:02 ] >>275 相手がShift_JIS系なら、 boolean isSJISLeadingByte(byte val) { int b = val & 0xFF; return (0x81 <= b && b <= 0x9F) || (0xE0 <= b && b <= 0xFC); } みたいのを書いて分岐した方が楽。 NIO charsetはライブラリ書く人向けの作りなので、異常系の状態拾おうとすると 真面目にエラー処理させられるような作りになってて面倒くさい。 無理矢理使うとこんな感じか。 byte[] array = ..... CharBuffer buf = CharBuffer.allocate(array.length); //文字数≦バイト数と仮定 CharsetDecoder decoder = Charset.forName("windows-31j").newDecoder(); decoder.onMalformedInput(CodingErrorAction.REPORT); decoder.onUnmappableCharacter(CodingErrorAction.REPORT); int trim_bytes = 0; CoderResult result; do{ buf.clear(); result = decoder.decode(ByteBuffer.wrap(array, 0, array.length - trim_bytes++), buf, true); }while(result.isError()); System.out.println(result + " : " + buf.flip());
288 名前:デフォルトの名無しさん [2008/07/16(水) 14:50:22 ] >>285 JAVAではintが基本だから32ビットの16進で書けばよかったということですか。 上位24ビットが0でなくてFFFFFFなのはなぜですか?
289 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 14:54:17 ] >>288 > JAVAではintが基本だから32ビットの16進で書けばよかったということですか。 真面目に取らんでいいよ。 > 上位24ビットが0でなくてFFFFFFなのはなぜですか? byte であらわせるのは -128〜127まで。 なので -128〜127 の定数値はキャストなしで byte に代入可能。 上位24ビットを 0 にすると 0〜255 になって、0x80 以上はキャストしないと代入できなくなる。
290 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 14:54:52 ] >>288 0~127 byte表現 0x00~0x7F → int表現 0x00000000~0x0000007F -128~-1 byte表現 0x80~0xFF → int表現 0xFFFFFF80~0xFFFFFFFF
291 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 15:46:42 ] >>281 J2EEは今はJava EEという名前 Java EEでさがせ Java SEの近くにある
292 名前:デフォルトの名無しさん [2008/07/16(水) 19:43:16 ] >>290 0x7Fまでなら0x000000を付けて、 0x80以上なら0xFFFFFFを付けるんですね。 16進を書くには、(byte)でキャストするか、場合分けの8ニブルの16進で書くか というどちらにしても、長いソースになってしまいますね。
293 名前:デフォルトの名無しさん [2008/07/16(水) 19:46:49 ] >>292 短くしたいだけなら>>286 で良いんじゃね?
294 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 22:08:52 ] CPUをいじめるのが好きなのでAckermann関数の値を求めるのを作ったんですが、以下のソースのを実行すると at Ackermann.ackermann(Ackermann.java:12) というメッセージが、ばーっと出てきます。どこがおかしいのでしょうか? public class Ackermann{ public static void main(String args[]){ long i=Long.parseLong(args[0]); long j=Long.parseLong(args[1]); System.out.println(ackermann(i,j)); } public static long ackermann(long m,long n){ if(m==0)return n+1; else{ if(n==0)return ackermann(m-1,1); else return ackermann(m-1,ackermann(m,n-1)); } } }
295 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 22:15:05 ] ごめんなさい 第1引数を4以上にすると出ます
296 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 22:20:39 ] コンパイル通らないはずだけど if elseの対応が合ってない
297 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 22:30:44 ] うちのではコンパイル通りました。 if(m==0)return n+1; else{ if(n==0)return ackermann(m-1,1); else return ackermann(m-1,ackermann(m,n-1)); } if elseの対応は上のような感じです。
298 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 22:31:07 ] 普通にスタックオーバーフローだわ・・
299 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 22:34:02 ] 再帰が深すぎてスタックオーバーフローを起こしてるんじゃ
300 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 22:39:18 ] なんかそうっぽいです・・・ 別の方法でCPUをいじめます・・・
301 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 00:11:50 ] >>292 >8ニブルの16進で書くか 何だこれ?
302 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 01:06:43 ] >>301 ニブルでぐぐってみれば?
303 名前:デフォルトの名無しさん [2008/07/17(木) 02:38:05 ] >>293 286を見落としていました。286を使ってみたいです。 でもコンパイルできませんでした。 JDK1.3では無理ですか? b(int...is) { が可変長の引数に対応するものに見えましたが。
304 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 09:50:26 ] >>262 ありがとうございます。 ではjavaレベルでストリームをパイプしないで実行はサポートされていないのですね。 ようはNULLリダイレクトしても、結局意味のないそのストリームは生成してしまう、ということですか? もちろん何もわたってこないのでreadする意味もないですが。
305 名前:デフォルトの名無しさん [2008/07/17(木) 10:07:11 ] >>293 1.3じゃ286は無理だな… さらに呼び出しコスト上がるがこんなんでどう? 1.3のJDKで試してないからエラー出るかもしれないが。 static byte[] b(String str) { StringTokenizer st = new StringTokenizer(str, ", \t"); byte[] bs = new byte[st.countTokens()]; for(int i=0; i<bs.length; i++) { bs[i] = Integer.decode(st.nextToken()).byteValue(); } return bs; } // b("0x01, 0x02, 0xFE, 0xFF"); // b(" 1, 2, 254, 255"): // b(" 1 2 -2 -1"): // 以上全てnew byte[]{ 1, 2, -2, -1 } と同じバイト配列を返す
306 名前:305 mailto:sage [2008/07/17(木) 10:09:05 ] アンカミス 293 → >>303
307 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 10:27:55 ] >>304 コマンドが出力してくる以上、ストリームには貯まるもんだ。 だから >>262 はまず「そのコマンドに"出力しない"オプションがあるなら それを指定してやれ」と言ってるのじゃないか。 そして、そんなオプションが無い、もしくは指定できない何か理由があるのなら、 シェルの機能を使ってnullデバイスにリダイレクトしとけ、と言ってるんだと思うぞ。 シェルも使えないのなら、>>261 が自分でやったように「ひたすら読み込んで捨てる」と いうnullストリームをjavaで作って食わせるしかないかもな。
308 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 10:47:46 ] >>304 process.getInputStream().close(); process.getErrorStream().close(); して黙らせるのじゃいかんのか?
309 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 12:02:59 ] hashcodeってオーバーライドしなくても、MAPのキーに使っても正しい値って取れますよね。 それはhashcode()で値が同じでも、最終的にequalsで判断するから、と考えてよろしいでしょうか?
310 名前:デフォルトの名無しさん [2008/07/17(木) 12:09:00 ] 近藤よしゆき著のJavaプログラマのためのアルゴリズムとデータ構造をお持ちの方に質問があります。 95〜96ページの待ち行列の出力サンプルで、 MyQueue[a b c] front=0 rear=3 aを取り出した bを取り出した MyQueue[c ] front=2 rear=3 dを入れた eを入れた cを取り出した MyQueue[d e ] front=3 rear=0 とあるのですが、 なぜ、rearは0になってしまったのでしょうか?
311 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 12:13:52 ] >>309 一般的には、ダメ。 equals()がtrueなのにhashCode()が違う値、の場合にうまく動かない。 hashCode()が常に同じ値を返したりすると、HashMapなどの効率がものす ごく悪くなる。
312 名前:デフォルトの名無しさん [2008/07/17(木) 12:44:26 ] お尋ねします。 現在JAVAでGUIを使った簡単なゲームを作っています。(具体的には、5目並べです) ゲーム自体は既にできあがって、きちんと動作もしているのですが、 どうも初心者なためクラスをどのように構成すればよいのかがよくわかりません。 いまのところ、windowクラスとpaintクラス、それとThinkクラスの3つになっています。 windowクラスはウィンドウ及びボタンなどのクラス、 paintクラスは盤上の勝敗判定等のほかpaintComponentメソッドを含む描画用のクラス、 Thinkクラスはコンピュータが次の手を決定する思考ルーチンのクラスです。 このようなゲームの場合、どういったクラスをいくつ定義するのがソースコードとして美しいのでしょうか? 今の状態はなんだかクラスごとの役割分担がごっちゃになっているような気がして・・・ どうすれば「オブジェクト指向」の概念がきちんと活かされていることになるでしょうか?
313 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 12:54:22 ] >>312 結城浩たんのJava言語で学ぶデザインパターン入門とか読んでみるとか。
314 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 13:16:06 ] >>310 その本は持っていないが、長さ5の配列でキューを実装している例では? front が読み口のインデックス、 rear が書き口のインデックスなのだろう。 4番まで書き込んだから、次は0番を再利用するのでは?
315 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 13:50:02 ] >>311 ということは、hasecode()とequals()をオーバーライドしなくても全然OKって事ですよね。 しかもデフォルトのhasecode()はアドレス値的なものが入るので、大抵がユニークになっています。 しかもデフォルトではequals()がtrueなら同じインスタンスのhashCode()なので、もちろん同じ値で問題なし。 そう考えると、この2つはオーバーライドしない方がいいのではと思っちゃいます。あくまでMAPのキーとして使うだけを考えていますが。
316 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 13:50:50 ] >>308 たぶんコマンド側がパイプエラーになると思います。
317 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 13:58:54 ] >>315 同じ値を持つ異なるインスタンス、というものがなければ、別に問題ない
318 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 14:10:27 ] >>315 >>317 の言うとおり。 たとえば、StringはhashCode()とequals()をきちんと定義しないといけないケース。
319 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 14:22:19 ] >>310 双方向キューじゃない?
320 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 14:31:48 ] >>318 , et al. そもそも、 > equals()がtrueなのにhashCode()が違う値 は実装の不備だろう >>319 普通のリングバッファに見えるけど?
321 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 14:35:53 ] >同じ値を持つ異なるインスタンス、というものがなければ、別に問題ない という前提ならequalsをoverrideする必要性さえない。 hashcodeはequalsがtrueであるなら同じ値を返さなくてはならない、 それを破るくらいならいつでも同じ値を返すほうがまだまし。
322 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 15:40:05 ] formatを使って仮名入力の文字列を綺麗に表示ってできますか?
323 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 17:38:48 ] まずやってみたらいいのに。 初心者であろうとなかろうと、試すことはできるだろ。
324 名前:デフォルトの名無しさん mailto:age [2008/07/17(木) 18:54:39 ] 質問失礼します。 log4jでログ出力していますが、それが何らかの異常で書き込まれなかった場合 対処をしたいと考えています。 ですが、Log.debugなどは異常の時スタックトレースは吐くものの、例外はthrow していないようで、IOException等が発生しても取得できません。 こういうときはどうするものなのでしょうか。
325 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 20:30:24 ] Servletで、ブログ作りたいんですが、DBに登録してあるユーザーIDをURLに下記のように載せて表示させるやり方教えてくれませんか? localhost/ ユーザーID
326 名前:デフォルトの名無しさん [2008/07/17(木) 20:56:39 ] 繧ェ化けます。よい方法はありませんか? ユニコード考案者はバ力かと。 アルファベットまで2バイトで扱うJAVA作った人はバ力かと。
327 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 21:10:31 ] >>326 バカじゃありません
328 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 21:20:24 ] >>326 化けるって文字コードとかどうしてる?
329 名前:325 mailto:sage [2008/07/17(木) 21:58:14 ] request.getPathInfo() で解決しましたw
330 名前:デフォルトの名無しさん [2008/07/17(木) 22:11:28 ] 来年入社する会社ではJAVAを使います 基本情報の国家資格は持っているのですが使った言語はCASLなのでJAVAは全くの素人です 本を買ってみようと思うのですがおすすめの本などがあれば教えてください
331 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 22:26:35 ] 人の書いたソースを読みまくるのが最良の教科書。
332 名前:デフォルトの名無しさん [2008/07/17(木) 22:35:40 ] >>310 これはリングバッファになってる p90の図を見ればわかるよ
333 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 23:43:44 ] Javaの云々よりもSQLとかHTML/CSSあたりやったほうが業務じゃ役に立つかも名
334 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 00:05:09 ] リングキューってやつか
335 名前:330 [2008/07/18(金) 00:52:23 ] 質問答えてくださった方ありがとうございます 今度企業の方に具体的に何すればよいのかよく聞いてきます
336 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 08:00:09 ] まぁやさしいJavaとか結城浩の本とかが定番かな・・ 基本はともかくインスタンスとか拡張とか出てきたときに分かりやすい本がいいよなぁ
337 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 15:08:43 ] java -cp の後のクラスパスに、他のマシンのパスからクラスをロードしたいのですが、いわゆるURLクラスロード?です。 どのようにクラスパスを設定すればよろしいでしょうか?