Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java While循环不会循环_Java_Loops_While Loop_Calculator - Fatal编程技术网

Java While循环不会循环

Java While循环不会循环,java,loops,while-loop,calculator,Java,Loops,While Loop,Calculator,整个代码都可以工作,但是while循环不会重复。cont=scan.next;他正在抓住绳子。输出如下所示: package pack; import java.util.Scanner; public class Calculator { public static void main(String args[]){ Scanner scan = new Scanner(System.in); String cont = "Yes";

整个代码都可以工作,但是while循环不会重复。cont=scan.next;他正在抓住绳子。输出如下所示:

package pack;

import java.util.Scanner;

public class Calculator {


    public static void main(String args[]){
        Scanner scan = new Scanner(System.in);
        String cont = "Yes";

        while(cont == "Yes" || cont == "yes" ){
            System.out.print("Enter a Number: ");
            int x = scan.nextInt();
            System.out.print("Enter another Number: ");
            int y = scan.nextInt();

            int diff = x - y;
            int sum = x + y;
            int prod = x * y;
            int quot = x / y;

            System.out.println("The Sum is: " + sum);
            System.out.println("The Diffrence is: " + diff);
            System.out.println("The Product is: " + prod);
            System.out.println("The quotient is: " + quot);

            System.out.print("Enter Yes to Continue: ");
            cont = scan.next();
            System.out.println(cont);

        }

    }



}
然后程序会毫无问题地终止。我所需要的就是让while循环重复。谢谢你的帮助

将字符串与.equals而不是==

或者更好:

while(cont.equals("Yes") || cont.equals("yes") )

您需要以这种方式比较字符串:

while(cont.equalsIgnoreCase("Yes"))

这是因为在使用输入时,您将没有字符串文字,而是字符串对象。这些需要通过equals和not==进行比较。

而不是cont==Yes | | cont==Yes您应该使用cont.equalsYes | | cont.equalsYes

更改为此

while("Yes".equalsIgnoreCase(cont))...
改变

 while(cont.equalsIgnoreCase("Yes"))
作为

理由

您需要知道==和等于背后的原因

equals方法存在于java.lang.Object类中,它应该检查对象状态的等价性!。也就是说,对象的内容。而==运算符则需要检查实际对象实例是否相同

if语句示例

考虑两个不同的参考变量str1和str2

如果你用等号

您将得到真实的输出

如果你使用==


现在您将得到FALSE作为输出,因为str1和str2都指向两个不同的对象,即使它们共享相同的字符串内容。这是因为每次创建新对象时都会出现新字符串。

添加提示:使用。equalsIgnoreCase@ljgw好主意,我会添加它。在比较字符串时必须使用equals。非常好!谢谢你的帮助!
 while(cont.equalsIgnoreCase("Yes"))
while(cont == "Yes" || cont == "yes" ){
while(cont.equalsIgnoreCase("Yes"))
str1 = new String("abc");
str2 = new String("abc");
System.out.println((str1.equals(str2))?"TRUE":"FALSE");
 System.out.println((str1==str2)?"TRUE":"FALSE");