2013-03-24 11 views
0

У меня вопрос с заданием Я не смог получить окончательный ответ.Сгенерированные целые числа в двоичном файле

вопрос был: Напишите программу, которая будет писать 100 случайно сгенерированных целых чисел в двоичный файл с помощью метода WriteInt (INT) в DataOutputStream. Закройте файл. Откройте файл с помощью DataInputStream и BufferedInputStream. Прочитайте целое число значений, как если бы файл содержал неуказанный номер (игнорируйте тот факт, что вы написали файл) и сообщите сумму и средние цифры .

Я считаю, что я сделал первую часть вопроса, который есть (напишите в файл), но я не знаю, как сообщить сумму.

до сих пор, что у меня есть

import java.io.*; 

public class CreateBinaryIO { 
public static void main(String [] args)throws IOException { 
    DataOutputStream output = new DataOutputStream(new FileOutputStream("myData.dat")); 
    int numOfRec = 0 + (int)(Math.random()* (100 - 0 +1)); 
    int[] counts = new int[100]; 
    for(int i=0;i<=100;i++){ 
     output.writeInt(numOfRec);  
     counts[i] += numOfRec; 
    }// Loop i closed 
    output.close(); 
} 

} 

Этот класс ReadBinaryIO:

import java.io.*; 


public class ReadBinaryIO { 
    public static void main(String [] args)throws IOException { 
     DataInputStream input = new DataInputStream (new BufferedInputStream(new FileInputStream("myData.dat"))); 

     int value = input.readInt(); 

     System.out.println(value + " "); 
     input.close(); 

    } 
} 
+0

Ну, петля через файл, пока не' int's осталось и в то время как цикл, добавить их все вместе –

ответ

0
int numOfRec = 0 + (int)(Math.random()* (100 - 0 +1)); 

Это не генерации случайного числа. Посмотрите на java.util.Random.nextInt().

int[] counts = new int[100]; 
for(int i=0;i<=100;i++){ 
    output.writeInt(numOfRec);  
    counts[i] += numOfRec; 
}// Loop i closed 

Это Виль на самом деле сломать, потому что вы используете i<=100 вместо просто i<100, но я не знаю, почему вы заселять этот массив, чтобы начать? Кроме того, этот код просто записывает то же число 101 раз. Генерация этого случайного числа должна быть в пределах цикла, поэтому каждый из них генерируется каждый раз.

Насколько ее обратно, вы можете перебрать файл с помощью цикла, как это:

long total = 0; 
while (dataInput.available() > 0) { 
    total += dataInput.readInt(); 
} 
+0

Это было очень полезно. , Спасибо, ребята ... Я последовал за вашим уведомлением, и я считаю, что правильно выполнил задание. – Muni

0

Попробуйте ниже код, где вы пытаетесь прочитать одно целое:

DataInputStream input = new DataInputStream (new BufferedInputStream(new FileInputStream("myData.dat"))); 

    int sum = 0; 
    for(int i =0; i<=100; i++){ 
     int value = input.readInt(); 
     sum += value; 
    } 

    System.out.println(value + " "); 
    input.close(); 

Или, если вы хотите динамически установить длину цикла for, затем

создать объект File на mydata.dat файл, а затем разделить размер файла с 32bits

File file = new File("myData.dat"); 
    int length = file.length()/32; 

    for(int i =0; i <= length;i++) 
0

Try разделить задачу на части, чтобы organice код, не забудьте промыть OutputStream, прежде чем закрыть его.

package javarandomio; 


import java.io.DataInputStream; 
import java.io.DataOutputStream; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.util.Random; 

public class JavaRandomIO { 

public static void main(String[] args) { 

    writeFile(); 
    readFile(); 
} 

private static void writeFile() { 
    DataOutputStream output=null; 
    try { 
     output = new DataOutputStream(new FileOutputStream("myData.txt")); 
     Random rn = new Random(); 
     for (int i = 0; i <= 100; i++) { 
      output.writeInt(rn.nextInt(100)); 
     } 
     output.flush(); 
     output.close(); 
    } catch (Exception e) { 
     System.out.println(e.getMessage()); 
    } finally{ 
     try{ 
      output.close(); 
     }catch(Exception e){ 
      System.out.println(e.getMessage()); 
     } 
    } 
} 

private static void readFile() { 
    DataInputStream input=null; 
    try { 
     input = new DataInputStream(new FileInputStream("myData.txt")); 
     int cont = 0; 
     int number = input.readInt(); 
     while (true) { 
      System.out.println("cont =" + cont + " number =" + number); 
      if (input.available() == 4) { 
       break; 
      } 
      number = input.readInt(); 
      cont++; 
     } 
     input.close(); 
    } catch (Exception e) { 
     System.out.println(e.getMessage()); 
    } finally{ 
     try{ 
      input.close(); 
     }catch(Exception e){ 
      System.out.println(e.getMessage()); 
     } 
    } 
} 
} 
0

До сих пор я передаю задание, и я думаю, что получил.

/** Munti ... Sha 
course code (1047W13), assignment 5 , question 1 , 25/03/2013, 

This file read the integer values as if the file contained an unspecified number (ignore 
the fact that you wrote the file) and report the sum and average of the numbers. 
*/ 

import java.io.*; 
public class ReadBinaryIO { 
    public static void main(String [] args)throws ClassNotFoundException, IOException { 
     //call the file to read 
     DataInputStream input = new DataInputStream (new BufferedInputStream(new FileInputStream("myData.dat"))); 
     // total to count the numbers, count to count loops process 
     long total = 0; 
     int count = 0; 
     System.out.println("generator 100 numbers are "); 
     while (input.available() > 0) { 
      total += input.readInt(); 
      count ++; 
      System.out.println(input.readInt()); 

     } 
     //print the sum and the average 
     System.out.println("The sum is " + total); 
     System.out.println("The average is " + total/count); 

     input.close(); 

    } 

} 

CreateBinaryIO Класс:

импорт java.io. *; import java.util.Random;

общественного класса CreateBinaryIO {// Создать двоичный файл государственной статической силы основных (String [] арг) броски ClassNotFoundException, IOException { DataOutputStream выход = новый DataOutputStream (новый FileOutputStream ("MyData.Дат ")); Random randomno = новый Random();

for(int i=0;i<100;i++){  output.writeInt(randomno.nextInt(100));  }// Loop i closed output.close(); } } 
Смежные вопросы