我正在编写一个掷骰子的程序。我对java还很陌生,因为我正在上课。我在这个程序的不同包中使用了多个类,我想弄清楚的是,在一个类中,对于我的包对OfDice,我在一个类中创建了对象对OfDice,die1和die2。现在我有了另一个包rollDice,我的目标是使用对OfDice类滚动两个骰子并显示滚动。我正在纠结的是如何准确地做到这一点。当我滚动骰子时,我的结果显示,就好像我只滚动了一个骰子一样。我已经做了调整,每卷显示两个骰子,尽管感觉好像我没有以更熟练的方式做这件事。
package die;
import java.util.Scanner;
/**
*
* @author <a href= "mailto:adavi125@my.chemeketa.edu" >Aaron Davis</a>
*/
public class RollDice
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
PairOfDice dice = new PairOfDice();
// get amount of rolls from user
System.out.print("How many rolls do you want? ");
int numRolls = scan.nextInt();
int diceOne, diceTwo;
int boxCar, snakeEyes;
int j = 0, k = 0;
// rolls the dice the requested amount of times
for (int i = 0; i < numRolls; i++)
{
// first die to roll
diceOne = dice.roll();
// second die to roll
diceTwo = dice.roll();
// display rolled dice
System.out.println(diceOne + " " + diceTwo + "\n");
// store and display pairs of 1 rolls
if (diceOne == 1 && diceTwo == 1)
{
snakeEyes = ++j;
System.out.println("\nThe number of snake eyes you have is: "
+ snakeEyes + "\n");
}
// store and display pairs of 6 rolls
if (diceOne == 6 && diceTwo == 6)
{
boxCar = ++k;
System.out.println("\nThe number of box cars you have is: "
+ boxCar + "\n");
}
}
}
}
******************************************************************************
/*
the integers diceOne and diceTwo are my workarounds, my other package contains
public class PairOfDice extends Die
{
Die die1, die2;
public PairOfDice()
{
die1 = new Die();
die2 = new Die();
}
public PairOfDice(int face)
{
die1 = new Die(face);
die2 = new Die(face);
}
}
*/
******************************************************************************
// i am un-clear how to make "PairOfDice dice = new PairOfDice();" come out as two die
“骰子对”
类不代表您的模型,即“一对骰子”。如果你有一对骰子,当你掷骰子时,你会得到两个不同的数字,因此:
roll
方法必须返回两个值。例如,您可以使用包含这两个值的RollResult
beanroll
方法可以只返回一个从2到12的整数,您可以根据它们的总和推测掷骰子:在您的情况下,这总是可能的,因为当且仅当您的骰子是1,1时,您才会得到2的总和;类似地,如果且仅当您的骰子是6,6时,您才会得到12的总和。例如,如果您根据条件“骰子1=3, dice2=4”进行测试,则不会起作用,因为有许多返回3 4=7的掷骰子组合希望这有所帮助。
根据注释,我们必须继续第一个解决方案。这里是一个实现域不可变对象和roll
域函数的示例,该函数返回对骰子执行roll
操作的结果。在这个示例中,我展示了拥有多种骰子类型的可能性。
import java.util.*;
import java.util.stream.Collectors;
public class RollingDices {
private static final Random RND = new Random();
private static interface Dice {
public int roll();
}
private static class UniformDice implements Dice {
public int roll() {
return RND.nextInt(6) + 1;
}
}
private static class TrickyDice implements Dice {
private final int value;
public TrickyDice(int value) {
this.value = value;
}
public int roll() {
return value;
}
}
private static class ProbabilityTableDice implements Dice {
private final Double[] probabilities;
public ProbabilityTableDice(Double ... probabilities) {
if (Arrays.stream(probabilities).mapToDouble(Double::doubleValue).sum() != 1.0) {
throw new RuntimeException();
}
this.probabilities = probabilities;
}
public int roll() {
final double randomValue = RND.nextDouble();
double curValue = 0.0;
for (int i = 0; i < this.probabilities.length; i++) {
curValue += this.probabilities[i];
if (curValue >= randomValue) {
return i + 1;
}
}
throw new RuntimeException();
}
}
private static class CollectionOfDices {
private final Dice[] dices;
public CollectionOfDices(Dice ... dices) {
this.dices = dices;
}
public List<Integer> roll() {
return Arrays.stream(dices).map(Dice::roll).collect(Collectors.toList());
}
}
private static class DicesFactory {
private static final DicesFactory INSTANCE = new DicesFactory();
public static DicesFactory instance() {
return INSTANCE;
}
private DicesFactory() {}
private final Dice uniformDice = new UniformDice();
public Dice createUniformDice() {
return this.uniformDice;
}
public Dice createTrickyDice(int fixedValue) {
return new TrickyDice(fixedValue);
}
public Dice createProbabilityTableDice(Double ... probabilities) {
return new ProbabilityTableDice(probabilities);
}
}
public static void main(String ... args) {
final Scanner scan = new Scanner(System.in);
final CollectionOfDices dice = new CollectionOfDices(
DicesFactory.instance().createUniformDice(),
DicesFactory.instance().createProbabilityTableDice(
0.15, 0.2, 0.3, 0.1, 0.25
)
);
// get amount of rolls from user
System.out.print("How many rolls do you want? ");
int numRolls = scan.nextInt();
int diceOne, diceTwo;
int boxCar, snakeEyes;
int j = 0, k = 0;
// rolls the dice the requested amount of times
for (int i = 0; i < numRolls; i++)
{
final List<Integer> rolls = dice.roll();
// first die to roll
diceOne = rolls.get(0);
// second die to roll
diceTwo = rolls.get(1);
// display rolled dice
System.out.println(diceOne + " " + diceTwo + "\n");
// store and display pairs of 1 rolls
if (diceOne == 1 && diceTwo == 1)
{
snakeEyes = ++j;
System.out.println("\nThe number of snake eyes you have is: "
+ snakeEyes + "\n");
}
// store and display pairs of 6 rolls
if (diceOne == 6 && diceTwo == 6)
{
boxCar = ++k;
System.out.println("\nThe number of box cars you have is: "
+ boxCar + "\n");
}
}
}
}
问题内容: 同时绘制两个图形时出现了一些麻烦,没有在一个图中显示。但是根据文档,我编写了代码,只有图1所示。我想也许我失去了一些重要的东西。有人可以帮我弄清楚吗?谢谢。(代码中使用的 tlist_first 是数据列表。) 问题答案: 除了在脚本末尾调用之外,还可以分别控制每个图形,分别执行以下操作: 在这种情况下,您必须打电话保持数字有效。这样,您可以动态选择要显示的数字 注意:在Python
我有一个ApplicationInfo类型的列表和另一个String类型的ArrayList。我想在listView中列出这两者。我可以将ArrayAdapter(ApplicationInfo)和Array适配器(String)扩展到ApplicationAdapter吗。班这是我当前的代码,只显示ApplicationInfo。 ApplicationAdapter.class 所有应用程序活
我有两张表格,详细内容如下: 电子表格 id 鼻涕虫 标题 徽标 说明 价格 地位 流量表 id 电子课程id 日期 金额 类型\交通 我想用Elount laravel显示每天流量的ecourse数据。解决办法是什么? 非常感谢。
我在我的项目中使用双倍值,我想始终显示前两位十进制数字,即使它们是零。我使用此函数进行四舍五入,如果我打印的值是3.47233322,它(正确地)打印3.47。但是当我打印时,例如,值2它打印2.0。 我想印2.00! 有没有一种不用字符串就可以做到这一点的方法? 编辑:从你的答案(我感谢你)我知道我不清楚我在搜索什么(对此我很抱歉):我知道如何使用你提出的解决方案在数字后打印两位数。。。我想要的
在Android中,我需要将第二个页面滑动到另一个页面上。 布局1覆盖页面左侧的80%。布局2显示其余的20%。往右走。 然后我需要拖动/滑动布局2在布局1的顶部,并将其滑回。
问题内容: 我想将两个唯一的警报附加到同一视图。当我使用下面的代码时,只有底部的警报起作用。 我正在macOS Catalina上使用Xcode 11的正式版本。 我希望在设置为true 时显示第一个警报,而在我设置为true时希望显示第二个警报。只有第二个警报显示其状态为true时,但第一个警报不执行任何操作。 问题答案: 第二个调用覆盖了第一个。您真正想要的是指示是否显示警报,以及应该从闭包后