Schachbrett mit while-schleifen

Che60

Mitglied
Hallo liebe Leute,

bin neu hier und da ich einfach nicht mehr weiterkomme dachte ich mir hol ich mir hier halt hilfe... also ich geh mal gleich zur aufgabenstellung rüber und kopier hier mal mein code rein:

die aufgabenstellung:
Schreiben Sie Ihr Programm Chessboard so, dass Sie optional 2 weitere Kommandozeilenparameter übergeben können. Der erste ist eine Zeilennummer, der zweite eine Spaltennummer. Genau an dieser Koordinate soll statt einem - oder + ein X stehen. Liegt
die Koordinate außerhalb des Schachbrettes wird sie ignoriert.
Hinweis: Mit args.length können Sie die Länge des args-Arrays herausbekommen. Das
Programm soll nach wie vor auch mit nur einem Kommandozeilenparameter funktionieren.
Beispiele:
$ ./gradlew run -Dexec.args="8 3 7"
- + - + - + - +
+ - + - + - + -
- + - + - + X +
+ - + - + - + -
- + - + - + - +
+ - + - + - + -
- + - + - + - +
+ - + - + - + -

und das ist mein code:

class Chessboard {
public static void main(String[] args) {
int a = Integer.parseInt(args[0]);
int p = Integer.parseInt(args[1]);
int y = Integer.parseInt(args[2]);
int b = a;
int k = 1;
int i = 1;
while (k <= b) {
k++;
i = 1;
while (i <= a) {
i++;
if (k - 1 == p && i - 1 == y) {
System.out.print("X");
} else
if ((i + k) % 2 != 0) {
System.out.print("+");
} else {
System.out.print("-");
}
if (i <= a) {
System.out.print(" ");
}
}
System.out.print("\n");
}
}
}

das problem ist, wenn ich einen parameter eingebe, geht es leider nicht... wie kann ich jetzt weitermachen?

liebe grüße und danke schonmal
 
also ich hab das jetzt mit der try/catch methode versucht aber irgendwie kriege ich die auch nicht so ganz auf die reihe... bin schon am verzweifeln...
 
Was genau ist dein Problem mit Arrays? Wo hängt es jetzt gerade genau?

Poste dein Code bitte in [code=Java] CODE[/code] Tags.
 
Du sollst ja das Programm einmal mit einem und einmal mit 3 Argumenten aufrufen. Folglich ist args.length einmal 1 und einmal 3. Du kannst natürlich nur auf den Index 1 und 2 zugreifen, wenn args mindestens die Länge 3 hat damit diese Elemente auch da sind.
Du musst also vor args[1] prüfen, wie lang das Array ist.
Java:
int p, y; // Müssen vorher deklariert werden, da wir sie unterschiedlich initialisieren können.
if (args.length == 3) { // Muss doch 3 sein. Mein Fehler
p = Integer.parseInt(args[1]);
y = Integer.parseInt(args[2]); // <-- Letzter Eintrag im Array: 2 + Index 0 = 3
} else {
// damit X nicht auftaucht.
p = -1;
y = -1;
}
 
hab den code jetzt umgeschrieben:
Java:
class Chessboard {
  public static void main(String[] args) {
    int size;
    int y;
    int x;
    if (args.length == 3) {
      size = Integer.parseInt(args[0]);
      y = Integer.parseInt(args[1]);
      x = Integer.parseInt(args[2]);
    } else {
      size = Integer.parseInt(args[0]);
      x = -1;
      y = -1;
    }
    int i = 1;
    int j;

    while (i <= size) {
      j = 1;

      while (j <= size) {
        if (i == y && j == x) {
          System.out.print(" X");
        } else {
          if ((i + j) % 2 == 0) {
            System.out.print(" -");
          } else {
            System.out.print(" +");
          }
        }
        j++;
      }
      System.out.print("\n");
      i++;
    }
  }
}
der funktioniert auch, aber wenn ich mit powershell die abfrage mache gibt es mir einen vergleichsfehler aus... ich weiß dass da eine leerzeile hinten oder vorne zu viel ist, aber weiß halt nicht was ich sonst machen soll. hier der fehler:
Test chessboard_4 FAILED

org.junit.ComparisonFailure: expected:<[- + - +
+ - + -
- + - +
]+ - + -
> but was:<[ - + - +
+ - + -
- + - +
]+ - + -
>
at ChessboardTest.chessboard_4(ChessboardTest.java:73)

Test chessboard_5 FAILED

org.junit.ComparisonFailure: expected:<[- + - + -
+ - + - +
- + - + -
+ - + - +
]- + - + -
> but was:<[ - + - + -
+ - + - +
- + - + -
+ - + - +
]- + - + -
>
at ChessboardTest.chessboard_5(ChessboardTest.java:85)

Test chessboard_6 FAILED

org.junit.ComparisonFailure: expected:<[- + - + - +
+ - + - + -
- + - + - +
+ - + - + -
- + - + - +
]+ - + - + -
> but was:<[ - + - + - +
+ - + - + -
- + - + - +
+ - + - + -
- + - + - +
]+ - + - + -
>
at ChessboardTest.chessboard_6(ChessboardTest.java:98)



10 tests completed, 9 failed
 

Zurück
Oben