如果执行以下程序,我收到错误消息。它说o
无法解析为变量。
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
try{
int o[] = new int[2];
o[3]=23;
o[1]=33;
}catch(Exception e){
System.out.println(e.getMessage());
e.printStackTrace();
}
System.out.println(o[1]); //THis line shows the error.
}
}
为什么我要排在System.out.println(o[1]);
行?
答案 0 :(得分:1)
首先,你在try-block中初始化o,所以o在它之外是不可见的。更改此项并调用o [3]将得到一个ArrayIndexOutOfBounds,因为o的大小仅为2.
答案 1 :(得分:1)
问题在于范围。因为你在try块中定义了o,编译器在try / catch之外并不知道o。 解决问题要么将打印放在finally块中,要么在try块之前初始化o。
在此处阅读有关变量范围的更多信息: http://www.java2s.com/Tutorial/Java/0020__Language/VariableScope.htm
答案 2 :(得分:0)
您的int的<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.9/angular.min.js"></script>
<div ng-app>
<div ng-controller="Ctrl">
<label>string model </label>
<input type="number" ng-model="priceStr" /><br/>
<label>number model </label>
<input type="number" ng-model="priceNum" />
</div>
</div>
仅限于scope
块。将其移至try-catch
块之外,以便在try-catch
。
sysout()
此外,为了执行public static void main(String[] args) {
/* Moved Outside */
int o[] = new int[4];
try{
o[3] = 23;
o[1] = 33;
}catch(Exception e){
System.out.println(e.getMessage());
e.printStackTrace();
}
/* o will be visible now */
System.out.println(o[1]);
}
,您必须将数组大小增加到最小值。