我想要求用户插入操作符并获得答案,直到用户输入除+, - ,*或\之外的键。我执行了这样的程序。但是它将无法正常工作。它甚至可以循环其他键。编码有什么问题?
public static void main(String Args[]) throws IOException
{
InputStreamReader myrdr=new InputStreamReader(System.in);
BufferedReader myBfr=new BufferedReader(myrdr);
Scanner myScanner=new Scanner(System.in);
String mathOp;
float Res,Num1,Num2;
System.out.print("Mathematical Operator :");
mathOp=myBfr.readLine();
Res=0;
while(mathOp!="+"||mathOp!="-"||mathOp!="*"||mathOp!="\\")
{
System.out.print("Enter number one: ");
Num1=myScanner.nextInt();
System.out.print("Enter Number Two: ");
Num2=myScanner.nextInt();
switch(mathOp)
{
case "+":
Res=Num1+Num2;
break;
case "-":
Res=Num1-Num2;
break;
case "\\":
Res=Num1/Num2;
break;
case "*":
Res=Num1*Num2;
break;
default:
{
System.out.println("Programme Exits");
return;
}
}
System.out.println("Answer is : "+Res);
System.out.print("Mathematical Operator :");
mathOp=myBfr.readLine();
}
}
答案 0 :(得分:1)
不要使用==
(比较两个操作数是相同的 String对象,它们不是),使用equals()
(如果2个String对象的内容是相同的。)
但更好的是,将代码简化为:
while (!"+-*\\".contains(mathOp))
顺便说一下,除法通常是正斜杠/
,而不是反斜杠\
。
答案 1 :(得分:0)
像这样制作你的while循环
while(mathOp.equals("+") || mathOp.equals("-") ||
mathOp.equals("//") || mathOp.equals("*"))
使用String.equals()
比较Java中的字符串,而不是==
或!=
。要解释更多,在比较Java中的String值时不应使用==
或!=
,因为它们会检查右侧和左侧操作数中的值是否相等。即String对象的内存地址,对于两个不同的对象,它们不相等。您可以使用原始数据类型的==
和!=
并编译时间常量。还有一个名为String constant pool
的概念,它具有编译时使用assignment operator
String new = "new";
创建的字符串常量,而不在创建对象时使用new
运算符,可以使用{{进行比较1}}或==
。
答案 2 :(得分:0)
Yoy必须使用类似的东西
!而((mathOp.equals( “+”))||(mathOp.equals(! “ - ”!))||(mathOp.equals( “*”))||(mathOp.equals( “\”)))
答案 3 :(得分:0)
首先,你应该知道正确使用||和&& 真的||假返回true 真的||假||假|| False返回true,一个True就足以使条件返回true,无论你有多少假 因此,在你的情况下,你说如果输入与其中一个不同而不是让它继续,那么如果你有+它将输入,因为+与...不同。你应该使用&&amp ;.
真实&&错误返回False 真实&&真实&&真实&&错误返回False。无论你有多少真实,一个假就足以返回假。 如果你使用&&只有当所有子条件都为真时,你才会告诉条件返回true,即它不同于+且不同于 - 并且不同于*且不同于。
此外,将“+”替换为“+”,因为后者是一个字符,而第一个是字符串。 ==只能用于字符,数字和布尔值。要比较字符串,您应该使用.equals(“x”)