是的,所以我在eclipse上使用java并不断遇到问题。我试图解决的是当用户被提升为按任意键时。当密钥输入且没有Char时,程序会因为无法找到某个字符而崩溃。
我的代码是:
Scanner scan = new Scanner(System.in);
Game game = new Game();
char quit=' ';
while (quit != 'N')
{
game.play();
System.out.println("Play again? Press any key to continue, or 'N' to quit");
quit = scan.nextLine().toUpperCase().charAt(0);
}
按下输入时,由于没有输入字符,它会停止程序。有没有办法解决这个问题,让按下enter后程序继续?
答案 0 :(得分:2)
我会这样写:
Scanner scan = new Scanner(System.in);
String line;
do{
game.play();
System.out.println("Play again? Press any key to continue, or 'N' to quit");
line = scan.nextLine();
}while (line.isEmpty() || line.toUpperCase().charAt(0) != 'N');
答案 1 :(得分:1)
您可以检查长度:
while (quit != 'N')
{
game.play();
System.out.println("Play again? Press any key to continue, or 'N' to quit");
String test = scan.nextLine().toUpperCase();
if(test != null && test.length() > 0)
{
quit = test.toUpperCase().charAt(0);
}
else
{
//handle your else here
quit = ' '; //this will keep it from terminating
}
}
将下一行存储在字符串中,然后检查以确保它不为空且其长度至少为1.如果是,则获取第一个字符。如果没有,那么决定你想如何处理这种情况。
答案 2 :(得分:0)
我们可以写下:{/ p>而不是quit = scan.nextLine().toUpperCase().charAt(0);
String str = scan.nextLine().toUpperCase();
quit = ((str == null || "".equals(str)) ? ' ' : str.charAt(0));