2015-11-30 3 views
-3

Может ли кто-нибудь рассказать, почему именно путь будет работать, а не другие.Любой другой способ инициализации int [] перед использованием

Также, если я хочу сделать размер массива во время выполнения, смогу ли я это сделать.

public class RevesingSimpleArray { 

    public static void main(String[] args) { 
     int[] arr = { 1, 2, 3, 4, 5 }; 
     // 1 way will work 
     int[] arr2 = { 0, 0, 0, 0, 0 }; 
     // 2 way not work 
     // int[] arr2 = {}; 
     // 3 way not work 
     // int[] arr2 = null; 

     for (int i = 0; i < arr.length; i++) { 
      System.out.println(arr[i]); 
      arr2[arr.length - (i + 1)] = arr[i]; 
     } 
     System.out.println(" leangth " + arr.length); 

     System.out.println("Printing into reverse form --"); 
     for (int j = 0; j < arr2.length; j++) { 
      System.out.println(arr2[j]); 
     } 
    } 
} 

Я новичок в java и стараюсь понять несколько основ. Благодарим за помощь.

+1

JLS (https://docs.oracle.com/javase/specs/) поможет вам – Andremoniy

+3

ИНТ [] arr2 = новый Int [5]; возможно, вы ищете это ... –

+0

Спасибо @andre его очень полезно –

ответ

1
// int[] arr2 = {}; // actually it gives `ArrayIndexOutOfBoundsException` 

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 

Вам необходимо инициализировать массив перед доступом это элементы через индекс

// int[] arr2 = null; // actually it gives `NullPointerException` 
Exception in thread "main" java.lang.NullPointerException 

Вы должны инициализировать массив до доступа к его функциям

Может кто-нибудь, пожалуйста, скажите, почему именно путь будет работать, а не другие.

Ниже приведены несколько способов.

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

Кроме того, если я хочу, чтобы размер массива во время выполнения, буду я в состоянии сделать это в любом случае.

да что-то вроде этого, получить размер и назначить при инициализации.

public static void main(String[] args) { 
     Scanner n = new Scanner(System.in); 
     int ne = 0; 
     System.out.print("Enter Number of Elements to create array with"); 
     ne = n.nextInt(); 
     int num[] = new int[ne]; 
    } 
+0

, почему другие способы не работают - int [] arr2 = {}; int [] arr2 = null; , Я попробовал оба, не могли бы вы объяснить. –

+0

@Avenger, в чем проблема, кажется прекрасной, нет проблемы с компиляцией. –

+0

В обоих инициализациях, о которых я упомянул в комментарии, были выполнены, но у меня есть указатель ошибки null, но почему это массив примитивного типа данных, а не тип класса-оболочки, поэтому почему я имею нулевой указатель в этом случае. –

1

Вы можете сделать массив во время выполнения:

int size = 5; 
int[] array = new int[size]; 
+0

Откуда у вас 'x', –

Смежные вопросы