【问题标题】:Java Shut the BoxJava 关闭盒子
【发布时间】:2020-05-01 14:21:26
【问题描述】:

我正在编写一个类似于游戏的程序,叫做关上盒子。游戏要求玩家掷 2 个骰子,然后玩家选择分别覆盖两个数字(在布尔数组中)或两者的总和。

我很难返回应该掷两个骰子的 int 方法 roll() 的两个值。

这是我的主类代码:

public class clacker {

    private int play;
    private int die1;
    private int die2;
    private boolean[] table;
    private final int high = 6;
    private final int low = 1;
    private int range;

    public clacker()
    {
        range = high-low+1;
        table = new boolean[13];
        play = 0;
    }

    public void roll()
    {
        die1 = (int)(Math.random()*range+low);
        die2 = (int)(Math.random()*range+low);

    }

    public void value(char ch)
    {
        if(ch == 'i' || ch == 'I')
        {
            table[die1] = true;
            table[die2] = true;
            displayBoard();
        }
        else if(ch == 'T' || ch == 't')
        {
            table[die1+die2] = true;
            displayBoard();

        }
        else
        {
            roll();
        }
    }

    public void displayBoard()
    {
        for(int i = 1; i<table.length; i++)
        {
            if(table[i] == false)
            {
                System.out.print("   " + i + "   ");
            }
            else
            {
                System.out.print("   /   ");
            }
        }
    }
}

对于测试类:

public class clackerTest {

    public static void main(String[] args) {
        clacker oo = new clacker();

        EasyReader kboard = new EasyReader();
        System.out.println("Press anything to roll the dice. ");
        char roll= kboard.readChar();

        int dice1 = oo.roll();
        int dice2 = oo.roll();
        System.out.println("You rolled " + dice1 + " and a " + dice2 + "!");

        System.out.println("Cover Individual or Total: (enter i or t)");
        char roll2 = kboard.readChar();
    }
}

【问题讨论】:

  • 您需要返回一个包含两个值的数组,或者一个包含这些值的对象。或者在您的 main 类适用时在其他地方管理它并只返回一个值 - 现在您正尝试同时执行这两项操作。

标签: java arrays


【解决方案1】:

你为什么不直接roll() 两次?修改 roll() 以返回 one int.

public int roll() {
  return (int)(Math.random()*range+low);
}

现在,在 clackerTest 中(Java 约定要求您将此命名为 ClackerTest):

int dice1 = oo.roll();
int dice2 = oo.roll();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    • 1970-01-01
    相关资源
    最近更新 更多