java - 变量可能尚未初始化——为什么我需要初始化?

标签 java syntax

所以编译器说第二个打印行语句中的英寸变量需要初始化。这是为什么?为什么我不能将变量保留为未知变量?当我没有 if/else 语句时,它就可以正常工作。

import java.util.Scanner;

class FeetToInchesInputOutput {
public static void main(String[] args){

 double feet;
 double inches;
 String userFeetInput;

 Scanner input = new Scanner(System.in);

 System.out.print("How many feet do you want to convert?");
 userFeetInput = input.nextLine();
 feet = Double.parseDouble(userFeetInput);

 if (feet < 500.0) {
 inches = feet*12;
 }
else {
system.out.println("Type a number less than 500.");
}

System.out.println(feet + " feet is equal to " + inches + " inches.");
System.exit(0);
}
}

最佳答案

在 Java 中,局部变量不会自动初始化。在代码中使用它之前必须先初始化它。在您的代码中,如果条件为真,它将被初始化,但编译器不知道条件是真还是假。这是在运行时决定的。在其他情况下,条件变量英寸没有被初始化(或者你说被分配了一个值)。所以它会抛出编译错误。您甚至可以用 null 初始化对象。

你必须初始化它,因为Java的创建者决定局部变量不会像类级别变量那样获得默认值。所以你必须初始化它。

关于java - 变量可能尚未初始化——为什么我需要初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33058195/

相关文章:

java - Mockito - 如何模拟接收参数的方法 - (Object...o)

java - 使用 JAXB 编码时消除空元素

c# - "~Method"是什么意思?

syntax - lua (Syntax) : Calling a function that returns more than 1 value, 并使用这些值作为参数,但没有额外的变量赋值行?

python - Python 中 `from ... import ...` 语法背后的推理

c++ - 在 C++ 中通过引用传递对象

java - 关于 Java HashSet/HashMap 自定义对象作为键的权威文档?

java - 等效于 iOS Swift 中的 Java 接口(interface)回调

javascript - 两个代码之间的差异

java - 如何在 Eclipse Java 程序中找到未运行的代码?