コンパイルできるが、数字入力後に進まない問題の解決方法は?

このQ&Aのポイント
  • Javaのソースコードをコンパイルする際に、正常にコンパイルできるが、数字入力後に進まない問題が発生します。
  • 解決策としては、プログラムの実行時に数字の入力待ちが発生していることが原因であるため、入力待ちを解除する必要があります。
  • 具体的には、入力待ちを解除するためにBufferedReaderクラスのreadLineメソッドで入力を受け付ける箇所を修正することで問題が解決します。
回答を見る
  • ベストアンサー

コンパイルはできるのに・・・・

import java.io.*; public class ex32 { public static void main(String[] args) throws Exception { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); int x = (new Integer(in.readLine())).intValue(); int y = (new Integer(in.readLine())).intValue(); while(x != y) { System.out.print("int x> "); System.out.print("int y> "); if(x > y) { x = x - y; } else{ y = y - x; } } System.out.println("GCM = " + x); } } このソースで、コンパイルとdouble x >の出力まではできるのですが、 そこで数字を入力してエンターを押すと、そこから進みません。 どう直したらいいでしょうか。

  • Java
  • 回答数2
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.2

一部順番が違うだけです。 import java.io.*; public class ex32 { public static void main(String[] args) throws Exception { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.print("int x> "); int x = (new Integer(in.readLine())).intValue(); System.out.print("int y> "); int y = (new Integer(in.readLine())).intValue(); while(x != y) { if(x > y) { x = x - y; } else{ y = y - x; } } System.out.println("GCM = " + x); } }

その他の回答 (1)

回答No.1

>double x >の出力 いや、それはどう考えても出ないだろう・・・ >そこで数字を入力してエンターを押すと、そこから進みません。 再現しません。正常動作しています。 (まぁ数字入力が必要なメッセージを出力して欲しいけど) =========================== C:\Data\Administrator\Oshiete_Goo\Q2998129>javac ex32.java C:\Data\Administrator\Oshiete_Goo\Q2998129>java ex32 8 12 int x> int y> int x> int y> GCM = 4 C:\Data\Administrator\Oshiete_Goo\Q2998129>java ex32 100 125 int x> int y> int x> int y> int x> int y> int x> int y> GCM = 25 ========== ちなみに数字を入力しないとき Exception in thread "main" java.lang.NumberFormatException: null at java.lang.Integer.parseInt(Unknown Source) at java.lang.Integer.<init>(Unknown Source) at ex32.main(ex32.java:6) という例外が発生する(正常動作)

