刚开始java,eclipse
我希望程序只在按下'y'或'Y'时才能继续
如果按任何其他键结束程序
请帮助
import java.io.*;
public class TicketMaster{
public static void main(String args[]) throws IOException{
char choice;
do{
choice ='\0'; //clear char
System.out.println("First Test \t\t" + choice);
//rerun program
System.out.println("Run Program Again: ");
choice = (char) System.in.read();
//testing
if(choice == 'y' || choice == 'Y')
System.out.println("Contine \t\t" + choice);
else
System.out.println("End Program \t\t" + choice);
System.out.println("\n\n\n");
}
while(choice == 'y' || choice == 'Y');
} //end main method
} //end class
答案 0 :(得分:2)
问题似乎是即使输入'Y'
或'y'
,程序也会结束。
原因是在按 Enter 之前,不会向Java发送任何输入。这会在输入流上放置整行输入和换行符。
while
循环的第一次迭代正确识别'y'
或'Y'
,但下一个循环立即运行并检测到不匹配的换行符。< / p>
切换到使用Scanner
so you can can call nextLine()
一次读取整行输入,您可以提取String
的第一个字符,看它是'y'
还是{{1} }。这将丢弃换行符。
答案 1 :(得分:1)
使用此代码:
if(choice == 'y' || choice == 'Y')
System.out.println("Contine \t\t" + choice);
else{
System.out.println("End Program \t\t" + choice);
System.exit(0);
}
或者如果您不希望程序完全退出,只是为了打破while循环
if(choice == 'y' || choice == 'Y')
System.out.println("Contine \t\t" + choice);
else{
System.out.println("End Program \t\t" + choice);
break;
}
答案 2 :(得分:0)
由于read
只读取InputStream
中的单个字符,因此您需要手动使用换行符
choice = (char) System.in.read();
System.in.read(); // added - consumes newline
答案 3 :(得分:0)
可悲的是,Java通常不支持我认为你要做的事情,我认为这是在控制台上检测按键,而不是按Enter键。有关如何实现这一目标的讨论,请参见this answer。