2015-04-25 4 views
0

Почему я получаю красную подчеркнутую ошибку, когда пытаюсь передать аргументы конструктору, т. Е. Создать объект? Что я делаю не так?Ошибка при переходе к конструктору

public static void main(String[] args) 
    { 
     CreateShape temp = new CreateShape(3,3, 'a', 
       {{'x','.','.'} 
       {'.','.','x'} 
       {'x','.','x'}}, "x . .\n" 
          + ". . x\n" 
          + "x . x"); 
     temp.rotateCW(); 
     System.out.println(temp); 
public CreateShape(int height, int width, char dc, char[][] charLayout, String layout) 
    { 
     this.height = height; 
     this.width = width; 
     this.dc = dc; 
     this.shape = charLayout; 
     this.layout = layout; 
     initialPos = Rotation.CW0; 
    } 

Im doint Somthing неправильно написав аргументы char[][].

+3

Отсутствующие запятые для разделения строк в 2d массив – Alejandro

+3

... и также отсутствует 'новый символ [] []' часть: 'новый символ [] [] {{. ..}, {...}, {...}} ' –

ответ

1

Я предполагаю, что метод rotateCW и все поля объявлены в классе.

При определении 2-мерного массива массив считывается как массив массива. В 1D массиве мы используем {entry, entry}. Аналогично в 2D-массиве {{entry, entry}, {entry, entry}}. Кроме того, массив является объектом и должен быть построен таким образом.

Ваша проблема заключается в том, что у вас нет конструктора массива и там не запятые между массивами ... Таким образом, массив должен быть определен как:

new char[][]{ 
    {'x','.','.'}, 
    {'.','.','x'}, 
    {'x','.','x'}} 

, а затем остальная часть аргументов как обычно.

0

массив символов должен быть разделен запятыми в 2d. Это будет работать для вас, я думаю,

CreateShape temp = new CreateShape(3,3, 'a', 
       new char[][]{{'x','.','.'}, 
       {'.','.','x'}, 
       {'x','.','x'}}, "x . .\n" 
          + ". . x\n" 
          + "x . x"); 
Смежные вопросы