如何保持随机变量?

时间:2015-10-29 02:57:42

标签: java

我提前为我的英语道歉,而不是我的第一语言。

程序简述:在算术序列中生成随机第一项并生成随机差异以获得下一个项。然后要求用户进入第六学期。

Integer.parseInt(i.getMessage().toLowerCase().replace(c, "").replace(",", ""));

对于前五个术语,差异保持不变并且是正确的算术序列。但是当到第六个学期时,差异会发生变化,而且序列不再正确。例如,正确的序列可以是2,4,6,8,10,12。这里的区别是2.但是当程序运行时,它就像2,4,6,8,10,15那样不正确。所以我的问题是如何保持随机差异始终如一? 感谢

1 个答案:

答案 0 :(得分:1)

我认为您的diff变量存在冲突。一个是静态的Project.diff,另一个是本地的,diffcalcSeq中的一个将始终使用静态值,即0。您的for循环下的那个可能使用diff变量赋值下的本地随机keyboard。要使它们成为相同的引用,请从第二个int前面移除diff,然后执行diff = Math.random...

<强>更新
我并不完全相信你需要calcSeq方法。您的代码可以简化并实现您想要完成的任务。例如,您正在打印term6,然后要求输入term6,因此如果您输入最后一个号码,则永远不会得到错误答案。逻辑或代码是(1)获得随机开始和随机差异(2)打印出序列,每次添加diff(3)提示用户下一个答案。这段代码就是这么做的。

import java.util.Scanner;

public class Project{
   static int diff = 0;

   public static int printSequence(int start, int length){
      System.out.println(start);
      for (int i = 1; i <= length; i=i+1){
         start = start + diff;
         System.out.println(start);
      }
      return start;
   }

   public static void main(String[] args){

      Scanner keyboard = new Scanner(System.in);

      diff = (int)(Math.random()*20)+1;
      int term1 = (int)(Math.random()*10)+1;

      int term6 = printSequence(term1, 4) + diff;

      System.out.print("Enter the sixth term of this arithmetic sequence: ");
      int ans = keyboard.nextInt();

      if (ans == term6){
         System.out.println("That is the correct answer.");
      }
      else {
         System.out.println("That is incorrect. Try again.");
      }
   }
}