Answer:
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.
This 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;
try
{
DataInputStream instr =
new DataInputStream(
new BufferedInputStream(
new FileInputStream( fileName ) ) );
sum += instr.readLong();
sum += instr.readLong();
System.out.println( "The sum is: " + sum );
instr.close();
}
catch ( IOException iox )
{
System.out.println("Problem reading " + fileName );
}
}
}
Here is a sample run:
C:/Programs>java ReadLongs The sum is: 1099511627776 C:/Programs>
The program used the same input file and read the same bits
as the previous program,
but computed a different answer.
What happened?
Well, this program read the first 8 bytes of the file
as a long value.
But when those 8 bytes were written, they were intended to be two 4-byte long value.
But they, also, were intended to be two
QUESTION 4:
Could the program be written so that it checks for valid input?