所以我正在制作一个文本游戏,并且我正在弹出一个错误。简而言之,当我运行该程序时,它就是这样做的。
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();
}
我不知道这个问题是什么。请帮忙。
答案 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
足以实现您想要的效果。