我正在编写一个教授某人乘法的程序(游戏)。在这个程序中,将生成随机的数字对并将其插入到问题中:"什么是x * y = z?"如果此人正确回答,那么系统将打印出来#34;非常好!"如果此人没有正确回答问题,那么系统将打印出来," No。请再试一次。" (作为回报,该程序将继续提问,直到该人正确回答问题。)当该人正确回答问题时,新方法将产生另一个问题供该人回答。
我的代码正在破坏变量"回答"和if语句"(猜测!=答案)。"
这是我的代码:
public class Exercise_535 {
public class Multiply{
SecureRandom randomNumbers = new SecureRandom();
int answer;
}
public void Quiz() {
Scanner input = new Scanner(System.in);
int guess;
System.out.println("Enter your answer: ");
guess = input.nextInt();
while(guess != -1)
{
checkResponse(guess);
System.out.println("Enter your answer: ");
guess = input.nextInt();
}
}
public void createQuestion(){
SecureRandom randomNumbers = new SecureRandom();
int digit1 = randomNumbers.nextInt();
int digit2 = randomNumbers.nextInt();
answer = digit1 * digit2;
System.out.printf("How much is %d times %d\n", digit1, digit2);
}
public void checkResponse(){
if (guess != answer)
System.out.println("No. Please try again.");
else{
System.out.print("Very Good!");
createQuestion();
}
}
}
是否有人能够提供帮助,或者至少指出我正确的方向?
感谢。
答案 0 :(得分:2)
理解变量的范围很重要。在java中,如果你创建一个变量(你说int guess或int answer),那个变量只存在于你放入的任何花括号中 - > {}。因此,如果您需要在另一个方法中使用该变量,则需要在括号中传递该变量。 checkResponse()不知道猜测或答案是什么,因为它们没有在该范围内声明,并且你没有在函数的开头传入它们(你可以使用checkResponse(int guess,int answer)和然后在你打电话时传递它们,例如)。
你有一个内部类Multiply,是否有理由在一个类中创建一个类?有理由这样做,但似乎你没有任何理由这样做。
此外,我没有看到一个main函数,它是Java程序的入口点,并且需要从那里调用所有其他函数(因此Main()可以在你的情况下调用Quiz(),这样就可以了然后调用你的其他两个函数)。计算机一次读取一行程序,当你调用一个函数/方法(如Quiz())时,它会跳转到该部分,然后在该函数调用“return”时返回。
我知道这是很多信息,但您似乎并不了解Java程序的流程。你用什么来学习Java?如果您正在阅读一本书或做一门课程,我建议您先阅读一些早期的课程,以便更好地了解该课程的流程。人们很难回答你的问题,因为你的代码设置方式没有逻辑流(这就是为什么它不起作用)。希望这有点帮助。