Arbeit mit long und int, Error: integer number too large

Eule25

Mitglied
Hallo zusammen, ich versuche gerade ein Programm zu schreiben, um in einem großen Intervall (ca. 200 000 000) mit Zahlen zu rechnen, die den Wertebereich von int überschreiten. In meinem Programm habe ich versucht, das zu umgehen, indem ich mit long arbeite außer bei den Indizes des Arrays, trotzdem bekomme ich immer, wenn ich die Methode ausführen möchte, die Fehlermeldung Error: integer number too large.
Java:
public static long[] methodendurchlauf( long a, long b, long c)
{
long differenz = (b-a)*2;
long[] arr = new long[(int)differenz];
long d = 0;
for (int i = 0; i < arr.length; i++)
{
if (methode1(a+d) > c)
{
arr[i] = methode1(a+d);
++i;
arr[i] = a+d;
++d;
}
}
return arr;
}

Die Parameter a und b werden mit Werten belegt, die den integer Wertebereich überschreiten, allerdings wähle ich die Werte immer so, dass das Intervall bzw. die Differenz nicht höher als 200 000 000 wird. Kann mir jemand dabei helfen, das zu umgehen?
 
Beste Antwort
An der Stelle, wo der Fehler auftritt, steht vermutlich sowas wie long x = 123456789, und die Zahl ist größer als int erlaubt?

Wenn du die Zahl so als Literal schreibst, wird das als Integer interpretiert, da sie dafür aber zu groß ist, meckert der Compiler. Wenn du hinter der Zahl ein 'L' anfügst (1234L), wird es als Long interpretiert, das sollte das lösen 🙂
An der Stelle, wo der Fehler auftritt, steht vermutlich sowas wie long x = 123456789, und die Zahl ist größer als int erlaubt?

Wenn du die Zahl so als Literal schreibst, wird das als Integer interpretiert, da sie dafür aber zu groß ist, meckert der Compiler. Wenn du hinter der Zahl ein 'L' anfügst (1234L), wird es als Long interpretiert, das sollte das lösen 🙂
 
Beste Antwort
An der Stelle, wo der Fehler auftritt, steht vermutlich sowas wie long x = 123456789, und die Zahl ist größer als int erlaubt?

Wenn du die Zahl so als Literal schreibst, wird das als Integer interpretiert, da sie dafür aber zu groß ist, meckert der Compiler. Wenn du hinter der Zahl ein 'L' anfügst (1234L), wird es als Long interpretiert, das sollte das lösen 🙂
Stimmt, ich habe bei der Parameterbelegung einfach das L vergessen. Danke für die Hilfe!
 

Zurück
Oben