Übungsaufgabe aus Java Buch bringt Fehler.

NurTee

Mitglied
Hallo liebe Kaffee Bohnen Gemeinde,

ich bin neu im Bereich der Programmiersprachen und arbeite mich in Java ein. Zu diesem Zweck, hab ich mir ein Java Buch gekauft in dem im Kapitel "Arrays" eine kleine Übung angegeben ist.

Trotz -so denke ich- 1:1 Übernahme des Codes, gibt Eclipse einen Fehler aus, der laut Buch so nicht auftreten dürfte.

Hier mal der Quelltext:


Java:
public class Übungscode 
{
	
	public static void main(String[] args)
	{
		String[][] namen =  //namen ist der "Platzhalter" bzw. "Link"
		{
			{
				"Frau", "Herr" // Index 0
			},
			{
				"Mäuserich", "Enterich", "Gänserich" //Index 1
			},
			{	
				"Daisy", "Donald", "Dagobert", "Mickey", "Minni", "Gustav" //Index 2
			},
			{
				"Duck", "Mouse", "Ganz"	//Index 3
			}
		};
			System.out.println(namen[0][1] + " " + namen[1][1] + " "+ namen[2][1] + " " + namen[3][0]);//"" würde ausgeben >DonaldDuck< 
								  //Mit oder ohne Semikolon, es läuft. Komma ergibt jedoch einen Fehler. " "mit Leerzeichen = >Donald Duck< 
	
		int[][] dreieck = new int[5][];//5 Zeilen, zweites[], keine Ahnung was drin.
		
				dreieck[0] = new int[1];//Zeile 1 = Zeile 0, zweites[] gibt die Anzahl der Werte an, jedoch nicht die Zahl an sich.
				dreieck[2] = new int[3];
				dreieck[2][1] = 2;//Zeile 3, Index-also Wert#2, ist die Zahl 2!Achtung:Kein []!!!
		
	
				System.out.println(dreieck.length);//Direkter Bezug auf new int[5][], da könnte jede Zahl im Bereich des "int" erscheinen.Null Berechnung.
				System.out.println("Anzahl der Elemente = " + dreieck[0].length);	
				System.out.println("Anzahl der Elemente = " + dreieck[1].length);
				System.out.println("Anzahl der Elemente = " + dreieck[2].length);
				System.out.println("Anzahl der Elemente = " + dreieck[3].length);
				System.out.println("Anzahl der Elemente = " + dreieck[4].length);
	};//Achtung:Die geschweifte Klammer muss zum "main" Argument passen, sonst Fehler, da ende!!!
};


Fehlercode:
Herr Enterich Donald Duck
5
Exception in thread "main" Anzahl der Elemente = 1
java.lang.NullPointerException
at Übungscode.main(Übungscode.java:34)



Laut dem Buch, sollte in der Konsole 1,2,3,4 und 5 für die Anzahl der Elemente ausgegeben werden.

Bin für eure Ratschläge dankbar.:rtfm:
 
F

fisherman

Gast
Das Array dreieck ist an den Indizes 1, 3 und 4 jeweils null. Ein Aufruf einer Methode bzw. (in diesem Fall) einer Variablen an einer null-Referenz führt zu einer NullPointerException. Die null-Referenzen kommen daher, dass in dem Array wiederum Arrays stecken. Arrays sind Objekte. D.h. bei der Initialisierung des Arrays dreieck erhalten alle Elemente ihren Standardwert, der bei Objekten eben null ist. Erst wenn du einem Element in dreieck ein Objekt zuweist, kannst du darauf auch Methoden aufrufen.
Also z.B. so:
Java:
dreieck[1] = new int[3];
dreieck[3] = new int[5];
dreieck[4] = new int[99];
 
Zuletzt bearbeitet von einem Moderator:

NurTee

Mitglied
Also, wenn ich dich richtig verstehe, so ist mit der obigen Ausgabe immer ein "nullexception" der Fall, weil schlicht Java keine Werte bekommt.

