2012-05-25 4 views
0

Эй, до сих пор у меня есть, и я получаю ошибку с нулевым указателем в моем цикле for Кто-нибудь знает почему? благодаряC# экземпляры пользовательских объектов

здесь сообщение об ошибке

Ссылка на объект не указывает на экземпляр объекта.

board = new BoardSquare[15][]; 

    String boardHtml = ""; 

    for (int i = 0; i < 15; i++) { 
      for (int k = 0; k < 15; k++) { 
       //if (board[i][k] == null) 
        board[i][k] = new BoardSquare(i, k); 
       boardHtml += board[i][k].getHtml();//null pointer error here 
      } 
     } 

    /** 
    * A BoardSquare is a square on the FiveInARow Board 
    */ 
    public class BoardSquare { 
     private Boolean avail; //is this square open to a piece 
     private String color;//the color of the square when taken 
     private int x, y; //the position of the square on the board 

     /** 
     * creates a basic boardSquare 
     */ 
     public BoardSquare(int x, int y) { 
      avail = true; 
      this.x = x; 
      this.y = y; 
      color = "red";//now added (thanks) 
     } 

     /** 
     * returns the html form of this square 
     */ 
     public String getHtml(){ 
      String html = ""; 

      html = "<div x='" + x + "' y='" + y + "' class='" + (avail ? "available" : color) + "'></div>"; 

      return html; 
     } 

     /** 
     * if true, sets color to red 
     * if false, sets color to green 
     */ 
     public void takeSquare(Boolean red){ 
      if(red) 
       color = "red"; 
      else 
       color = "green"; 
     } 
    } 
+2

Что делает отладчик шоу VS? Если он присоединен к процессу, он сломается на линии, вызывающей NRE, и значения переменных/выражений могут быть проверены. Это будет вашим другом позже, поэтому привыкнуть к нему сейчас. –

+0

на бортуHTML? если это так задано для String.Empty перед циклом. ему не нравится null + = ..... –

ответ

1

ли строковое поле Цвет конкретизированных? не похоже на это.

У вас есть Null.

html = "<div x='" + x + "' y='" + y + "' class='" + (avail ? "available" : color) + "'></div>"; 

Конструктор должен быть таким:

public BoardSquare(int x, int y) { 
      avail = true; 
      this.x = x; 
      this.y = y; 
      Color = "white"; 
     } 
+0

В одной строке над 'html' установлена ​​пустая строка. ' –

+0

Ах, ты имеешь в виду «цвет», я вижу. –

+0

да, забыли набрать его :) –

0

Вы создаете array of arrays (также известный как неровные массивы), которые я не думаю, что вы хотите. Вы, вероятно, ищете multidimensional массива:

BoardSquare[,] board = new BoardSquare[15,15]; 

Затем, когда вы назначаете ему:

board[i,k] = new BoardSquare(i, k); 
boardHtml += board[i,k].getHtml(); 
+0

Ну, что, безусловно, сработало. огромное спасибо. В чем же разница? Я попытался выяснить, но безрезультатно – Gambai

+0

Я добавил ссылку на MSDN описание зубчатых массивов. –

Смежные вопросы