gpt4 book ai didi

java - 掷骰子程序,但我需要从不同的类传输输入数据

转载 作者:行者123 更新时间:2023-12-01 18:25:38 24 4
gpt4 key购买 nike

我正在尝试创建一个程序,该程序将滚动 2 个不同的骰子,可以自动为 6 面或由用户决定的自定义面。截至目前,我已经走到这一步了,需要帮助弄清楚如何从 roll() 方法中实现任何事情,我已经尝试运行它并且它不会给我它应该的随机整数

有什么想法吗?

import java.util.*;
import java.lang.*;
public class RollOfTheDice
{
public static void main(String[] args)
{ Die firstDie, secondDie, face;
firstDie = new Die();
secondDie = new Die();
face = new Die();
face.getSides();
firstDie.roll();
secondDie.roll();
System.out.println("First die roll results:.");
}
}

class Die
{
int numberOfSides; //field value


public Die() //constructor
{ numberOfSides = 6;
}

public int getSides()//get method
{ Scanner inputDevice = new Scanner (System.in);
System.out.println("If looking for a custom sided die, please enter number of sides now:");
numberOfSides = inputDevice.nextInt();

return numberOfSides;
}
public void setSides(int Sides) //setmethod
{
numberOfSides = Sides;
}

public int roll()
{
//return a random-generated integer value between 1 and amount of sides
int rollResult = ((int)(Math.random() * 100)% numberOfSides + 1);
return rollResult;
}
}

最佳答案

由于答案已被接受,我想我会给出一些建议;

    public int getSides()//get method
{ Scanner inputDevice = new Scanner (System.in);
System.out.println("If looking for a custom sided die, please enter number of sides now:");
numberOfSides = inputDevice.nextInt();

return numberOfSides;
}

我建议不要在 getSides() 期间执行 IO,这会产生设置骰子面数的副作用。

相反,让 main 方法运行“askForSides”方法(其中包含扫描仪)。然后将此参数传递给 setSides() 方法。

其次,我建议您不要将当前的构造函数将边设置为固定的 6,而是将其替换为:

public Die() //constructor
{
numberOfSides = 6;
}

public Die(int sides) {
this.numberOfSides = sides;
}

更好的是(嗯,无论如何我喜欢它):

public Die() //constructor
{
this(6);
}

public Die(int sides) {
this.numberOfSides = sides;
}

这样,只有 1 个构造函数实际设置边,另一个构造函数只是提供默认值。从长远来看,这使得重构变得更加容易。

如果您有一个以侧面作为参数的构造函数,则可以使用它来代替 setSides 方法:)

关于java - 掷骰子程序,但我需要从不同的类传输输入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26298161/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com