A good answer might be:

The sum is: 255

Buggy Example Program

Here is a program that reads two 8-byte longs. The previous program reads four 4-byte ints. The new program uses the same data file as the previous.

import java.io.*;
class ReadLongs
 public static void main ( String[] args ) 
   String fileName = "intData.dat" ;   long sum = 0;

     DataInputStream instr = 
       new DataInputStream(
         new BufferedInputStream(
           new FileInputStream( fileName  ) ) );

     sum += instr.readLong();
     sum += instr.readLong();
     System.out.println( "The sum is: " + sum );
   catch ( IOException iox )
     System.out.println("Problem reading " + fileName );

Here is a sample run:

C:\Programs>java  ReadLongs
The sum is: 1099511627776


The program used the same input file and read the same bits as the previous program, but computed a different answer. What happened? Well, the first 8 bytes of the file were read as a long value. Then the second 8 bytes were read as another long value. But when the file was created, those 16 bytes were intended to represent four int values. In other words, the new program interpreted the bytes incorrectly. No wonder it computed a strange answer.


Could the program be written so that it checks for valid input?