Figuren bewegen-Aufgabe mit static

G

grHenry

Gast
Hallo,

hätte eine Frage zu einer Klausuraufgabe. Keine Angst, will nicht die gleich Lösung, möchte nur einen bestimmten Teil der Aufgabe verstehen, dazu muss ich allerdings die ganze Aufgabe posten. Hier die Aufgabe:

Um Figuren bewegen zu können, werden Befehlsobjekte verwendet. Ein Befehlsobjekt besteht aus
einer Richtung ('N', 'O', 'S' oder 'W') und einer ganzzahligen, nicht negativen Schrittweite (>= 0).
Schreiben Sie eine Klasse CCommand, die in der Lage ist, Befehlsobjekte darzustellen. Die Klasse
soll folgende Methoden zur Verfügung stellen:
–Ein Konstruktor mit zwei Argumenten
public CCommand(char richtung, int schrittweite)
Die Argumente müssen dabei überprüft werden (d.h. Nur die Buchstaben 'N', 'O', 'S' oder 'W' und
nur die nicht negativen Schrittweiten sind erlaubt). Sie können dabei entweder assert verwenden
oder Ausnahmen auswerfen.
–Getter-Methoden zum Abfragen der Richtung und der Schrittweite.
–toString-Methode.
–equals-Methode.
–Eine Klassenmethode
public static CCommand[] vereinfachen(CCommand[] a)
zur Vereinfachung einer Menge von Befehlsobjekten. Anstatt einer langen Befehlskette wird nur ein
Array von 4 Befehlsobjekten benötigt, die die Schrittweiten in den vier Himmelrichtungen
beschreiben.

Was meint der denn mit

public static CCommand[] vereinfachen(CCommand[] a)
zur Vereinfachung einer Menge von Befehlsobjekten. Anstatt einer langen Befehlskette wird nur ein
Array von 4 Befehlsobjekten benötigt, die die Schrittweiten in den vier Himmelrichtungen
beschreiben.

Was soll die statische Methode denn vereinfachen? Ich weiß garnicht was der hier von mir erwartet?

Könnt ihr mir vielleicht auf die Sprünge helfen?
 
Zuletzt bearbeitet von einem Moderator:
O

OldBoy

Gast
Kann es vielleicht sein, dass die statische Methode ein Array von Befehlsobjekten auswerten und so vereinfachen soll, dass letztlich 4 Elemente (für jede Himmelsrichtung eine) übrig bleiben.
Das der Methode übergebenen Array mit Befehlsobjekten wäre also bezüglich der 4 Himmelsrichtungen zu addieren.
Vielleicht wäre dann auch Süd von Nord zu subtrahieren, wenn die Summe der Schritte nach Nord größer ist, als die Summe nach Süd, sich die Schritte also teilweise aufheben. (Süd wäre dann z.B. 0). Analog Ost-West.
 
B

bone2

Gast
Kann es vielleicht sein, dass die statische Methode ein Array von Befehlsobjekten auswerten und so vereinfachen soll, dass letztlich 4 Elemente (für jede Himmelsrichtung eine) übrig bleiben.
Das der Methode übergebenen Array mit Befehlsobjekten wäre also bezüglich der 4 Himmelsrichtungen zu addieren.

Vielleicht wäre dann auch Süd von Nord zu subtrahieren, wenn die Summe der Schritte nach Nord größer ist, als die Summe nach Süd, sich die Schritte also teilweise aufheben. (Süd wäre dann z.B. 0). Analog Ost-West.
Absatz 1 ist was gemeint ist, absatz 2 würde über die aufgabenstellung hinausgehen
 
G

grHenry

Gast
Ich verstehe leider noch immer nicht was ihr meint, könnt ihr mir vielleicht ein Codebeispiel für die Methode geben?
 
M

Marcinek

Gast
Du kannst mir gerne eine PM schreiben und mir sagen, was dir eine Lösung wert ist.

Sonst wirst du dich schon ein wenig anstrengen müssen.
 
G

grHenry

Gast
Habs jetzt versucht so zu lösen:

Code:
public static CCommand[] vereinfachen(CCommand[] a)
	{
		CCommand befehlsobjektNord = new CCommand('N', 0);
		CCommand befehlsobjektSued = new CCommand('S', 0);
		CCommand befehlsobjektOst = new CCommand('W', 0);
		CCommand befehlsobjektWest = new CCommand('O', 0);
		
		for(int i=0; i<a.length; i++)
		{
			int schrittweite = a[i].getSchrittweite();
			char richtung = a[i].getRichtung();
			
			if(richtung == 'N')
			{
				befehlsobjektNord.setSchrittweite(befehlsobjektNord.getSchrittweite() + schrittweite);
			}
			else if(richtung == 'S')
			{
				befehlsobjektSued.setSchrittweite(befehlsobjektSued.getSchrittweite() + schrittweite);
			}
			else if(richtung == 'O')
			{
				befehlsobjektOst.setSchrittweite(befehlsobjektOst.getSchrittweite() + schrittweite);
			}
			else if(richtung == 'W')
			{
				befehlsobjektWest.setSchrittweite(befehlsobjektWest.getSchrittweite() + schrittweite);
			}
		}
		
		return a;

mit diesem Testcode in main:

Code:
	CCommand[] array = 
			{ 
				new CCommand('S', 5), 
				new CCommand('N', 2),
				new CCommand('O', 5),
				new CCommand('W', 1),
				new CCommand('S', 6),
				new CCommand('O', 3),
				new CCommand('S', 5),
				new CCommand('N', 8)
			};
				
		array = CCommand.vereinfachen(array);
		
		for(int i=0; i<array.length; i++)
		{
			array.toString();
		}

erhalte folgende Exception:

Exception in thread "main" java.lang.NullPointerException
at CCommand.vereinfachen(CCommand.java:63)
at CCommand.main(CCommand.java:105)


bei Zeile 63 handelt es ich um folgende Zeile:

int schrittweite = a.getSchrittweite();

Warum tritt die NullPointerException auf?
 

Suinos

Bekanntes Mitglied
Dazu musst du zuerst einmal erkennen was alles
Code:
null
sein könnte, und das wäre:
Java:
int schrittweite = a[i].getSchrittweite();
-
Code:
a
, das Array selber ist
Code:
null
-
Code:
a[i]
, das Element an der Stelle
Code:
i
ist
Code:
null

Kannst du etwas davon ausschliessen?
Ja, denn das Array selber wird weiter oben schon mal aufgelöst, es kann also nicht
Code:
null
sein:
Java:
for(int i=0; i<a.length; i++)
(obwohl ich trotzdem eine Überprüfung des Parameters am Anfang der Methode machen würde)

Was bleibt also übrig?
Es gibt Elemente im Array, welche
Code:
null
sind.

Was solltest du dagegen tun?
Je nachdem, was das gewünschte Verhalten ist; entweder, diese Einträge werden einfach ignoriert (am wahrscheinlichsten), oder du brichst die Methode mit einer Exception ab (welche ihr wohl noch nicht hattet).
 
G

grHenry

Gast
Was bleibt also übrig?
Es gibt Elemente im Array, welche
Code:
null
sind.

Was solltest du dagegen tun?
Je nachdem, was das gewünschte Verhalten ist; entweder, diese Einträge werden einfach ignoriert (am wahrscheinlichsten), oder du brichst die Methode mit einer Exception ab (welche ihr wohl noch nicht hattet).

Ok, es gibt Elemente im Array die Null sind, was aber dagegen tun, meines Erachtens dürfte es keine Elemnte im Array geben die Null sind.

Folgender Code in der Methode vereinfachen führt beispielsweise auch zu einer NullPointerExceoption:

Code:
a[0].getSchrittweite();

Außerhalb der Methode wird a[0] aber doch eindeutig mit Werten per Konstruktor initialisiert:

Code:
CCommand[] array = 
			{ 
				new CCommand('S', 5), 
				new CCommand('N', 2),
				new CCommand('O', 5),
				new CCommand('W', 1),
				new CCommand('S', 6),
				new CCommand('O', 3),
				new CCommand('S', 5),
				new CCommand('N', 8)
			};

toString funktioniert:

Code:
System.out.println(a[0].toString());

Sobald ich aber mit Hilfe der getMethode auf ein Attribut zugreifen möchte gibt es die NullPointerException, warum ist das so?

Code:
System.out.println(a[0].getSchrittweite());
 
B

bone2

Gast
dann ist nicht a null sondern nur die schrittweite im element a

zeig mal deine commando klasse
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Klassen Zeichnen von Figuren mittels vorgegebener Klasse Java Basics - Anfänger-Themen 3
X Programmierung mit geometrischen Figuren Java Basics - Anfänger-Themen 3
dummy2 Negative Höhe / Breite bei Figuren Java Basics - Anfänger-Themen 2
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
D Wie Objekte im JFrame frei bewegen lassen? Java Basics - Anfänger-Themen 3
D wie kann man in Pong mit eclipse den schläger bewegen Java Basics - Anfänger-Themen 1
IamArctic Quaxli Tutorial, Rotorblätter bewegen sich nicht mehr Java Basics - Anfänger-Themen 4
T Auf einem Schachbrett bewegen programmieren Java Basics - Anfänger-Themen 2
S ProgrammierHilfe dringend gesucht ( Icon bewegen) Java Basics - Anfänger-Themen 9
J Button über Pfeiltasten bewegen Java Basics - Anfänger-Themen 8
I in Richtung bewegen Java Basics - Anfänger-Themen 2
Franzi1001 ScrollBar lässt sich nicht bewegen Java Basics - Anfänger-Themen 4
N Bewegtes Objekt soll sich um eine Parallele bewegen Java Basics - Anfänger-Themen 0
CptK Interface Bilder über Bildschirm bewegen, bis der Abstand zum vorherigen zu groß wird Java Basics - Anfänger-Themen 13
Y Kreis auf einer Kreisbahn bewegen Java Basics - Anfänger-Themen 5
H Spieler bewegen :) Java Basics - Anfänger-Themen 6
R JTree bewegen Java Basics - Anfänger-Themen 6
GRAZZ0R MouseListener - Rechteck Bewegen Java Basics - Anfänger-Themen 1
J Durch 2-Dimensionales Array "bewegen" will nicht so recht hinhauen Java Basics - Anfänger-Themen 2
J Spieler bewegen Java Basics - Anfänger-Themen 3
N String auf JPanel bewegen Java Basics - Anfänger-Themen 6
G zwei Objekte bewegen - der eine bewegt sich nicht flüssig? Java Basics - Anfänger-Themen 10
F Objekt in Richtung eines anderen Objekts bewegen Java Basics - Anfänger-Themen 4
A Auto bewegen (mit SuM) Java Basics - Anfänger-Themen 27
K Bild mit Maus innerhalb eines Rahmens bewegen Java Basics - Anfänger-Themen 5
D Kreis mit Pfeiltaste bewegen Java Basics - Anfänger-Themen 3
JAVAnnik Problem beim Objekt bewegen Java Basics - Anfänger-Themen 20
E JFrame Fenster bewegen Java Basics - Anfänger-Themen 8
G Shape bewegen Java Basics - Anfänger-Themen 4
F Bilder enfügen und Bewegen Java Basics - Anfänger-Themen 6
N OOP Objekte entlang Pfaden bewegen Java Basics - Anfänger-Themen 15
B Button bewegen Java Basics - Anfänger-Themen 8
H Grafik auf einem JPanel bewegen. Java Basics - Anfänger-Themen 7
L Balken mit Pfeiltasten bewegen Java Basics - Anfänger-Themen 3
P Fenster bewegen Java Basics - Anfänger-Themen 4
S Mehrere Bilder bewegen Java Basics - Anfänger-Themen 5
Spin Objekte bewegen lassen Java Basics - Anfänger-Themen 16
A grafik 2d Objekte mit der Maus bewegen Java Basics - Anfänger-Themen 4
N Objekte bewegen funktioniert nicht Java Basics - Anfänger-Themen 5
U Neuling: Hintergrund bewegen Java Basics - Anfänger-Themen 14
G Maus mit java bewegen Java Basics - Anfänger-Themen 6
W Jlabel bewegen Java Basics - Anfänger-Themen 8
B KeyListener (etwas bewegen) Java Basics - Anfänger-Themen 10
7 Benutzer kann Button bewegen Java Basics - Anfänger-Themen 4
H Bewegen einer Figur Java Basics - Anfänger-Themen 3
R Buttons können sich bewegen und JButtons nicht? Java Basics - Anfänger-Themen 5
K striche die sich auf dem hintergrundbild bewegen Java Basics - Anfänger-Themen 10
J Bewegen durch das Labyrinth Java Basics - Anfänger-Themen 7
A Kreis mit gedrückter Maustaste bewegen. Java Basics - Anfänger-Themen 2
Jere58 Aufgabe zu Mustern Java Basics - Anfänger-Themen 1
M Interfaces Aufgabe Java Basics - Anfänger-Themen 2
lrnz22 Java-Basics-Aufgabe Java Basics - Anfänger-Themen 8
Justin4687 Benötige Hilfe bei folgender Aufgabe Java Basics - Anfänger-Themen 2
A Erste Schritte Aufgabe mit while Schleife Java Basics - Anfänger-Themen 11
S Hilfe zu einer Aufgabe Java Basics - Anfänger-Themen 5
M Java Programmierung Aufgabe Anfänger Java Basics - Anfänger-Themen 1
R Hilfe bei Aufgabe Java Basics - Anfänger-Themen 4
Mikejr Java Berg aufgabe Java Basics - Anfänger-Themen 6
frager2345 Aufgabe Hash Objekt Elemente ausgeben Java Basics - Anfänger-Themen 2
berserkerdq2 Habe ich die Aufgabe richtig gelöst? Java Basics - Anfänger-Themen 3
D Hilfe bei einer Aufgabe mit for-Schleife Java Basics - Anfänger-Themen 6
Neuling47 Ich zerbreche mit den kopf an einer Aufgabe Java Basics - Anfänger-Themen 61
G Fragen zu Kompelierfehler in Aufgabe. Java Basics - Anfänger-Themen 25
Robert_Klaus Hamster java Simulation Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 5
milan123 das ist meine aufgabe ich hab das problem das bei mir Wenn ich die Richtung der Linien verändern will und drei davon sind richtig, verändere ich die 4 Java Basics - Anfänger-Themen 3
M Verständins Problem bei Aufgabe Java Basics - Anfänger-Themen 4
T Informatik Studium Aufgabe Java Basics - Anfänger-Themen 4
T Aufgabe Informatik Studium Java Basics - Anfänger-Themen 10
I matrix aufgabe Java Basics - Anfänger-Themen 22
J Brauche Hilfe bei for-each Aufgabe Java Basics - Anfänger-Themen 1
9 Aufgabe Bruttorechner Java Basics - Anfänger-Themen 14
N Fehler im Code (Aufgabe für Anfänger) Java Basics - Anfänger-Themen 11
J Brauche Hilfe bei Aufgabe Java Basics - Anfänger-Themen 4
J boolean aufgabe Java Basics - Anfänger-Themen 9
D Snake-Spiel ähnliche Aufgabe Hilfe Java Basics - Anfänger-Themen 3
M Hilfe - Array Aufgabe Java Basics - Anfänger-Themen 8
StevenGG Aufgabe im Studium Java Basics - Anfänger-Themen 36
G Strings auf Gleichheit prüfen - Aufgabe vom Prof. Java Basics - Anfänger-Themen 5
S Schulaufgabe - verstehe leider die Aufgabe nicht Java Basics - Anfänger-Themen 4
Leo0909 Ich brauche Hilfe bei dieser Aufgabe Java Basics - Anfänger-Themen 2
R Eclipse Aufgabe Java Basics - Anfänger-Themen 4
J OOP-Aufgabe Java Basics - Anfänger-Themen 15
Helix19 Informatik Grundkurs (Haus-)Aufgabe Java Basics - Anfänger-Themen 5
P eine kleine Aufgabe mit Audio Java Basics - Anfänger-Themen 1
TimoN11 Verständnisfrage bei Aufgabe Java Basics - Anfänger-Themen 2
TimoN11 Java spezielle Suchprobleme - Aufgabe Java Basics - Anfänger-Themen 5
M Könnte mir jemand diese Aufgabe erklären? Java Basics - Anfänger-Themen 2
M Könnte mir jemand diese Aufgabe erklären? Java Basics - Anfänger-Themen 9
dieter000 Aufgabe Hilfe Java Basics - Anfänger-Themen 18
jonathanpizza Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 5
Q Hilfe auf Aufgabe(Matrixmultiplikation) Java Basics - Anfänger-Themen 1
jonathanpizza Hilfe bei der Aufgabe Java Basics - Anfänger-Themen 19
justemii Gehalt berechnen - Aufgabe Java-Programm Java Basics - Anfänger-Themen 9
C Fernseher-Aufgabe (Methoden, Klassen und Objekte) Java Basics - Anfänger-Themen 63
C Rechnungen-Aufgabe Java Basics - Anfänger-Themen 18
C Biene-Aufgabe Java Basics - Anfänger-Themen 2
K Algorithmen und Datenstrukturen Programmier Aufgabe Java Basics - Anfänger-Themen 10
M Verständnisfrage zu eine Online Aufgabe Java Basics - Anfänger-Themen 7
T Aufgabe Flussdiagramm, kann jemand checken? Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben