Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-如何访问在void函数中创建的数组_Java_Arrays_Void - Fatal编程技术网

Java-如何访问在void函数中创建的数组

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

感谢那些帮助我走到这一步的人。我做了一些改变。现在,在方法method()中分配了array1的行上有一个错误。(编辑版本如下)

公共类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 = {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()
方法中错误地键入了数组的创建。