2015-11-08 5 views
-4

Я пытаюсь инициализировать Arrays используя for-loop. Но я не могу отличить или скрывать int до Arrays.Как объявить и инициализировать массивы в java

import java.util.Arrays; 

public class InitalizeArrays { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     int[] arr = {1, 2, 5, 8}; //this one is fine    
     Arrays[] arr2 = new Arrays[5]; 

     for(int i=0; i<=arr2.length; i++) 
     { 
      arr2[i]=i; //How to initalize Arrays 
      System.out.println(arr2[i]); 
     } 
    } 
} 

Что мне здесь не хватает?

+0

Что вы пытаетесь сделать? Что вы хотите, чтобы arr2 содержался? –

+0

@Paul, я хочу инициализировать его с некоторым значением ....... –

+1

Если вы хотите заполнить его цифрами, он должен быть int [], как и arr. Я не понимаю, почему вы сделали его массивом []. –

ответ

1

Допустимые индексы массива являются 0 к array.length - 1 (и это массив int с (не Arrays - утилита класса) Вы должны изменить

Arrays[] arr2 = new Arrays[5]; 
for(int i=0; i<=arr2.length; i++) 

к чему-то вроде

int[] arr2 = new int[5]; // <-- to store an int. 
for(int i=0; i<arr.length; i++) // <-- or arr2.length - 1 
{ 
    arr2[i]=arr[i]; // <-- to copy arr. 
} 
.

или Возможно, вы хотите использовать Arrays.copyOf(int[]) как

int[] arr2 = Arrays.copyOf(arr, arr.length + 1); 
// no for loop to copy needed. 
+0

Это будет исключение времени выполнения, скажем, ArrayIndexOutOfBoundsException. Я сталкиваюсь с этой ошибкой времени компиляции. –

+0

Исключение компиляции заключается в том, что 'int' не является экземпляром класса утилиты' Arrays'. –

+0

Отлично, я согласен. как его решить. –

3

Arrays не является объектом, который вы должны использовать ... это всего лишь набор вспомогательных методов для работы с массивами (обратите внимание на нижний регистр «a»). Вот эти документы: https://docs.oracle.com/javase/8/docs/api/java/util/Arrays.html

+0

Массивы в объекте, потому что он расширяет класс Object. public class Arrays extends Object. Но я не вижу конструктора для этого в соответствии с документом. так что мы не можем его инициализировать. –

+1

Я никогда не говорил, что это не объект ... Я сказал, что это «не объект, который вы должны использовать». Он просто содержит статические вспомогательные методы для работы с массивами. – Buddy

0
Arrays[] arr2 = new Arrays[5]; 

следует заменить

int[] arr2 = new int[5]; 

Это все.

Уверен, что ошибки времени компиляции не будет, но будет ошибка времени выполнения , потому что Java не будет обрабатывать массивы [], такие как int [] массивы. Он будет рассматриваться как другой тип данных с отношением NO к целым массивам.