方法不能应用于给定的类型

时间:2013-05-17 00:28:50

标签: java methods parameters

在我的程序中,我试图在另一个类中调用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,所以我不知道出了什么问题。

3 个答案:

答案 0 :(得分:3)

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

此代码有两个问题:

  1. 在没有throwDice的情况下调用int(您已将其定义为public int throwDice(int diceCount),因此您必须为其设置int
  2. 每次循环调用throwDice两次
  3. 你可以这样解决:

    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;
      }
    }
    

答案 1 :(得分: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两次。

答案 2 :(得分:1)

您已将throwDice定义为int,如下所示:

public int throwDice(int diceCount)

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

d.throwDice();