确定输入的数字是否为int

时间:2014-06-13 00:52:40

标签: java

import java.util.Scanner;

public class test {

/**
 * @param args
 */
public static void main(String[] args) 
{
    Scanner input = new Scanner (System.in);
    boolean US1 = false;
    boolean game;
    int score = 1;
    int wage = 0;   
    int fin_score = 0;
    String ans;

    if (US1 == false) {
        game = false;
        System.out.println (score);
        System.out.println("Enter a wager");
        wage =  input.nextInt();
    }

    if (wage < score) {
        System.out.println ("What is the capital of Liberia?");
        ans = input.next();

        if (ans.equalsIgnoreCase("Monrovia")) {
            System.out.println ("You got it right!");
            System.out.println ("Final score " + fin_score);
        }
    }
}
}

我找到了一堆使用InputMismatchException的解决方案并尝试{} catch {}但是当它们在我的代码中实现时它们永远不会工作。有没有办法在这里实现这些?我试图创建一个迭代循环,直到输入的工资是一个整数

3 个答案:

答案 0 :(得分:0)

您的代码中可以有多个catch异常,以检查输入错误。例如

try{

    wage = input.nextInt();

catch (InputMismatchException e){ 
   System.out.print(e.getMessage());
   //handle mismatch input exception
}

catch (NumberFormatException e) {
    System.out.print(e.getMessage());
    //handle NFE 
}

catch (Exception e) {
    System.out.print(e.getMessage());
    //last ditch case
}

其中任何一种都适用于扫描仪错误,但InputMismatchException最适合使用。如果你将非工作代码包含在try-catch块中,那将对你的案例有所帮助。

答案 1 :(得分:0)

首先,您应该使用Scanner.nextLine,因为Scanner.nextInt使用空格和换行符作为分隔符,这可能不是您想要的(扫描仪上留下空格后的任何内容,打破任何下一次读取。)

请改为尝试:

boolean valid = false;
System.out.print("Enter a wager: "); //Looks nicer when the input is put right next to the label
while(!valid)
    try {
        wage = Integer.valueOf(input.nextLine());
        valid = true;
    } catch (NumberFormatException e) {
        System.out.print("That's not a valid number! Enter a wager: ");
    }
}

答案 2 :(得分:0)

是的!有一个很好的方法:

Scanner input = new Scanner(System.in);
    boolean gotAnInt = false;
    while(!gotAnInt){
        System.out.println("Enter int: ");
        if(input.hasNextInt()){
            int theInt = input.nextInt();
            gotAnInt = true;
        }else{
            input.next();
        }

    }