骰子滚动程序,但我需要从不同的类传输输入数据

问题描述 投票:0回答:4

我正在尝试创建一个程序,它将滚动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;
   }
}
java dice
4个回答
1
投票

首先,你实际上并没有打印过滚动结果。

因此,要获得该基本输出,可以将main()方法的最后3行更改为以下内容:

  int firstRoll = firstDie.roll();
  int secondRoll = secondDie.roll();
  System.out.println("First die roll results:" + firstRoll);
  System.out.println("Second die roll results:" + secondRoll);

这至少应该让你展示两个骰子卷。


2
投票

既然答案已被接受,我想我会给出一些指示;

    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个构造函数实际设置了边,另一个只提供了一个默认值。这使得重构从长远来看更容易。

如果你有一个以side作为参数的构造函数,你可以使用它而不是setSides方法:)


1
投票

你不是简单地忘记打印出实际值吗?

int first = firstDie.roll();
System.out.println("First die roll results: " + first);

0
投票

你正在调用roll,但没有对它返回的值做任何事情。

© www.soinside.com 2019 - 2024. All rights reserved.