2013-10-09 2 views
0

У меня есть раздел кода, который написал кто-то другой, и я не могу понять, как заставить код работать с ним. я должен сделать одну броска и отобразить число в диапазоне от 1 до 6 с помощью:Класс Die в Java с внешним кодом

(int)(math.random()*6 + 1); 

Код предусмотрено это:

import java.util.*; 

public class Ch3_PrExercise6 

{ 
    static Scanner console = new Scanner(System.in); 
    public static void main(String[] args) 
    { 
    Die die1 = new Die(); 
    Die die2 = new Die(); 
    System.out.println("die1: " + die1.getRoll()): 
    System.out.println("die2: " + die2.getRoll()); 
    System.out.println("After rolling, die1: " + die1.rollDie()); 
    System.out.println("After rolling, die2: " + die2.rollDie()); 
    System.out.println("After second roll, die1: " + die1.rollDie()); 
    System.out.println("After second roll, die2: " + die2.rollDie()); 
    } 
} 

До сих пор все, что я могу придумать is:

public class Die 
{ 
    //Sets initial value to 1 
    public int startFace 
    { 
    startFace = 1; 
    } 
    //Roll the die 
    public int rollDie 
    { 
    rollDie = (int)(math.random()*6 + 1); 
    } 
} 

У меня возникли проблемы с выяснением того, что другая программа хочет от меня в линии getRoll. Я понимаю, что rollDie вызывается в последних четырех командах печати.

Я использую Обработка 2.20, Если это важно.

+4

Вам нужно будет уточнить, что именно вы спрашиваете. Я потерялся. – nhgrif

+0

В '' методе 'rollDie()' нет оператора return, а не 'rollDie =', используйте 'return'; это то, как производятся возвращаемые значения в Java. Также нет необходимости в методе 'startFace()' в приведенном выше примере. –

+0

Мое лучшее предположение заключается в том, что 'getRoll()' должен возвращать текущее значение лицевой стороны штампа (т. Е. Результат последнего рулона или какое-то стандартное значение, если оно пока не показывается). Но это всего лишь предположение, основанное на моем мнении и не соответствующее SO. – FGreg

ответ

1

Я не думаю, что скомпилирует? Вы ожидали rollDie быть функцией, вы можете сказать, что, поскольку у вас есть

die1.rollDie() 

Обратите внимание на круглые скобки: вызов функции.

так сделать функцию и она возвращает значение:

public int rollDie() 
{ 
    int rollResult = (int)(math.random()*6 + 1); 
    return rollResult 
} 
+0

Я думаю, речь идет о 'die1.getRoll()' ... – iamnotmaynard

+0

Я все еще работаю над выяснением всего, что хочет другой код, когда я работаю над кодом. Но да, вы правы. На данный момент он не компилируется. – user2863980

1

Я бы upvote DJNA и принять его ответ. Для разработки, я думаю, это все, что вам нужно:

public class Die 
{ 
    private int face = 1; 

    // Get current value 
    public int getRoll() { 
    return face; 
    } 

    //Roll the die, return new value 
    public int rollDie() { 
    face = (int)(Math.random()*6 + 1); 
    return face; 
    } 

} 
+0

Назначение также означает, что кости помнят свой последний бросок и поддерживают вызов getRoll. – Aurand

+0

Вы правы. Обновлено. – paulsm4

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