因此,作为对我自己的一个小挑战,以测试我到目前为止对 Java 的了解,我决定制作一个程序,将网络漫画中一个角色的写作怪癖(来自 Heartstuck 的 Sol Captor,对于那些好奇的人)应用到用户的输入中,使用一个 switch 语句。到目前为止,该程序运行良好,并且应用正常,但是,当我让程序询问用户是否要再次运行该程序时,当说是时,该程序将再次运行,除非它没有t 暂停以允许用户键入另一个语句以应用该怪癖。我尝试将所有声明(除了 char restart 之外)放在 while 循环中并添加行“sol.Next();” 在 "System.out.println("Normal");." 之后 这些都没有奏效,我在任何地方都找不到有关如何解决此问题的任何信息。
import java.io.IOException;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;
public class SolQuirk {
public static void main(String[] args) {
char restart = 'y';
Scanner sol = new Scanner(System.in).useDelimiter("");
String input = "";
while(restart == 'y' | restart == 'n'){
System.out.println("Normal:");
while(!sol.hasNext("\n")){
char ch = sol.next().charAt(0);
switch(ch){
case 's': case 'S':
input += '2';
break;
case ' ':
input += ch;
ch = sol.next().charAt(0);
if(ch == 't' || ch == 'T'){
ch = sol.next().charAt(0);
if(ch == 'o' || ch == 'O'){
ch = sol.next().charAt(0);
if(ch == 'o' || ch == 'O'){
ch = sol.next().charAt(0);
if(ch == ' ' || ch == '.'){
input += "two";
input += ch;
break;
}
else{
input += "too";
input += ch;
break;
}
}
else if(ch == ' ' || ch == '.'){
input += "two";
input += ch;
break;
}
else{
input += "to";
input += ch;
break;
}
}
else{
input += "t";
input += ch;
break;
}
}
default:
input += ch;
break;
}
}
String solQuirk = input.toLowerCase();
System.out.println("Sol:");
System.out.println(solQuirk);
System.out.println("Would you like to go again? y/n");
try {
restart = (char) System.in.read();
} catch (IOException ex) {
Logger.getLogger(SolQuirk.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
先感谢您。