int Overflow

Yrea

Mitglied
Hallo liebe Community,

gefragt ist nach einer simplen Addition, die mir einen Overflow mitteilt.

Das Prinzip des Overflows mein ich verstanden zu haben, aber jetzt komme ich nicht weiter. Bin mir sicher das der Lösungsanstaz mittels Integer.MAX_VALUE, Integer.MIN_VALUE der richtige ist. Jedoch selbst nach stundenlangen versuchen wills nicht klappen. Ich erwarte keine Musterlösung eher einen Denkanstoß und bin wirklich für jedliche Hilfe sehr dankbar!

Java:
public class TaschenrechnerAPP {
    public static void main(String[] args) {

        Taschenrechner rechner = new Taschenrechner();
        int a = 5; // Integer.MAX_VALUE
        int b = 3;
        
        int erg = rechner.addiere(a, b);
 
        if(erg!= 0) { 
            System.out.println(a + " + " + b+ " = " + erg);
        } else {
            System.out.println("Fehlerhafte Eingabe");
        }
    }
}

Java:
public class Taschenrechner {
    public Taschenrechner(){
    
    }
    public int addiere(int a, int b){
        return a+b;
    }
    private static boolean checkadd(int a, int b){
        long erg = (long)a + b;
        if(erg < Integer.MIN_VALUE || erg > Integer.MAX_VALUE){
            return true;
        }
        return false;
    }
}

Liebe Grüße Yrea
 
Zuletzt bearbeitet:

Diabolus

Aktives Mitglied
Hallo Yrea, Du prüfst ja garnicht, ob die zahl zu groß oder zu klein ist! Außerdem vergleichst du im ersten Code in Zeile 11 einen int mit null, was nicht geht!!
 
Zuletzt bearbeitet:

Yrea

Mitglied
Oh das mit dem 'null' statt '0' ist noch von meinem letzten Versuch gewesen, danke für den Hinweis.
Das Prüfen tue ich schon und zwar wenn ich statt a=5 ein a=Integer.MAX_VALUE eintrage oder meintest du was anderes?

Output:
2147483647 + 3 = -2147483646
 
Zuletzt bearbeitet:

Diabolus

Aktives Mitglied
Ich meine wann du die Methode checkadd aufrufst.Mein Tipp: lösche das private der checkadd methode und tausche die Zeile 11 im ersten Code gegen:
Java:
if(!rechner.checkadd(a, b)) {
 
Zuletzt bearbeitet:

Yrea

Mitglied
wow vielen lieben dank!

Java:
public class TaschenrechnerAPP {

    public static void main(String[] args) {
        Taschenrechner rechner = new Taschenrechner();
        int a = 5;
        int b = 3;
        
        int erg = rechner.addiere(a, b);
        if(!rechner.checkadd(a,  b)) {
            System.out.println(a + " + " + b+ " = " + erg);
        } else {
            System.out.println("Fehlerhafte Eingabe");
        }
    }
}

Java:
public class Taschenrechner {
    
    public Taschenrechner(){
    
    }
    public int addiere(int a, int b){
        return a+b;
    }
    public boolean checkadd(int a, int b){
        long erg = (long)a + b;
        if(erg < Integer.MIN_VALUE || erg > Integer.MAX_VALUE){
            return true;
        }
        return false;
    }
}

Output: Für a = 5 -> 8, Für a = Integer.MAV_VALUE -> Falsche Eingabe

Dankeschön!!
 
Zuletzt bearbeitet:

Neue Themen


Oben