Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用java检测扫描仪输入(双精度或整数)_Java_Integer_Double_Java.util.scanner_Detect - Fatal编程技术网

用java检测扫描仪输入(双精度或整数)

用java检测扫描仪输入(双精度或整数),java,integer,double,java.util.scanner,detect,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 t

我试着这么做:

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,它都不起作用。当我写double时,它不会得到double,当我键入int时,它会得到int

谢谢大家!

您可以使用

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

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

} else {
     scanner.next(); // discard the word
我建议您阅读Javadoc以了解它的所有其他选项。

您可以使用

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

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

} else {
     scanner.next(); // discard the word
我建议您阅读Javadoc中的所有其他选项。

next()方法返回的字符串不是数字,特别是甚至不是int或double。要解决这个问题,您需要测试next是int还是double。即:

if (getInfo.hasNextInt()) {
    showInfo(getInfo.nextInt());
}else if(getInfo.hasNextDouble()) {
    showInfo(getInfo.nextDouble());
}else{
    //Neither int or double
}
希望这有帮助

next()方法返回一个字符串,而不是一个数字,特别是甚至不是int或double。要解决这个问题,需要测试next是int还是double。即:

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

希望这有帮助

这是因为
next
返回一个字符串。这两个选项都不是;返回一个字符串。。。这段代码甚至不编译…我知道它返回一个字符串,但我在问我如何才能做到这一点。我还忘了在公共静态void main中添加字符串[]args,这是因为
next
返回一个字符串。这两个选项都不是;返回一个字符串。。。这段代码甚至不编译…我知道它返回一个字符串,但我在问我如何才能做到这一点。我还忘了在publicstaticvoid中添加字符串[]argsmain@user2896551现在已经修好了,我忘了你需要先检查intdouble@user2896551它现在已经修复,我忘了你需要先检查int而不是double不幸的是我不能评论,因为我缺少rep,但我认为Peter的答案需要一点更正,也就是说,我们需要更改IFs的顺序,首先进行int检查:if(scanner.hasNextInt()){int i=scanner.nextInt();}else if(scanner.hasNextDouble()){double d=scanner.nextDouble();在Peter代码中,当我们首先检查double时,当我们输入整数(例如“6”)时,它将计数为double“6.0”。如果我们先检查整数,这个问题就不会发生。@Jakras很好的观点,尽管这使得读取
int
是多余的,因为任何
int
都可以被读取为
double
,而不会失去精度。不幸的是,我无法评论,因为我缺乏代表性,但我认为Peter的答案需要一点更正,即我们需要to更改IFs的顺序,首先进行int检查:if(scanner.hasNextInt()){int i=scanner.nextInt();}else if(scanner.hasNextDouble()){double d=scanner.nextDouble();在Peter代码中,当首先检查double时,当我们输入整数(例如“6”)时,它将计数为double“6.0”。如果我们先检查整数,则不会出现此问题。@Jakras这是一个很好的观点,尽管这使得读取
int
是多余的,因为任何
int
都可以作为
double
读取,而不会丢失精度。