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

标签 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]);
        }

    }
}

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

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

我试过

class Test
{
    int maxSize;
    int array[];

    Test(int maxSize)
    {
        this.maxSize = maxSize;
        this.array[] = new int[maxSize];
    :::::::::::::::::::::::::

也不行。任何人都可以提出解决方案/改进以使其按预期工作。

最佳答案

这一行:

int array[] = new int[maxSize];

在构造函数之前执行。

int maxSize;

有效的意思是:

int maxSize = 0;

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

int maxSize;
int array[];

Test(int maxSize)
{
    this.maxSize = maxSize;
    array = new int[maxSize];
}

类的 ma​​xSize 成员甚至不是必需的,您甚至可以简单地这样做:

int array[];

Test(int maxSize)
{
    array = new int[maxSize];
}

你总能得到数组的大小(假设 array 已经被初始化并且不为空):

int length = array.length;

关于java - java类中用户定义的数组大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48664457/

相关文章:

java - 在 Linux 上从 Jersey 返回 Json 抛出异常

java - 使用并行处理加速选择查询

javascript - AngularJS - 多维数组的自定义过滤器

Javascript:for循环返回 bool 数组而不是值数组

java - Apaches Ignite 不会序列化/反序列化 Guavas LoadingCache

java - 如何通过 Xpath 查询 Selenium 中的 HTML 元素?

java - 替换中 fragment 事务无法正常工作

jquery - 选择逗号分隔字符串中可观察数组的所有字段值

java - 数组 if 语句并打印数组

arrays - 为什么对整个数组进行切片很有用?