ChatGPT解决这个技术问题 Extra ChatGPT

如何在 Java 中初始化一个数组?

我正在初始化一个这样的数组:

public class Array {

    int data[] = new int[10]; 
    /** Creates a new instance of Array */
    public Array() {
        data[10] = {10,20,30,40,50,60,71,80,90,91};
    }     
}

NetBeans 在这一行指出了一个错误:

data[10] = {10,20,30,40,50,60,71,80,90,91};

我该如何解决这个问题?

您可以将“int data[] = new int[10]”替换为“int data[]”。你在那里浪费内存。

J
Jared Rummler
data[10] = {10,20,30,40,50,60,71,80,90,91};

以上不正确(语法错误)。这意味着您正在为 data[10] 分配一个数组,该数组只能包含一个元素。

如果要初始化数组,请尝试使用 Array Initializer

int[] data = {10,20,30,40,50,60,71,80,90,91};

// or

int[] data;
data = new int[] {10,20,30,40,50,60,71,80,90,91};

注意这两个声明之间的区别。将新数组分配给已声明的变量时,必须使用 new

即使您更正了语法,访问 data[10] 仍然不正确(您只能访问 data[0]data[9],因为 Java 中的数组索引是从 0 开始的)。访问 data[10] 将引发 ArrayIndexOutOfBoundsException


实际上,它不正确的主要原因是它是语法错误! AIOB 只会在语法可接受的情况下发生。
你能帮我吗,如果我声明一个这样的数组:public static void product(int[] array){ int[] productArray = new int[array.length]; 并想设置 productArray zero 的所有值,我应该写什么? (我想我应该写一个循环并将所有值设置为零,有没有更好的方法来做到这一点?)
@Hengameh:默认初始化为 0。请参阅stackoverflow.com/a/2154340/1000655
K
Koray Tugay

尝试

data = new int[] {10,20,30,40,50,60,71,80,90,91 };

+1。你有一个额外的开口支架。也可以写成:data[0] = 10;数据[1] = 20; .... int data[] = new int[10] 之后,但是代码太多,最终会做同样的事情。
H
Harel Farkash

当您创建一个大小为 10 的数组时,它分配了 10 个插槽,但从 0 到 9。这个 for 循环可能会帮助您更好地了解这一点。

public class Array {
    int[] data = new int[10]; 
    /** Creates a new instance of an int Array */
    public Array() {
        for(int i = 0; i < data.length; i++) {
            data[i] = i*10;
        }
    }
}

佚名

你可以做:

int[] data = {10,20,30,40,50,60,71,80,90,91};

我想知道这在 5 年前接受的答案之上增加了什么价值。
V
Vinayak

句法

 Datatype[] variable = new Datatype[] { value1,value2.... }

 Datatype variable[]  = new Datatype[] { value1,value2.... }

例子 :

int [] points = new int[]{ 1,2,3,4 };

R
Rusty Shackleford

与其学非官网不如学oracle网站

链接如下:Click here

*您可以找到具有完整描述的初始化和声明 *

int n; // size of array here 10
int[] a = new int[n];
for (int i = 0; i < a.length; i++)
{
    a[i] = Integer.parseInt(s.nextLine()); // using Scanner class
}

输入:10//数组大小 10 20 30 40 50 60 71 80 90 91

显示数据:

for (int i = 0; i < a.length; i++) 
{
    System.out.println(a[i] + " ");
}

输出:10 20 30 40 50 60 71 80 90 91


OP 显然是试图一次分配一堆值。您的回复不承认这一事实。
f
fastcodejava

你不能像这样初始化一个数组。除了其他人的建议之外,您还可以执行以下操作:

data[0] = 10;
data[1] = 20;
...
data[9] = 91;

M
Morvader

您正在尝试将数组的第 10 个元素设置为数组尝试

data = new int[] {10,20,30,40,50,60,71,80,90,91};

FTFY


S
Sedat Kilinc

如果你想在构造函数中初始化一个数组,你不能像使用那些数组初始化器一样。

data= {10,20,30,40,50,60,71,80,90,91};

只需将其更改为

data = new int[] {10,20,30,40,50,60,71,80,90,91};

您不必用 data[10] = new int[] { 10,...,91} 指定大小只需用 int[] data; 声明属性/字段并像上面一样初始化它。您的代码的更正版本如下所示:

public class Array {

    int[] data;

    public Array() {
        data = new int[] {10,20,30,40,50,60,71,80,90,91};
    }

}

如您所见,括号为空。不需要告诉括号之间的大小,因为初始化及其大小是由大括号之间元素的计数指定的。


t
trejder

也许这会起作用:

public class Array {

    int data[] = new int[10]; 
    /* Creates a new instance of Array */
    public Array() {
        data= {10,20,30,40,50,60,71,80,90,91};
    }
}

这与问题有何不同?请扩大你的答案!
构造函数中不允许使用数组初始值设定项!!!!在发布它们之前,您至少应该测试您的提案......