Fehlerbehebung „Ganzzahlzahl zu groß“ für 600851475143
Beachten Sie den folgenden Codeausschnitt:
public class Three { public static void main(String[] args) { Three obj = new Three(); obj.function(600851475143); } private Long function(long i) { Stack<Long> stack = new Stack<>(); for (long j = 2; j <= i; j++) { if (i % j == 0) { stack.push(j); } } return stack.pop(); } }
Wann Wenn dieser Code mit dem an die Funktion übergebenen Literal 600851475143 ausgeführt wird, wird der Fehler „Integer Number Too Large“ ausgegeben. Um zu verstehen, warum, müssen wir uns mit den beteiligten Datentypen befassen.
In Java gibt es primitive Datentypen wie int und long, die Zahlen ohne Objekte darstellen.
Das Problem hierbei ist, dass 600851475143 den durch einen int darstellbaren Maximalwert überschreitet. Um dies zu beheben, müssen wir ein Literal vom Typ long verwenden, indem wir ein „L“-Suffix an die Zahl anhängen: 600851475143L.
obj.function(600851475143L);
Mit dieser Änderung wird der Code ausgeführt, ohne dass der Fehler auftritt, und kehrt zurück der größte Primfaktor von 600851475143L.
Das obige ist der detaillierte Inhalt vonWarum gibt mein Java-Code bei Verwendung von 600851475143 den Fehler „Integer Number Too Large' aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!