Java 为什么变量不能在if内初始化
第editRecord行的变量stock显示该变量可能未初始化Java 为什么变量不能在if内初始化,java,swing,Java,Swing,第editRecord行的变量stock显示该变量可能未初始化 if(selection.equalsIgnoreCase("Flower")) { String filepath = "Stock.txt"; String name = "Flower"; String stock; if(add.isSelected())
if(selection.equalsIgnoreCase("Flower"))
{
String filepath = "Stock.txt";
String name = "Flower";
String stock;
if(add.isSelected())
{
stock = String.valueOf(id.getStock(0) + Integer.parseInt(jTextField1.getText()));
}
if(minus.isSelected())
{
stock = String.valueOf(id.getStock(0) - Integer.parseInt(jTextField1.getText()));
}
String price = "12.90";
String amountSold = String.valueOf(id.getItemSold(0));
editRecord(filepath,name,stock,price,amountSold);
}
这并不是说它不能在
if
块中初始化,而是编译器对代码的静态分析表明,它有可能在未初始化的情况下进入editRecord(…,stock,…)
方法调用
例如:如果add.isSelected()
或minus.isSelected()
都不是真的,那么它可以被引用而不被赋值,这是不好的
您可以通过将它初始化为null来解决这个问题,而不是仅仅声明它。这并不是说它不能在
if
块中初始化,而是编译器对代码的静态分析表明它有可能在未初始化的情况下进入editRecord(…,stock…)
方法调用
例如:如果add.isSelected()
或minus.isSelected()
都不是真的,那么它可以被引用而不被赋值,这是不好的
您可以通过将其初始化为null来解决这个问题,而不是仅仅声明它。如果
add.isSelected
和minus.isSelected
都为false会怎么样?因为您有两个独立的条件语句,其中设置了stock
。可能您的代码是正确的,但Java仍然不理解这将涵盖所有情况。如果您确定如果未选择add
,则将选择减号
,您可以使用第二个条件语句作为第一个条件语句的else
-子句。如果add.isSelected
和减号.isSelected
都为false会怎么样?因为您有两个独立的条件语句设置了stock
的语句。可能您的代码是正确的,但Java仍然不理解这将涵盖所有情况。如果您确定如果未选择add
,则将选择减
,则可以使用第二条条件语句作为第一条条件语句的else
-子句。