Test

fischebr

Mitglied
Hallo,
ich möchte mir von meinem 2D-Array eine Codierung "b0" auf der Konsole ausgeben lassen. Mein Programm kompiliert fehlerfrei, gibt aber die Werte nicht aus. Ich finde den Fehler nicht. Kann vielleicht jemand auf meinen Code schauen?

Vielen Dank!

Sorry für die Überschrift, da habe ich beim Erstellen nicht aufgepasst, finde aber auch nichts, um die Überschrift zu ändern.

Code:
public class SpielfeldPlatte {

// Eigenschaften
  int r;
  int c;
  String k;
  public String spielfeldplatte[][] = new String[r][c];

  // Konstruktor
  public SpielfeldPlatte(int r, int c, String k) {
       for (r = 0; r < spielfeldplatte.length; r++) {
            for (c = 0; c < spielfeldplatte[r].length; c++) {
                 spielfeldplatte[r][c] = k;
            }
       }
  }

  //Methoden
  void zeigeSpielfeldPlatte() {
       for(int r = 0; r < spielfeldplatte.length; r++) {
            for(int c = 0; c < spielfeldplatte[r].length; c++) {
                 System.out.print(spielfeldplatte[r][c]);
            }
            System.out.println();
       }
  }
}

Hier ist meine Main-Methode:
Code:
public class Test {

  public static void main(String[] args) {
       SpielfeldPlatte spielfeldplatte = new SpielfeldPlatte(2, 3, "b0");
       spielfeldplatte.zeigeSpielfeldPlatte();
  }
}
 
Zuletzt bearbeitet:

Dompteur

Top Contributor
Dein Spielfeld wird bereits vor dem Aufruf des Konstruktors angelegt.
Den Instanzvariablen r und c werden nie Werte zugewiesen.

Du solltest dir auch überlegen, die Instanzvariablen gleich wie die Parameter im Konstruktor zu nennen. Ich vermute, dass genau das der Grund für deinen Irrtum ist.
 

fischebr

Mitglied
Erst einmal vielen Dank für deine Antwort.
Sorry, ich weiß jetzt nicht genau was Du meinst. Das ist auch mein erstes Projekt dieser Art. Die Instanzvariablen sind doch gleich: int r, int c und String k.
Zum Anlegen des Feldes: Wenn ich das Feld im Konstruktor anlege, erhalte ich eine NPE in der Zeile, in der im Konstruktor die geschachtelte For-Schleife beginnt. Wo lege ich denn idealerweise das Spielfeld an?
In der Klasse selbst kann ich keine Werte zuweisen, weil ich die Klasse für verschiedene Größen und verschiedene Codierungen brauche.
 

Dompteur

Top Contributor
Hi,
sorry für meinen vorletzten Satz. Da hat ein NICHT gefehlt.
Dein Problem beruht unter anderem darauf, dass du glaubst, dass die Instanzvariablen r und c mit den Konstruktorparametern r und c in Zusammenhang stehen.
Das tun sie aber nicht. Ich habe hier die veränderte Klasse SpielfeldPlatte.


Code:
public class SpielfeldPlatte {
 
// Eigenschaften
  public String spielfeldplatte[][];
 
  // Konstruktor
  public SpielfeldPlatte(int r, int c, String k) {
       spielfeldplatte = new String[r][c];
       for (r = 0; r < spielfeldplatte.length; r++) {
            for (c = 0; c < spielfeldplatte[r].length; c++) {
                 spielfeldplatte[r][c] = k;
            }
       }
  }
 
  //Methoden
  void zeigeSpielfeldPlatte() {
       for(int r = 0; r < spielfeldplatte.length; r++) {
            for(int c = 0; c < spielfeldplatte[r].length; c++) {
                 System.out.print(spielfeldplatte[r][c]);
            }
            System.out.println();
       }
  }
}

Die
Wie du siehst, brauchst du nur eine einzige Instanzvariable - dein Spielfeld.
Alle anderen Parameter deines Konstruktors werden nur zum Aufbau des Spielfelds benötigt und du musst sie dir nicht weiter merken.
 

Kababär