Ich selbst hab die Werte einmal eingetragen mit ein paar extra Zeilen...dann funktioniert es. Leider verlangt mein Buch genau obigen Code...das wiederum bedeutet, mein Buch ist fehlerhaft.:oops:
 
F

fisherman

Gast
Also, wenn ich dich richtig verstehe, so ist mit der obigen Ausgabe immer ein "nullexception" der Fall, weil schlicht Java keine Werte bekommt.
Etwas schräg formuliert, aber mir scheint, du weißt, was gemeint ist. null-Referenz bedeutet, dass einer Referenz kein Objekt zugewiesen wurde. Kein Objekt --> kein Methoden-/Variablenaufruf möglich.
Der Unterschied sieht beispielhaft so aus:
Java:
dreieck[0] = new int[1];
dreieck[1] = null;

System.out.println(dreieck[0].length);
System.out.println(dreieck[1].length);
Der zweite sysout-Aufruf führt zu einer NullPointerException.
Ich selbst hab die Werte einmal eingetragen mit ein paar extra Zeilen...dann funktioniert es. Leider verlangt mein Buch genau obigen Code...das wiederum bedeutet, mein Buch ist fehlerhaft.:oops:
Kommt vor. Viele Bücher sind schlecht redigiert. Ist mir kürzlich wieder bei Literatur zur Vorbereitung auf ein Java-Zertifikat aufgefallen. Ich hoffe, dein Buch war nicht allzu teuer ...
 

NurTee

Mitglied
Naja....29,90 € bei Amazon. Erst wollte ich direkt auf englische Bücher zurückgreifen, doch mein Buch hier hatte viele gute Bewertungen erhalten.

Prinzipiell ist es mir egal, was ein Buch kostet, ob deutsch oder englisch....hauptsache es ist gut.
 

kaoZ

Top Contributor
Ich kann dir wenn es um Fachliteratur geht JAVA - Von Kopf bis Fuß empfehlen, ich habe selbst ewig gewartet bis ich mich für eines entschieden hatte, und damit machst du an sich nichts verkehrt.

@fisherman

Zu deinem Zertifikat mal eine kleine Frage, OCA ?
Und wenn ja , ich möchte mich gegen ende des Jahres Zertifizieren lassen, hast du einen Überblick darüber welche Themenbereiche abgedeckt werden müssen ?
Würde mich brennend interessieren, da ich mich einzig und allein Privat und in Eigenregie darauf vorbereite.

@TO

Welches Buch hast du dir denn gekauft ? rein Interesse halber.
 

NurTee

Mitglied
@KaoZ

Das Buch heisst "Einführung in Java mit BlueJ" vom Galileo-Computing. BlueJ hab ich jedoch schnell verbannt....einmal ein Fehler im Code platziert und schon bekomme ich so seltsame Grafikfehler in der GUI und es stürtzt ab.

Aktuell hab ich Eclipse Kepler.


Hier nochmal der korrigierte Code ohne die Namen:

Java:
public class Übungscode 
{
	public static void main(String[] args)
	{
		
		int[][] dreieck = new int[5][];//5 Zeilen, zweites[], keine Ahnung was drin.Wenn im 2ten [] etwas drinsteht, hat es keinen Einfluss auf die Konsolen Ausgabe.
		{
				dreieck[0] = new int[1];//Zeile 1 = Zeile 0, zweites[] gibt die Anzahl der Werte an, jedoch nicht die Zahl an sich.
				dreieck[1] = new int[2];
				dreieck[2] = new int[3];
				dreieck[2][1] = 2;//Zeile 3, Index-also Wert#2, ist die Zahl 2!Achtung:Kein []!!! In der Aufgabe wird diese Zeile nicht genutzt!
				dreieck[3] = new int[4];
				dreieck[4] = new int[5];
	
				System.out.println("Zeilenanzahl: " + dreieck.length);//Direkter Bezug auf new int[5][], da könnte jede Zahl im Bereich des "int" erscheinen.Null Berechnung.Mit einem extra Wort macht das alles mehr Sinn in der Konsolen Ausgabe.
				System.out.println("Anzahl der Elemente = " + dreieck[0].length);	
				System.out.println("Anzahl der Elemente = " + dreieck[1].length);
				System.out.println("Anzahl der Elemente = " + dreieck[2].length);
				System.out.println("Anzahl der Elemente = " + dreieck[3].length);
				System.out.println("Anzahl der Elemente = " + dreieck[4].length); //Fehler im Buch, das magische Dreieck wird anscheinend nicht berechnet.
		};	
	};//Achtung:Die geschweifte Klammer muss zum "main" Argument passen, sonst Fehler, da ende!!!
};

