Hallo Leute, das folgende Codestück bereitet mir ziemliche Schwierigkeiten. Es tritt ein Laufzeitfehler auf, den ich mir wirklich nicht erklären kann. Kann auch sein, dass ich gerade voll auf dem Schlauch stehe, aber ich komme einfach nicht drauf, was daran falsch ist, einem Array einen eingelesenen Wert zu übergeben. (Siehe fette Zeile). Habt ihr da ne Idee?
Java:
privatevoidgetNumbers(){Scanner sc =newScanner(System.in);for(int i =0; i < m_iAnzahlZahlen; i++){
m_iNumberArray[i]=0;}System.out.println("Wieviele Zahlen wollen sie eingeben?");
m_iAnzahlZahlen = sc.nextInt();System.out.println("Geben sie ihre Zahlen ein: ");for(int i =0; i < m_iAnzahlZahlen; i++){[B]m_iInternAnzahl[i]= sc.nextDouble();[/B]}for(int i =0; i < m_iInternAnzahl.length; i++){
m_iNumberArray[i]= m_iInternAnzahl[i];}}
Fehlerbericht:
Exception in thread "main" java.lang.NullPointerException
at blatt3.MaxMinMiddleExtended.getNumbers(MaxMinMiddleExtended.java:42)
at blatt3.MaxMinMiddleExtended.main(MaxMinMiddleExtended.java:17)
Hihi, son schön blöden Fehler hatte ich auch selten^^ Danke für die Tipps, ich habs kurz davor dann auch noch gemerkt und den Fuß vom Schlauch geholt.
Hier der richtige Code:
Java:
privatevoidgetNumbers(){Scanner sc =newScanner(System.in);System.out.println("Wieviele Zahlen wollen sie eingeben?");
m_iAnzahlZahlen = sc.nextInt();
m_iNumberArray =newdouble[m_iAnzahlZahlen];
m_iInternAnzahl =newdouble[m_iAnzahlZahlen];for(int i =0; i < m_iAnzahlZahlen; i++){
m_iNumberArray[i]=0;
m_iInternAnzahl[i]=0;}System.out.println("Geben sie ihre Zahlen ein: ");for(int i =0; i < m_iAnzahlZahlen; i++){
m_iInternAnzahl[i]= sc.nextDouble();}for(int i =0; i < m_iInternAnzahl.length; i++){
m_iNumberArray[i]= m_iInternAnzahl[i];}}
Nicht angreifend gemeint, sondern aus Interesse: Warum ist das ein schlechter Name?
m zeigt mir an, dass es sich um eine Membervariable handelt, i sollte zeigen dass es ein int ist^^ -mittlerweile ein double xD - und der Rest gibt mir zu verstehen, was es tut.
Das mit dem m für Instanzvariablen und dem Datentypkürzel am Anfang kenne ich eigtl. nur aus meinen C-Zeiten. Hab ich mir aber abgewöhnt, weil irgendwann die Namen einfch nur noch unschön und unleserlich werden. Habe mir aber angewöhnt, vor jede Instanzvariable ein this anzuhängen, erstens wird das so schön von der IDE hervorgehoben, zweitens vermeidet man damit jegliche Namenskonflikte innerhalb von Methoden und drittens sehe ich gerne, zu welchem Objekt eine Eigenschaft gehört (auch wenn ich keine IDE nutze, weil ich z.B. nur mal schnell im Editor einen Quellcode angeguckt habe (auf´m Handy ´ne IDE mag ich einfach nicht ))
Ich würde dann eher zu einem Namen wie:
doubleArrInterneAnzahl tendieren, immernoch unschön, aber besser als m_daInterneAnzahl oder m_dArrayInterneAnzahl