Eu estou inicializando um array de dados como este:
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}; } }
O NetBeans aponta um erro na linha
data[10] = {10,20,30,40,50,60,71,80,90,91};
Como posso resolver o problema?
data[10] = {10,20,30,40,50,60,71,80,90,91};
O acima não está correto (erro de syntax). Isso significa que você está atribuindo um array aos data[10]
que podem conter apenas um elemento.
Se você quiser inicializar uma matriz, tente usar o 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};
Observe a diferença entre as duas declarações. Ao atribuir um novo array a uma variável declarada, new
deve ser usado.
Mesmo se você corrigir a syntax, acessar data[10]
ainda está incorreto (Você só pode acessar data[0]
para data[9]
porque o índice de matrizes em Java é baseado em 0). Acessar data[10]
lançará um ArrayIndexOutOfBoundsException .
Tente data = new int[] {10,20,30,40,50,60,71,80,90,91 };
Quando você cria uma matriz de tamanho 10, ela aloca 10 slots, mas de 0 a 9. Esse loop pode ajudá-lo a ver isso um pouco melhor.
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; } } }
Você pode fazer:
int[] data = {10,20,30,40,50,60,71,80,90,91};
Sintaxe
Datatype[] variable = new Datatype[] { value1,value2.... } Datatype variable[] = new Datatype[] { value1,value2.... }
Exemplo:
int [] points = new int[]{ 1,2,3,4 };
Em vez de aprender sites não oficiais, aprenda no site da oracle
link segue: Clique aqui
* Você pode encontrar Inicialização, bem como declaração com descrição completa *
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 }
Entrada : 10 // tamanho do array 10 20 30 40 50 60 71 80 90 91
Exibindo dados:
for (int i = 0; i < a.length; i++) { System.out.println(a[i] + " "); }
Saída: 10 20 30 40 50 60 71 80 90 91
Você não pode inicializar uma matriz como essa. Além do que outros sugeriram, você pode fazer:
data[0] = 10; data[1] = 20; ... data[9] = 91;
Se você quiser inicializar uma matriz em um construtor, você não pode usar esses inicializadores de matriz como.
data= {10,20,30,40,50,60,71,80,90,91};
Apenas mude para
data = new int[] {10,20,30,40,50,60,71,80,90,91};
Você não precisa especificar o tamanho com data[10] = new int[] { 10,...,91}
Apenas declare a propriedade / campo com int[] data;
e inicializá-lo como acima. A versão corrigida do seu código seria semelhante ao seguinte:
public class Array { int[] data; public Array() { data = new int[] {10,20,30,40,50,60,71,80,90,91}; } }
Como você vê, o suporte está vazio. Não há necessidade de informar o tamanho entre os colchetes, porque a boot e seu tamanho são especificados pela contagem dos elementos entre as chaves.
você está tentando definir o 10º elemento da matriz para a tentativa de matriz
data = new int[] {10,20,30,40,50,60,71,80,90,91};
FTFY
Talvez isso funcione:
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}; } }