0

だから私は少し前に電卓を作った、

今、私はいくつかのものをチャンスにしようとしています.3つのスキャナーを使用する代わりに、1つだけを使用する必要がありますが、実際には方法がわかりません:S

コードの最後で、ユーザーに J を続行し、N を終了するように要求します。それを Do while ループに入れたいのですが、機能していません。

コード atm はこのように見えます användarInlägg は = userinput です。はい、これは初めてです

boolean status=true;
while (status){
Scanner minScanner1 = new Scanner(System.in);  
Scanner scanner2 = new Scanner(System.in);
System.out.println("Skriv in ditt nummer en och en :\n");     
double nr1 = minScanner1.nextDouble(); 
double nr2 = minScanner1.nextDouble();


System.out.println("välj vad du vill göra: ");

double svr =0;

String användarInlägg = scanner2.nextLine();
if(användarInlägg.equalsIgnoreCase("+")) { 
    svr = nr1 + nr2;
    }
else if(användarInlägg.equalsIgnoreCase("-")) {
    svr = nr1 - nr2;
    }
else if(användarInlägg.equalsIgnoreCase("*")) {
    svr = nr1 * nr2;
    }
else if(användarInlägg.equalsIgnoreCase("/")) {
    svr = nr1 / nr2;
    }
System.out.printf("= %.2f\n ", svr);
 System.out.println("Skriv in J för att fortsätta N för att sluta: \n"); 

 Scanner scanner3 = new Scanner(System.in);
    String input=scanner3.nextLine();

    do{
    }while(input.equalsIgnoreCase("J"));
    if (input.equalsIgnoreCase("N")) {
       System.exit(0);
    } else if (input.equalsIgnoreCase("J")) {
        status = true;
    }
}
 }   

}

4

3 に答える 3

0

まず、1 つの Scanner オブジェクトのみを作成する必要があります。Scanner2 と Scanner 3 は必要ありません。すべてのスキャナ オブジェクトは同じ入力ストリームを指し、keyBoard から値を取得します。

miniScanner1.nextInt() 、 miniScanner1.nextLine() などを使用できます。

あなたのdoWhileループに来ます.. doWhileループで正確に何を達成したいですか??

于 2013-09-19T08:48:20.480 に答える
0

2 問題:

1: 文字列入力=scanner3.nextLine(); newLine 文字を消費します。探してください: stackoverflow.com/a/13102066/1679863

2:

do{
}while(input.equalsIgnoreCase("J"));

入力が「J」に等しい場合、無限ループです。ユーザーが「J」と入力した場合、計算を繰り返したいと思うので、次のように変更します。

while(status){
...
do{
}while(input.equalsIgnoreCase("J"));
if (input.equalsIgnoreCase("N")) {
   System.exit(0);
} else if (input.equalsIgnoreCase("J")) {
    status = true;
}
}

に:

while (status){
    ...
    if (input.equalsIgnoreCase("N"))
       status = false;
}
于 2013-09-19T08:49:33.013 に答える