用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
读取,而不会丢失精度。