Top Contributor
Rufst du einen Konstruktor auf, so werden zuerst die Instanzvariablen deklariert/initialisert. Dann geht es erst in den Konstruktor. Bevor du nun wirklich im Konstruktor anfängst, haben deine Werte r und c noch "keine Werte", aber du erstellst dein array schon mit den Werten r und c.
Die Initialisierung des Arrays müsstest du im Konstruktor vornehmen, nachdem du r und c initialisierst.
 

fischebr

Mitglied
Vielen Dank für Eure Antworten. Es ist echt toll, wie in diesem Forum geholfen wird. Ich habe in der Tat gedacht, dass die Konstruktorvariablen mit den Instanzvariablen in Zusammenhang stehen.

Mögt ihr mir vielleicht noch einmal weiterhelfen. Ich habe mein Programm jetzt entsprechend geändert und neu gestartet und jetzt erhalte ich eine NPE in der 26. Zeile, das ist die Zeile der "zeigeSpielfeldPlatte"-Methode, in der die verschachtelte for-Schleife beginnt.
 

fischebr

Mitglied
Na klar, hätte ich auch selbst drauf kommen können...

Java:
public class SpielfeldPlatte {
  
// Eigenschaften
     public String spielfeldplatte[][];
  
  // Konstruktor
     public SpielfeldPlatte(int r, int c, String k) {
          String spielfeldplatte[][] = new String[r][c];
          for (r = 0; r < spielfeldplatte.length; r++) { 
               for (c = 0; c < spielfeldplatte[r].length; c++) { 
                    spielfeldplatte[r][c] = k; 
          }
     }
  }
  
  //Methoden
     void zeigeSpielfeldPlatte() { 
          for(int r = 0; r < spielfeldplatte.length; r++) {
               for(int c = 0; c < spielfeldplatte[r].length; c++) {
                    System.out.print(spielfeldplatte[r][c]);
               }
               System.out.println();
          }
     }
}

Java:
   public class Test {

        public static void main(String[] args) {
             SpielfeldPlatte spielfeldplatte = new SpielfeldPlatte(2, 3, "b0");
             spielfeldplatte.zeigeSpielfeldPlatte();
       }
}
 
Zuletzt bearbeitet von einem Moderator:

InfectedBytes

Top Contributor
Für diese Zeile hier:
Java:
String spielfeldplatte[][] = new String[r][c];
gilt immer noch das gleiche wie für r und c:
Dein Problem beruht unter anderem darauf, dass du glaubst, dass die Instanzvariablen r und c mit den Konstruktorparametern r und c in Zusammenhang stehen.
Jetzt hast du eine lokale Variable namens spielfeldplatte, diese hat aber nichts mit der instanzvariable zu tun.

edit:
Schau dir einfach nochmal den code von @Dompteur an
 

fischebr

Mitglied
Den "String" weglassen gab eine andere Fehlermeldung:

Code:
public class SpielfeldPlatte {
   
 // Eigenschaften
     public String spielfeldplatte[][];
   
  // Konstruktor
     public SpielfeldPlatte(int r, int c, String k) {
          spielfeldplatte[][] = new String[r][c];
          for (r = 0; r < spielfeldplatte.length; r++) {  
               for (c = 0; c < spielfeldplatte[r].length; c++) {  
                    spielfeldplatte[r][c] = k; 
               }   
          }
     }
   
  //Methoden
     void zeigeSpielfeldPlatte() {  // Konsolenausgabe Spielfeldplatte
          for(int r = 0; r < spielfeldplatte.length; r++) {
               for(int c = 0; c < spielfeldplatte[r].length; c++) {
                    System.out.print(spielfeldplatte[r][c]);
               }
               System.out.println();
          }
     }
}

Code:
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
   The left-hand side of an assignment must be a variable
   Syntax error, insert ". class" to complete Expression

   at Spielkomponenten.SpielfeldPlatte.<init>(SpielfeldPlatte.java:15)
   at Spielkomponenten.Test.main(Test.java:8)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zrebna Frage zu Test-Driven Development (TDD) Java Basics - Anfänger-Themen 3
W junit.Test not accessible? Java Basics - Anfänger-Themen 4
W Junit-Test (Java) Java Basics - Anfänger-Themen 4
W Testfälle bei Java ( Junit-Test) Java Basics - Anfänger-Themen 3
D Hilfe bei Calculator Test Java Basics - Anfänger-Themen 15
U jUnit 5 Test für eine addMethode Java Basics - Anfänger-Themen 18
M Test auf Exceptions schreiben Java Basics - Anfänger-Themen 11
P Eclipse Karate Framework API Test . Unexpected Error: the trustAnchors parameter must be non-empty Java Basics - Anfänger-Themen 1
I Variable innerhalb Methode: Local variable test defined in an enclosing scope must be final or effectively final Java Basics - Anfänger-Themen 3
A Junit Test für MysqlDataSource JDBC Java Basics - Anfänger-Themen 3
A Test Junit Java Basics - Anfänger-Themen 1
H Junit test Java Basics - Anfänger-Themen 12
P JUnitTest Best Practise (Ein Assert pro Test?) Java Basics - Anfänger-Themen 10
P Methoden JUnit 4 - Test Java Basics - Anfänger-Themen 6
Mr_Kleeblatt Operatoren if (arri[i] != "test.java"&& arri[i] != "test.class") Java Basics - Anfänger-Themen 3
N Fehler bei JUnit Test Java Basics - Anfänger-Themen 5
L Test-Methoden schreiben Java Basics - Anfänger-Themen 13
D Test auf Dopplungen Java Basics - Anfänger-Themen 32
neerual Klassen Wie rufe ich Klassen, die andere Klassen extenden in einer Test Unit auf? Java Basics - Anfänger-Themen 10
B JUnit Test erstellen Java Basics - Anfänger-Themen 6
B zzz.test Java Basics - Anfänger-Themen 13
W Problem bei JUnit Test Aufgabe Java Basics - Anfänger-Themen 15
W JUnit Test und HashCode Java Basics - Anfänger-Themen 14
C Erste Schritte Hexidezimal-Test Java Basics - Anfänger-Themen 2
A Kfz - Händler Klasse. JUnit-Test gibt noch Fehler an, aber finde Ursache nicht Java Basics - Anfänger-Themen 7
B Palindrom Test mit Junit Java Basics - Anfänger-Themen 23
T Minesweeper Test Java Basics - Anfänger-Themen 2
S Junit Test Java Basics - Anfänger-Themen 2
W Ist das ein legitimer Test? Java Basics - Anfänger-Themen 5
shiroX Methoden JUnit-Test einer void-Methode Java Basics - Anfänger-Themen 4
U Best Practice Datenbereitstellung Unit Test Java Basics - Anfänger-Themen 6
B Binäre Suche - Junit Test Java Basics - Anfänger-Themen 6
B Datentypen Test float und double speichern Zahlen nur ungefähr Java Basics - Anfänger-Themen 4
Z Vererbung Test auf Normalverteilung, Wilcoxon Java Basics - Anfänger-Themen 3
M Assertion NotNull Test Java Basics - Anfänger-Themen 3
S Separate Funktion für JUnit-Test Java Basics - Anfänger-Themen 3
W Test, ob Datei existiert, schlägt fehl Java Basics - Anfänger-Themen 4
T JUnit test failed Java Basics - Anfänger-Themen 3
H Array Test Methode schreiben Java Basics - Anfänger-Themen 3
R JUnit Test mit einer Dateistruktur als Testparameter Java Basics - Anfänger-Themen 3
V Bruchrechner Test Java Basics - Anfänger-Themen 7
T Test läuft schief Java Basics - Anfänger-Themen 3
shiroX OOP Array kleinste Zahl mit jUnit test Java Basics - Anfänger-Themen 3
G mache aus Test nach sortieren estt oder java aajv Java Basics - Anfänger-Themen 5
S Code stimmt nicht für vorgegebenen JUnit-Test Java Basics - Anfänger-Themen 2
x22 Java Multiple Choice Test Java Basics - Anfänger-Themen 8
R JUnit Test mit mehrfach ausgeführt Java Basics - Anfänger-Themen 6
B JUnit - Mini-Test Java Basics - Anfänger-Themen 9
T Unterschied zwischen Integrationstest und JUnit test? Java Basics - Anfänger-Themen 12
N Test mit assert Java Basics - Anfänger-Themen 9
Y Junit Test - Testwert ändert sich Java Basics - Anfänger-Themen 12
K Palindrom Test Java Basics - Anfänger-Themen 9
S Performance-/Stress Test für Webanwendung Java Basics - Anfänger-Themen 2
V Mediaplayer - NullPointerException bei Unit-Test Java Basics - Anfänger-Themen 4
H Ich kann mein Java Programm Test.class nicht ausführen Java Basics - Anfänger-Themen 6
H Javabefehl Test Java Basics - Anfänger-Themen 3
S Hilfe zu Java-Programm und JUnit Test!! Java Basics - Anfänger-Themen 5
T JUNit Test IOException Java Basics - Anfänger-Themen 5
H lucas-test Java Basics - Anfänger-Themen 14
P White-Box-Test Verständnisproblem Java Basics - Anfänger-Themen 11
N Methoden Test ob Server vorhanden ist Java Basics - Anfänger-Themen 4
N Test Datei = Bild Java Basics - Anfänger-Themen 5
S Erste Schritte 1. Test Programm Java Basics - Anfänger-Themen 21
Spin JUNIT Test Case - Problem bei testen Java Basics - Anfänger-Themen 2
T brauche HILFE beim Junit test:eek: Java Basics - Anfänger-Themen 11
timbeau JUnit Test Dauer speichern/loggen Java Basics - Anfänger-Themen 16
E Am Mittwoch Test und ich checks überhaupt nich Java Basics - Anfänger-Themen 27
A junit test wann verwendet man "was"? Java Basics - Anfänger-Themen 4
J JUnit Test Java Basics - Anfänger-Themen 2
D Test einer Chipkarte Java Basics - Anfänger-Themen 2
J Problem mit Test-Klasse Java Basics - Anfänger-Themen 4
E Test, ob String in Double umwandelbar ist Java Basics - Anfänger-Themen 3
J Test steht vor der Tür !! Java Basics - Anfänger-Themen 2
X Array nur mit Zahlen (test) Java Basics - Anfänger-Themen 11
Houly JUnit Test Suite anlegen Java Basics - Anfänger-Themen 6
F Primitiver Lucas-Lehmer-Test hängt sich auf Java Basics - Anfänger-Themen 7
M Erster HashMap-test Java Basics - Anfänger-Themen 5
O Test auf JComponent Java Basics - Anfänger-Themen 7
pun Junit Test erkennt Exception nicht.. Java Basics - Anfänger-Themen 14
D C0 und C1 Test nochmal Java Basics - Anfänger-Themen 9
D C0 und C1 Test Java Basics - Anfänger-Themen 3
G BlueJ jUnit Test Java Basics - Anfänger-Themen 6
J Test auf UTF-8 Java Basics - Anfänger-Themen 2
M Wo und wie speich. ich .java und wo den zugehörigen test? Java Basics - Anfänger-Themen 2
Shalimar Test, ob mehr pos. oder neg. Zahlen Java Basics - Anfänger-Themen 3
M test Java Basics - Anfänger-Themen 5
M test Java Basics - Anfänger-Themen 2
M test Java Basics - Anfänger-Themen 10
V Test mit JUnit verbinden Java Basics - Anfänger-Themen 3
M test Java Basics - Anfänger-Themen 4
H Miller Rabin Test Primzahlen werden teilweise nicht gefunden Java Basics - Anfänger-Themen 5
C Multiple Choice Test Java Java Basics - Anfänger-Themen 5
G Grundfläche färben, ein Bild (NORTH) ind Test darunter? Java Basics - Anfänger-Themen 6
M Palindrom Test mit Char-arrays! Java Basics - Anfänger-Themen 3
M Java Test Übungsfragen Hilfe! Java Basics - Anfänger-Themen 5
B JUnit Test Klasse Rational Java Basics - Anfänger-Themen 12
N class Test<E extends MyAbstractClass> => typ von E? Java Basics - Anfänger-Themen 5
G jar cvf test.war -C src/ WEB-INF -C src/ ALLE JSP Wildcard? Java Basics - Anfänger-Themen 2
0 Quadratzahl-Test Java Basics - Anfänger-Themen 4
C Unsupported major.minor bei jUnit Test Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben