用户在java类中定义的数组大小

Sag*_*ota 1 java arrays

这是我的java代码: -

import java.util.Scanner;
class Test
{
    int maxSize;
    int array[] = new int[maxSize];

    Test(int maxSize)
    {
        this.maxSize = maxSize;
    }
    public static void main(String args[])
    {
        Scanner input = new Scanner(System.in);
        System.out.print("Enter size of Array:- ");
        int maxSize = input.nextInt();
        Test stack = new Test(maxSize);
        System.out.println("Enter array element:- ");
        for(int i=0; i<maxSize; i++)
        {
            stack.array[i] = input.nextInt();
        }
        for(int i=0; i<maxSize; i++)
        {
            System.out.print(stack.array[i]);
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

这段代码给出了错误Array Index Out Of Bounds.如何将数组的大小设为maxSize

我试图发送maxSize直通构造函数,如上面的代码所示.但它不起作用.

我试过了

class Test
{
    int maxSize;
    int array[];

    Test(int maxSize)
    {
        this.maxSize = maxSize;
        this.array[] = new int[maxSize];
    :::::::::::::::::::::::::
Run Code Online (Sandbox Code Playgroud)

它也不起作用.任何人都可以建议解决方案/改进,使其按预期工作.

Gáb*_*bor 6

这一行:

int array[] = new int[maxSize];
Run Code Online (Sandbox Code Playgroud)

在构造函数之前执行.

int maxSize;
Run Code Online (Sandbox Code Playgroud)

有效的意思是:

int maxSize = 0;
Run Code Online (Sandbox Code Playgroud)

所以数组总是初始化为零长度数组.将您的代码更改为:

int maxSize;
int array[];

Test(int maxSize)
{
    this.maxSize = maxSize;
    array = new int[maxSize];
}
Run Code Online (Sandbox Code Playgroud)

甚至不需要该类的maxSize成员,您甚至可以简单地执行此操作:

int array[];

Test(int maxSize)
{
    array = new int[maxSize];
}
Run Code Online (Sandbox Code Playgroud)

你总是可以得到数组的大小(假设数组已经初始化并且不是null):

int length = array.length;
Run Code Online (Sandbox Code Playgroud)


khe*_*ood 5

在构造函数中初始化数组.语法是

Test(int maxSize) {
    this.maxSize = maxSize;
    this.array = new int[maxSize];
}
Run Code Online (Sandbox Code Playgroud)