Zeile 11 ist defakto unnütz! Bei dieser Beispiel Aufgabe geht es um ein magisches Dreieck. Bis jetzt, ist der obige Code nichts anderes als eine art Excell Tabelle die in einer Zelle einen Vergleichswert abfragt (so in etwa). Also Java löst das magische Dreieck hier nicht. Sollte das Buch später bezug auf die Aufgabe nehmen, so werd ich es hier posten.

OffTopic:

Weiss jemand, wie man die Symbole in Eclipse Kepler vergössert? Mein Monitor ist riesig 27" mit 2560*1440...
 
Zuletzt bearbeitet:

kaoZ

Top Contributor
Ich habe mich mit BlueJ nie befasst , sondern bin gleich mich Eclipse als IDE eingestiegen, was anscheinend auch kein Fehler war wenn ich das so lese :D
 
F

fisherman

Gast
@fisherman

Zu deinem Zertifikat mal eine kleine Frage, OCA ?
Und wenn ja , ich möchte mich gegen ende des Jahres Zertifizieren lassen, hast du einen Überblick darüber welche Themenbereiche abgedeckt werden müssen ?
Würde mich brennend interessieren, da ich mich einzig und allein Privat und in Eigenregie darauf vorbereite.

Ja, OCA Java SE 7 Programmer (Prüfung 1Z0-803).

Die Themenbereiche für dieses Zertifikat findest du bei Oracle.
Für die Anmeldung zu einer Prüfung benötigst du ein Konto auf der Oracle-Seite und bei Pearson Vue. Bei letzterem kannst du Prüfungsorte und -zeiten herausfinden und buchen.
Alles teilweise etwas umständlich und aufwendig, und die Oracle-Seite gewinnt sicher auch keinen Preis für Benutzerfreundlichkeit. Aber mit Beharrlichkeit kommt man durch.

Als Literatur kann ich dir
OCA Java SE 7 Programmer I Certification Guide von Mala Gupta
empfehlen. Sehr systematisch und übersichtlich aufgebaut, in relativ einfachem Englisch geschrieben, bleibt beim Thema.
Nicht jedermanns Sache, manche bevorzugen
OCA Java SE 7 Programmer I Study Guide (Exam 1Z0-803) von Robert Liguori (Oracle Press).
Da hat's aber ein paar Fehler drin, für mein Empfinden etwas konfus geschrieben. Deckt auch Themen ab, die für die Prüfung irrelevant sind, finde ich ablenkend.

Ein teurer Vorbereitungskurs ist m.E. überflüssig. Ausführliche Beschäftigung mit Literatur, Prüfungsfragen (es gibt auch ganze Bücher nur mit Prüfungsfragen) und Ausprobieren am heimischen Rechner reicht.
 

Kiri

Bekanntes Mitglied
Als Literatur kann ich dir
OCA Java SE 7 Programmer I Certification Guide von Mala Gupta
empfehlen. Sehr systematisch und übersichtlich aufgebaut, in relativ einfachem Englisch geschrieben, bleibt beim Thema.

Da kann ich vollkommen zustimmen!

@Fisherman: Hast du auch Buchempfehlungen für die OCP Java SE 7 Programmer (Prüfung 1Z0-804).

