Question:  Display all the names of a given length from names.dat. This file is in binary. Each entry is in the format: name length (integer) and name (string). There are no String reading methods for binary files. You'll have to figure out how to use the length value and readChar method to read all the names.   ======================================================================== Test Case 3     Enter a length\n 11(ENTER) Names of length 11\n Lindi Ekins\n Adriana Bru\n Linet Greep\n Rich Yakovl\n Roy Garrard\n Alex Fillon\n Inge Adrain\n 7 results\n ---------------------------------------------------------------------- Test Case 4     Enter a length\n 12 (ENTER) Names of length 12\n Sabrina Digg\n Howie Royson\n Bronny Blues\n Murdoch Vase\n Ryley Chmiel\n Brand Hallam\n Kippy Baudet\n Tate Stainer\n Lindie Freke\n 9 results\n

EBK JAVA PROGRAMMING
9th Edition
ISBN:9781337671385
Author:FARRELL
Publisher:FARRELL
Chapter13: File Input And Output
Section: Chapter Questions
Problem 6PE
icon
Related questions
Question

Question: 

Display all the names of a given length from names.dat. This file is in binary. Each entry is in the format: name length (integer) and name (string).
There are no String reading methods for binary files. You'll have to figure out how to use the length value and readChar method to read all the names.
 
========================================================================

Test Case 3

 
 
Enter a length\n
11(ENTER)
Names of length 11\n
Lindi Ekins\n
Adriana Bru\n
Linet Greep\n
Rich Yakovl\n
Roy Garrard\n
Alex Fillon\n
Inge Adrain\n
7 results\n
----------------------------------------------------------------------

Test Case 4

 
 
Enter a length\n
12 (ENTER)
Names of length 12\n
Sabrina Digg\n
Howie Royson\n
Bronny Blues\n
Murdoch Vase\n
Ryley Chmiel\n
Brand Hallam\n
Kippy Baudet\n
Tate Stainer\n
Lindie Freke\n
9 results\n
 
========================================================
MY code
 
import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;

public class TEST {
public static void main(String[] args)
{
Scanner kb = new Scanner(System.in);
System.out.println("Enter a length");
int length = kb.nextInt();
System.out.println("Names of length " + length);

ArrayList<String> names = new ArrayList<>();

try {
DataInputStream input = new DataInputStream(new FileInputStream("names.dat"));

boolean go = true;

while (go)
{
int currentLength=0;
try
{
StringBuffer bf = new StringBuffer();
//read integer
currentLength = (int) input.readByte();
for(int i=0;i<currentLength;i++) {
//read character
char ch = (char) input.readByte();
if(currentLength==length) {
bf.append(ch);
}
}
if(currentLength==length) {
System.out.println(bf.toString());
names.add(bf.toString());
}

} catch(EOFException e)
{
go = false;
}
}
input.close();
}
catch (IOException e)
{
e.printStackTrace();
}
finally {
System.out.println(names.size() + " results");
}
}
}
 
----------------------------------------------------------------------------------------
NOTE: The output to my Code is-

Enter a length
9
Names of length 9
0 results
 
 
(I don't know where the error is, Names should be outputted in Rows between "Names of length #" and " # results.")
 
 
Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 3 steps with 1 images

Blurred answer
Knowledge Booster
File Input and Output Operations
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
EBK JAVA PROGRAMMING
EBK JAVA PROGRAMMING
Computer Science
ISBN:
9781337671385
Author:
FARRELL
Publisher:
CENGAGE LEARNING - CONSIGNMENT
C++ Programming: From Problem Analysis to Program…
C++ Programming: From Problem Analysis to Program…
Computer Science
ISBN:
9781337102087
Author:
D. S. Malik
Publisher:
Cengage Learning