在我的程序中,我试图在另一个类中调用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
,所以我不知道出了什么问题。
答案 0 :(得分:3)
for(int i = 0; i < 100000; i++){
d.throwDice();
if(d.throwDice() == diceScore){
scoreCount += 1;
}
}
此代码有两个问题:
throwDice
的情况下调用int
(您已将其定义为public int throwDice(int diceCount)
,因此您必须为其设置int
)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;
}
}
答案 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();