# int Overflow



## Yrea (19. Apr 2015)

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! 


```
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");
        }
    }
}
```


```
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


----------



## Diabolus (19. Apr 2015)

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!!


----------



## Yrea (19. Apr 2015)

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


----------



## Diabolus (19. Apr 2015)

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:
	
	
	
	





```
if(!rechner.checkadd(a, b)) {
```


----------



## Yrea (19. Apr 2015)

wow vielen lieben dank!


```
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");
        }
    }
}
```


```
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!!


----------

