0

所以我不久前做了一个计算,

现在我想尝试一些东西,而不是使用 3 个扫描仪,我需要它只使用 1 个,但真的不知道如何:S

在代码的末尾,它要求用户让 J 继续并 N 完成我想把它放在一个 Do while 循环中,但它没有任何帮助表示赞赏!

代码 atm 看起来像这样 användarInlägg is = 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

首先,您只需要制作一个 Scanner 对象。您不需要 Scanner2 和 Scanner 3.. 所有扫描仪对象都指向相同的输入流并从 keyBoard 获取值。

您可以使用 miniScanner1.nextInt() 、 miniScanner1.nextLine() 等。

来到你的 doWhile 循环。你到底想在你的 doWhile 循环中实现什么?

于 2013-09-19T08:48:20.480 回答
0
 if (input.equalsIgnoreCase("J")) {
 do
{
//body or call
}
while(input.equalsIgnoreCase("J"));
    } 
else if (input.equalsIgnoreCase("N")) {
         System.exit(0);
    }
于 2013-09-19T08:37:49.413 回答
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 回答