用随机数教授有人乘法的程序

时间:2015-04-10 22:23:52

标签: java

我正在编写一个教授某人乘法的程序(游戏)。在这个程序中,将生成随机的数字对并将其插入到问题中:"什么是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();
     }


 }

 }

是否有人能够提供帮助,或者至少指出我正确的方向?

感谢。

1 个答案:

答案 0 :(得分:2)

理解变量的范围很重要。在java中,如果你创建一个变量(你说int guess或int answer),那个变量只存在于你放入的任何花括号中 - > {}。因此,如果您需要在另一个方法中使用该变量,则需要在括号中传递该变量。 checkResponse()不知道猜测或答案是什么,因为它们没有在该范围内声明,并且你没有在函数的开头传入它们(你可以使用checkResponse(int guess,int answer)和然后在你打电话时传递它们,例如)。

你有一个内部类Multiply,是否有理由在一个类中创建一个类?有理由这样做,但似乎你没有任何理由这样做。

此外,我没有看到一个main函数,它是Java程序的入口点,并且需要从那里调用所有其他函数(因此Main()可以在你的情况下调用Quiz(),这样就可以了然后调用你的其他两个函数)。计算机一次读取一行程序,当你调用一个函数/方法(如Quiz())时,它会跳转到该部分,然后在该函数调用“return”时返回。

我知道这是很多信息,但您似乎并不了解Java程序的流程。你用什么来学习Java?如果您正在阅读一本书或做一门课程,我建议您先阅读一些早期的课程,以便更好地了解该课程的流程。人们很难回答你的问题,因为你的代码设置方式没有逻辑流(这就是为什么它不起作用)。希望这有点帮助。