1

我有一个程序,它从args[]数组中获取一个参数,在 main 方法中定义,但有一个备份以防未定义,以 try...catch 块的形式,如果ArrayIndexOutOfBounds抛出异常,而是使用一种调用方法getInt来提示用户输入变量。但是,由于某种原因,当我尝试使用该变量时,我的编译器说它找不到它。我有以下代码:

try {
    int limit = Integer.parseInt(args[0]);
}
catch(ArrayIndexOutOfBoundsException e) {
    int limit = getInt("Limit? ");
}
int[] p = getPrimes(limit);

getPrimes是我拥有的另一种方法,它返回从 2 到指定数字的素数数组(使用阿特金筛)。无论如何,当我编写int[] p = getPrimes(limit);并尝试编译时,它说未定义“限制”变量。请帮忙!

4

4 回答 4

8

您应该在块外声明它:

int limit;
try {
    limit = Integer.parseInt(stuff[0]);
}
catch(ArrayIndexOutOfBoundsException e) {
    limit = getInt("Limit? ");
}
int[] p = getPrimes(limit);
于 2012-06-28T11:25:32.197 回答
2

在 catch 块外声明limit,目前在 catch 块范围内catch{}

于 2012-06-28T11:25:47.257 回答
2
int limit;
try {
    limit = Integer.parseInt(stuff[0]);
}
catch(ArrayIndexOutOfBoundsException e) {
    limit = getInt("Limit? ");
}
int[] p = getPrimes(limit);

在您的程序中,您创建了 2 个局部限制变量,一个在try块中,另一个在catch块中。

在 try 块之外声明它

于 2012-06-28T11:27:16.717 回答
1

在 try/catch 块之外定义限制变量,您无权访问外部 try 块内定义的变量。如果您在 try 块之外调用它,就像您在此处的情况一样,您还必须初始化它。

于 2012-06-28T11:27:50.810 回答