Java,Calc,Dowhile,使用1个扫描仪而不是3个

时间:2013-09-19 08:29:33

标签: java eclipse java.util.scanner calculator do-while

我刚才做了一个计算,

现在我试图抓住一些东西, 而不是使用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;
    }
}
 }   

}

3 个答案:

答案 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;
}