方法返回负值

时间:2017-09-21 00:20:23

标签: 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 (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;
}

1 个答案:

答案 0 :(得分:2)

您需要返回递归调用的结果:

return isValid(v);

它返回最后一个无效值,因为在从递归调用返回后,执行继续向下返回到方法底部的返回值,返回v。此时,v是最后一个无效值。