Kennst du
Kathy Sierra / Bert Bates: SCJP Sun Certified Programmer for Java 6 Study Guide (Die Version für Java 7 von Kathy Sierra wird ja immer weiter verschoben!)

S G Ganesh / Tushar Sharma: Oracle Certified Professional Java SE 7 Programmer Exams 1Z0-804 and 1Z0-805
 
F

fisherman

Gast
@Fisherman: Hast du auch Buchempfehlungen für die OCP Java SE 7 Programmer (Prüfung 1Z0-804).
Nein, leider nicht, mit dieser Prüfung habe ich mich noch nicht genauer beschäftigt.
Kennst du
Kathy Sierra / Bert Bates: SCJP Sun Certified Programmer for Java 6 Study Guide
Ja, ist aber für eine andere (veraltete) 5er oder 6er Prüfung. Oracle ändert die Zertifizierungspfade von Zeit zu Zeit. Nicht immer so, dass man noch durchblickt. Sierra und Bates schreiben gut, insbesondere Sierra hat in der Java-Community wohl einige Meriten erworben. Mir scheint aber besser, sich auf mindestens Java 7 zu konzentrieren, nachdem Java 8 schon seit einer Woche draußen ist.
S G Ganesh / Tushar Sharma: Oracle Certified Professional Java SE 7 Programmer Exams 1Z0-804 and 1Z0-805
Habe ich nur mal reingeschnuppert, kann ich nix dazu sagen.

