检测java中的扫描程序输入(double或int)

时间:2013-10-19 20:08:46

标签: java integer double java.util.scanner detect

我试图这样做:

import java.util.Scanner;
public class Prov{
    public static void main(){
        Scanner getInfo = new Scanner(System.in);
        showInfo(getInfo.next());

    }
    public void showInfo(int numb){
        System.out.println("You typed this integer: " + numb);
    }
        public void showInfo(double numb){
        System.out.println("You typed this double: " + numb);
    }
}

但无论我是否寻找scanner.next或scanner.nextInt,当我输入一个int时,当我写一个double和一个int时,它不会只获得一个double。

谢谢!

2 个答案:

答案 0 :(得分:3)

您可以使用

if (scanner.hasNextInt()) {
    int i = scanner.nextInt();

} else if(scanner.hasNextDouble()) {
    double d = scanner.nextDouble();

} else {
     scanner.next(); // discard the word

我建议你阅读它所有其他选项的Javadoc。

答案 1 :(得分:1)

next()方法返回一个String而不是一个数字,特别是一个int或double,为了解决这个问题,你需要测试下一个是int还是double。即:

if (getInfo.hasNextInt()) {
    showInfo(getInfo.nextInt());
}else if(getInfo.hasNextDouble()) {
    showInfo(getInfo.nextDouble());
}else{
    //Neither int or double
}

希望这有帮助!