2015-10-29 121 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