Falls du das weiterdiskutieren willst, schlage ich einen neuen Thread vor, damit der hier nicht komplett off topic wird.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Übungsaufgabe... Verständnisproblme (java 8.191) Java Basics - Anfänger-Themen 4
A Laufzeitfehler bei Übungsaufgabe Java Basics - Anfänger-Themen 4
jonathanpizza Hilfe bei einer Übungsaufgabe Java Basics - Anfänger-Themen 6
K Rundbeet Übungsaufgabe Java Basics - Anfänger-Themen 3
J Hilfe bei Übungsaufgabe Java Basics - Anfänger-Themen 17
Z Unklarheit bei Übungsaufgabe [Anfänger] Java Basics - Anfänger-Themen 22
H Übungsaufgabe Java Basics - Anfänger-Themen 21
H Polynome Übungsaufgabe uni Java Basics - Anfänger-Themen 49
H Übungsaufgabe algorithmen Java Basics - Anfänger-Themen 2
L Übungsaufgabe zu Schleifen Java Basics - Anfänger-Themen 7
H Frage zu Übungsaufgabe, Array Java Basics - Anfänger-Themen 7
T Übungsaufgabe Event Handling Java Basics - Anfänger-Themen 0
T Übungsaufgabe abstrakte Klasse Java Basics - Anfänger-Themen 21
B Hilfe bei Übungsaufgabe von Freitagsrunde Java Basics - Anfänger-Themen 5
B Übungsaufgabe Java Basics - Anfänger-Themen 5
M Übungsaufgabe Problem Java Basics - Anfänger-Themen 6
B Übungsaufgabe zu Klassen, Methoden ... Java Basics - Anfänger-Themen 2
K Methoden Uhr als Übungsaufgabe Klassen/Objekte Java Basics - Anfänger-Themen 3
S Verständnisproblem einer Übungsaufgabe Java Basics - Anfänger-Themen 6
J Hilfe bei Übungsaufgabe Java Basics - Anfänger-Themen 5
D Brauche Hilfe bei Modulo (Übungsaufgabe) Java Basics - Anfänger-Themen 14
U Erste Schritte Fehler in Übungsaufgabe Java Basics - Anfänger-Themen 22
W Übungsaufgabe:Dynamische Datenstrukturen Java Basics - Anfänger-Themen 10
pg1337 Übungsaufgabe für Anfänger Java Basics - Anfänger-Themen 26
N Übungsaufgabe mit static Wert Java Basics - Anfänger-Themen 27
P Datentypen Frage zu einer Übungsaufgabe Java Basics - Anfänger-Themen 15
N Übungsaufgabe mit Interface Java Basics - Anfänger-Themen 2
F Schleifen Übungsaufgabe Java Basics - Anfänger-Themen 4
A Übungsaufgabe lösen - Problem mit true und false Java Basics - Anfänger-Themen 6
D Schiedermeier 1. Semester Übungsaufgabe Problem Java Basics - Anfänger-Themen 8
C Übungsaufgabe Java Basics - Anfänger-Themen 10
R Problem bei Übungsaufgabe Java Basics - Anfänger-Themen 7
M Hilfe bei Übungsaufgabe :'( nooby Java Basics - Anfänger-Themen 3
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
richis-fragen Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
M Java Mail Programm Java Basics - Anfänger-Themen 4
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
JaZuDemNo Java im Studium Java Basics - Anfänger-Themen 7
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
V Java-Ausnahmebehandlung: Behandlung geprüfter Ausnahmen Java Basics - Anfänger-Themen 1
krgewb Java Streams Java Basics - Anfänger-Themen 10
A Überwältigt von der komplexen Java Welt Java Basics - Anfänger-Themen 29
O Mehrfachvererbung auf Spezifikations- und Implementierungsebene in Java. Interfaces Java Basics - Anfänger-Themen 19
John_Sace Homogene Realisierung von Generics in Java ? Java Basics - Anfänger-Themen 19
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
R mit Java API arbeiten Java Basics - Anfänger-Themen 9
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
Timo12345 JNLP File mit Java öffnen Java Basics - Anfänger-Themen 2
S Video Editierung mit Java.._ Java Basics - Anfänger-Themen 2
F Einstelungen in Java - CursorBlinkRate Java Basics - Anfänger-Themen 10
A PHP $_POST["name"] in Java Java Basics - Anfänger-Themen 3
vivansai21 Is there a oneliner to create a SortedSet filled with one or multiple elements in Java? Java Basics - Anfänger-Themen 9
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
Arjunreddy Can someone please tell me how to use a debugger in BlueJ(a Java environment) Java Basics - Anfänger-Themen 1
M Java assoziationen (UML) Java Basics - Anfänger-Themen 8
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
xXGrowGuruXx Java einstieg, leichte sache 0 verstanden Java Basics - Anfänger-Themen 7
A java.sql.SQLException: Data type mismatch. Java Basics - Anfänger-Themen 1
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
A Lerngruppe Java Java Basics - Anfänger-Themen 2
G Help me in the Java Program Java Basics - Anfänger-Themen 2
L Java- Vererbung Java Basics - Anfänger-Themen 4
LimDul Suche Java Stream Tutorial Java Basics - Anfänger-Themen 2
_so_far_away_ Ich möchte Java lernen Java Basics - Anfänger-Themen 11
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
V Bild per Java Script austauschen Java Basics - Anfänger-Themen 7
MoxMorris this Keyword in Java Java Basics - Anfänger-Themen 14
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
wolei JAVA Zeitdifferenz feststellen. Java Basics - Anfänger-Themen 4
DiyarcanZeren Rekursion in Java Java Basics - Anfänger-Themen 5
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
monsterherz Ablauf der Erstellung eines Java Programmes Java Basics - Anfänger-Themen 17
monsterherz Circle.java:5: error: <identifier> expected Java Basics - Anfänger-Themen 2
julian-fr Wie kann ich am besten Java lernen? Java Basics - Anfänger-Themen 17
A Java-Properties und -RessourceBundles Java Basics - Anfänger-Themen 5
lrnz22 Java-Basics-Aufgabe Java Basics - Anfänger-Themen 8
R Java kann nicht installiert werden Java Basics - Anfänger-Themen 8
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
G In ein java Dokument Ton einbinden Java Basics - Anfänger-Themen 1
C was heisst es wenn java ']' erwartet ? Java Basics - Anfänger-Themen 2
KeinJavaFreak Erste Schritte Programm "Java(TM) Platform SE binary " nicht vorhanden Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben