从方法(Java)调用到main中的数组的声明
我对java相当陌生,我认为我的程序存在一个简单的问题 对于方法从方法(Java)调用到main中的数组的声明,java,arrays,Java,Arrays,我对java相当陌生,我认为我的程序存在一个简单的问题 对于方法arrayTest2,由于编译时出错,我无法将其导入main: "Cannot find symbol, symbol: variable dataStorage". 我也尝试过以下声明: arrayTest2(dataStorage[][]) 及 但它们不起作用 任何帮助都将不胜感激 干杯 import io.*; public class TrialArray { public static void ma
arrayTest2
,由于编译时出错,我无法将其导入main:
"Cannot find symbol, symbol: variable dataStorage".
我也尝试过以下声明:
arrayTest2(dataStorage[][])
及
但它们不起作用
任何帮助都将不胜感激
干杯
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");
}
}
您试图将
dataStorage
传递给arrayTest
-函数,但dataStorage
不是类的字段,也不是main
的局部变量(akadataStorage
在main
中不存在)
publicstaticvoidmain(字符串[]args){
arrayTest();
arrayTest2(数据存储);//您不能访问在其他方法中声明的变量
要使其工作,您必须执行以下操作:
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");
}
}
这里的问题是作用域:在一个函数中定义的某些内容在另一个函数中是不可见的。要解决这个问题,通常要做的是返回该值。类似于以下内容:
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");
}
}
或者,您可以将数据存储
字段作为全局变量,但这可能会非常混乱
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");
}
// ...
}
在这条线上
arrayTest2(dataStorage);
您正在将参数传递给方法,该方法有一个参数“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");
}
// ...
}
arrayTest2(dataStorage);