【发布时间】:2015-04-14 21:51:58
【问题描述】:
我不明白为什么这个 try 块中的代码不执行。我得到一个编译错误,当我在 try 块之后使用这些变量时,它们可能没有被初始化。
double star, planet, posLife, actLife, intelLife, comm, length;
try{
star = Double.parseDouble(factor.elementAt(0).getText());
planet = Double.parseDouble(factor.elementAt(1).getText());
posLife = Double.parseDouble(factor.elementAt(2).getText());
actLife = Double.parseDouble(factor.elementAt(3).getText());
intelLife = Double.parseDouble(factor.elementAt(4).getText());
comm = Double.parseDouble(factor.elementAt(5).getText());
length = Double.parseDouble(factor.elementAt(6).getText());
} catch(NumberFormatException E){
System.err.println("NumberFormatException");
}
【问题讨论】:
-
局部变量的范围受
{和}大括号的限制。这意味着您将无法访问在其余代码中在try块中声明的变量(例如在catch中或在try之后。但从您提到的错误来看,您似乎隐藏了在try之前声明的变量重新声明具有相同名称的新变量。在这种情况下,只需删除类型,例如将double star = ...更改为 `star = ...` 以避免重新声明。 -
其实我之前已经在块外声明了变量。我仍然有同样的问题,因为在 try 块中没有进行变量分配。感谢您的帮助,但情况基本没有改变。
-
好的,我想通了。我曾尝试在 try 块之外声明变量,但奇怪的是我还必须在 try 块之外初始化变量,以允许变量在 try 块内进行赋值。奇怪...
标签: java exception-handling applet try-catch