1 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 15:21:29 ] 過去ログ、関連スレッド、よくある質問とその回答、 質問をする前に、貴方が見なければならないサイトについての情報は、 下の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質問・相談スレッド101【大歓迎】 pc11.2ch.net/test/read.cgi/tech/1177938653/ /* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。 質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */ また、当スレで質問をするかたは、回答をもらえたときに、 wikiの更新をして頂ければ、忝なく存じます。 JavaScript, Ajaxの質問は、ここでは受け付けていません。 Web製作板をご利用ください。pc10.2ch.net/hp/ 次スレは>>980 あたりで。
266 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 19:56:17 ] >>265 類似とまではいかないかも知れないけど、似ているところはある。 というのもFlashというかActionScriptがオブジェクト指向っぽく書かれている。
267 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 21:10:36 ] ネットで検索しながらiBatisとHSQLDBで簡単なアプリ(非WEB)を作ってます。 そこで質問なのですが、HSQLDBスタンドアロンモードを終了させる時はSQLで"SHUTDOWN"と打て、 とあるようなのですが、ibatisからSHUTDOWNを流そうとするとエラーになってしまいます。 どうやったら終了させられるのでしょうか?
268 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 22:42:20 ] swingでタイピングソフトを作ってるのですが、キーボードの取得方法がわかりません。 KeyListenrを使って、できるのでしょうか? ActionListenerならある程度わかるのですが。
269 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 22:50:39 ] 今やってるプロジェクト(オープン系)で「seasar」っての使ってるんですが なんか、そのプロジェクトのリーダーが 全てのビジネスオブジェクトとDAOをシングルトンで 管理するように設定したって言ってました。 俺としてはありえないと思ったんですが、 これって正しい方法なんでしょうか? 俺の考えが間違ってんですかね。
270 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 23:01:32 ] >>269 漏れもありえないと思う
271 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 23:20:47 ] >>258 =264 > スレッドを1度破棄してもう1度作るとか、そんな恐ろしいことしなきゃ無理なんでしょうか? スレッドをsuspendで止めるほうがよっぽど恐ろしい。 スレッドの状態管理オブジェクト作ってwait/notifyで止めたり状態変更したりしましょう。
272 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 23:34:42 ] getGraphicsメソッドについて質問があります。 public class Test extends Applet{ ... } class Draw extends Canvas{ ... } という二つのクラスが有り、Drawの中でダブルバッファを行おうとしているのですが、 Graphics gBuf , Image imgBufをメンバ、initメソッド内にて imgBuf = createImage(300,300); gBuf = imgBuf.getGraphics();としたのですが、imgBufがnullとなりグラフィックコンテキストが取得できません。 しかしinit()を呼び出すタイミングによってはきちんと取得できていたりでどうにも安定しません。 この辺りを詳しくご教授願えないでしょうか。宜しくお願いいたします。
273 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 23:36:45 ] >>270 やっぱりそう思いますか? 周りにいる同じプロジェクトの人たちに聞いても 誰も疑問を抱いて無いんですよね。 何がおかしいの?って感じで。 自分の考えが間違ってるのかって悩んでたんで、 安心しました。 ありがとうございます。 これから数ヶ月そんなプロジェクトに 関わんなきゃいけないと思うと気が重いっス。
274 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 23:58:14 ] >>272 paint の中で createImage するしかない。 コードが見辛くなるけど初回の gBuf == null のときとそうでないときで処理をわける。
275 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 00:28:06 ] >>274 回答ありがとうございます。 paintの中でしか生成出来ないんですか…わかりました。やってみます。
276 名前:デフォルトの名無しさん [2007/06/09(土) 00:35:20 ] リアルタイムJAVAってどうやったら使えるの?
277 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 00:43:25 ] >>276 質問の意味が良くわからん。
278 名前:デフォルトの名無しさん [2007/06/09(土) 00:55:31 ] 普通のVMとは違う特殊なVMやリアルタイム用のAPIとかあるの? です。 ないかな。
279 名前:デフォルトの名無しさん [2007/06/09(土) 00:59:22 ] >>278 ねーよ、バカw 詩ねwww
280 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 01:00:43 ] >>278 ttp://jcp.org/en/jsr/ JSR1な
281 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 01:13:20 ] Javaなんかで文字化けしやすい文字とかってあるのでしょうか?
282 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 01:20:44 ] >>281 どういう状況を想定してるの?
283 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 01:34:14 ] いや何となく
284 名前:デフォルトの名無しさん [2007/06/09(土) 02:08:51 ] 窓の手で、「右クリックでコマンドプロンプトを可能」にしたのですが困っております。 これで現れるコマンドプロンプトでは、コンパイルが出来ません。 「スタート」→「アクセサリ」→「コマンドプロンプト」のものでは出来ます。 何か対処法はありますでしょうか。
285 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 03:06:36 ] 窓の手の作者に聞け 「右クリックでコマンドプロンプトを可能」にした時に出るコマンドプロンプトに環境変数を設定する方法について
286 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 06:33:51 ] >>264 つーか、スレッド別に作っても、結局UIスレッドに委譲しなきゃダメじゃん
287 名前:デフォルトの名無しさん [2007/06/09(土) 06:37:11 ] 「アプリケーションソフトウェア」ってのを作りたいんですが、 そもそもプログラム以前に、この四角い枠を出現させる方法が分かりません。 「このデータはアプリケーションである」と宣言する方法みたいな、 そういうことを教えてください。
288 名前:デフォルトの名無しさん [2007/06/09(土) 08:55:17 ] >>287 そういうことがやりたいならC#のほうがいいな。
289 名前:デフォルトの名無しさん [2007/06/09(土) 09:00:19 ] >>287 JFrame JDialog setVisible(true);
290 名前:デフォルトの名無しさん [2007/06/09(土) 09:17:10 ] ヒントになりました。どうもありがとうございました。 会社がJAVAを主力にしていて、その勉強の一貫でもあるので、 ここはJAVAでやってみます。
291 名前:デフォルトの名無しさん [2007/06/09(土) 11:38:15 ] こんなことをしたいんだが、方法はありますか? /** * @param vo ヴァリューオブジェ * @param memberName メンバ引数名 public void (Object vo, String menberName) { //voのmemberNameに対応するgetterを呼び出す }
292 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 11:40:40 ] リフレクション
293 名前:デフォルトの名無しさん [2007/06/09(土) 13:27:36 ] javaのオンラインリファレンスを見ても、 目的のソフトを作るにはどのクラスを使えばいいのか全く分からないのですが、 どうすればそういうのが分かってくる様になるんでしょうか? オライリーのリファレンスマニュアルとかを見ればいいんですかね?
294 名前:デフォルトの名無しさん [2007/06/09(土) 13:30:22 ] インターフェースを実装する事って、 そのインターフェースの中にあるメソッドが必ず使われるという担保だけで ちゃんとメソッドが組み込まれていれば必ずしも必要ではない? 上記の場合、クラスにメソッドがあるけど、インターフェースが実装されてない場合 コーディングルール的な事をのぞけば、単純に動かすということだけであれば わざわざあとで実装する必要性はない?
295 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 13:52:35 ] >>294 インターフェイスは、 メソッドが使われることを担保するのではなく、 メソッドが存在することを担保するものじゃないのか? 同じシグニチャのメソッドが存在してもインターフェイスを実装していない場合、 多態性の恩恵に預かれないんじゃないか? 複数のクラスをインターフェイスで総称できなくなる。
296 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 14:03:52 ] >>295 >メソッドが存在することを担保するものじゃないのか? 失礼しました その通りです。
297 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 14:03:59 ] >>293 たくさんサンプルを読め サンプルには何を実現しようとしているか目的が説明されているはずだ いろいろ読んでるうちにそれぞれのクラスはどういう目的でどういう使い方をするのか分かってくる あとは自分の目的に合わせて使う応用力の問題
298 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 14:27:27 ] 質問させてください パターンマッチで末尾にバックスラッシュ(もしくは円記号)があるかどうかを調べたいんです。 そこでサンプルを作るのですが String buf = "\\"; String pattern = "\\\\$"; System.out.println(buf.matcdes(pattern) ? "OK" : "NG"); は"OK"になるのに String buf = "a\\"; String pattern = "\\\\$"; System.out.println(buf.matcdes(pattern) ? "OK" : "NG"); は"NG"になってしまいます。 なにか勘違いしてるのでしょうか。 環境はWinXPで1.5.0_10-b03です。
299 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 14:35:07 ] すいません。matcdesをmatchesと読み替えてください。
300 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 14:36:34 ] String#matcdes(String pattern)は文字列全体がpatternにマッチするかどうか
301 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 14:38:35 ] あ、おれもまんまコピーしちまったwww String#matchesね
302 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 14:41:53 ] その用途に限るなら、buf.endsWith("\\")でいいんじゃない?
303 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 14:52:41 ] カタコトで「マッチデース」とか言ってる検索係の外人を想像した。
304 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 15:38:54 ] 文字列を、指定した幅内に描画する方法はありますか? 例えば、あるFontで"Sample"という文字列の幅が100だとしますと、この文字列の幅を80に縮小して、 Graphics g に描画する方法を探しています。 描画する文字列の幅は、以下のようにすることで得ることができました。 g.setFont(new Font("Serif", Font.BOLD, 30)); FontMetrics fm = g.getFontMetrics(); int size = fm.stringWidth("Sample") 実際に文字列を描画するには、Graphics#drawStringを使用すると思うのですが、 このメソッドには文字列の幅の指定ができないようです。 描画する文字列の幅を指定する方法がありましたら、ご教授お願いします。
305 名前:デフォルトの名無しさん [2007/06/09(土) 16:03:30 ] byte値を0xFFの形でsysoutしたいのですが、 どうすればいいのでしょうか? 初歩的な質問ですいません。
306 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 16:06:30 ] >>304 int x0 = 20, y0 = 20; double requestWidth = 100; String text = "ABC"; Graphics2D g2 = (Graphics2D)g; FontMetrics fm = g.getFontMetrics(); double m = requestWidth / fm.stringWidth(text); g2.translate(x0, y0); g2.scale(m, 1); g2.translate(-x0, -y0); g.drawString(text, x0, y0);
307 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 16:11:12 ] >>305 byte b = -1; System.out.printf("0x%X%n", b);
308 名前:289 mailto:sage' [2007/06/09(土) 16:12:04 ] >300 ありがとうございます。納得いきました。
309 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 16:16:13 ] >>308 末尾の文字列が\かどうかなら>>302 でいいと思う。 もし、任意のパターンが文字列中に含まれるかどうかを知りたいなら、 Matcher#find()を使って判定するとかかな。
310 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 16:21:53 ] >>307 ありがとうございます。
311 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 16:31:13 ] >>306 のstringWidthでは描画コンテクストを無視するからgetStringBoundsを使った方が正確かもね
312 名前:デフォルトの名無しさん [2007/06/09(土) 16:36:29 ] JAVAからwindowsのバッチファイルを引数を渡して起動したいのですが、 そういった操作をするクラスは用意されているのでしょうか? Runtimeというのを見つけたのですが、これは別物でしょうか? ちょっとコーディング試してみたのですが、ぬるぽが帰ってきます。 文字列入出力なら分かるのですが・・・。
313 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 16:39:22 ] すみません。 本を参考にjavaを勉強してますが、mybeansを使うところで、 1行目でエラーが出てサーブレットをコンパイルできません。 import mybeans;でコンパイルすると '.' (ドット)がないと出ます。 ただ、本にはimport mybeans;と記入するように書いてありますが、 付録のCDに入ってる手本のソースファイルにはimport mybeans.*; と書いてあったので、そのように記入してコンパイルすると、 今度は、パッケケージmybeansは存在しませんと出ます。 で、サーブレットをコンパイルする際の、ディレクトリの位置の問題かと思って、 mybeansパッケージと同じディレクトリでコンパイルすると、 1行目のimport mybeans;のエラーはでなくなりましたが、 2行目3行目のimport javax.servlet.*;とimport javax.servlet.http.*; のクラスが存在しないと出てしまいます。 開発環境はJDKの1.6.0.1とtomcat 5.5です。 mybeansを使うにはnetbeansなどの他の環境が必要なんですか?
314 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 16:43:46 ] package mybeans;とちゃうの?
315 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 16:56:48 ] >>312 public static void main(String[] args) throws Exception { Process p = new ProcessBuilder("hoge.bat", "moge").start(); java.io.Reader in = new java.io.InputStreamReader(p.getInputStream()); while (true) { int c = in.read(); if (c == -1) break; System.out.print((char)c); } in.close(); } hoge.bat echo %1
316 名前:310 mailto:sage [2007/06/09(土) 17:00:03 ] >>307 すいません。そのメソッドないです。 もしかして1.5じゃないとダメですか?
317 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 17:01:11 ] >>314 mybenasのパッケージ(ディレクトリ)に入れてある、 コンポーネントの方のjavaファイルの1行目はpackage mybeans;で、 試しに単独でコンパイルしたらコンパイルできました。 でもサーブレットの方のjavaファイルの1行目がimport mybeans;になってて、 >>313 のような状況です。
318 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 17:06:31 ] >>316 printf は .5以降じゃないとだめ。
319 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 17:23:09 ] >>316 実行環境のバージョンくらい最初から書け String s = Integer.toHexString(b).toUpperCase(); System.out.println("0x" + s.substring(Math.max(s.length() - 2, 0)));
320 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 17:34:56 ] >>305 final String hexdigit = "0123456789ABCDEF"; System.out.println("0x" + hexdigit.charAt((b >> 4)&0x0F) + hexdigit.charAt(b & 0x0F));
321 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 17:35:09 ] >>316 そう。printf()は1.5以降。 int i = (int)b; if (i < 0) i += 256; String s = Integer.toHexString(i).toUpperCase(); if (s.length() == 1) { s = "0x0" + s; } else { // s.length() == 2 s = "0x" + s; } System.out.println(s); あたりをどうぞ。
322 名前:デフォルトの名無しさん [2007/06/09(土) 17:55:03 ] JavaでWindowsのペイントのようなソフトを作りたいのですが、 参考になるお勧めの参考書・サイトありますか?
323 名前:310 mailto:sage [2007/06/09(土) 18:22:49 ] >>319 >>321 できました。ありがとうございます。
324 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 18:37:42 ] >>322 「お絵かき java」で検索
325 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 18:50:32 ] >>313 書のタイトルとページ数を書け。 もっているヤシがいるかもしれない。 その上でソースをあげてくれよ
326 名前:312 [2007/06/09(土) 19:00:26 ] >>315 ありがとうございます! エラーが5やら2で帰ってきて(作業ディレクトリ?)作業が難航していますが そのソースをモトに進めたいと思います!
327 名前:デフォルトの名無しさん [2007/06/09(土) 20:06:36 ] たぶん FAQ だと思うのですが、 整数を16進数表記に変換するには Integer.toHexString(i); とか Integer.toString(i, 16); とか があるとのことで、 byte[] b = {0x40, 0x24, 0x31, 0x08}; for(int i = 0; i < b.length; b++) System.out.print(Integer.toHexString(b[i] & 0x0FF)); とすると、 4024318 になってしまって 0 が抜けてしまいます。 CharacterEncoder ce = new HexDumpEncoder(); System.out.print(ce.encode(i)); も試してみたのですが、こちらは余計なものが付いてしまいます。 なんかすっきりした方法はあるのでしょうか?
328 名前:デフォルトの名無しさん [2007/06/09(土) 20:13:44 ] for(int i = 0; i < b.length; i++) System.out.print((b[i] < 0x10 ? "0" : "") + Integer.toHexString(b[i] & 0x0FF));
329 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 20:20:20 ] あ、byte か。 for(int i = 0; i < b.length; i++) System.out.print(((b[i] & 0x0FF) < 0x10 ? "0" : "") + Integer.toHexString(b[i] & 0x0FF));
330 名前:デフォルトの名無しさん [2007/06/09(土) 20:21:31 ] >>328 さっそくありがとうございます!! でもなんか昔の BASIC のコード見てるみたいでぜんぜんすっきりしないんですけど
331 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 20:44:45 ] System.out.print(Integer.toHexString(b[i] & 0x0FF)); を System.out.printf("%02X", b[i]); でだめ?
332 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:04:34 ] >>331 327じゃないけど sprintfみたいな機能ならあるとうれしい
333 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:18:48 ] >>328 =329 Integer.toHexString(b[i] | 0xffffff00).substring(6) とか。
334 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:23:06 ] せっかくPrintStreamにprintfが付いたのに PrintStreamがOutputStreamだからStringに持って来れん これだからJavaは使えん糞だと言われるんだよなぁ
335 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:38:25 ] >>334 String.formatメソッドとかFormatterクラスをよく調べてみたことある?
336 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:51:55 ] PipedOutputStream po = new PipedOutputStream(); PipedInputStream pi = new PipedInputStream(po); PrintStream ps = new PrintStream(po); for(int i = 0; i < b.length; i++) ps.printf("%02X", b[i]); byte[] bo = new byte[100]; int len = pi.read(bo, 0, 99); String s = new String(bo, 0, len); System.out.println(s);
337 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:55:55 ] すみません。HelloWorldのクラス化でいきなりもうダメぽです。 ↓のようなプログラムを書いたのですが、printlnの("の部分がコンパイル通りません。 なんかIDがありませんと言われてしまいます。何故でしょうか?意味が・・・ public class UserInput { System.out.println("Hello World"); } public class MyJavaTest { public static void main(String args[]) { UserInput(); } }
338 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 22:00:36 ] >>336 byte[100] ってなんだよw PipedOutputStream po = new PipedOutputStream(); PipedInputStream pi = new PipedInputStream(po); PrintStream ps = new PrintStream(po); for(int i = 0; i < b.length; i++) ps.printf("%02X", b[i]); ps.printf("\n"); BufferedReader br = new BufferedReader(new InputStreamReader(pi)); System.out.println(br.readLine());
339 名前:327 [2007/06/09(土) 22:05:07 ] >>335 できました! String s = ""; for(int i = 0; i < b.length; i++) s += String.format("%02X", b[i]); System.out.println(s); 激しくありがとうございました!!!
340 名前:デフォルトの名無しさん [2007/06/09(土) 22:12:24 ] なんだか予想以上にメモリを食うのですが、 staticで作った変数はインスタンスを生成するごとに、 メモリ食うってことはないですよね? インスタンスへのポインタ?みたいなものは、 何バイトくらいメモリ食うのでしょうか?
341 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 22:21:40 ] 環境依存では
342 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 23:03:43 ] >>340 オブジェクトヘッダはVM依存だね。
343 名前:313 mailto:sage [2007/06/09(土) 23:09:51 ] >>325 レスありがとうございます。 色々やってたら無事コンパイルできました。 1行目も本に載ってたimport mybeans;のままでできました。 クラスパスなども修正したので、結局何が原因だったのかよく分かりませんが、 やはりサーブレットをコンパイルする場所(ディレクトリ)が問題だったようです。 因みに本は高橋麻奈さんのやさしいJava活用編第2版で、 問題の箇所はレッスン7のサンプル6でした。 お陰さまで助かりましたありがとうございました。 お騒がせして申し訳ありませんでした。 失礼しましたm(_ _)m
344 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 23:44:57 ] >>337 プログラム勉強するの辞めたほうがいいと思う。 どういう本で勉強しているのか、どういう授業を受けているのかは知らないけど、人の話も聞いていないし理解しようともしてないでしょw 何故か? クラスに定義できるのは、メソッドと変数だけだから。 で、命令文(ステートメント)はメソッド(コンストラクタを含む)にしか記述できない。
345 名前:312 [2007/06/09(土) 23:52:59 ] JAVAからwindowsのバッチファイルを引数を渡して起動の質問をした者です。 ProcessBuilderから引数を渡してバッチを起動するところは成功しました。 (環境変数のPATHに起動したいバッチのパスを入れた) しかし、バッチファイルの途中で処理が止まって、エラーも出ずに処理が止まってしまいます。 具体的に、バッチファイルの中でLhacaを使ってファイルを解凍をしている作業があるのですが、そこで止まってしまうようです。(getInputStream()で確認) Lhacaも環境変数に入ってますし、コマンドラインから単体で実行した時は問題なく動くのですが・・・。 偉い方、ご教授願いますm(_ _)m
346 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 23:53:52 ] >>337 クラスじゃなくてクラスのなかにあるメソッドを呼ばないとダメ public class UserInput { public void sayHello(){ System.out.println("Hello World"); } public void sayAny( String text ){ System.out.println( text ); } } public class MyJavaTest { public static void main(String args[]) { UserInput userInput = new UserInput(); userInput.sayHello(); userInput.sayAny( "aaa" ); userInput.sayAny( "zzz" ); } }
347 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 23:57:19 ] >>346 教育している側から言えば、出題の意図はコンストラクタに記述、だと思う。 クラスの理解は、コンストラクタ⇒変数⇒メソッドかな。 メソッドの引数(特に参照型)は最初は教えちゃダメダメ
348 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 00:03:58 ] >>347 ごめん。>>344 と>>337 だけ読んでレスした。 もっと前からやりとりがあったんかな? 少し上のほう読んでみたけど確認できなかった。
349 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 00:08:56 ] >>348 いや、単発だから回答としては問題ないと思うよ。 ただ、そう書いても>>337 は理解できないと思うが・・・ ここは質問・相談スレであって丸投げじゃないからと、言い過ぎた。 すみません。
350 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 00:09:28 ] >>345 Lhacaを入れていないから分からないけど、Lhacaが何か入力を求める場面とかない? もしくは解凍ファイルを正しく出せる等、Lhacaの出力先は確保されてる? どういうところで実行が止まっているのか状況が分からないから何とも言い様が無い。 > コマンドラインから単体で実行した時 っていうのは、Lhacaを単体で実行?バッチファイルを実行?
351 名前:345 mailto:sage [2007/06/10(日) 00:25:31 ] 説明が不足していました。 > コマンドラインから単体で実行した時 これは、Lhacaでの解凍を組み込んだバッチファイルでの実行の事です。 具体的に、以下のようなコマンドを発行しています。 lhaca "C:\Program Files\eclipse\workspace\aaa\bbb\ccc.lzh" バッチファイルの実行では、自分が指定したディレクトリに解凍されたファイルが想定通り出力されます。 よろしくお願いします。
352 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 00:38:06 ] >>345 なんだっけな、昔似たようなことで嵌ったような・・・ バッチファイルを実行させるのは無理とかそんな結論だった気もするけど、ちょっと覚えてないわ。 バッチファイルをCあたりで1個のexeにして解決したと思う。
353 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 00:38:28 ] >>351 止まってしまう、というのは異常終了するということ? フリーズするということ? あと、エラーも出ずに、というけど、標準エラー出力はgetErrorStreamから取らないと。 まあ、標準出力と標準エラー出力のどちらに出すかはプログラム次第なんだけど。 エラーを出す前に固まったら関係ないしね。 プロセスが使用する作業ディレクトリとか環境変数とかは、 ProcessBuilderでstartする前に、ProcessBuilderのメソッドで設定することができるので、 バッチファイル単体で実行した時と同じような環境を整えてやってみて。
354 名前:デフォルトの名無しさん [2007/06/10(日) 01:00:30 ] 本の通りにやったのですがエラーが出てしまいます。 floatをdoubleに変えると問題ないのですが、floatは使えないんでしょうか。 精度が落ちている可能性 検出値: double 期待値: float a = 2.0; エラー 1個 //Exercise.java class Exercise { public static void main(String args[]) { float a; a = 2.0; System.out.println("変数aの値は" + a + "です"); } }
355 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 01:04:22 ] 情報処理技術者試験向けのJAVA言語の必勝勉強方法とかあったら教えてください^^
356 名前:345 mailto:sage [2007/06/10(日) 01:12:03 ] >>352 cでそんなことも出来るんですね! 難しそうですね〜・・・ >>353 getErrorStreamを組み込んでみましたが、何も出ていないようです。 Process p = new ProcessBuilder("wgetdata.bat","2006","06","06","06").start(); InputStream estream = p.getErrorStream(); InputStream stream = p.getInputStream(); while (true) { int d = estream.read(); if (d == -1) { estream.close(); break; } System.out.print((char)d); } while (true) { int c = stream.read(); if (c == -1) { stream.close(); break; } System.out.print((char)c); } これだと何もエクリプスのコンソールには出ませんでした。 getInputStreamを先に取り出すようにすると、バッチの途中までが出力されます。 バッチの途中でフリーズしているようです。 作業ディレクトリ、環境変数の設定はしていないので、明日あたり取り組んでみたいと思います。
357 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 01:29:56 ] >>354 なんて本? Javaでは、「2.0」のように小数点を数値リテラル(定数)として記述した場合、doubleとして扱われるのが仕様。 なので、doubleをfloatに変換していると見なされコンパイラが警告を出す。 型を指定して小数を書く場合、2.0F, 2.0Dと後ろに型を現す識別子を記述すること。 同じように12桁ほどの整数だとintと見なされlongにいれられない。 この場合はLを後ろにつける。 f,d,l など小文字でもOKだが、lと1が見分けつくにくいので大文字推奨。
358 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 01:36:09 ] >>357 thx 世界でいちばん簡単なJava
359 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 01:37:27 ] >>357 おおお2.0Fとしたらいけた ありがたや〜
360 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 01:40:32 ] >>358 その本、地雷の中の地雷。 やさしいJavaが良書に思えるほど。
361 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 01:42:45 ] >>360 そうなのか・・・ わざわざ買いなおしたのに・・・
362 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 01:44:16 ] >>354 a=2.0f; っていうかその本は捨てたほうがいいかも。 ずっと前にも2chスレに同じような質問があった気がする。 うわー。教えてgoo!とかにもあるなあ。 oshiete1.goo.ne.jp/kotaeru.php3?q=2153924 www.temptech.co.jp/others/java_qa/2020.html その本ってもしかして 世界でいちばん簡単なJava の e 本Java の基本と考え方がわかる本 2003年6月1日 第1版第1刷発行 著者 堀江幸生 発行 株式会社秀和システム (ISBN4-7980-0533-9 C3055) www.amazon.co.jp/dp/4798005339/ じゃねえか? pc8.2ch.net/test/read.cgi/tech/1161492130/964-981 改訂されてないみたいだね。
363 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 01:46:35 ] >>362 あああゴミなのかこの本 昨日からやる気出して取り組んでるのにヽ(`Д´)ノ 研究室の金だからいいけどさ・・・
364 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 01:54:41 ] >>362 てかgooではない方のQ&Aも間違ってるじゃねーかw
365 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 01:57:00 ] >>356 lhasaとかtarだと問題なく処理されて正常終了するなあ。 Lhaca自体の問題なのか、実行環境の問題なのかね。 ところで、名前からみてwgetで取ってきたlzhファイルを解凍する処理なのかな? zipならwgetの処理からzipの解凍までjavaの標準APIで書けるけど、 lzhだと書庫操作用のライブラリを探すなり作るなりして、全部javaで書いてしまうとか。 Process p = new ProcessBuilder("moge.bat", "hoge.lzh", "hoge.taz").start(); java.io.Reader in = new java.io.InputStreamReader(p.getInputStream()); while (true) { int c = in.read(); if (c == -1) break; System.out.print((char)c); } in.close(); moge.bat echo %1 %2 "C:\Program Files\Lhasa\Lhasa.exe" %1 tar xfzv %2
366 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 01:58:11 ] >>364 たしかにw なんだかなー