对于我的学校项目,我有点困难。 所以寻找一点澄清。 通常,用户必须输入数字(列)以插入游戏块。 但是,如果用户输入“q”,程序将关闭。
我们指出了使用“parseInt”的方向,但我正在寻找一些关于它是如何工作的澄清?
while(response.equalsIgnoreCase("q"));
{
System.out.println("Do you want to play again?");
response = scan.next();
}
System.out.println("Do you want to play again?");
response = scan.next(); // this revisits the while loop that
// prompted the player to play.
答案 0 :(得分:0)
请参阅http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#parseInt(java.lang.String)
public static int parseInt(String s)
throws NumberFormatException
您希望在Integer.parseInt(userInput)
调用周围应用try-catch块来捕获NumberFormatException
在catch主体中,您可以设置输入无效的标志。基于布尔值isInputIsValid将整个事物放在while循环中。
boolean isValidNumber = false, wantsToQuit = false;
while (!isValidNumber) {
// Ask user for a value any way you want and save it to userInput
String userInput = "";
try {
Integer.parseInt(userInput);
isValidNumber = true;
} catch (NumberFormatException e) {
isValidNumber = false;
if (userInput.equals("q")) {
wantsToQuit = true;
break;
}
}
}
wantToQuit不是必要的变量,只是显示该部分的目的是什么
答案 1 :(得分:0)
import java.util.Scanner;
public class ScanInteger {
public static void main(String...args)throws Throwable {
int num = 0; String s= null;
System.out.print("Please enter a number : ");
Scanner sc = new Scanner(System.in);
do{
try{
s = sc.next();
num= Integer.parseInt(s);
System.out.println("You have entered: "+num+" enter again : ");
}catch(NumberFormatException e){
if(!s.equalsIgnoreCase("q"))
System.out.println("Please enter q to quit else try again ==> ");
}
}while(!s.equalsIgnoreCase("q"));
sc.close();
}
}