Prüfen ob Integer zu groß ist

Arbeite ich an einem system für den Austausch und die Benutzer-Einstellung ist der Preis und die Menge für einen Austausch.

Ich will zu machen sicher, dass der exchange ist nicht größer als der Integer maximale Wert, jedoch habe ich ein problem.

Wenn der Betrag der exchange auf 9 oder mehr, auch wenn ich eine überprüfen, um sicherzustellen, dass die Anzahl ist nicht größer als der maximale Wert, es funktioniert nicht. Ich habe getan, einige debugging und bei der Einstellung der Höhe 9, während der Preis 2,147,483,646 (1 weniger als die maximale Anzahl), druckt es aus diesem:

2,147,483,630 - 9

Dies ist meine debugging-code, was sollte ich hinzufügen, um es, um sicherzustellen, dass dies nicht passiert?

public void setPrimaryAmount(int primaryAmount) {
        int price = primaryAmount * this.price;
        System.out.println(Misc.format(this.price * primaryAmount) + " - " + primaryAmount);
        if (price > Integer.MAX_VALUE ||
                price == Integer.MAX_VALUE ||
                price >= Integer.MAX_VALUE ||
                price < 0 || price <= 0 ||
                price++ == Integer.MAX_VALUE) {
            System.out.println("Attempted to set a bad amount.");
            return;
        }
        this.primaryAmount = primaryAmount;
    }

"Versucht, eine schlechte Menge" druckt aus, bis Sie einen Betrag eingeben >= 9.

  • Dir ist schon klar, ich hoffe, dass tests wie price < 0 || price <= 0 sind redundant: price <= 0 ist völlig ausreichend. Ebenfalls für price > Integer.MAX_VALUE || price == Integer.MAX_VALUE || price >= Integer.MAX_VALUE, außer es gibt den zusätzlichen Falten, die eine integer-variable kann eine nie größer sein, als Integer.MAX_VALUE so price == Integer.MAX_VALUE ist alles, was Sie brauchen.
InformationsquelleAutor Tyluur | 2013-11-25
Schreibe einen Kommentar