所以昨天我问了一个关于一些GUI的问题。我完全把它扔掉了,因为我发现实际处理它有点复杂。现在我正在修改控制台中的东西。
我又被困住了。这次我的问题是:如何跳回到执行 if 命令之前的某个点?直接例子:
import java.util.Scanner;
import java.io.*;
public class HBA {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Herzlichen Glückwunsch Anna! Und viel Spaß mit deinem Geschenk!") ;
System.out.println("Neben diesem Programm befindet sich eine Passwort gesicherte Datei, die einen weiteren Teil deines Geschenks enthällt."
+ "Um an das Passwort zu gelangen wirst du jedoch ein paar ganz besonders schwierige Fragen beantworten müssen!"
+ "Wenn du bereit für das Quiz bist, gib in die Eingabe: 'ok' ein.");
String OK, Q1, Q2, Q3, Q4, Q5, Q6, Q7;
BufferedReader repo = null;
OK = scan.next();
if (OK == "ok") {
System.out.println("Alles gut, fangen wir mit etwas leichtem an!");
}
else {
System.out.println("Wie... bei so einer einfachen Sache versagst du schon? Versuchs nochmal!");
}
System.out.println("Frage 1: Wer ist Supergeil? \n A: Erik \n B: Anna \n C: The J \n D: Friedrich Liechtenstein");
mark(0);
Q1 = scan.next();
if (Q1 == "D") {
System.out.println("Richtig! Der erste Buchstabe lautet: S");
}
else {
System.out.println("Leider falsch. Versuch es nochmal.");
reset();
}
}
}
脚本按预期工作,此外:如果您在最后一部分输入错误:
System.out.println("Frage 1: Wer ist Supergeil? \n A: Erik \n B: Anna \n C: The J \n D: Friedrich Liechtenstein");
mark(0);
Q1 = scan.next();
if (Q1 == "D") {
System.out.println("Richtig! Der erste Buchstabe lautet: S");
}
else {
System.out.println("Leider falsch. Versuch es nochmal.");
reset();
}
}
}
它只是结束脚本。相反,它应该跳回到 if 命令的开头。意味着: System.out.printLn 中问题的答案(它是一个问题)是 D,而您输入 A,它应该重置整个事情,您可以再次尝试并回答不同的问题。我怎样才能做到这一点?我读到 BufferedReader 有一个 mark() 和 reset() 函数,但我不知道它们是否按照我期望的方式工作,或者我将如何集成它们。
我还考虑过使用 while 或 do 命令。但我还没有找到办法。
有人可以启发我吗?
谢谢!