如何使扫描仪能够同时接收INT和String。 Java的

时间:2013-10-01 02:59:34

标签: java scanf parseint

对于我的学校项目,我有点困难。 所以寻找一点澄清。 通常,用户必须输入数字(列)以插入游戏块。 但是,如果用户输入“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.

2 个答案:

答案 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();
    }
}