2014-11-22 5 views
-2

Я работаю над Java-проектом для игры Yahtzee и должен создать параметризованный конструктор, который дает обе мои переменные-экземпляры их значения. Мои две переменные экземпляра - это массивы.Проблема с созданием объекта из параметризованного конструктора с массивом в качестве параметра

public DiceArray(int[] die) 
{ 
    die = new int[5]; 
    for(int i = 0; i < die.length; i++) 
    { 
     die[i] = 0; 
    } 

    keep = new boolean[5]; 
    for(int i = 0; i < keep.length; i++) 
    { 
     keep[i] = false; 
    }  
} 

Когда я пытаюсь создать объект в своем классе приложения с

// Testing parameterized constructor 
    DiceArray myDice = new DiceArray(); 

я получаю исключение в потоке «главный» java.lang.Error: нерешенная проблема компиляции: Конструктор DiceArray() не определено

Когда я беру параметр из метода, он отлично работает. Заранее благодарю за любую помощь

+0

вызов конструктора с межд [] в качестве параметра – Benvorth

ответ

0

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

Вы должны использовать параметризованный конструктор в вашем случае как:

int num[] = new int[5]; 
DiceArray myDice = new DiceArray(num); 

И удалить NUM инициализации массива из метода, как это не желательно, чтобы изменить параметр том, что вы получаете в методе/конструктор как это привычка имеют какой-либо эффект (т. е. он не изменит ничего в вашем массиве num, который вы определили непосредственно перед вызовом конструктора, как указано выше) в вызывающем методе, как мы определили выше.

Фактически, Я не вижу, что вы должны использовать конструктор вообще. (Предположим, что вы уже объявили массив num и result на уровне объекта). По умолчанию, когда вы создаете массив int, все значения по умолчанию будут равны 0, а для результата i.e-boolean array они будут по умолчанию равными false.

Так что просто удалите конструктор и его тело, и оно должно работать.

+0

О, я вижу, это имеет смысл. Я буду на это некоторое время и посмотрю, смогу ли я это обработать. Спасибо вам за помощь. – Espinal

+0

Спасибо, что помогли мне понять, что все для меня. – Espinal

0

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

public DiceArray() { 
    ... 
} 

или вы можете использовать параметр:

int[] num = new int[5]; 

DiceArray myDice = new DiceArray(num); 
+0

я думаю, что я делаю, пытаясь это, как вы показали мне. Будет ли int [] num = new int [5] применяться, если я уже создал экземпляр переменной? Я все еще прихожу к той же ошибке. – Espinal

0

Что вы пробовали,

DiceArray myDice = new DiceArray(); 

ли instatiating в myDice с конструктором по умолчанию. От Wikipedia

In both Java and C#, a "default constructor" refers to a nullary constructor that is automatically generated by the compiler if no constructors have been defined for the class. The default constructor is also empty, meaning that it does nothing. A programmer-defined constructor that takes no parameters is also called a default constructor

При создании параметризованного конструктора, один по умолчанию не создаются, и что sunysen говорят либо создать конструктор по умолчанию, или создать объект с помощью параметризованных один.

Примечания другой ошибка, так как вы заявили, что умереть и держать ваш экземпляр переменные, то умереть изменений в конструкторе не будут иметь никакого влияния на переменном экземпляр, так как оно омрачено переменным в конструктор с тем же именем.Чтобы это исправить, префиксом это ключевое слово

public DiceArray(int[] die) 
{ 
    this.die = new int[5]; 
    ... 
} 

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

  • Нет связанных вопросов^_^