2015-10-29 120 views
2

我为我的英语,而不是我的第一语言提前道歉。如何随时保持一个随机变量?

程序简介:在算术序列中生成随机第一项并生成随机差分以得到下一项。然后要求用户输入第六个任期。

import java.util.Scanner; 

public class Project{ 
    static int diff; 

    public static int calcSeq(int num){ 
     return num+diff; 
    } 

    public static void main(String[] args){ 

     Scanner keyboard = new Scanner(System.in); 

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

     System.out.println(term1); 

     for (int i = 1; i<=4; i=i+1){ 
     int nextTerm = calcSeq(term1); 
     sum = sum + nextTerm; 

     System.out.println(sum); 
     } 

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

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

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

回答

1

我认为你是冲突你的diff变量。一个是静态的,Project.diff,另一个是本地的,diffcalcSeq中的那个将始终使用静态的那个,它是0. for循环下的那个可能使用keyboard变量赋值下的本地随机diff。为了让他们相同的参考,从第二diff前去除int,只是做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."); 
     } 
    } 
} 
+0

对不起,我很新的初学java和编程能解释一下更简单吗? – kidGil

+0

我想你想告诉我的是,第二个int diff与第一个int冲突,所以我应该删除int以使它们相同?但我试过这样做,仍然有相同的问题,第六学期使用不同的随机差异 – kidGil

+0

通常你会是对的,但是这是一个类项目,其中一个要求是包含至少一个自定义方法。所以不幸的是我不能使用你的代码。任何其他想法? – kidGil