簡體   English   中英

生成數組中的隨機數,將它們一起添加並將答案存儲在數組中

[英]Generate Random numbers in array, add them together and store the answers in array

我是Java新手並試圖解決下面的問題

所以這是我的故事:程序生成20個數字,最多100個,並將每個數字存儲在數組中。 一旦生成,程序必須添加兩個數字並將答案存儲在數組中。示例

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

等等..

完成后,我會檢查用戶輸入的答案並計算正確的答案。

問題是:我無法弄清楚如何將兩個數字加在一起並將其存儲在Array中。 這似乎很容易,但我沒有足夠的經驗:)

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

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++;
            }
        }

    }
}

聽起來很簡單

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

一個簡單的解決方案:

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));
}

解釋是在評論上。 :-)

在添加答案時,您需要逐步通過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;
    }
}

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

你可以這樣做,首先:

answers = new int[10]

然后你想要answers[0] = num[0] + num[1] 最簡單的方法是一次通過num 2並將值添加到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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM