import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //"2 10000000 10000000" kommt herein
int n = sc.nextInt();
List<Integer> list = new ArrayList<>();
for (int i = 0; i < n; i++) list.add(sc.nextInt());
for (int i = 0; i < n-1; i++) {
if (list.get(i) == list.get(i+1)) {
System.out.println("gleich");
return;
}
}
System.out.println("Nicht gleich");
}
}
list.get (i)
sollte 10000000 sein und list.get (i + 1)
sollte gleich 10000000 sein, aber das Ergebnis ist "ungleich". Warum? ??
Da Integer ein Objekttyp ist, scheint es beim Vergleich mit ==
"nicht gleich" zu sein, da geprüft wird, ob es sich um dieselbe Instanz handelt.
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //"2 10000000 10000000" kommt herein
int n = sc.nextInt();
List<Integer> list = new ArrayList<>();
for (int i = 0; i < n; i++) list.add(sc.nextInt());
for (int i = 0; i < n-1; i++) {
if (list.get(i).equals(list.get(i+1))) {
System.out.println("gleich");
return;
}
}
System.out.println("Nicht gleich");
}
}
//Ergebnis
//gleich
Zusammenfassend musste ich beim Vergleichen von Zahlen darauf achten, "==" für den primitiven Typ und "gleich" für den Objekttyp zu verwenden.
Recommended Posts