将值添加到数组而不覆盖

时间:2015-03-06 11:31:30

标签: java arrays variable-assignment

使用名为int score[]的简单Java数组,我希望存储在数组中 int 1或0。

int是由简单的数学问题和if语句提供的,如果给出了正确的答案,则允许将1添加到数组中,如果答案不正确,则允许为0。

只有5个数学问题需要尝试,每个正确答案有1个点/ 0点(或int 1/0),所以它是size[4]的固定数组。

我正在使用for循环,但是如果我使用<= score.Length()方法,则durn事件会使数组填充1。

每次用户回答问题时,我只希望在不覆盖前一个元素的情况下添加int 1或0来得分[4]。

if( playerTotal < computerTotal || playerTotal > computerTotal) {
    System.out.printf("\n" + "Sorry, thats incorrect...try again__");
    for(int i = 0; i <= score.length ;++i ) {
        score[i] = 0 ;
        System.out.print( " | ");
        System.out.print( score[i]);
    }
} else {
    System.out.print( playerTotal + " is correct, very well done!");
    // in.close();
    for(int i = 0; i <= score.length ;  i++ ) {
        score[i] = 1 ;
        System.out.print( " | ");
        System.out.print( score[i]);
    }
}

我希望在达到5个正确点后,使用存储的int将数学游戏(yayy!)移动到下一个级别。

3 个答案:

答案 0 :(得分:0)

如果你想设置一个元素,你不需要for循环。

删除for for循环并写入 if( playerTotal < computerTotal || playerTotal > computerTotal ) { score[4]=0;} else{score[4]=1;}

答案 1 :(得分:0)

score[4] = ( (playerTotal < computerTotal) || (playerTotal > computerTotal)) ? 0 : 1;

答案 2 :(得分:0)

正如评论中提到的那样,代码中的错误是循环覆盖其他值。 我不知道你是如何与用户互动的,但我提供了一个如何解决这个任务的例子。在正确的情况下,do-while会要求答案。

Scanner scanner = new Scanner(System.in);

String[] questions = {"What is 2-1?", "What is 2+1?", "What is 10-5?"};
int[] correctAnswer = {1,3,5};

//keep track of correct/incorrect answer with a boolean value
boolean[] score = new boolean[correctAnswer.length]; 


for(int i = 0; i < questions.length; i++) {
    System.out.println(questions[i]);
    do {
        int input = scanner.nextInt();
        score[i] = input == correctAnswer[i];
        if(score[i])
            System.out.println("Correct!");
        else
            System.out.println("Wrong, please try again..");
    } while(!score[i]);
}

//do something with the score data
int sum = 0;
for(boolean b : score)
    if(b) sum++;
System.out.println("You got " + sum + " points!");