2011-08-18 72 views
0

我是新來的Java,並試圖解決以下產生陣列隨機數,加在一起和答案存儲在陣列

的問題,所以這是我的故事: 計劃產生20個號碼多達100店數組中的每個數字。一旦生成的程序有兩個數字相加,並存儲答案陣列。例

randomNumber[0]+randomNumber[1]=answer[0] 
randomNumber[2]+randomNumber[3]=answer[1] 
randomNumber[4]+randomNumber[5]=answer[2] 

等。

一旦完成我檢查的答案用戶輸入和計算正確的答案。

問題是:我想不出如何將兩個數字加在一起並將其存儲在數組中。這似乎很容易,但我沒有足夠的經驗:)

目前我卡在這裏,我真的很感激,如果有人能解釋或幫助我如何解決這個問題。

public class gNumber { 
    private final int[] num = new int[20]; // array of randomly generated numbers 
    private int[] answers; // array of correct answers and UserAnswers 
    private final int[] userAnswers = new int[10]; 
    private int numOfCorrect = 0; 

    // Accessor to get the randomly generated number 
    int getNumbers(final int n) { 
     return num[n]; 
    } 

    int numOfCorrectAnswers() { 
     return numOfCorrect; 
    } 

    // Mutator to store store user input 
    void setUsrAnswers(final int _index, final int answer) { 
     userAnswers[_index] = answer; 
    } 

    // Method to generate random 20 numbers 
    public void RandomN() { 

     for (int i = 0; i < num.length; i++) { 
      final int randomNum = (int) (Math.random() * 100); 
      num[i] = randomNum; 
      final int a = num[i]; 
      // int b =num[i]; 
      answers[i] = a + a; 
      System.out.println(i + ")" + num[i] + answers[i]); 
     } 

    } 

    // method to add two numbers and store in in answers array 
    public void add(int arg1, int arg2) { 
     int b = 0; 
     while (b < 10) { 
      arg1 = num[b]; 
      arg2 = num[b + 1]; 
      answers[b] = arg1 + arg2; 

      System.out.println(answers[b]); 
      b = b + 1; 
     } 
    } 

    // method to check user answers 
    public void usrInput(final int usrAnwer) { 
     for (final int num : answers) { 
      if (num == usrAnwer) { 
       numOfCorrect++; 
      } 
     } 

    } 
} 
+0

這是功課嗎?如果是這樣,請標記爲這樣。 – rossum

回答

1

一個解決辦法很簡單:

int N = 20; //20 Random numbers 
int[] randomNumber = new int[N]; 
int[] answer = new int[N/2]; 

//Generate random numbers of size N 
for (int i = 0; i < N; i++) { 
    randomNumber = generateRandom(0, 100); 
} 

//populate answers 
for (int i = 0; i < answer.length; i++) { 
    answer[i] = randomNumber[i*2] + randomNumber[i*2 + 1]; 
} 

//Generate a random number from [min, max] 
private int generateRandom(int min, int max) { 
    return min + (int)(Math.random() * ((max - min) + 1)); 
} 

的解釋是對的意見。 :-)

+0

嗯,我喜歡這個解決方案...下面的答案也很好,但這對於像我這樣的初學者來說是有意義的! 感謝精英紳士! –

1

聽起來很簡單

int b = 0; 
while (b < 20) { 
    answers[b/2] = num[b] + num[b+1]; 
    b = b + 2; 
} 
+0

謝謝Kal,你看起來太簡單了:) –

0

您需要通過2加入了答案當通過num陣列步驟:

public void add(int arg1, int arg2) { 
    int b = 0; 
    while (b < 10) { 
     arg1 = num[2*b]; 
     arg2 = num[2*b + 1]; 
     answers[b] = arg1 + arg2; 

     System.out.println(answers[b]); 
     b = b + 1; 
    } 
} 
+0

也謝謝泰德,我想跳過2 ...但我沒經驗,不知道從哪裏開始或結束。 –

0

所以,answers將有10個項目,就像userAnswers

你可以做,因此,第一:

answers = new int[10] 

那麼你一定要answers[0] = num[0] + num[1]。最簡單的方法是一次檢查兩個num,並將值加到answers。所以:

int ai = 0 
for(int i=0; i<20; i+=2) 
    answers[ai++] = num[i] + num[i+1] 

當然,你並不需要保存到ai(答案指數)的參考。你可以這樣做,而不是:

for(int i=0; i<20; i+=2) 
    answers[i/2] = num[i] + num[i+1] 
+0

謝謝對於詳細的解釋,我現在得到它:) –