toString()

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Quellcode

    1. package de.jpp.minigo;
    2. public enum Zustand {
    3. LEER, WEISS, SCHWARZ;
    4. public Zustand komplement(){
    5. if(this.equals(Zustand.WEISS.komplement())){
    6. return Zustand.SCHWARZ;
    7. }
    8. package de.jpp.minigo;
    9. public class Spielbrett {
    10. Zustand[][] spielbrett;
    11. public Spielbrett() {
    12. Zustand[][] spielbrett = new Zustand[10][10];
    13. for (int x = 0; x < 10; x++) {
    14. for (int y = 0; y < 10; y++) {
    15. spielbrett[x][y] = Zustand.LEER;
    16. }
    17. }
    18. }
    19. public Zustand getFeld(int x, int y) {
    20. if (x < 0 || y < 0) {
    21. throw new IllegalArgumentException("x und y nicht enthalten!");
    22. } else if (x > 9 || y > 9) {
    23. throw new IllegalArgumentException("x und y nicht enthalten!");
    24. }
    25. return spielbrett[x][y];
    26. }
    27. public void setFeld(int x, int y, Zustand zustand) {
    28. if (x < 0 || y < 0 || x > 9 || y > 9) {
    29. throw new IllegalArgumentException("x und y nicht enthalten!");
    30. }
    31. else if (zustand != Zustand.LEER) {
    32. throw new IllegalArgumentException();
    33. } else if (zustand != Zustand.SCHWARZ) {
    34. throw new IllegalArgumentException();
    35. } else if (zustand != Zustand.WEISS) {
    36. throw new IllegalArgumentException();
    37. }
    38. spielbrett[x][y] = zustand;
    39. }
    40. public String toString() {
    41. [String kopf = "y\\x 0 1 2 3 4 5 6 7 8 9";
    42. String felder = "\n1\n2\n3\n4\n5\n6\n7\n8\n9";
    43. for (int x = 0; x < 9; x++) {
    44. for (int y = 0; y < 9; y++) {
    45. if (spielbrett[x][y].equals(Zustand.WEISS)) {
    46. felder += "O" + "";
    47. } else if (spielbrett[x][y].equals(Zustand.SCHWARZ)) {
    48. felder += "X" + "";
    49. } else {
    50. felder += "." + "";
    51. }
    52. }
    53. }
    54. return kopf + felder;
    55. }
    56. public boolean equals(Object objekt) {
    57. Object[][] vergleich = new Zustand[10][10];
    58. if (spielbrett.equals(vergleich)) {
    59. return true;
    60. }
    61. vergleich = null;
    62. if (spielbrett.equals(vergleich)) {
    63. return false;
    64. } else
    65. return false;
    66. }
    67. public Object clone() {
    68. Object[][] spielbrettgeklont = new Zustand[10][10];
    69. for (int x = 0; x < 9; x++) {
    70. for (int y = 0; y < 9; y++) {
    71. spielbrettgeklont[x][y] = spielbrett[x][y];
    72. }
    73. }
    74. return spielbrettgeklont;
    75. }
    76. public static void main(String[] args) {
    77. Spielbrett spiel = new Spielbrett();
    78. System.out.println(spiel.toString());
    79. }
    80. }
    81. else if(this.equals(Zustand.SCHWARZ.komplement())){
    82. return Zustand.WEISS;
    83. }
    84. else return Zustand.LEER;
    85. }
    86. }
    Alles anzeigen


    // edit by vince - code highlighting
  • Ich erhalte hier folgende Fehlermeldung: Exception in thread "main" java.lang.NullPointerException
    at de.jpp.minigo.Spielbrett.toString(Spielbrett.java:50)

    at de.jpp.minigo.Spielbrett.main(Spielbrett.java:97)

    Zeile 50:if (spielbrett[x][y].equals(Zustand.WEISS))

    Meine toString()-Methode liefert mir also nichts zurück, ich bin gerade etwas ratlos!
    MfG
  • In deinem Code von oben kann ich auf die Schnelle die Null-Pointer-Exception nicht vachvollziehen. Was ist denn null? Das Array, der Wer im Array? Wie verhält es sich mich anderen Werten. Prüfe die Stelle an der die Werte gesetzt werden sollten. etc.
    Was man aber schon sagen kann, ist das die equals()-Methode falsch implementiert ist. Die setFeld()-Methode wird immer eine IllegalArgumentException ausgeben.

    3 Dinge noch:
    1. Das ist Java und gehört ins Java-Forum, meinst du nicht auch?
    2. Man kann den Code formatieren, so das er lebar ist. (die Kleinen bildchen der Programmiersprachen unter dem Eingabefeld). Gib dir Mühe bei der Frage, dann geben sich Andere Mühe bei der Antwort.
    3. Ich denke es reicht 1 Post.