Java 方法返回负值
我试图创建一个方法来检查输入是否是大于零的双精度。在我的代码中,检查它是否确实是一个double可以很好地工作,但是,即使在输入负数时,它会提示重新输入值,最后,在输入正数后,它会返回前面输入的负数Java 方法返回负值,java,if-statement,double,false-positive,Java,If Statement,Double,False Positive,我试图创建一个方法来检查输入是否是大于零的双精度。在我的代码中,检查它是否确实是一个double可以很好地工作,但是,即使在输入负数时,它会提示重新输入值,最后,在输入正数后,它会返回前面输入的负数 public static double isValid(double v){ Scanner scan = new Scanner(System.in); if (scan.hasNextDouble()){ v = scan.nextDouble(); if
public static double isValid(double v){
Scanner scan = new Scanner(System.in);
if (scan.hasNextDouble()){
v = scan.nextDouble();
if (v<=0) {
System.out.println("You have to use a positive number");
isValid(v);
}
else {
return v;
}
}
else {
System.out.println("Thats not how it works");
isValid(v);
}
return v;
}
公共静态双精度有效(双v){
扫描仪扫描=新扫描仪(System.in);
if(scan.hasNextDouble()){
v=scan.nextDouble();
如果(v需要返回递归调用的结果:
return isValid(v);
它返回的是最后一个无效值,因为从递归调用返回后,执行继续到方法底部的返回,返回v
。此时,v
是最后一个无效值。也不需要recursion@KevinAnderson是的,但这不是当前的问题。如果如果是代码检查,我们可以再深入一点。@KevinAnderson为什么不?@AlexLab如果使用do…while循环或类似的方法,这会简单得多。Java也不是使用递归的好语言。如果用户输入太多无效值,您的程序将因SO而崩溃。