2016-01-24 2 views
0

Все скомпилируется, но когда я печатаю размер и элементы массива, это указывает на то, что не все значения добавлены, потому что размер и значения будут только частичными. Кроме того, иногда дозорное значение не работает (я должен вводить его дважды порой). Что не так?ArrayLists не добавляет значения правильно?

import java.util.ArrayList; 
    import java.util.Scanner; 

    public class BowlingScoresArrayList{ 

    public static final int SENTINEL = -999; 
    public static final int MIN=-1; 
    public static void main (String [] Args) { 

    ArrayList<Integer> bowlingScores = new ArrayList<Integer>(); 

    Scanner reader = new Scanner(System.in); 
    System.out.println("Enter your scores: "); 

    do { 
    bowlingScores.add(reader.nextInt()); 
    } while (reader.nextInt()!= SENTINEL); 

    System.out.println(bowlingScores); 
    System.out.println(bowlingScores.size()); 

Так что я пытался вводить эти значения:

Enter your scores: 
    1 
    2 
    2 
    3 
    -999 
    -999 

И он дает это:

[1, 2, -999] 
    3 
+3

только называют 'reader.nextInt()' *** РАЗ *** в пределах вашего цикла. –

+1

, и это включает условие цикла, поскольку, как только вы читаете nextInt(), полученное значение используется. Поэтому прочтите его в ** переменную **, проверьте эту переменную и используйте ее. –

ответ

2

Ты проблема, вы используете два nextInt заявления ...

do { 
    bowlingScores.add(reader.nextInt()); 
} while (reader.nextInt()!= SENTINEL); 

Так вы спрашиваете g пользователю ввести ввод дважды.

Вместо этого что-то вроде ...

int in = SENTINEL; 
do { 
    in = reader.nextInt(); 
    if (in != SENTINEL) { 
     bowlingScores.add(in); 
    } 
} while (in != SENTINEL); 

будет производить желаемые результаты

+0

найденный дубликат. –

Смежные вопросы