De som van array-elementen toevoegen en deze in een andere array opslaan? (Java)

Het fragment van de code dat ik ga posten is afkomstig van een programma dat verondersteld wordt de gebruiker een reeks meerkeuzevragen te stellen. Het programma houdt dan score bij voor elke vraag en heeft een totaal dat in een andere array wordt opgeslagen. Ik zal dit door meerdere spelers laten spelen, daarom heb ik 2 arrays nodig.

Dit is wat ik heb:

//Asks questions and stores score in array
public static int [] questions ()
{
    userinput=""; //input will be stored in here
    int total[]= new int[100];
    int score[]=new int[5];
    for(int i=0; i < ps.length; i++)
    {
        userinput=JOptionPane.showInputDialog(que[i]); //Outputs a question stored in   another array in another method.
        if (response.equals(ans[i])) //this compares the user input to the correct answer of the question, which is in another method.
        {
            JOptionPane.showMessageDialog(null,"You selected " + " " + ans[i] + " You were correct, 1 point!");
            score[i]=1;
            total[i]=total[i]+score[i];
        }
        else if(!response.equals(ans[i]))//If the answer isn't correct
        {
            score[i]=0;//I want to assign 0 for the question
            JOptionPane.showMessageDialog(null,"You're wrong!, The correct answer was "+ans[i]);
        }
    }//close loop
    return total;//return's this to another method which will do all of the other work
}

Ik schijn hier het probleem te hebben:

JOptionPane.showMessageDialog(null,"You selected " + " " + ans[i] + " You were correct, 1 point!");
score[i]=1;
total[i]=total[i]+score[i];    

Ik wil 1 toevoegen aan elk element in score [] als het antwoord juist is. Dan wil ik het totaal van de score [] verzamelen en opslaan in elk element van het totaal []. Ik retourneer totaal in een andere methode die het in een array opslaat.

0
Let op het formatteren van uw code. U kunt dit online doen op prettyprinter.de/module.php?name=PrettyPrinter als je geen ID hebt voor je :)
toegevoegd de auteur GETah, de bron
Uw verdachte code is dezelfde als totalscore [i] ++ . Daarnaast heeft totalscore 100 elems, terwijl score 15 elems heeft. Waarom?
toegevoegd de auteur Victor Sorokin, de bron
Dit laat mijn vraag nog steeds onbeantwoord, denk ik ...
toegevoegd de auteur Victor Sorokin, de bron
Sorry, het was een kopieer- en plak-fout. De enige 2 arrays waarmee ik werk zijn score [] en totaal [].
toegevoegd de auteur user1058452, de bron
Als u andere array dan "total []" of "score []" ziet negeer ze!
toegevoegd de auteur user1058452, de bron
Totaal [] heeft de waarde 100 omdat ik meerdere spelers zal hebben om dit te spelen. Ik heb het gewoon een waarde gegeven die meer dan genoeg zal zijn.
toegevoegd de auteur user1058452, de bron
Score [] is 5, omdat ik 5 vragen en 5 mogelijke antwoorden heb
toegevoegd de auteur user1058452, de bron

1 antwoord

Oké, dus het lijkt erop dat u het ordinale van de huidige gebruiker in uw methode moet doorgeven, zodat het de juiste positie binnen de array totaal kan berekenen. Omdat het lijkt alsof u de totale scores in meerdere vraag/antwoordsessies wilt samenvoegen, moet u totaal van buiten doorgeven:

public static void questions(int userOrdinal, int[] total) {
    final int questionsPerUser = 5;

    userinput = ""; //input will be stored in here
    for (int i = 0; i < questionsPerUser; i++) {
        userinput = JOptionPane.showInputDialog(que[i]); //Outputs a question stored in   another array in another method.
        if (response.equals(ans[i])) //this compares the user input to the correct answer of the question, which is in another method.
        {
            JOptionPane.showMessageDialog(null, "You selected " + " " + ans[i] + " You were correct, 1 point!");
            total[userOrdinal * questionsPerUser + i] = 1;
        } else if (!response.equals(ans[i]))//If the answer isn't correct
        {
            total[userOrdinal * questionsPerUser + i] = 0;
            JOptionPane.showMessageDialog(null, "You're wrong!, The correct answer was " + ans[i]);
        }
    }//close loop
}

Sorry, ik snap nog steeds niet waarom je array score nodig hebt, omdat je initiële code hetzelfde is als totaal [i] ++ en je de inhoud van score , schrijf er alleen naar.

2
toegevoegd