编辑:我更改了之前的代码,我将字符串与!=,与.equals()进行了比较,但它仍然是相同的。
我正在尝试制作初学者计算器。我陷入了无法解决的无限循环中。
首先我尝试了这个:
public void GetValues()
{
System.out.println("Welcome to the \"Math Calculator\"\n");
System.out.print("Type in the first number: ");
int FirstNumber = Scan.nextInt();
System.out.print("Type in the second number: ");
int SecondNumber = Scan.nextInt();
System.out.println("\nWhat operation would you like to do?\n");
System.out.println("For addition, type \"+\"");
System.out.println("For subtraction, type \"-\"");
System.out.println("For multiplication, type \"*\"");
System.out.println("For division, type \"/\"\n");
MathOperation = Scan.next();
while (MathOperation != "+" || MathOperation != "-" || MathOperation != "*" || MathOperation != "/")
{
System.out.print("The value you typed, is not valid. Type again: ");
MathOperation = Scan.next();
}
}
尽管如此,无论我输入什么内容,我仍然会收到此消息您输入的值无效。再次输入:
我无法弄明白。我错过了什么?
EDIT2:我将循环更改为:
while (!IsEqual)
{
System.out.print("The value you typed, is not valid. Type again: ");
MathOperator = Scan.next();
if (MathOperator.equals("+") || MathOperator.equals("-") || MathOperator.equals("*") || MathOperator.equals("/"))
{
IsEqual = true;
}
}
现在它有效。感谢所有努力帮助我的人。干杯:)
答案 0 :(得分:1)
更改此
if (MathOperation == "+" || MathOperation == "-" || MathOperation == "*" || MathOperation == "/")
到
if (MathOperation.equals("+") || MathOperation..equals("-") || MathOperation.equals("*") || MathOperation.equals("/"))
答案 1 :(得分:1)
你应该通过第二次尝试获得你所获得的,即使你已经使用equals()
正确地写了比较。
实质上你拥有的是
if (it's not all four math operations at the same time)
{
"invalid"
}
if
子句始终为真。
答案 2 :(得分:0)
您使用无效方法进行比较。
String不是基本类型Object
。这意味着要将其与其他方法进行比较,您必须根据验证的元素从中调用方法equlas
。
"+".equals(mathOperation)
解决此问题的另一种方法是从Object移动到原始char结构。
char mathOperation = Scan.nextChar(); //Note that variables should start with small letter.
然后您可以使用==
和!=
运算符来获取结果。
if (mathOperation != '+')
答案 3 :(得分:0)
当然,你应该总是使用.equals方法进行每个对象的比较(不仅仅是字符串)对对象执行==操作检查它们是否指向相同的内存空间,这与检查两个值是否相同是不同的。 / p>
如果你像我一样讨厌条件逻辑,你可以选择这样的事情:
Vector<String> allowedMathOperators = new Vector<String>();
allowedMathOperators.add("+");
allowedMathOperators.add("-");
allowedMathOperators.add("*");
allowedMathOperators.add("/");
String mathOperation = "";
Scanner scan = new Scanner(System.in);
do{
System.out.println("What operation would you like to do?");
mathOperation = scan.next();
}while( !allowedMathOperators.contains( mathOperation ));
我的解决方案的优点是,如果您决定添加对附加运算符的支持,那么您不必扩展条件逻辑,只需将char添加到allowedMathOperators :)