3 回答
TA贡献1803条经验 获得超3个赞
您可以通过将所有内容移至循环中来极大地简化您的代码。然后,您可以将if条件breaks 置于循环 if n1is之外0,并将 s 更改loop为无限循环 untilbreak被调用。
Scanner sc=new Scanner(System.in);
while (true){
System.out.println("Enter two numbers (0 to quit):");
float n1=sc.nextFloat();
if (n1 == 0){
break; //New part of the code
}
float n2=sc.nextFloat();
float ans1=n1+n2;
float ans2=n1*n2;
float ans3=ans1 / ans2;
System.out.println("Answer is "+ans3);
}
这种方式0永远不会用于计算,也infinity永远不会打印,因为您不会除以0.
示例运行:
Enter two numbers (0 to quit):
1 4
Answer is 1.25
Enter two numbers (0 to quit):
2 3
Answer is 0.8333333
Enter two numbers (0 to quit):
0
TA贡献1813条经验 获得超2个赞
虽然这是一个非常简单的问题,我希望您能够自己解决,但在这里我尝试向您解释这个问题并提出解决方案:
您希望重复输入直到输入 0。while如您所见,您已经知道循环的概念。您现在可以使用它重复整个输入和计算,直到用户输入 0:
Scanner sc =new Scanner(System.in);
float n1 = 1;
while(n1 != 0){
System.out.println("Enter two numbers:");
[...]
}
从上到下逐行浏览您的程序以了解您在做什么: 1. 创建一个扫描仪, 2. 定义 n1 = 1, 3. 只要 n1 != 0 ... 重复以下部分
然后,正如您提到的,您希望您的可执行文件在 n1 = 0 时立即终止,而不仅仅是在循环代码的末尾while。为此,您可以使用条件break:它直接跳转到循环的末尾,在您的情况下,就是代码的末尾。
我还想让您知道continue直接进入循环的下一次迭代的命令。例如,如果有人输入无效数据,这将很有帮助。
你可以使用它如下:
Scanner sc=new Scanner(System.in);
float n1 = 1;
while(n1 != 0){ //loop until n1 == 0
System.out.println("Enter two numbers:");
n1=sc.nextFloat();
if(n1 == 0){ //if n1 equals 0
break; // goes to the end of the loop
}
float n2=sc.nextFloat();
if(n2 == 0){ //division by zero
System.out.println("Division by zero, try again!");
continue; //goes to the beginning of the loop again
}
float ans1=0;
float ans2=0;
float ans3=0;
int count=0;
ans1=n1+n2;
ans2=n1*n2;
count++;
ans3=ans1/ans2;
System.out.println("Answer is "+ans3);
}
TA贡献1942条经验 获得超3个赞
您需要在 while 循环条件内进行输入。这是因为除非用户将他们的第一个数字输入为零,否则您的循环将永远运行。您还应该对 n2 进行某种错误检查,因为它也不能为零。如果 n2 为零,则 ans2 为零。然后 ans3 将抛出一个被零除的错误。sc,nextFloat()还应注意,由于使用 a而不是,您在原始代码中声明 n2 时出错sc.nextFloat()
这是一些代码来演示我认为您要完成的工作。
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("Enter two numbers:");
float n1=sc.nextFloat();
float n2=1;
float ans1=0;
float ans2=0;
float ans3=0;
int count=0;
while(n1!=0)
{
n2=sc.nextFloat();
while(n2 == 0)
{
System.out.println("Second number can not be zero. Enter a new number");
n2=sc.nextFloat();
}//End while loop for n2==0
ans1=n1+n2;
ans2=n1*n2;
count++;
ans3=ans1/ans2;
System.out.println("Answer is "+ans3);
System.out.println("Enter two numbers:");
n1=sc.nextFloat();
}//End while loop for n1
}//End main
我个人不喜欢使用 break 语句,因为我相信它会抑制循环条件的不良做法/不良设计。对于大多数情况,您应该能够设置一个循环条件以在不进行不必要的迭代的情况下中断。然而,这仅仅是意见,我的意见与我的教授告诉我的相符。
添加回答
举报