这是我的一段代码:
if (1 == wahl)
do{
// Anzahl Spieler
int anzahlSpieler = IOTools.readInteger("Geben Sie Anzahl Spieler ein: ");
Spieler[] spieler = new Spieler[anzahlSpieler];
for ( int j = 0; j < anzahlSpieler; j++) {
spieler[j] = new Spieler("aktueller Spieler "+j);
}
Wuerfel wuerfelWurf = new Wuerfel();
现在,当我添加一个异常处理程序时,如下所示:
if (1 == wahl)
do{
// Anzahl Spieler
int anzahlSpieler = IOTools.readInteger("Geben Sie Anzahl Spieler ein: ");
try{
Spieler[] spieler = new Spieler[anzahlSpieler];
} catch (NegativeArraySizeException e){
System.err.print("Unzulaessige Eingabe: + e.getMessage());
}
for ( int j = 0; j < anzahlSpieler; j++) {
spieler[j] = new Spieler("aktueller Spieler "+j);
}
Wuerfel wuerfelWurf = new Wuerfel();
从下面捕获的每个spieler
变量直到整个代码的末尾都标记为红色并且写了:&#34; spieler无法解析为变量&#34;。但是try和catch语句没有错误。
我做错了什么?
PS:异常是&#34; NegativeArraySizeException&#34;
答案 0 :(得分:2)
从try块中声明'spieler'变量。
在try块中声明的变量只能在块内访问。所以从try块中声明变量并在try块中分配它。
答案 1 :(得分:0)
该变量仅在try块的范围内是已知的。 你应该在try块之外宣布他,然后就可以了......
答案 2 :(得分:0)
if (1 == wahl)
do{
// Anzahl Spieler
int anzahlSpieler = IOTools.readInteger("Geben Sie Anzahl Spieler ein: ");
Spieler[] spieler; //declare variable outside try block so it is accessible
try{
spieler = new Spieler[anzahlSpieler]; //initialize the variable here to catch any exceptions
}
catch (NegativeArraySizeException e){
System.err.print("Unzulaessige Eingabe: + e.getMessage());
}
for ( int j = 0; j < anzahlSpieler; j++)
{
spieler[j] = new Spieler("aktueller Spieler "+j);
}
Wuerfel wuerfelWurf = new Wuerfel();
块中声明的变量是该块的局部变量。它在该块之外没有存在。因此,您无法访问spieler
块之外的try
变量。
以上代码将解决您的问题。但是,如果您想要访问spieler
块之外的if
变量,则需要在if
块之前声明它。