我已经复制了下面的部分说明,我可以自己编写几乎每个部分的代码,但是将控制流程放在一起让我对自己的能力产生了很大的怀疑。
我最大的问题之一是int gameChanger。我应该立即验证它是否是整数,如果不是则循环回来。但是我也应该检查一下,看看是否有人输入"退出"。但我的扫描仪实例的输入变量是一个整数...所以我很难过。一旦输入被读入,我可以使用try catch来检查missmatchexception,但这并不能解决退出问题,也不能提出可靠的逻辑来使try catch循环回来,如果它确实不是整数。我想做一个while循环,但我没有让它工作。
说明:
答案 0 :(得分:1)
在尝试使用输入之前,您可以输入数字。
int num;
while (true) {
if (scanner.hasNextInt()) {
num = scanner.nextInt();
break;
} else {
// read whatever is there instead.
String line = scanner.nextLine();
if (line.equals("exit"))
System.exit(0);
System.out.println("Please enter a number");
}
}
System.out.println("Number entered " + num);
答案 1 :(得分:0)
这可以完成工作。尝试一下。
import java.util.Scanner;
public class MyCode
{
public static void main(String[] args)
{
String gameInput = ".";
int gameNumber = 0;
boolean inputLoop = true;
Scanner input = new Scanner(System.in);
while(inputLoop == true)
{
try
{
System.out.print("Please enter a valid game number: ");
gameInput = input.next();
if(gameInput.equals("exit"))
{
System.out.println("Program will now end. Goodbye.");
inputLoop = false;
input.close();
}
gameNumber = Integer.parseInt(gameInput);
if(gameNumber >= 20001 && gameNumber <= 21230)
{
System.out.println("You have inputted a valid game number.");
inputLoop = false;
input.close();
}
}
catch(NumberFormatException e)
{
if(!gameInput.equals("exit"))
{
System.err.println("Invalid game number. Please try again.");
}
}
}
}
}