0

2つのintを比較するプログラムを作成している場合、ユーザーが疲れて終了したいまでプログラムを実行します。そうするために、ユーザーはqを入力して終了します。ユーザーが入力した2つの文字と、「q」が割り当てられた2番目の文字を比較するwhileループを作成したいと思います。しかし、qと入力すると、プログラムがクラッシュします。それはなぜで、どうすれば修正できますか。

import java.io.IOException;
import java.util.Scanner;


public class numComp {

public static void main(String[] args) {

    Scanner in = new Scanner(System.in);
    int a, b; 
    char key  = 'q';
    System.out.println("enter 'q' to quit program and any other key to start it");

    char btn = 0;
    try {
        btn = (char) System.in.read();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    while (btn != key){
    System.out.println("enter two numbers to compare them");
    System.out.println("please enter first number:");
    a = in.nextInt();
    System.out.println("please enter second number:");
    b = in.nextInt();

    if (a==b)
        System.out.println("the numbers you entered are the same");
    else if (a>b)
        System.out.println("your first number is greater then your second number by "+ (a-b));
    else
        System.out.println("your first number is smaller then your second number by "+ (b-a));
    }

}

}
4

4 に答える 4

1

次のようにループする必要があります。

try{  
    btn = (char) System.in.read();
    while (btn != key){
    System.out.println("enter two numbers to compare them");
    System.out.println("please enter first number:");
    a = in.nextInt();
    System.out.println("please enter second number:");
    b = in.nextInt();

   if (a==b)
      System.out.println("the numbers you entered are the same");
  else if (a>b)
      System.out.println("your first number is greater then your second number by "+ (a-b));
  else
     System.out.println("your first number is smaller then your second number by "+ (b-a));

   System.out.println("enter 'q' to quit program and any other key to start it again");
   btn = (char) System.in.read();
  } // END OF WHILE LOOP
} catch (IOException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
}

whileまた、ループが終了する直前に、ユーザーからの入力を再度取得する必要があることに注意してください。

于 2013-02-17T10:23:29.687 に答える
1

これは、while ループで整数をスキャンしているためですが、「q」は文字です。while ループbtn を読む機会をユーザーに与える必要があります。

于 2013-02-17T10:24:06.897 に答える
0

btnチェックするときに変更する必要があります。ループの前に一度だけ設定し、で更新することはありません。

例外は

a = in.nextInt();

intを入力するときに読み込もうとしますchar

ループの最後に次のようなものを追加する必要があります。

btn = (char) System.in.read();
于 2013-02-17T10:23:09.280 に答える
0

これが単純化されたプログラムです。

public static void main(String[] args){
    // Scanner
    Scanner s = new Scanner(System.in);
    // Enter the program
    System.out.println("enter 'q' to quit program and any other key to start it");
    int a, b;
    try {
        char key;
        while ((key = s.next().charAt(0))!='q'){
            System.out.println("enter two numbers to compare them");
            System.out.println("please enter first number:");
            a = s.nextInt();
            System.out.println("please enter second number:");
            b = s.nextInt();

            if (a==b)
                System.out.println("the numbers you entered are the same");
            else if (a>b)
                System.out.println("your first number is greater then your second number by "+ (a-b));
            else
                System.out.println("your first number is smaller then your second number by "+ (b-a));
        }
    } catch (Exception e){ e.printStackTrace(); }
}
于 2013-02-17T10:35:11.737 に答える