虽然循环在我的程序中无法正常工作

时间:2014-02-01 12:12:35

标签: java loops while-loop

我想要求用户插入操作符并获得答案,直到用户输入除+, - ,*或\之外的键。我执行了这样的程序。但是它将无法正常工作。它甚至可以循环其他键。编码有什么问题?

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();

    }



}

4 个答案:

答案 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”)