我刚才做了一个计算,
现在我试图抓住一些东西, 而不是使用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;
}
}
}
}
答案 0 :(得分:0)
if (input.equalsIgnoreCase("J")) {
do
{
//body or call
}
while(input.equalsIgnoreCase("J"));
}
else if (input.equalsIgnoreCase("N")) {
System.exit(0);
}
答案 1 :(得分:0)
首先,您必须只制作一个Scanner对象。您不需要Scanner2和Scanner 3 ..所有扫描仪对象都指向相同的输入流并从keyBoard获取值。
您可以使用miniScanner1.nextInt(),miniScanner1.nextLine()等。
来到你的doWhile循环.. 你想在doWhile循环中实现什么?
答案 2 :(得分:0)
2个问题:
1:String input = 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;
}