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