Объяснение: всё дело в том, что в первом случае (в верхнем, где s = 0 написано вне цикла) s изначально равен нулю, а затем с каждой итерацией цикла s увеличивается.
А втором случае на каждой итерации цикла сначала присваивается s = 0, а затем уже изменяется. Поэтому перед каждой следующей итерацией цикла всё что происходило с s раньше обнуляется.
Если подвести итог, то разница заключается в том, что присваивание находится в цикле или вне него, а значит выполняется один раз (если вне цикла) или много раз (если внутри)
package javaguru;
import java.util.Scanner;
import java.util.Random;
public class hw {
public static void main(String[] args) {
int[] cats = new int[10];
int countEven = 0;
int countOdd = 0;
for (int i = 0; i < cats.length; i++) {
cats[i] = ((int) (Math.random()*100));
System.out.print(cats[i] + " ");
if ( cats[i] % 2 != 0 ){
countOdd++;
} else {
countEven++;
}
}
System.out.println();
System.out.println("Odd count " + countOdd);
System.out.println( "Even count " + countEven );
}
}
ответ: 0
711 – 711 = 0