java - 方法返回负值

标签 java if-statement double false-positive

我正在尝试创建一种方法来检查输入是否是大于零的 double 值。检查它是否确实是 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;
}

最佳答案

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

return isValid(v);

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

关于java - 方法返回负值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46333545/

相关文章:

java - CXF NoSuchMethodError ClassHelper.getRealClass

java - 使用复合备用键映射多对一关系

java - 使用 Platform Channels 在 Flutter 中调用原生库

java - [ ][ ] 和 if 语句的问题

python - 在 if 语句中中断 for 循环

C# 检查是否包含子字符串的各种组合

java - Spring 和 Hibernate 2nd level with Ehcache

php - php从mysql访问数据时的奇怪查询

c# - 为什么我的带有双参数的 Web API 方法没有被调用?

swift - 在 Swift 中将非符号字符串转换为 Int 或 Double