为什么我的输出没有在我的 switch 语句后显示
Why isn't my output showing after my switch statement
我正在学习 Java,我以前从未使用过 switch 语句。我试图输入一个简单的迷人测验,但 switch 语句中的某些内容不起作用。
我试过在程序的不同位置放置文本,以测试程序是否每次都到达该代码。我在实际开关中有很好的反应,所以如果我回答错误的问题 1,将显示文本提示。但是任何晚于 switch 语句和 none 的评分输出都会出现,直到 for 循环的所有迭代都完成。我尝试将“correct/incorrect”输出移动到不同的点,其中 none 似乎有效。
Scanner myScanner = new Scanner(System.in);
System.out.println("Enter your name!");
String name = myScanner.nextLine();
int wrongCounter = 0;
boolean correctChecker = false;
int score = 0;
String answer;
System.out.println("Welcome to the Charmed Quiz, " + name + "!");
for (int i = 0; i < 10; i++) {
if (wrongCounter < 4) {
switch(i) {
case 0:
System.out.println("Who read the spell that gave the Charmed Ones their powers?");
System.out.println("Enter your answer");
answer = myScanner.nextLine();
switch (answer) {
case "Pheobe":
correctChecker = true;
break;
default:
correctChecker = false;
break;
}
case 1:
System.out
.println("Who travelled to a cursed town with Prue when Pheobe was shot in a premonition?");
System.out.println("Enter your answer");
answer = myScanner.nextLine();
switch (answer) {
case "Cole":
correctChecker = true;
break;
default:
correctChecker = false;
break;
}
}
if (correctChecker == true) {
score++;
System.out.println("Correct!");
} else {
wrongCounter++;
System.out.println("Incorrect!");
}
这段代码有很多很多问题。主要问题是 break
破坏了它可以破坏的最接近的构造,在您的情况下是 inner switch
。而您的意图显然是要打破两者。 [A] 在 case 1:
语句之前添加另一个 break
,或者 [B] 使用带标签的中断;在第一个 (primary/outer) switch
之前放置 outer:
before 之类的内容,然后制作所有这些语句 break outer;
.
但是,实际上,none 这个(外部或内部)在开关形式中以任何方式都是合理的。我知道这是一个学习练习,但我会想一些其他的东西来学习。
还有,是菲比,不是菲比。
这绝对不是实现问答游戏的最佳方式,但如果您将其用作学习练习,那么最好的做法是听取@rzwitserloot 的建议。
在主 switch 语句 case 之后添加一个 break,而不是内部 switch 语句。
虽然您可以使用 correctChecker = "Pheobe".equals(answer);
在一行中获取 true 或 false 布尔值,但内部 switch 语句没有实际用处。
这只是意味着您可以避免第二个 switch 语句,从而减少混淆。
您的案例总的来说可能是这样的:
case 0:
System.out.println("Who read the spell that gave the Charmed Ones their powers?");
System.out.println("Enter your answer");
answer = myScanner.nextLine();
correctChecker = "Pheobe".equals(answer);
break;
}
以后最好把问题和答案放在一个数组中,然后用for循环遍历。 This 是关于该主题的很好的教程。
祝你的项目顺利完成!
我正在学习 Java,我以前从未使用过 switch 语句。我试图输入一个简单的迷人测验,但 switch 语句中的某些内容不起作用。
我试过在程序的不同位置放置文本,以测试程序是否每次都到达该代码。我在实际开关中有很好的反应,所以如果我回答错误的问题 1,将显示文本提示。但是任何晚于 switch 语句和 none 的评分输出都会出现,直到 for 循环的所有迭代都完成。我尝试将“correct/incorrect”输出移动到不同的点,其中 none 似乎有效。
Scanner myScanner = new Scanner(System.in);
System.out.println("Enter your name!");
String name = myScanner.nextLine();
int wrongCounter = 0;
boolean correctChecker = false;
int score = 0;
String answer;
System.out.println("Welcome to the Charmed Quiz, " + name + "!");
for (int i = 0; i < 10; i++) {
if (wrongCounter < 4) {
switch(i) {
case 0:
System.out.println("Who read the spell that gave the Charmed Ones their powers?");
System.out.println("Enter your answer");
answer = myScanner.nextLine();
switch (answer) {
case "Pheobe":
correctChecker = true;
break;
default:
correctChecker = false;
break;
}
case 1:
System.out
.println("Who travelled to a cursed town with Prue when Pheobe was shot in a premonition?");
System.out.println("Enter your answer");
answer = myScanner.nextLine();
switch (answer) {
case "Cole":
correctChecker = true;
break;
default:
correctChecker = false;
break;
}
}
if (correctChecker == true) {
score++;
System.out.println("Correct!");
} else {
wrongCounter++;
System.out.println("Incorrect!");
}
这段代码有很多很多问题。主要问题是 break
破坏了它可以破坏的最接近的构造,在您的情况下是 inner switch
。而您的意图显然是要打破两者。 [A] 在 case 1:
语句之前添加另一个 break
,或者 [B] 使用带标签的中断;在第一个 (primary/outer) switch
之前放置 outer:
before 之类的内容,然后制作所有这些语句 break outer;
.
但是,实际上,none 这个(外部或内部)在开关形式中以任何方式都是合理的。我知道这是一个学习练习,但我会想一些其他的东西来学习。
还有,是菲比,不是菲比。
这绝对不是实现问答游戏的最佳方式,但如果您将其用作学习练习,那么最好的做法是听取@rzwitserloot 的建议。
在主 switch 语句 case 之后添加一个 break,而不是内部 switch 语句。
虽然您可以使用 correctChecker = "Pheobe".equals(answer);
在一行中获取 true 或 false 布尔值,但内部 switch 语句没有实际用处。
这只是意味着您可以避免第二个 switch 语句,从而减少混淆。
您的案例总的来说可能是这样的:
case 0:
System.out.println("Who read the spell that gave the Charmed Ones their powers?");
System.out.println("Enter your answer");
answer = myScanner.nextLine();
correctChecker = "Pheobe".equals(answer);
break;
}
以后最好把问题和答案放在一个数组中,然后用for循环遍历。 This 是关于该主题的很好的教程。
祝你的项目顺利完成!