0

在我的程序中,我试图throwDice在不同的类中调用该方法。

public class SimpleDice {  
  private int diceCount;

  public SimpleDice(int the_diceCount){
    diceCount = the_diceCount;
  }

  public int tossDie(){
    return (1 + (int)(Math.random()*6));
  }

  public int throwDice(int diceCount){
           int score = 0;
           for(int j = 0; j <= diceCount; j++){
            score = (score + tossDie());
           }
           return score; 
         }
}

import java.util.*; 

public class DiceTester {
public static void main(String[] args){

  int diceCount;
  int diceScore;

    SimpleDice d = new SimpleDice(diceCount);

    Scanner scan = new Scanner(System.in);
    System.out.println("Enter number of dice.");
    diceCount = scan.nextInt();
    System.out.println("Enter target value.");
    diceScore = scan.nextInt();

    int scoreCount = 0;

    for(int i = 0; i < 100000; i++){
     d.throwDice();
      if(d.throwDice() == diceScore){
        scoreCount += 1;
      }
    }
    System.out.println("Your result is: " + (scoreCount/100000));
}
}

当我编译它时,会弹出一个错误d.throwdice()并说它无法应用。它说它需要一个 int 并且没有参数。diceCount但是我在方法中调用了一个int throwDice,所以不知道怎么回事。

4

3 回答 3

3
for(int i = 0; i < 100000; i++){
 d.throwDice();
  if(d.throwDice() == diceScore){
    scoreCount += 1;
  }
}

这段代码有两个问题:

  1. throwDice它不带 an调用int(您已将其定义为public int throwDice(int diceCount),因此您必须给它一个int
  2. 它每个循环调用throwDice两次

你可以像这样修复它:

for(int i = 0; i < 100000; i++){
 int diceResult = d.throwDice(diceCount); // call it with your "diceCount"
                                          // variable
  if(diceResult == diceScore){ // don't call "throwDice()" again here
    scoreCount += 1;
  }
}
于 2013-05-17T00:31:14.953 回答
1

throwDice()确实需要您传递一个 int 作为参数:

public int throwDice(int diceCount){..}

而且您没有提供任何论据:

d.throwDice();

您需要传递一个 int 作为参数才能使其工作:

int n = 5;
d.throwDice(n);

diceCount方法声明中的变量throwDice(int diceCount)仅表明它需要一个int作为参数并且该参数将存储在变量diceCount中,它实际上并不提供实际的原语int

最后,您还调用 throwDice了两次。

于 2013-05-17T00:30:17.807 回答
1

您已定义throwDice为采取int如下方式:

public int throwDice(int diceCount)

但是你在没有任何参数的情况下调用它是行不通的:

d.throwDice();
于 2013-05-17T00:30:56.147 回答