我对java很新,而且我假设我的程序是一个简单的问题。
对于方法arrayTest2
,由于编译错误,我无法将其导入main:
"Cannot find symbol, symbol: variable dataStorage".
我试过也试过了声明:
arrayTest2(dataStorage[][])
和
arrayTest2(dataStorage[5][5])`
但它们不起作用。
非常感谢任何帮助。
干杯
import io.*;
public class TrialArray
{
public static void main(String [] args)
{
arrayTest();
arrayTest2(dataStorage);
}
public static void arrayTest()
{
int[][] dataStorage = new int[5][5];
dataStorage[1][2] = 1;
System.out.printf("THIS PART WORKS");
}
public static void arrayTest2(int[][] dataStorage)
{
dataStorage[2][2] = 3;
System.out.printf("THIS DOESNT");
}
}
答案 0 :(得分:3)
这里的问题是范围:在一个函数中定义的东西在另一个函数中不可见。您通常要做的就是返回值。像这样:
import io.*;
public class TrialArray
{
public static void main(String [] args)
{
int[][] dataStorage = arrayTest();
arrayTest2(dataStorage);
}
public static int[][] arrayTest()
{
int[][] dataStorage = new int[5][5];
dataStorage[1][2] = 1;
System.out.printf("THIS PART WORKS");
return dataStorage;
}
public static void arrayTest2(int[][] dataStorage)
{
dataStorage[2][2] = 3;
System.out.printf("THIS DOESNT");
}
}
或者,您可以将dataStorage
字段作为全局变量,但这可能非常令人困惑。要做到这一点,你要定义
public class TrialArray
{
private static int[][] dataStorage;
// ...
public static void arrayTest() {
dataStorage = new int[5][5];
dataStorage[1][2] = 1;
System.out.printf("THIS PART WORKS");
}
// ...
}
答案 1 :(得分:0)
您尝试将dataStorage
传递给arrayTest
- 函数,但dataStorage
不是该类的字段,也不是main
的局部变量(又名dataStorage
)中不存在main
。
public static void main(String [] args) {
arrayTest();
arrayTest2(dataStorage); //<------- What is dataStorage?
}
Here is a little tutorial on variable scopes in Java。您可能想要返回在arrayTest()
中创建的数组并使用它,但我只想猜测您想要做什么。
答案 2 :(得分:0)
在这一行
arrayTest2(dataStorage);
您正在将参数传递给方法,该方法有一个参数“dataStorage”,但您没有声明它。
答案 3 :(得分:-1)
您无法访问其他方法中声明的变量。
要使其有效,您必须这样做:
public class TrialArray
{
int[][] dataStorage;
public static void main(String [] args)
{
dataStorage = new int[5][5];
arrayTest();
arrayTest2(dataStorage);
}
public static void arrayTest()
{
dataStorage[1][2] = 1;
System.out.printf("THIS PART WORKS");
}
public static void arrayTest2(int[][] dataStorage)
{
dataStorage[2][2] = 3;
System.out.printf("THIS DOESNT");
}
}