当前位置: 首页 > 知识库问答 >
问题:

骰子程序,总计一个骰子和第二个骰子的面无法正常工作

周志文
2023-03-14

我试图创建一个程序,掷2个骰子,给出die1die2的数量,然后将它们相加。我得到了骰子的随机数,但是当它们相加(总和)时,总数是不正确的。

我尝试过更改faceValuenumValue,我已经将总和更改为die1.getFaceValuedie2.getFaceValue,但总和总是出错。如果有人可以查看代码,看看我是否将其他所有内容放在正确的位置。提前感谢。

package assignment3;

import java.util.*;

public class Die {


    private static final int DEFAULT_NUM_FACES =6;
    private static final int value = 1;
    private static int faceValue;
    private static int numFaces;

    //die(int, int) method- constructor that initialized the instance variables to the parameter values

    public Die(int die1, int die2) {



    }


    //Die(int) method- constructor that initialized the instance variables faceValue to the parameter value and numFaces to 
    //DEFAULT_NUM_FACES
    public Die(int value) {
                faceValue = value;
                numFaces = DEFAULT_NUM_FACES;
                        }
            //die() default constructor that initialized both instance variables to DEFAULT_NUM_FACES
    public Die() {

        this.faceValue=DEFAULT_NUM_FACES;
        this.numFaces=DEFAULT_NUM_FACES;

    }

            //die(die) copy constructor
    public Die(Die otherDie)
    {
         new Die();


    }

            // getFaceValue() - returns the faceValue of the instance
    public int getFaceValue() {


        return faceValue;
    }

            // getNumFaces - return the numFaces of the Die
    public int getNumFaces()
    {
        return numFaces;
    }

            //setFaceValule - sets face values of the die to supplied value
        public int setValue(int faceValue) {
                return faceValue;
            }
            //toString returns a string representation of the face value in the form of (faceValue)
        public String toString()
            {
                String result = Integer.toBinaryString(faceValue);
                return result;

            }

            //Roll - rolls the die to generate a new face value.  The instances face value will be set to this new value.  
            //You can use the random method of the Math class to accomplish this task.  The random method generates a random number between 0 and 1.  
            //by multiplying this number by number of faces, casting the result to an integer and adding one to it.  
            //you will be able to generate a random number between 1 and numFaces
        public int roll()
        {

            faceValue = (int )(Math.random()*numFaces+1);

            return faceValue;

        }
        public static void main(String[] args) {

            Die die1;
            Die die2;
            int sum;

            die1= new Die();
            die1.roll();
            die2= new Die();
            die2.roll();
            sum = (die1.getFaceValue())+(die2.getFaceValue()) ;
            System.out.println("Toss 0 generated a " + die1.getFaceValue()+ " and a " + die2.getFaceValue() +" for a total of " +sum);


        }    

}

这应该是掷骰子1,给我骰子1的面值,然后给我骰子2的面值,然后给我两个骰子的总数。

共有2个答案

仇阳州
2023-03-14

每个骰子只应调用一次滚筒

每次调用滚动时,它都会创建一个新的随机数并将其分配给 faceValue

die1= new Die();
die1.roll();
die2= new Die();
die2.roll();

然后使用faceValue

sum = (die1.getFaceValue())+(die2.getFaceValue()) ;
吕嘉赐
2023-03-14

我认为你应该有一个实例变量,而不是一个类变量。

基本上,它只是该类的所有对象(实例)共享的那个变量的一个副本。如果该变量被更改,所有其他类对象都将看到更改的。

只需从本地变量中删除“static”关键字。

public class Die {

    private static final int DEFAULT_NUM_FACES = 6;
    private int faceValue;
    private int numFaces;

    public Die() {

        this.faceValue = DEFAULT_NUM_FACES;
        this.numFaces = DEFAULT_NUM_FACES;

    }

    // getFaceValue() - returns the faceValue of the instance
    public int getFaceValue() {

        return faceValue;
    }

    // getNumFaces - return the numFaces of the Die
    public int getNumFaces() {
        return numFaces;
    }

    // setFaceValule - sets face values of the die to supplied value
    public int setValue(int faceValue) {
        return faceValue;
    }

    // toString returns a string representation of the face value in the form of
    // (faceValue)
    public String toString() {
        String result = Integer.toBinaryString(faceValue);
        return result;

    }

    public int roll() {

        faceValue = (int) (Math.random() * numFaces + 1);

        return faceValue;

    }

    public static void main(String[] args) {

        Die die1;
        Die die2;
        int sum;

        die1 = new Die();
        die1.roll();
        die2 = new Die();
        die2.roll();
        sum = (die1.getFaceValue()) + (die2.getFaceValue());
        System.out.println("Toss 0 generated a " + die1.getFaceValue() + " and a " + die2.getFaceValue()
                + " for a total of " + sum);

    }

}

祝你愉快..

 类似资料:
  • 有人能在这里给我指个正确的方向吗?我的游戏工作完美,但我想添加一些实际的互动/目标。谢谢

  • 我是一个C++初学者,我需要创建一个骰子游戏模拟掷两个骰子。我对头文件的使用感到很困惑。但首先,为什么我需要返回骰子的票面号码?其次,int roll函数做什么?来重置价值观和面孔?如果是,默认值是多少?而最后一个函数骰子(int n),我是否使用这个函数来控制骰子值的最大总和?函数必须有一个具有以下函数的类头文件:

  • 实现多个骰子滚动的效果(摇骰子)。动画效果挺不错,还有声音效果,但有个缺点,就是每次骰子滚动之后停止的位置都是固定的,不能做到随机滚动。希望开发者能继续完善代码。 作者说:中秋将至,做了一个博饼玩具,这是粗略版本,实现基本的功能。小编注:感谢开发者@00001001 发布代码于Code4App.com。 [Code4App.com]

  • 1-4:玩家从1-6随机向前移动 5:玩家从4-11向前移动一个随机量(随机8+4) 6:玩家移动到另一个玩家所在的位置(见下文) 我是新的代码编写(这是我的第四个程序编写),并没有广泛的知识知道什么是错误的。代码不需要熟练地完成,我只想让它正常工作。我们非常感谢您的帮助。 }

  • 我正在用java创建一个掷骰子的应用程序。我有一个掷骰子的“骰子”类,和一个使用“骰子”的多个实例变量的“骰子”类。但是,它只为我的值返回0。骰子类本身可以工作,并且会掷出一个随机数,但是我不知道如何在我的“骰子”类中得到多个掷骰子。感谢任何帮助。 骰子类 模具等级

  • rollDice( )应使用兰德( )随机生成介于1-6之间的数字 返回兰德( )生成的数字 3)实现一个功能,功能原型为Int ;Playgame( Void ;);  根据用户的赢或输的次数给用户一个适当的消息 返回值为EXIT_SUCCESS 这里是我现在拥有的,但它告诉我有错误。有谁能帮我完成这个任务吗? ^ X.C:10:1:错误:程序中杂散“\240” X.C:12:1:错误:程序中杂