2015-03-27 4 views
1

Я пытаюсь напечатать массив некоторых простых чисел, которые делятся на число, на выходе я получаю для этого кода:массив печати из функции - Java

[J @ 15db9742

Как распечатать массив, который я получаю от функции.

public static long[] primes(int n) { 
    int count = 0; 
    long arr1[] = new long[n]; 
    for (int i = 2; i < n; i++) { 
     boolean prime = true; 
     if (n % i == 0) 
      for (int j = 2; j < i && prime; j++) { 
       if (i % j == 0) prime = false; 
      } 
     if (prime && n % i == 0) { 
      arr1[count] = i; 
      System.out.println(arr1[count]); 
      count++; 
     } 
    } 

    long arr[] = new long[count]; 
    for (int i = 0; i < arr.length; i++) { 
     arr[i] = arr1[i]; 
    } 
    return arr; 
} 
+5

'System.out.println (Arrays.toString (обр));' –

+0

@pbabcdefp ответ является лучшим. – Soham

ответ

4

Массив является ссылочного типа.

И вы должны использовать утилиту класс Arrays для печати массивов:

Arrays.toString(array)

для многомерных массивов:

Arrays.deepToString(array)

BTW
стрелковых предложений, которые вы можете использовать некоторые оптимизации вместо цикла:

for (int i = 0; i < arr.length; i++) { 
     arr[i] = arr1[i]; 
    } 

лучше использовать System.arraycopy():

System.arraycopy (arr1, 0 , arr, 0, arr.length);

+0

Или просто 'return arr1.clone()'. –

+0

@LouisWasserman Он будет работать, но для *** многомерных массивов *** 'clone()' терпит неудачу. –

+0

Если эта проблема связана с многомерными массивами, я бы не предложил ее? Но этот вопрос, похоже, не нуждается в обобщении на многомерные массивы. (Кроме того, 'System.arraycopy' не работает лучше для многомерных массивов.) –

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