4

だから私はJavaで簡単な電卓を作ろうとしていますが、どの操作の入力を取得するのか分かりません。プログラムは 2 つの番号を要求し、次に演算子を要求します。操作タイプに到達するまで実行すると、すべて正常に動作します。コンパイラはそれをスキップするだけで、何も入力することさえできません。手がかりはありますか?

Scanner keyboard = new Scanner(System.in);

double x;
double y;
double sum =0;
double minus =0;
double times =0;
double divide =0;
double nCr =0;
String Op;

System.out.print("X: ");
x = keyboard.nextDouble();
System.out.print("Y: ");
y = keyboard.nextDouble();
System.out.print("Op: ");
Op = keyboard.nextLine();
4

3 に答える 3

2

試す:

System.out.print("X: ");
x = Double.parseDouble(keyboard.nextLine());
System.out.print("Y: ");
y = Double.parseDouble(keyboard.nextLine());
System.out.print("Op: ");
op = keyboard.nextLine();

これにより、入力した数値が解析されDouble、キャリッジ リターンが読み取られます。

エラー制御が必要な場合 (ユーザーが数値ではなく文字列を入力した場合):

Boolean check = true;

do
{
    try
    {
        //The code to read numbers
    }
    catch(InputMismatchException e)
    {
        System.err.println("Please enter a number!");
        check = false;
    }
}
while(check == false)
于 2013-05-27T23:24:49.793 に答える
1

それ以外の

Op = keyboard.nextLine();

使ってみて

Op = keyboard.next();

nextLine(); のように見えます。メソッドを nextInt()、nextDouble() などのメソッドで呼び出すと問題が発生します。

観察: nextLine() が単独で呼び出された場合、これは起こりません。

于 2013-05-29T03:48:51.093 に答える
0

基本的にnextDoubleは改行を認識しません。nextLineafter eachを使用しますnextDouble

于 2013-05-27T23:22:11.707 に答える