2014-12-25 3 views
-3

У меня возникла проблема с доступом к методу с типом возвращаемого массива. Это мой код:Access Method return Array

public static void main(String[] args) { 
    int value = 5; 
    for(int i=0; i<value; i++){ 
     System.out.println((i+1)+ "=" + Arrays.toString(Arr(value))); 
    } 
} 

private static int[] Arr(int n){ 
    int[] x = new int[n]; 
    for(int i = 0; i<n; i++){ 
     x[i] = i+1; 
    } 
    return x; 
} 

Результат кода всегда печатает [1,2,3,4,5] в течение 5 раз. Мой вопрос: как получить доступ к определенному номеру массива, например, как получить доступ к arr [1], который содержит 2 или arr [2], который содержит 3?

ответ

0

В настоящее время, вы создаете новый массив каждый раз, когда вы идете через петлю. Это очень медленно и расточительно, особенно если вы хотите распечатывать только одно значение каждый раз.

Чтобы получить код, как он стоит только напечатать одно значение, вы могли бы сделать это:

int value = 5; 
for(int i=0; i<value; i++){ 
    System.out.println((i+1)+ "=" + Arr(value)[i]); 
} 

Но, как я говорю, потому что вы называете Arr каждый раз, это будет очень неэффективно.То, что вы действительно хотите сделать, это создать массив один раз, а затем цикл через него:

int value = 5; 
int[] array = Arr(value); 
for(int i=0; i<value; i++){ 
    System.out.println((i+1)+ "=" + array[i]); 
} 

Если вы хотите увидеть, что эффект этого изменения, попробуйте установить value на 10000000 или более, и вы должны заметить, что первый постепенно замедляет работу дольше.

Задайте это и узнайте, как быстро оно начинается. Затем идите, выпейте и посмотрите, все ли работает, когда вы вернетесь. (Если он вернется, когда вы вернетесь, установите значение еще выше.)

0

Функция возвращает массив, из которого вы можете получить доступ к таким элементам, как Arr(value)[index]. Ниже приведен пример:

System.out.println((i+1)+ "=" + Arrays.toString(Arr(value)[i])); 

Вы также можете использовать массив Темп в этом случае:

int[] temp = Arr(value); 
System.out.println((i+1)+ "=" + temp[i]); 
1

Попробуйте это:

System.out.println((i+1)+ "=" + Arr(value)[i]); 

Вы получаете целочисленный массив, так что если у вас есть index, то вы можете просто получить доступ к нему, как указано выше. Это эквивалентно

int[] array = Arr(value); 
System.out.println((i+1)+ "=" + array[i]); 

двух точек стоит отметить:

  • Вы имя метода следует начать с небольшого случая.
  • Вы вызываете метод в цикле. Выведите его из цикла и вызовите его только один раз, чтобы ускорить выполнение кода.
1

Вы должны вызвать метод один раз и получить доступ к элементам возвращаемого массива.

public static void main(String[] args) { 
    int value = 5; 
    int[] result = Arr(value); 
    for(int i=0; i<value; i++){ 
     System.out.println((i+1)+ "=" + result[i]); 
    } 
} 
0

Попробуйте это:

System.out.println((i+1)+ "=" + Arr(value)[i]); 

Простой и я надеюсь, что он помог бы.

  • , когда вы используете + со строкой ("="), поэтому он уже преобразовал элемент массива Int в String.
1

Если вы хотите печатать каждый элемент один на один

public static void main(String[] args) { 
    int value = 5; 
    int[] output=Arr(value); 
    for(int i=0; i<value; i++){ 
     System.out.println((i+1)+ "=" + output[i]); 
    } 
} 

private static int[] Arr(int n){ 
    int[] x = new int[n]; 
    for(int i = 0; i<n; i++){ 
     x[i] = i+1; 
    } 
    return x; 
} 
+0

Приобретено только потому, что вы предоставляете код, который * исправить * проблему. Тем не менее, вы должны объяснить, как этот код исправляет проблему. –

0

Вы вызываете функцию неправильным Params.

вы можете позвонить вот так.

public static void main(String[] args) { 
    int value = 5; 
    for (int i = 0; i < value; i++) { 
     System.out.println((i + 1) + "=" + Arrays.toString(Arr(i + 1))); 
    } 
}