Java Überlauf Abfrage?
Hey,
ich bin Java-Anfänger und hoffe ihr könnt mir bei folgender Aufgabe helfen:
Die Summe von zwei int Zahlen a und b sollte auf einen Überlauf überprüft werden.
Mein Ansatz:
public class MyClass {
public static void main(String args[]) {
int a=10;
int b=25;
boolean zuGross = (a+b)>Integer.MAX_VALUE;
System.out.println(zuGross ? "Es kam zum Ueberlauf":"Kein Uberlauf");
}
}
Kann mir jemand sagen, ob es hier einen Fehler gibt? Und wie man hier einfach Codes hinzufügen kann, ohne sie, wie ich es gemacht habe, einzutippen.
4 Antworten
Was genau meinste denn? Werte hinzufügen per Eingabe würde bspw. mit Scanner gehen.
https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html
Dann muss ich PerfectMuffin zustimmen. Die Addition (a+b) dürfte intern einen Integerwert ergeben, der aber nie größer als Integer.MAX_VALUE sein kann. Möglich dürfte sein, dass das Resultat den Typ long hat. Das kannste dann gegen Integer.MAX_VALUE gegenprüfen.
Eine andere Methode dürfte sein beide Werte vom maximalen Wert abzuziehen und zu gucken, ob dieser dann größer als 0 ist. Eine weitere Möglichkeit hat KarlRanseierIII auch genannt.
Kleine Ausbesserung: Man sollte prüfen, ob das Ergebnis der Subtraktion >=0 ist, um auch abzudecken, dass die Addition den maximalen Wert genau annimmt.
Was für codes willst du hinzufügen? Was ist für dich ein code?
Ich würde sagen das ganze ding ist code, aber das meinst du sicher nicht.
Das sollte keinen fehler geben denke ich. Funktionieren tut der code aber auch nicht. A+B kann nur kleiner als MAX_VALUE sein, bei einem überlauf wäre es ja der niedrigste wert.
So jedenfalls geht es nicht. Nichts kann > Max werden
Wenn ich wissen will, ob a+b >c wäre, dann kann ich auch schauen, ob a>b-c ist.
Wie albern. lol
Wenn MAX_VALUE der höchstmögliche intwert ist, wie könnte dann die Summe zweier Intwerte größer sein?
Soll nicht gemein klingen, ich finde das lustig.
Ist deine eigentliche Frage, wie du Zahlen in das Programm bekommst, ohne den Quelltext zu ändern?