関連するQ&A

  • このプログラムのどこがいけないかの指摘をお願いします!

    import java.io.*; public class ex32h_1{ public static void main(String args[]) throws Exception{ BufferedReader in=new BufferedReader(new InputStreamReader(System.in)); System.out.print("x="); int x=(new Integer(in.readLine())).intValue(); System.out.print("y="); int y=(new Integer(in.readLine())).intValue(); System.out.print("z="); int z=(new Integer(in.readLine())).intValue(); boolean result= (x*y*z==0) && ((x^2+y^2)!=0) && ((y^2+z^2)!=0) && ((x^2+z^2)!=0); System.out.println("0は一つ?;"+result); } } x,y,zに0が一つだけあるかどうかを調べるというものです。x=0,y=1,z=1(0,1,1)の組み合わせのときはなぜかfalseになってしまいます。他のとき(0,1,2)のときなどはきちんとtrueになります。 どこがいけないかわかるかたご指摘の程をお願いします。 (幅の都合上左よりですが実際のプログラムをきちんとスペースが入っています。)

    • ベストアンサー
    • Java
  • エラーの訂正でアドバイスください。

    javaプログラミング超初心者です import java.io.*; public class ex22b { public static void main(String[] arg) { System.out.print("x: "); int x = (new Integer (in.readLine())). intValue(); System.out.print("y: "); int y = (new Integer (in.readLine())). intValue(); int a; while (y > 0) { a = a + x; System.out.println("kekka = " + a); System.out.println("y = " + y); y = y - 1; } System.out.println("乗算結果は " + a); } } というソースを書いたら、コンパイルの際に シンボルを見つけられません シンボル:変数 in 場所  :ex22bのクラス int x = (new Integer (in.readLine())). intValue();            ^ int y = (new Integer (in.readLine())). intValue();            ^ というエラーが出ました。 どこをどう直したらいいのでしょうか。

    • ベストアンサー
    • Java
  • プログラムの組み合わせ方

    java初心者です。 2つのプログラムを組み合わせて1つのプログラムにしたいんですが、イマイチ分かりません。 このプログラムと、 import java.io.*; class Hello2 {  public static void main(String[] args) throws IOException {   System.out.println("名前を入力してください");   BufferedReader br = new BufferedReader(new InputStreamReader(System.in));   String str = br.readLine();   System.out.println(str + "さん、こんにちは!");  } } このプログラムを、 import java.io.*; class Sanbai{  public static void main(String[] args) throws IOException {   System.out.println("好きな数を入力してください");   BufferedReader br = new BufferedReader(new InputStreamReader(System.in));   String str = br.readLine();   int x;   x = Integer.parseInt(str);   System.out.println("あなたの入力した数:" + x);   System.out.println("その3倍の数:" + (x*3));  } } 組み合わせて1つのプログラムにするにはどうしたらいいですか?(>_<)

    • ベストアンサー
    • Java
  • 【初心者です】最大値の箇所

    import java.io.*; public class ex41b { public static void main(String[] args) throws Exception { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); int[] a = new int[100]; int count = 0; while(count < a.length) { System.out.print(count + "> "); int v = (new Integer(in.readLine())).intValue(); if(v == 0) break; a[count] = v; ++count; } int max = a[0]; for(int i = 1; i<a.length; i++) { if(a[i]>max) max = a[i]; } System.out.println("max: " + max); System.out.println("pos: " + ****); } } このソースで、最大値と最大値が何番目かを出力したいのですが、 最後の****に何を当てはめればいいのかが分かりません。 いくつかやってみたのですが、よく分かりませんでした。 よろしくお願いします。

    • ベストアンサー
    • Java
  • コンパイル時のエラーについて

    Java超初心者の者です。 下記のコードどこか間違っていますか? class Sample4 { public static void main(String args[]) throws IOException { System.out.println("いくつまでの合計を求めますか?"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int num = Integer.parseInt(str); int sum = 0; for(int i=1; i<=num; i++){ sum += i; } System.out.println("1から" + num + "までの合計は"      + sum + "です。"); } } テキスト通りに入力したつもりなのに何度確認して入力し直しても、 『'class'または'interface'がありません。』というエラーが 出てしまうのですが・・・ 色々ネットで検索して調べたのですが、分らなくて。

    • ベストアンサー
    • Java
  • 今勉強中のjavaで。わからないことがあります。

    import java.io.*; class Ireru { public static void main(String args[]) throws IOException{ System.out.println("あなたは何歳ですか?"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); int num =Integer.parseInt(str1); System.out.println("あなたは" + num +"歳です。"); } } ------------------------------- import java.io.*; class Ireru { public static void main(String args[]) throws IOException{ System.out.println("あなたは何歳ですか?"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); System.out.println("あなたは" + str1 +"歳です。"); } } なぜ下では悪いのですか?なぜnum をつかないといけないかがわかりません。正確には str1とnumの違いがわからなくて困っています。何が混乱の原因ですか?

    • ベストアンサー
    • Java
  • 値の渡し方

    こんにちわ。 Javaの勉強をしています。 キーボードから入力して、読み込むクラスで読み込んだ値を処理クラスに渡して演算させたくプログラムを作っています。 下にあるのがそうなのですが、値の渡し方がよくわかりません。 よろしければ、アドバイスをください。 //値の入力クラス import java.io.*; public class Main{ public static void main(String args[])throws IOException{ BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); int a = Integer.parseInt(input.readLine()); int b = Integer.parseInt(input.readLine()); } } ---------------------------------------------------------------- //処理クラス public class Enzan{ public static int Wa(int x, int y){ int wa = x + y; return wa; }      public static int Wa(int x, int y){ int sa = x - y; return sa; } }

    • ベストアンサー
    • Java
  • Java int sum = 0は必要ですか?

    やさしいJavaという本を買ったのですが、良くわからない箇所がありました。 --------------省略----------------- class Sample6 { public static void main(String[] args) throws IOException { System.out.println("整数を3つ入力してください。") ; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)) ; String str1 = br.readLine() ; String str2 = br.readLine() ; String str3 = br.readLine() ; int sum = 0 ; sum += Integer.parseInt(str1) ; -------------------略----------------- int sum = 0 ; とありますが、0と設定しておく必要はありますか? 無いとまずいですか? いきなりこのコードが出てきたと思うのですが どこかに書いてましたっけ?

    • ベストアンサー
    • Java
  • 例外処理throws

    例外処理ではthrowsかtry~catchを使いますよね。 で、ほとんどの場合はtry~catchを使うようで、ほとんどthrowsを使った例しかなく(まあ、throwsでの例外処理はプログラムが停止してしまうので推奨できないでしょうが)よくわから中区なってしまったので教えてほしいです class Input{ int set(String Toi)throws IOException{ System.out.println(Toi); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int a = Integer.parseInt(str); return a; } } のようにInputクラスを用いて外部からこれを使うために Input input = new Input(); x1 = input.set("x座標を入力"); とすると、「キャッチかスロー宣言をしろ」と怒られてしまいました。(コンパイルエラー) この場合どうすればいいでしょうか?

    • ベストアンサー
    • Java
  • 【初心者です】javaで平均値を求めたいのですが...

    import java.io.*; public class ex31a { public static void main(String[] args) throws Exception { BufferedReader in = new BufferedReader(new InputStreamReader (System.in)); double sum = 0.0; while(true) { System.out.print("double> "); double x = (new Double(in.readLine())).doubleValue(); if(x == 0.0) { break; } sum = sum + x; } System.out.println("avarage = " + (sum % n)); } } 基本形はこのままで、最後の部分のSystem.out.printlnの部分を直したらいいんでしょうか。

    • ベストアンサー
    • Java

専門家に質問してみよう