2016-02-25 10 views
0

мне нужно найти максимум и минимум Интс из этого файла я написал цикл в файл теперь я нужен способ, чтобы прочитать макс и мин с помощью файла потоковНайти макс и мин из цикла файла

public static void main(String[] args) throws FileNotFoundException, IOException { 
    // TODO code application logic here 
    PrintWriter file = new PrintWriter("numbers.dat"); 
    FileInputStream in = new FileInputStream("numbers.dat"); 

    DataInputStream data = new DataInputStream(in); 

    try (DataOutputStream output = new DataOutputStream(new FileOutputStream("numbers.dat"))) { 
     for (int i = 0; i < 1000; i++) { 
      output.write(i); 

     } 
     output.close(); 

    } 
+2

Что ваш вопрос, и то, что этот код делать, вы можете объяснить немного? –

ответ

0

В ответ на «мне нужно найти max и min ints из этого файла» просто обработайте цикл for, чтобы найти самые большие и наименьшие числа.

int[] integers; // Your integers in an array, however you loaded them. 
int max;   // To hold the maximum integer found. 
int min;   // To hold the minimum integer found. 

    for (int element : integers) { 
     // If it's bigger, update. 
     if (element > max) { 
      max = element; 
     } 

     // If it's smaller, update. 
     if (element < min) { 
      min = element; 
     } 
    } 
} 

В ответ на «я написал цикл в файл теперь я нужен способ, чтобы прочитать макс и мин с помощью файла потоков», вы должны загрузить файл в память.

Теперь я не вижу, как вы это сделаете с тем, как вы напечатали файл (или, по крайней мере, как вы намереваетесь записать файл в указанном коде) без какого-либо разделителя (такого как , или \n).

0

Я предлагаю разбор файла в список целых чисел.

Если разбор файла в список Integer-х вы можете получить мин и макс следующим:

List<Integer> l = new ArrayList<Integer>(); 
// Populate the list from the entries in the file 
... 
// Get the min and max 
Integer min = Collections.min(l); 
Integer max = Collections.max(l); 
System.out.println("min=" + min + "; max=" + max); 

Чтобы определить, как создать список целых чисел из файла было бы полезно знать формат файла.

+0

его файл данных –

+0

Извините мое невежество, но я не уверен, что содержимое всех файлов «dat» равно. Если вы откроете его в текстовом редакторе, как выглядит контент? –

0

глядя на ваш код, вам нужно вывести вывод. WriteInt (я) не писать (я)

private static void doRead() throws IOException 
{ 
    final PrintWriter file = new PrintWriter("numbers.dat"); 

    try (DataOutputStream output = new DataOutputStream(new FileOutputStream("numbers.dat"))) { 
     for (int i = 0; i < SIZE; i++) { 
      output.writeInt(i); // do writeInt(i) not write(i) 
     } 
    } 

    try (FileInputStream in = new FileInputStream("numbers.dat"); 
      DataInputStream data = new DataInputStream(in)) 
    { 

     final ArrayList<Integer> list = new ArrayList<>(SIZE); 

     for(int i=0; i < SIZE; i++) 
     { 
      list.add(data.readInt()); 
     } 

     final int max = list.stream() 
      .max((a, b) -> Integer.compare(a, b)) 
      .get(); 

     final int min = list.stream() 
      .min((a, b) -> Integer.compare(a, b)) 
      .get(); 

     System.out.println("max=" + max); 
     System.out.println("min=" + min); 
    } 
} 
Смежные вопросы