java中的骰子游戏(从带有构造函数的类调用)

dice game in java (calling from a class with a constructor)

我正试图用一个能给出1到6之间随机数的骰子做一个骰子游戏。我有一个称为die的类,它由一个构造函数和两个方法组成。构造器的主要目的是启动一个随机值,这两种方法应该掷骰子并分别返回值。我的问题是,我不知道如何掷骰子和检索数字后,我已经做了一个对象。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import java.util.Random;

class Die{
    int dots,roll;
    Random number = new Random();

    public Die(){
        int dots = number.nextInt(6)+1 ;
    }

    public void roll(){
        roll = number.nextInt(dots)+1;
    }

    public int getDots(){
        return roll;
    }

}

public class Uppg1 {
    public static void main (String args[]){
        Die die = new Die();
        System.out.println("Du fick"+die.getDots());

    }
}

我的代码似乎是转到构造函数而不是方法。我需要来自构造函数的值,然后掷骰子,然后从getdots方法获取值。


int dots = number.nextInt(6)+1不改变字段dots而是创建一个新的变量dots

此外,您从不调用roll(),因此roll=nullgetDots()返回空值。

你可以通过在uppg1主方法中调用die.roll()来掷骰子。


我已经为您修改了代码:import java.util.random;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Die{
    int dots,roll;
    Random number = new Random();

    public Die(){
         dots = number.nextInt(6)+1 ;
    }

    public void roll(){
        roll = number.nextInt(dots)+1;
    }

    public int getDots(){

        return roll;
    }

}

public class Uppg1 {
    public static void main (String args[]){
        Die die = new Die();
        die.roll();
        System.out.println("Du fick" +die.getDots());

    }
}

从die构造函数中移除int,因为它已经定义为全局,你的计划。在任何地方都不调用Roll方法,因此需要调用它。


1
  int dots = number.nextInt(6)+1 ;

这是不同于变量的变量

1
2
class Die{
    int dots,roll;

所以就这样吧

1
dots = number.nextInt(6)+1 ;

这样你就能得到正确的值。


Die构造函数内,更新内部dots变量而不是类成员。使用:

1
2
3
public Die(){
    dots = number.nextInt(6)+1 ;
}