Java-如何访问在void函数中创建的数组
感谢那些帮助我走到这一步的人。我做了一些改变。现在,在方法method()中分配了array1的行上有一个错误。(编辑版本如下) 公共类JavaApplication2{Java-如何访问在void函数中创建的数组,java,arrays,void,Java,Arrays,Void,感谢那些帮助我走到这一步的人。我做了一些改变。现在,在方法method()中分配了array1的行上有一个错误。(编辑版本如下) 公共类JavaApplication2{ int[] array1; public JavaApplication2() { } public static void main(String[] args) { JavaApplication2 obj = new JavaApplication2(); obj.method(); Syste
int[] array1;
public JavaApplication2()
{
}
public static void main(String[] args) {
JavaApplication2 obj = new JavaApplication2();
obj.method();
System.out.print(obj.array1[1]);
}
public void method()
{
array1 = {1,1,1,1,1,1};
}
}请执行以下操作:
public class JavaApplication2 {
int array[];
public static void main(String[] args) {
JavaApplication2 obj = new JavaApplication2();
obj.method();
System.out.print(obj.array[1]);
}
public void method() {
array = new int[]{1,1,1,1,1,1};
}
}
您在类的构造函数中声明了一个数组,在method()方法中声明了一个数组。这些是局部变量,只能在特定的方法/构造函数中访问。您需要指定一个实例变量,该变量可以按您尝试的方式访问。因为它为空,所以您没有初始化它。在方法内部,您正在初始化其他数组,而不是您所要求的。您需要创建
array1
作为类变量,以便整个类都可以访问它。一般来说,变量的作用域最后位于两个括号之间,它是在中初始化的。在这两个方法中,在这些方法中初始化array1,因此array1的作用域仅在这些方法中
将代码更改为如下内容:
public class JavaApplication2 {
int[] array1;
public JavaApplication2()
{
}
public static void main(String[] args) {
JavaApplication2 obj = new JavaApplication2();
obj.method();
System.out.print(obj.array1[1]);
}
public void method()
{
array1 = new int[]{1, 1, 1, 1, 1};
}
}
public class JavaApplication2 {
private int[] array1;
public JavaApplication2()
{
}
public static void main(String[] args) {
JavaApplication2 obj = new JavaApplication2();
obj.method();
System.out.print(obj.getArray1().[1]);
}
public void method()
{
array1 = new int[]{1, 1, 1, 1, 1};
}
public void getArray1()
{
return array1;
}
}
最好将array1[]初始化为private,并为其提供一个getter方法,如下所示:
public class JavaApplication2 {
int[] array1;
public JavaApplication2()
{
}
public static void main(String[] args) {
JavaApplication2 obj = new JavaApplication2();
obj.method();
System.out.print(obj.array1[1]);
}
public void method()
{
array1 = new int[]{1, 1, 1, 1, 1};
}
}
public class JavaApplication2 {
private int[] array1;
public JavaApplication2()
{
}
public static void main(String[] args) {
JavaApplication2 obj = new JavaApplication2();
obj.method();
System.out.print(obj.getArray1().[1]);
}
public void method()
{
array1 = new int[]{1, 1, 1, 1, 1};
}
public void getArray1()
{
return array1;
}
}
它们在同一类中定义;但是,它们是在方法中声明的,因此它们是局部变量。这意味着它们仅存在于各自的方法中,特别是仅用于方法的单个调用。实际上,当方法退出时,它们就会消失,并且每次调用该方法时都会重新创建它们 引述:
- 局部变量与对象在字段中存储其状态的方式类似,方法通常将其临时状态存储在局部变量中。声明局部变量的语法类似于声明字段(例如,int count=0;)。没有将变量指定为局部变量的特殊关键字;这个决定完全来自于变量被声明的位置——在一个方法的开始括号和结束括号之间。因此,局部变量只对声明它们的方法可见;他们不能从班上的其他人那里得到
public class JavaApplication2 {
int[] array1; // variable declaration
// begins with the type of the variable
public JavaApplication2() {}
public void method() {
array1 = {1,1,1,1,1,1}; // assignment
} // begins with an identifier
}
通常,字段在构造函数中初始化一次,因此不必调用单独的方法来初始化
public class JavaApplication2 {
int[] array1;
public JavaApplication2() {
array1 = {1,1,1,1,1,1};
}
}
您最好解释一下为什么您的答案有效。当我尝试这样做时,在“array={1,1,1,1,1,1}”行上出现了“非法启动表达式警告”错误。是否有什么东西阻止它访问类中声明的数组,或者是否存在格式问题?您无法初始化(或访问)一开始不存在的东西。不是答案吗?为什么不是?不明白。我不能评论fatith的答案,但这会导致编译器错误。在“System.out.print(obj.array[1])行;hi要求的是未初始化的数组,thinking要求的是数组1,因为它是一个字段“?类中没有array1字段。因此您无法初始化它。什么数组2?没有什么能比得上array2。用户已编辑帖子,但无法工作。理想的方法是让该方法返回数组。当我尝试运行此操作时,在“array1={1,1,1,1,1}”行上出现错误。。。这就是为什么我一开始就这么说。知道怎么解决吗?我在数组初始化中有一个输入错误,这可能就是问题所在。我刚修好,现在试试。如果它仍然不起作用,你会得到什么错误?@beandaddyo现在试试。我在
method()
方法中错误地键入了数组的创建。