JavaSE中do-while循环的问题 我对编程很陌生,所以把我当成一个很棒的新手。 困境: 我想在每次回答“是”时重复我的代码。 我确实使用do while循环,因为首先是一个语句,最后应该计算布尔条件

JavaSE中do-while循环的问题 我对编程很陌生,所以把我当成一个很棒的新手。 困境: 我想在每次回答“是”时重复我的代码。 我确实使用do while循环,因为首先是一个语句,最后应该计算布尔条件,java,do-while,Java,Do While,守则: import java.util.Scanner; class whysoserious { public static void main(String[] args) { Scanner sc = new Scanner(System.in); do{ String go = YES; int setone = 0; int settwo = 0; System.out.

守则:

import java.util.Scanner;

class whysoserious {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        do{
        String go = YES;

        int setone = 0;
        int settwo = 0;

        System.out.println("Enter two numbers: ");

        setone = sc.nextInt();
        settwo = sc.nextInt();
        int set = setone + settwo;


        System.out.println("What is " +setone+ " + " +settwo+ " ? ");
        int putone = 0;
        putone = sc.nextInt();

        if (putone == set) 
            System.out.println("Correct!");

        else
            System.out.println("Wrong Answer - The correct answer is: "+set+"");

        System.out.println("Continue?");
        cont = sc.nextLine();
        } while (cont == go);
    }
}
我被要求添加CMD提示行

C:\test>javac whysoserious.java whysoserious.java:15:找不到 符号:变量是 地点:whysoserious班 字符串go=YES; ^whysoserious.java:38:找不到 符号:变量cont 地点:whysoserious班 cont=sc.nextLine; ^whysoserious.java:39:找不到 符号:变量cont 地点:whysoserious班 }而cont==go; ^whysoserious.java:39:找不到 符号:变量go 地点:whysoserious班 }而cont==go; ^4个错误 每次我试图编译它时,总是会出错。这背后的知识是,每当用户输入Yes或No继续时,我都想重复代码。请注意,代码在没有do{的情况下可以工作。此时,我被do所困扰。

多个问题:

您从未声明cont或YES,因此编译器不知道它们是什么

您在循环中声明go,因此它在while表达式中超出范围

将字符串与==进行比较并不能满足您的需要-可能有两个不同的字符串具有相同的内容。请改用等于

来自编译器的错误消息应该告诉您关于前两个的信息-注意编译器所说的内容

最简单的修复方法:添加字符串cont;在执行之前,请放弃go并在YES.equalcont;如果用户输入YES或Y或YES或其他变量,则此操作仍将退出。

行:

 String go = YES;
应改为:

String go = "YES";

否则,编译器会认为YES是它不知道的某个变量,然后继续发疯。

除了@Ronnie Howell所说的之外……使用equals方法实现字符串相等

while (cont == go);
应该是

while (cont.equals(go));
PS…我看不出您在哪里定义了cont。请在do循环之外声明它。

以下操作有效:

import java.util.Scanner;

public class WhySoSerious {

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

        do {

            System.out.println("Enter two numbers: ");

            int setone = sc.nextInt();
            int settwo = sc.nextInt();
            int set = setone + settwo;


            System.out.println("What is " + setone + " + " + settwo + " ? ");
            int putone = sc.nextInt();

            if (putone == set)
                System.out.println("Correct!");
            else
                System.out.println("Wrong Answer - The correct answer is: " + set + "");
            System.out.println("Continue?");
            cont = sc.next();
        } while (cont.equalsIgnoreCase(go));
    }
}

请告诉我们错误。错误不仅仅是为了让你的屏幕变得杂乱无章,它们是为了解决问题。你的代码没有错误也可以正常工作,但是Java风格的指导原则规定类应该以大写字母开头,类、变量和方法都应该是驼峰式的。因此你的类应该命名为WhySoSerious。还有两个:@Racket您有三个结束括号,而不是2个,另一个已经在@Ronnie的答案中。谢谢。不过我有一个问题。如果我将sc.nextLine而不是sc.next放在这里,为什么不起作用?有什么区别吗?public String next:从这个扫描仪中查找并返回下一个完整的令牌。--------------------------------------publicString nextLine:使此扫描器超过当前行并返回跳过的输入。此方法返回当前行的其余部分,不包括结尾处的任何行分隔符。该位置设置为下一行的开头。