在JavaSE中执行while while循环的问题

时间:2010-12-01 17:51:46

标签: java do-while

我是编程新手,所以请认为我是一个很棒的新手。 困境: 我想在每次回答“是”时重复我的代码。 我确实使用“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.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:找不到 符号符号:变量YES 位置:班级whysoserious                String go = YES;                            ^ whysoserious.java:38:找不到 符号符号:变量cont 位置:班级whysoserious                cont = sc.nextLine();                ^ whysoserious.java:39:找不到 符号符号:变量cont 位置:班级whysoserious                } while(cont == go);                         ^ whysoserious.java:39:找不到 符号符号:变量go 位置:班级whysoserious                } while(cont == go);                                 ^ 4错误

每次尝试编译时总会出错。这背后的知识是我希望每次用户输入“是”或“否”时重复代码以继续。观察代码在没有do {的情况下工作。在这一点上,我坚持做的同时。

4 个答案:

答案 0 :(得分:7)

多个问题:

  • 你永远不会声明contYES所以编译器不知道它们是什么

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

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

编译器的错误消息应该告诉你前两个 - 注意编译器的用法。

最简单的修复:在String cont;之前添加do,摆脱go并进行测试while ("YES".equals(cont));如果用户输入“是”或“Y”,这仍然会退出“然而,”或“是”或其他一些变体。

答案 1 :(得分:3)

该行:

 String go = YES;

应为:

String go = "YES";

否则,编译器会认为YES是一些它不知道的变量,并继续发疯。

答案 2 :(得分:1)

添加@Ronnie Howell所说的内容......使用equals()方法进行字符串相等。

while (cont == go);

应该阅读......

while (cont.equals(go));

PS ......我没看到你定义cont的位置。请在do循环之外声明。

答案 3 :(得分:0)

以下作品:

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