程序的作用:从输入中读取两个值,询问用户是否添加,减去或查找产品。如果用户输入三个选项中的一个,则计算,否则程序将循环回到开头。如果用户输入三个选项之一,程序应在计算后停止。
我不确定为什么它继续循环。仅当用户键入“sum”,“difference”或“product”以外的字符串时,如何才能使脚本循环?另外,如何使代码更简单?有没有办法循环程序而不使用do ... while?
import java.util.Scanner;
import java.util.Random;
public class simp_calculator
{
public static void main (String[] args)
{
Scanner scan = new Scanner (System.in);
double a, b;
String response;
boolean noresponse;
do
{
System.out.println ("Please enter first number.");
a = scan.nextDouble();
System.out.println ("Please enter second number.");
b = scan.nextDouble();
System.out.println ("Would you like to find the sum, difference, product?");
response = scan.next();
if (response.equalsIgnoreCase ("sum"))
{
System.out.println (a + b);
}
if (response.equalsIgnoreCase ("difference"))
{
System.out.println (a - b);
}
if (response.equalsIgnoreCase ("product"))
{
System.out.println (a * b);
}
else
{
noresponse = true;
System.out.println ("Starting again...");
}
}
while (noresponse = true);
}
}
答案 0 :(得分:3)
您正在使用分配运算符=
,因此noresponse
始终为true
。因此,赋值表达式的结果为true
。
如果是true
,您想检查,因此请使用比较运算符==
:
while (noresponse == true);
或者,因为它已经是boolean
:
while (noresponse);
此外,您可能会收到noresponse
未初始化的编译器错误。您将需要确保它在所有情况下都已初始化,并且某些内容将其设置为false
,以便循环最终结束。
答案 1 :(得分:2)
将while (noresponse = true);
更改为while (noresponse == true);
=
是一项作业操作 - 其中==
比较。
答案 2 :(得分:1)
有两个问题:
目前您正在循环,而noreponse
等于true。因此,要退出该循环,您需要在满足特定条件时将noresponse
设置为false :)我可以给您答案,但您应该能够通过我给您的信息来解决它。 (提示:在某些时候,您需要将noresonse
设置为false)。
此外,您将noresponse
设置为相等,而不是比较它。您需要使用==
进行比较。
将(noresponse = true);
加入while (noresponse == true);
。
答案 3 :(得分:1)
两个错误:
else
仅适用于最后一个if;所以对于任何值,“product”,noresponse
变为true
,循环继续。将第二个if
替换为else if
s。noresponse
应在循环开始时赋值false
。答案 4 :(得分:0)
只需将while (reponse = true)
更改为while(reponse)
并命名变量..