2015-12-11 9 views
1

Мне нужно прочитать два набора целых чисел в текстовом файле. Один из них - количество кредитов, которое может иметь студент, а затем следующее целое число - это класс письма на экзамене. Я могу читать целые числа в ArrayList, но проблема в том, что я хочу сначала прочитать сумму кредита, а затем выбрать, какой ArrayList должен добавить их к определенной сумме кредита или определенной суммы. Я не хочу добавлять количество кредитов, только то, что они получили. У меня есть 25 строк целых чисел в текстовом файле, во-первых, это сумма кредита, затем пробел, а затем оценка. Мне нужно только записать оценку, а не сумму кредита. Вот что мой код выглядит так далеко:Чтение некоторых целых чисел из текстового файла в список массивов

public static void main(String[] args) throws FileNotFoundException 
{ 
    try 
    { 
     ArrayList <Integer> over15credits = new ArrayList<>(); 
     ArrayList <Integer> under15credits = new ArrayList<>(); 
     FileReader myReader = new FileReader("geomClass.txt"); 
     Scanner fileIn = new Scanner(myReader); 

     while(fileIn.hasNextInt()) 
     { 
      if(fileIn.nextInt() >= 15) 
      { 
       over15credits.add(fileIn.nextInt()); 

      } 
      else 
      { 
       under15credits.add(fileIn.nextInt()); 
      } 
      System.out.println(over15credits); 
      System.out.println(under15credits); 
     } 
    } 
    catch(FileNotFoundException e) 
    { 
     System.out.println("!!FILE NOT FOUND!!"); 
    } 
} 
+1

Это работает? Если нет, то какая у вас проблема/ошибка? –

+0

Он просто добавляет все целые числа в массивы (включая кредиты), когда я распечатываю оба массива ArrayLists, он не будет терпеть крах, а отправит около 20 строк массивов вместо одной строки массива. Но, если я распечатаю только 1 ArrayList, программа распечатает его, а затем выйдет из строя. Кроме того, программа будет работать. –

ответ

1

При выполнении fileIn.nextInt() он читает и потребляет количество, так что при вызове fileIn.nextInt() снова прочтет число после этого.

Скорее всего, вы хотели использовать переменную, чтобы вы могли использовать номер, который вы только что прочитали.

int num = fileIn.nextInt(); 
    if (num >= 15) 
     over15credits.add(num); 
    else 
     under15credits.add(num); 

Вы хотите использовать тот же номер, который вы только что прочитали, а не другой номер.

FYI вы также можете написать так.

int num = fileIn.nextInt(); 
    (num >= 15 ? over15credits : under15credits).add(num); 
Смежные вопросы