2015-03-08 2 views
-2

Почему это дает ошибку в строке treasureLocations [] = new Coord (rows, cols); концструктора?Что случилось с конструктором?

public class TreasureMap{ 
    int rows, cols;  // How big is the treasure map 
    Coord [] treasureLocations; // The locations of treasures 

    Scanner kbd = new Scanner(System.in); 
    // Prompt the user for info on the treasure map and then create it 
    // COMPLETE THIS METHOD 
    public TreasureMap(){ 

     System.out.println("Enter the map size (2 ints): "); 
     rows = kbd.nextInt(); 
     cols = kbd.nextInt(); 
     treasureLocations[] = new Coord(rows, cols); 




public class Coord { 
    public final int row; 
    public final int col; 

    // Constructor, 
    public Coord(int ir, int ic){ 
    this.row = ir; 
    this.col = ic; 
    } 
+0

Здесь все неправильно. Взгляните на http://stackoverflow.com/questions/1200621/declare-array-in-java, чтобы узнать, как вам нужно создать экземпляр массива. – Nami

+0

Пожалуйста, правильно отформатируйте свой код! Он даже не компилируется. – isnot2bad

+1

'arrayName [] = anything;' недопустимый синтаксис в Java. – Shashank

ответ

0

после новой Координаты (..., ...); положить "}" на линии впоследствии.

И вы пытаетесь сделать массив «[]» только одной координатой.

2
treasureLocations[] = new Coord(rows, cols); 

Эта строка недопустима синтаксисом. Вы должны назначить новый объект позиции внутри массива, поместив значение int внутри квадратных скобок. Например:

int position = 0; 
treasureLocations[position] = new Coord(rows, cols); 

Вам также необходимо инициализировать массив. Глядя вверху вашей программы, вы объявили ее, но не присвоили ее чему-либо, поэтому во время выполнения вы получите исключение с нулевым указателем. Что-то вроде этого:

Coord [] treasureLocations = new Coord[someNumber]; // The locations of treasures 
+0

Что вы подразумеваете под «назначать новый объект позиции внутри массива, а не самому массиву»? – Inferno

+0

@ Inferno Что-то вроде 'treasureLocations [0] = new Coord (rows, cols);'. Вам нужно поместить int внутри квадратных скобок, чтобы указать положение внутри массива. Использование переменной int в порядке. Вы также должны быть осторожны, чтобы не попытаться назначить позицию> = array.length или вы получите сообщение об ошибке. –

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