java - Java 在 if/else 语句中返回多个值

标签 java

我很难理解如何根据多种情况准确返回一个值。如果我选择return kg;来 self 的readWeight()方法,在 if 语句之外,错误告诉我 kg可能尚未初始化。它不是在我的 if 语句中初始化的吗?有人能准确地告诉我我做错了什么吗?我真的很想明白这一点。谢谢大家,真的很感激。

public static void main(String[] args) {
    double kg = readWeight();
    System.out.println("Your dog weighs" + kg) ;
    System.out.println("Completed computing Kay9 Kibbles amount.") ;
}//end of main method

public static double convertLBtoKG(double lb) {
    final double KG_TO_LB_CONVERSION = 0.454 ;
    double kg = lb * KG_TO_LB_CONVERSION ;
    return kg ;
}//end of convertLBtoKG method

public static double readWeight(){
    Scanner keyboard = new Scanner(System.in) ;
    System.out.println("Would you like to enter your dog's weight " +
                       "in kilograms (kg) or pounds (lb)?\n" +
                       "Enter k (for kg) or p (for lb):") ;
    char weight = keyboard.nextLine().charAt(0) ; 
    double lb;
    double kg;

    if(weight == 'p' ){
        System.out.println("Enter your dog's weight in lb:") ;
        lb = keyboard.nextDouble() ;
        kg = convertLBtoKG(lb) ;
    }

    else if(weight == 'k'){
        System.out.println("Enter your dog's weight in kg:") ;
        kg = keyboard.nextDouble() ;
    }

    else if(weight != 'p' && weight != 'k'){
        System.out.println("I can't understand your choice; assuming kilograms.") ;
        System.out.println("Enter your dog's weight in kg:") ;
        kg = keyboard.nextDouble() ;
    }
    return kg ;
}

最佳答案

只需将其初始化为某个默认值:

double kg = 0.0;

局部变量必须被初始化,即使它看起来至少有一个 if 语句总是为 true,并且 kg 将在相应的 block 内初始化,编译器可能不会足够聪明地意识到这一点。

另一个可能有效的选项是将最后一个“else if”替换为“else”。

关于java - Java 在 if/else 语句中返回多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26314708/

相关文章:

java - 如何在lucene中查询int和float元素

java - 从 Http 下载图像获取响应

java - Android Volley 无法返回字符串

java - 使用类加载器实现 Java 和 Android 之间的共享代码

java - 使用 Java 中的 TableSource、Table 或 DataSet 对象将 String 转换为 Double

java - Eclipse Sonar Lint 默认配置文件

java - 子字符串 pom.xml 中的变量

java - 根据长度乘以该数字

java - 并发运行 spring 框架事务更新错误数据

java - Checkstyle 特定方法的多行正则表达式