java程序中if语句中的作用域错误
我在if语句中遇到了一个范围问题,至少,我很确定这就是我的错误所在,并且我不确定如何解决这个问题(我对编程非常陌生) 基本上,如果我在if语句中声明了一些东西,那么变量(在本例中是一个结构数组)就不存在于if语句之外。但是,我确实需要将数组的声明放在if/else中,因为数组的大小取决于N,所以如何修复此错误 这个程序是用Java编写的,我正在使用Eclipse。非常感谢您的任何见解java程序中if语句中的作用域错误,java,if-statement,scope,Java,If Statement,Scope,我在if语句中遇到了一个范围问题,至少,我很确定这就是我的错误所在,并且我不确定如何解决这个问题(我对编程非常陌生) 基本上,如果我在if语句中声明了一些东西,那么变量(在本例中是一个结构数组)就不存在于if语句之外。但是,我确实需要将数组的声明放在if/else中,因为数组的大小取决于N,所以如何修复此错误 这个程序是用Java编写的,我正在使用Eclipse。非常感谢您的任何见解 //declare an int (used in determining array length) int
//declare an int (used in determining array length)
int N = 4;
//declare instance of MyClass
MyClass myClass = new MyClass();
//declare and array, then initialize each struct in that array
if(N <= 26){
MyStruct array[] = new MyStruct[260];
for(int i = 0; i < array.length; i++){
array[i] = new MyStruct();
}
}
else{
MyStruct array[] = new MyStruct[N*10];
for(int i = 0; i < array.length; i++){
array[i] = new MyStruct();
}
//lots of other code goes here of stuff that needs to be done before myMethod can be called
//call a method in myClass that requires 'array' to be passed in
myClass.myMethod(array); // ERROR - ARRAY CANNOT BE RESOLVED TO BE A VARIABLE
//声明一个int(用于确定数组长度)
int N=4;
//声明MyClass的实例
MyClass MyClass=新的MyClass();
//声明和数组,然后初始化该数组中的每个结构
if(N您需要将数组声明MyStruct array[];
移到if
块之外。事实上,当您在块内声明局部变量(一段被{}
包围的代码)时,您回答了自己的问题,根据Java语言的作用域规则,变量将仅在该块内可见
在if
或else
块中,可以执行的操作是将数组实例化为正确的大小,如下所示:
MyStruct[] array;
if (N <= 26) {
array = new MyStruct[260];
for (int i = 0; i < array.length; i++) {
array[i] = new MyStruct();
}
}
else {
array = new MyStruct[N*10];
for (int i = 0; i < array.length; i++) {
array[i] = new MyStruct();
}
}
MyStruct[]数组;
if(N您需要将数组声明MyStruct array[];
移到if
块之外。事实上,当您在块内声明局部变量(一段被{}
包围的代码)时,您回答了自己的问题,根据Java语言的作用域规则,变量将仅在该块内可见
在if
或else
块中,可以执行的操作是将数组实例化为正确的大小,如下所示:
MyStruct[] array;
if (N <= 26) {
array = new MyStruct[260];
for (int i = 0; i < array.length; i++) {
array[i] = new MyStruct();
}
}
else {
array = new MyStruct[N*10];
for (int i = 0; i < array.length; i++) {
array[i] = new MyStruct();
}
}
MyStruct[]数组;
如果(N将数组
声明置于if
语句的范围之外。将数组
声明置于if
语句的范围之外。其他人已经回答了为什么这是一个问题以及如何避免它,但我实际上还是会改变方法。目前,您有两个块重复出现问题代码-为什么不避免呢
int length = Math.min(N, 26);
MyStruct array[] = new MyStruct[length];
for(int i = 0; i < array.length; i++) {
array[i] = new MyStruct();
}
MyClass myClass = new MyClass();
myClass.myMethod(array);
int length=Math.min(N,26);
MyStruct数组[]=新的MyStruct[length];
for(int i=0;i
(请注意,名称MyStruct
的含义在Java中可能不太合适。我意识到它只是一个伪名称,但Java没有类似于C或C的“struct”的内容。以防万一,您还需要其他东西……)其他人已经回答了为什么这是一个问题以及如何避免它,但我实际上还是要改变方法。目前,您有两个重复代码的块-为什么不避免呢
int length = Math.min(N, 26);
MyStruct array[] = new MyStruct[length];
for(int i = 0; i < array.length; i++) {
array[i] = new MyStruct();
}
MyClass myClass = new MyClass();
myClass.myMethod(array);
int length=Math.min(N,26);
MyStruct数组[]=新的MyStruct[length];
for(int i=0;i
(请注意,名称MyStruct
的含义在Java中可能不太合适。我意识到它只是一个伪名称,但Java没有类似于C或C的“struct”的内容。以防万一,您还需要其他东西……)Ah-我想到了这一点,但是,唉,我希望数组大小取决于变量N。如果N@Tabitha我刚刚编辑了我的答案,其中包含了更多的细节和你的问题的解决方案——我想到了这一点,但是,唉,我希望数组大小取决于变量N。如果N@Tabitha我只是用更多的细节和解决方案编辑了我的答案解决你的问题