2015-06-16 3 views
-4

Я видел этот код в одном из уроков. В этом нет никакой ошибки, но я просто не понимаю код. Может ли кто-нибудь меня вести?Array in method - JAVA

int trying[] = {3,4,5,6,7}; 
change (trying); 

for(int y: trying) { 
    System.out.println(y); 
    } 
} 
public static void change (int x[]) { 
    for (int counter = 0; counter < x.length ; counter++){ 
     x[counter] += 5; 
    } 
} 

Способный объяснить эту часть для меня?

for(int y: trying) { 
    System.out.println(y); 
} 

Я не понимаю, особенно эта строка кода:

для (INT у: пытающегося)

+0

, что означает: 'для каждого Int содержится в«попытке»массив, установите этот Int как«у»и выполнить следующие block' – jhamon

ответ

2

Это для-каждого цикла, удобный способ перебрать массив, Collection, или, как правило, любой Iterable.

Например, цикл над массивом целых чисел int[] trying, вы можете сделать:

for(int i=0; i<trying.length; i++) { 
    int y = trying[i]; 
    // stuff with y 
} 

или с использованием while, итератор ... Но это куча характера, мы ленивы и наши пальцы устали. Так вот короче способ сделать такую ​​частую операцию:

for(int y : trying) { 
    // stuff with y 
} 

Позади капот, расширенный для кэшировать Iterator для любого Iterable, или индекс для массива, here является спецификация JLS.

+1

Вот документация к нему: https://docs.oracle .com/javase/8/docs/technotes/guides/language/foreach.html – DJClayworth

+1

вот вопрос о массиве 'int', а не' Collection' – Blip

+0

@Blip Ну, я думаю, что это больше вопрос о том, каждый вопрос о массиве, но вы правы, я собираюсь изменить свой пример :) – NiziL

5

Java Каждый для синтаксического цикла:

for(data_type variable : array | collection){} 

Преимущество:

  • Это делает код более читаемым.

в вашем примере

for(int y: trying){ 
    System.out.println(y); 
} 

просто означает, как Int у будет перебирать все значения в пытается. Мол,

for(int i=0;i < trying.length;i++){ 
     int y = trying[i]; 
     System.out.println(y); 
} 

Коллекция:

List<String> someList = new ArrayList<String>(); 
    // add "monkey", "donkey", "skeleton key" to someList 

    for (String item : someList) { 
     System.out.println(item); 
    } 

же, как:

for (Iterator<String> itr = someList.iterator(); itr.hasNext();) { 
     String item = itr.next(); 
     System.out.println(item); 
    } 

, как это обсуждалось ранее в этом post

+0

'for (int y = 0; y Blip

+1

да, но вывод представляет собой содержимое массива' try' – Blip

+2

Хорошо, но как насчет кода в вопросе? – Blip

2

for(int y: trying) является реализацией foreach цикла в Java.Это может быть понято как:

for(int i = 0; i< trying.length; i ++){ 
    int y = trying[i]; 
    System.out.println(y); 
} 

в Java documentation состояний

для-каждой конструкция также применима к массивам, где он скрывает переменную индекс, а не итератор.

+0

+1, так как это имеет больше смысла, то ответ с двумя upvotes. 'int y' - значение, содержащееся в каждом индексе массива, а не значение индекса, как указано в этом ответе @Hiru –

+0

Для простого и легкого описания [PLUS ONE] – GingerHead

1

Надеюсь, я смогу дать вам информацию о необходимости или необходимости.

Int trying[] - это массив целых чисел.

с циклом for, который вы петли через массив trying[], и каждый раз, когда вы крутите корыто, вы отправляете сообщение на консоль.

Тогда у вас есть вторая петля

так что если вы Int счетчика меньше, чем длина массива х [], а затем вы продолжаете кружась корыта петлю. как только счетчик достигнет той же длины или значения, что и x [], цикл останавливается.

for(int y: trying) { 
    System.out.println(y); 
    } 
} 

Так в приведенном выше примере самом деле не так сложно, цикл будет продолжаться до того момента, когда я больше или же, как и пытаться.

с этой информацией вы можете выяснить, последний цикл сам:

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html

1

Это называется циклом Еогеаспа. Так на словах он говорит:

Для каждого элемента «y» в массиве «пытается» - сделайте что-нибудь (здесь: напечатайте его).

Это очень удобно в том случае, если вам все равно, как часто вы выполняете цикл, но просто хотите обратиться к каждому элементу в массиве/коллекции.

В качестве альтернативы вы можете просто использовать цикл «normal» for, как вы использовали его в методе изменения.

2

Хорошо, поэтому попытка [] - это array целых чисел. Функция change() принимает try [] как входной сигнал и +5 для каждого целого числа при попытке []. И for loop, о котором вы спрашиваете, это просто синтаксический сахар, который может сократить код.

Посмотрите на ссылки doc и попробуйте запустить его в затмении или некоторой среде IDE.

1

Он говорит, запустите код в {...} для каждого объекта при попытке.

Datatype is int, потому что try является массивом int.

«y» - это переменная, которая удерживает объект от попытки (по одному за раз).

Например, при первом запуске, y получает первое значение (3) из массива и запускает код между {и}. Затем y получает второе значение (4) из массива и снова запускает тот же код .... и так далее.

В этом случае он будет печатать значение y для каждого объекта при попытке.

for(int y: trying) 
{ 
    System.out.println(y); 
} 

Тип данных, упомянутый в цикле for, должен быть таким же, как тип массива. для примера,

for (String s : allLines) { ... } 
for (Member m : allMembers) { ... }