我需要帮助修复的java bug

时间:2014-07-30 06:33:57

标签: java

所以我正在制作一个文本游戏,并且我正在弹出一个错误。简而言之,当我运行该程序时,它就是这样做的。

    Channel name:
    hey
    Your channel name, hey, are you sure you like this name? type yes or no.
    no
    Name for video?

我想要发生的事情是当有人说不,它重新启动程序,但程序仍在继续。这是代码。

    public static void main(String[] args) {
    //views


    //channel name
    String cfc = "Channel name: ";
    System.out.println(cfc);
    String cn = sc.nextLine();
    System.out.println("Your channel name, " + cn + ", are you sure you like this name? type yes or no.");
    @SuppressWarnings("unused")
    Boolean nn;
    String yn;
    while (true) {
        yn = sc.nextLine().trim().toLowerCase();
        if (yn.equals("yes")) {
            nn = true;
            break;
        } else if (yn.equals("no")) {
            nn = false;
            break;
        } else {
            System.out.println("Channel name: ");
            System.out.println(cfc);
            String un = sc.nextLine();
            System.out.println("Your channel name, " + un + ", are you sure you like this name? type yes or no.");
        }
    }
    Video();
}

我不知道这个问题是什么。请帮忙。

4 个答案:

答案 0 :(得分:1)

我认为您只需要continue而不是break

答案 1 :(得分:1)

break打破了你的循环,所以当你输入no时,你就会摆脱循环并以video方式运行......

相反,不要懒惰并在循环中使用实际的实际退出条件。此外,您希望至少运行一次此循环,因此do-while循环,这将确保循环必须至少运行一次...

此外,您需要将提示移动到循环中,以便重复,否则可能对用户没有意义,例如......

boolean nn = false;
String cfc = "Channel name: ";
String cn = null;
do {
    System.out.println(cfc);
    cn = sc.nextLine();
    System.out.println("Your channel name, " + cn + ", are you sure you like this name? type yes or no.");
    yn = sc.nextLine().trim().toLowerCase();
    if (yn.equals("yes")) {
        nn = true;
    }
} while (!nn);

答案 2 :(得分:1)

使用do-while循环会更好。 此外,下面代码中的else-if和else部分可能是多余的。

boolean nn = false;
String cfc = "Channel name: ";
String cn = null;
do {
    System.out.println(cfc);
    cn = sc.nextLine();
    System.out.println("Your channel name, " + cn + ", are you sure you like this name? type yes or no.");
    yn = sc.nextLine().trim().toLowerCase();
    if (yn.equals("yes")) {
        nn = true;
    } else if (yn.equals("no")) {
        System.out.println("Channel name: "); // Possibly duplicated?            
    } else {
        //Handle cases that yn not equals to "yes" or "no"
    }
} while (!nn);

答案 3 :(得分:0)

那里有一些冗余的代码片段,我想你可以这样做:

String cfc = "Channel name: ";
String cn;
boolean nn = false;
String yn;

while (!nn) {
    System.out.println(cfc);
    cn = sc.nextLine();
    System.out.println("Your channel name, " + cn + ", are you sure you like this name? type yes or no.");
    yn = sc.nextLine().trim().toLowerCase();
    if (yn.equals("yes")) {
        nn = true;
    } else {
        nn = false;
    }
}

显然你之前没有使用nn,这很奇怪。我相信你声明它被使用了,对吧?并且一对if-else足以实现您想要的效果。