import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //"2 10000000 10000000" entre
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("égal");
return;
}
}
System.out.println("Inégal");
}
}
Le résultat devrait être 10000000 pour list.get (i)
et 10000000 pour list.get (i + 1)
, mais le résultat n'est "pas égal". Pourquoi? ??
==
, le type d'objet est ʻequals`Puisque Integer est un type d'objet, lors de la comparaison avec ==
, il semble qu'il sera "différent de" car il vérifiera s'il s'agit de la même instance.
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //"2 10000000 10000000" entre
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("égal");
return;
}
}
System.out.println("Inégal");
}
}
//résultat
//égal
En conclusion, lors de la comparaison des nombres, je devais faire attention à utiliser ==
pour le type primitif et ʻequals` pour le type d'objet.
Recommended Posts