2016-02-11 6 views
0

Мне нужно написать программу, которая подсчитывает количество целых чисел в текстовом файле Java. Если существует четное число целых чисел, программа должна считывать целые числа в парах и распечатывать максимум из двух чисел. Например, если текстовый файл имел целые числа 6 2 5 9, Java должен распечатывать 6 9. Если существует нечетное количество целых чисел, оно должно печатать сообщение об ошибке.Как подсчитать количество целых чисел в текстовом файле (Java)?

У меня есть программа для распечатки max, но я не могу понять, как подсчитать количество целых чисел. Программа компилируется, но запускает пустой экран. Что я сделал не так?

Мой код:

import java.io.*; 
import java.util.Scanner; 
public class Lab1_Reading_Files { 
    public static void main (String[] args) throws FileNotFoundException { 
     Scanner reader = new Scanner(new File("integers.txt")); 
     int count = 0; 
     int max = 0; 
     int num1; 
     int num2; 
     while (reader.hasNextInt()) { 
     count++; 
     } 
     if (count % 2 == 0) { 
     while (reader.hasNextInt()) { 
      num1=reader.nextInt(); 
      num2=reader.nextInt(); 
      if (num1>num2){ 
       max=num1; 
      } 
      else if (num2>num1) { 
       max=num2; 
      } 
      System.out.print(max+" ") 
     } 
     } 
     else { 
     System.out.println("The File has an odd number of Integers"); 
     }   
    } 
} 
+1

Перед повторным просмотром файла вам необходимо сбросить «Сканер». Вы можете рассмотреть все это в одном цикле и отказаться от результата, когда есть нечетное число результатов. – MadProgrammer

+0

Определите, что вы подразумеваете под «целым числом». Является ли «63» одним или двумя целыми числами? Является ли «1F» одним целым числом или целым числом и буквой? –

ответ

3

Здесь:

while (reader.hasNextInt()) {   
    count++; 
    } 

Если reader.hasNextInt() верно, то будет справедливо навсегда и ваша программа никогда не оставит эту петлю ...

рабочая версия:

import java.io.*; 
import java.util.Scanner; 

public class Lab1_Reading_Files  { 

    public static void main (String[] args)throws FileNotFoundException { 

     Scanner reader = new Scanner(new File("integers.txt"));  
     int count=0; 
     int max=0; 
     int num1; 
     int num2; 

     while (reader.hasNextInt()) {   
     num1=reader.nextInt(); 
     count++; 
     if (!reader.hasNextInt()) { 
      System.out.println("The File has an odd number of Integers"); 
      break; 
     } 
     num2=reader.nextInt(); 
     count++;   

     if (num1>num2) max = num1; 
     else   max = num2; 

     System.out.println(max + " "); 
     } 
     System.out.println("The file had " + count + " number(s)"); 
    } 
} 
+0

Большое спасибо! Но что такое перерыв? и что он делает? – Run9435

+0

Перерыв означает выпрыгнуть из замкнутого контура. –

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