Datentypen Ein long[]-Array.

gardiac2002

Mitglied
Schönen guten Abend, :)

ich versuche gerade einen long Array zu machen. Leider mache ich irgendeine Kleinigkeit falsch. Weiß jemand wo an dem Code das Problem liegt?


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

        sumPrimes(2000000L);

    }

    static long sumPrimes(long max){
        long sum = 0;

        long[] allNumbers = new long[max];


        return sum;
    }
}

Eclipse verlangt für das dick unterstrichene max einen (int)-Typecast. Weiß jemand warum das ist?

Danke und liebe Grüße,

philipp
 

XHelp

Top Contributor
Bei der Indexierung eines Arrays wird Integer verwendet. Aber in ein Long (max) kann auch eine Zahl wie 9999999999 stehen, welche über den Integer-Bereich hinausgeht. Du kannst also ein Array von Long's erstellen, aber die Länge des Arrays muss eine Integer Zahl sein. Je nach dem was du eigentlich willst könnte es helfen einfach nur der Methode keine long-Zahl, sondern int-Zahl zu übergeben
 

gardiac2002

Mitglied
Vielen Dank. Das mit der Indexierung als integer Werte wusste ich nicht :)

Ich habe den Code nun verändert bekomme aber folgende Fehlermeldung:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2000002
at Sum_primes_array.sumPrimes(Sum_primes_array.java:15)
at Sum_primes_array.main(Sum_primes_array.java:5)


Heisst das, dass der Indexwert eine Grenze überschreitet? Kann ich somit keinen 2 Millionen Array anlegen?

Hier noch zum Gesamtverständnis mein neuer Code:
Java:
public class Sum_primes_array {
	public static void main(String[] args){
		
		System.out.println(sumPrimes(2000002));
		
	}
	
	static long sumPrimes(int max){
		long sum = 0;
		int i,j;
		
		int[] allNumbers = new int[max];
		
		for(i=0; i<=max;i++){allNumbers[i]=i;} //jeder Zelle einen Wert zuweisen.
		i=2;
		
		while(i<=max){
			
			for(j=i; j<=max;j=j+i){allNumbers[j]=0;}
			while(i<=max && allNumbers[i]!=0){
				i++;
				System.out.println(i);
			}
		}
		
		for(i = 2; i<=max;i++){sum=allNumbers[i]+sum;}
		return sum;
	}
 

hdi

Top Contributor
Heisst das, dass der Indexwert eine Grenze überschreitet?
Ja, nämlich die des höchsten Index des Arrays.

Kann ich somit keinen 2 Millionen Array anlegen?
Doch, du kannst ein Array einer Größe ("Länge") bis zu Integer.MAX_VALUE erzeugen. Das sind etwas über 2,4 Milliarden.

Die IndexOutOfBoundsException fliegt dir nicht bei der Erzeugung deines Arrays, sondern an einer Stelle wo du auf ein Fach zugreifen willst, dass es gar nicht gibt. Der Fehler liegt in deiner Schleife:

Code:
i=0; i<=max;i++

Es darf nicht
Code:
 i <= max
heißen, sondern es muss
Code:
i < max
sein. Denn die Indizierung ist 0-basiert, d.h. das erste Fach hat Index 0. Somit hat das letzte Fach, in deinem Fall das 2000002-te Fach, den Index 2000001. Du zählst den Index also eins zu hoch allNumbers ist für i = max dann ein Zugriff auf das 2000003-te Fach des Arrays. Und das gibt es nicht.

Also merken:

x-tes Fach eines Arrays = array[x-1]. Bei Schleifen immer i bis < array.length laufen lassen und nie bis <=.
 
Zuletzt bearbeitet:

Crian

Top Contributor
[c]int[] allNumbers = new int[max];[/c] - ich dachte du wolltest Variablen vom Typ long in deinem Array speichern?

Vielleicht hilft dir dieses Konstrukt?

Java:
public class SumPrimes {
    public static void main(String[] args) {
        sumPrimes(2000000);
    }
 
    static long sumPrimes(int max) {
        long sum = 0;
 
        long[] allNumbers = new long[max];

        // do something ...
  
        return sum;
    }
}

(Klassennamen wie [c]Sum_primes_array[/c] sind in Java unüblich. Üblicher Weise verwendet man CamelCaseNamen, wie zum Beispiel [c]SumPrimesArray[/c]. Allerdings im Namen der Klasse irgendwelche Interna anzugeben, wie hier die Verwendung eines Arrays, ist nur in Ausnahmefällen sinnvoll. Weswegen ich das ganze für obiges Beispiel auf [c]SumPrimes[/c] gekürzt habe.)
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
FelixN Array mit verschiedene Datentypen als Rückgabewert? (Long und Double) Java Basics - Anfänger-Themen 3
A long Wert in hexadezimales Array umwandeln Java Basics - Anfänger-Themen 3
krgewb String mit Datumsangabe in Long umwandeln Java Basics - Anfänger-Themen 2
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
M Long-Typ in String-Änderung führt zu keinem Ergebnis bei großer Zahl Java Basics - Anfänger-Themen 11
MiMa Probleme mit Datentyp long ?? Java Basics - Anfänger-Themen 2
C Long value an Stringbuilder übergeben, equals Methode funktioniert nicht Java Basics - Anfänger-Themen 2
krgewb Long wird gerundet Java Basics - Anfänger-Themen 2
Eule25 Arbeit mit long und int, Error: integer number too large Java Basics - Anfänger-Themen 2
javapingu Hex String zu long Java Basics - Anfänger-Themen 2
J Long Typ Java Basics - Anfänger-Themen 4
I Klassen Eine ArrayList<Long>, die sich automatisch sortiert Java Basics - Anfänger-Themen 20
O Long[] in long Java Basics - Anfänger-Themen 3
D Compiler-Fehler Java long und int Java Basics - Anfänger-Themen 1
Harlequin Compiler-Fehler Text Adventure - "Long Output" Fehler Java Basics - Anfänger-Themen 3
W The type Long is not visible HashMap Java Basics - Anfänger-Themen 4
Hanschyo String kann nicht Werte von Long annehmen Java Basics - Anfänger-Themen 2
Orkanson Long Binär darstellen Java Basics - Anfänger-Themen 1
F HashMap sortieren <String, Long> Java Basics - Anfänger-Themen 3
E Von Double zu Long umwandeln Java Basics - Anfänger-Themen 9
J Datentypen Literal überschreitet long-Range, dennoch als long an Variable übergeben Java Basics - Anfänger-Themen 9
T Bitte um Hilfe bei Aufgabe: Long zahl = Long.parseLong(args [0]); Java Basics - Anfänger-Themen 3
K Erste Schritte switch - Warum sind long/float/double/... nicht erlaubt? Java Basics - Anfänger-Themen 5
F Char in Long umwandeln? Java Basics - Anfänger-Themen 2
M Frage Long Wert in Java Java Basics - Anfänger-Themen 1
A Long in BigInteger Java Basics - Anfänger-Themen 3
T long wird ohne Nachkommastellen ausgegeben Java Basics - Anfänger-Themen 5
G Long und Frage zum Speicherplatz eines Arrays Java Basics - Anfänger-Themen 7
S OOP long prüfen Java Basics - Anfänger-Themen 5
B map.remove(long) Java Basics - Anfänger-Themen 5
G Rechnen mit Long Variablen Java Basics - Anfänger-Themen 4
N Zufälliger Long Java Basics - Anfänger-Themen 15
SheldoN Zahlen die über long-Wert hinausragen Java Basics - Anfänger-Themen 4
H TreeMap<> statt TreeMap<Long, String> Java Basics - Anfänger-Themen 2
SheldoN Gibt es größere Datentypen als long? Java Basics - Anfänger-Themen 2
G Long oder int Vorzeichen entfernen Java Basics - Anfänger-Themen 3
M Datentypen Calender TimeInMillis - long number erzeugen? Java Basics - Anfänger-Themen 2
D Konvertierung UnsignedInt zu long Java Basics - Anfänger-Themen 5
A string bitweise in long umwandeln Java Basics - Anfänger-Themen 7
A Konvertierung String-->hex-->long Java Basics - Anfänger-Themen 7
O 64bit- OS byte, short, int oder long bzw. float oder double? Java Basics - Anfänger-Themen 13
G Datentypen Eclipse akzeptiert 'long' nicht Java Basics - Anfänger-Themen 2
N Mit long rechnen Java Basics - Anfänger-Themen 2
W Long to String Java Basics - Anfänger-Themen 7
B Long als Eingabeaufforderung Java Basics - Anfänger-Themen 3
H Long (64Bit) in 2 int (32Bit) zerlegen Java Basics - Anfänger-Themen 2
S Long und Float Frage Java Basics - Anfänger-Themen 2
N Datentypen Wurzel aus long ziehen Java Basics - Anfänger-Themen 4
O Runden - x/100 liefert long zurück Java Basics - Anfänger-Themen 7
A mdoulo methode mit long Java Basics - Anfänger-Themen 9
Binary.Coder Skalarprodukt mittels long und binärzahlen Java Basics - Anfänger-Themen 5
A Long zu Double Java Basics - Anfänger-Themen 4
B (long)1e9 Java Basics - Anfänger-Themen 6
V wozu ist das 'L' beim long notwendig ? Java Basics - Anfänger-Themen 5
J Länge eines long wertes Java Basics - Anfänger-Themen 13
S Division von long! Java Basics - Anfänger-Themen 4
Spot84 long von getCreationDate in String umwandeln Java Basics - Anfänger-Themen 4
S Probleme beim Umwandeln von Long nach Int Java Basics - Anfänger-Themen 4
G long[] aus SQL-Abfrage Java Basics - Anfänger-Themen 3
G String in Long casten Java Basics - Anfänger-Themen 2
N long geteilt durch long gleich null ? Java Basics - Anfänger-Themen 8
G int gleich long ? Java Basics - Anfänger-Themen 2
J A Long. way Java Basics - Anfänger-Themen 10
T Probleme mit long Java Basics - Anfänger-Themen 2
G NumberFormatException bei double und long Java Basics - Anfänger-Themen 11
G long zu kurz Java Basics - Anfänger-Themen 5
G long datum splitten in day etc Java Basics - Anfänger-Themen 23
G Konvertierung String in long type Java Basics - Anfänger-Themen 15
G Zahlen >long verwenden Java Basics - Anfänger-Themen 7
G Problem beim rechenen mit long Java Basics - Anfänger-Themen 3
G long oder double Java Basics - Anfänger-Themen 15
C Long -> String -> ArrayList adden -> Exception Java Basics - Anfänger-Themen 4
M long in byte[] konvertieren und wieder zurück Java Basics - Anfänger-Themen 2
S long millisekunden nach Uhrzeit format Java Basics - Anfänger-Themen 5
M Quersumme einer long zahl Java Basics - Anfänger-Themen 4
M long Datentyp effizient mit Daten füllen Java Basics - Anfänger-Themen 2
F Long umwandeln und auf 2 Dezimalen runden? Java Basics - Anfänger-Themen 14
G long in string Java Basics - Anfänger-Themen 6
G long-Zeitwert Java Basics - Anfänger-Themen 11
P "Line too long" bei der Generierung des jars. Java Basics - Anfänger-Themen 5
B String <> long --- Das ist doch nicht inkonvertibel? Java Basics - Anfänger-Themen 4
F Long zu 2 int und zurück Java Basics - Anfänger-Themen 3
G Hexadezimalzahl von String in Long umwandeln Java Basics - Anfänger-Themen 3
P von long zu int umwandeln? Java Basics - Anfänger-Themen 3
A formatieren long(bytes) -> String Java Basics - Anfänger-Themen 2
T long in Vector speichern Java Basics - Anfänger-Themen 16
G "cannot convert from long to int" - problem Java Basics - Anfänger-Themen 9
G Vergleich zweier 'long'-Werte. Problem! Java Basics - Anfänger-Themen 6
M long nach String casten Java Basics - Anfänger-Themen 2
N x.toString(x); umwandlung von long in String Java Basics - Anfänger-Themen 3
P Wie mach ich aus Int ein Double oder Long ? Java Basics - Anfänger-Themen 6
N unsigned int to long Java Basics - Anfänger-Themen 5
T Array verkleinern Java Basics - Anfänger-Themen 2
J Array aus Numberfield Eingaben Java Basics - Anfänger-Themen 7
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
Ü Zweidimensionales Array in der ersten Zeile deklarieren Java Basics - Anfänger-Themen 13
Thomas Uppe 2D Array Reihenfolge vermischen Java Basics - Anfänger-Themen 4
T array auslesen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben