在Java中掷骰子分配:调用一个方法



我是编程新手,一旦在代码的另一部分中编写方法,我就很难弄清楚如何调用方法。下面是一段完整的代码(不是所有的!),但我真的很感激,如果有人能纠正这一点,但有点解释我做错了什么?我正在上在线课程,教授有点难联系!

while (x == 'y'){
int roll = 1;
System.out.println("Roll " + roll);
roll++;
System.out.println(RollTheDice(dA, dB));
}
}
public static int RollTheDice(int dA, int dB){
    int A = (int)(Math.random() * 6 + 1);
    int B = (int)(Math.random() * 6 + 1);
    System.out.println(A + "n" + B);
    int sum = (A + B);
    if (sum == 7)
        System.out.println("Craps!" + "n");
    else if (sum == 2)
        System.out.println("Sanke eyes!" + "n");
    else if (sum == 12)
        System.out.println("Box cars!" + "n");
    return A + B; 
}

首先,通过在while循环中声明roll,该值将永远是1或2,因为它将在每次循环迭代中这样做。你需要在循环之前声明:

int roll = 1;
while(x == 'y') {
  roll++;
}

接下来,你的RollTheDice函数不会对你传递给它的变量做任何事情(即dAdB是未使用的,AB是使用的),所以不管你传递什么。

最后,如果没有在while循环上面将dAdB声明为变量,则函数调用将失败。您需要像这样将实际值传递给调用:

RollTheDice(1, 6);

首先,你有一个条件为while (x == 'y')while循环-但是你永远不会改变x的值。这样做的结果是循环永远不会结束(无限循环)。

你的下一个问题是你没有在调用上下文中定义dA和dB是什么,只在静态函数中定义。因为被调用的函数定义了两个int形参,当你调用它时,你应该以RollTheDice(5, 6)的形式调用它,或者你应该把int值赋给dA和dB(顺便说一下,你知道当你调用函数时,调用中的变量不必和函数参数中的变量有相同的名字,对吧?)

int xA = 5;
int xB = 6;
System.out.println(RollTheDice(xA, xB));

最后,所有这些都是假设在顶部有一个缺失的void Main() {行。

最新更新