简体   繁体   中英

Java While loop skipping lines, doing them every 2 cycles instead

I'm writing a program for homework that is supposed to read in an unspecified number of 0-100 scores (maximum of 100 scores) and stop after -1 or any negative number is entered. I've put this into a Do While loop that is set to terminate when -1 is pulled in through Scanner. The loop has a counter that keeps track of how many times the loop has been gone through, an adder that adds all the input lines together to later compute an average, and a means to send the input value to an array after it has checked to see if the number is -1. Instead of doing this, the loop only increments the counter every 2 loops and -1 will only terminate the loop on an even cycle number, other wise it will wait until the next cycle to terminate. This completely baffles me, I have no idea why it's doing this. Could someone point out the error? Thanks in advance! This is all I have so far.

import java.util.Scanner;

public class main {

//Assignment 2, Problem 2
//Reads in an unspecified number of scores, stopping at -1. Calculates the average and 
//prints out number of scores below the average.
public static void main(String[] args) {

    //Declaration
    int Counter = 0;    //Counts how many scores are
    int Total = 0;      //Adds all the input together
    int[] Scores = new int[100]; //Scores go here after being checked
    int CurrentInput = 0; //Scanner goes here, checked for negative, then added to Scores
    Scanner In = new Scanner(System.in);

    do {
        System.out.println("Please input test scores: ");
        System.out.println("Counter = " + Counter);
        CurrentInput = In.nextInt();
        Scores[Counter] = CurrentInput;
        Total += In.nextInt();
        Counter++;          
    } while ( CurrentInput > 0);

    for(int i = 0; i < Counter; i++) {
        System.out.println(Scores[i]);
    }


    System.out.println("Total = " + Total);

    In.close();


}

}
    CurrentInput = In.nextInt();
    Scores[Counter] = CurrentInput;
    Total += In.nextInt();

You are calling twice In.nextInt() , ie, you are reading two lines in each loop iteration.

CurrentInput = In.nextInt();
Scores[Counter] = CurrentInput;
Total += CurrentInput;

Use this instead.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM