Solved

Cannot get java program to print record from file in the correct format.

Posted on 2012-03-14
2
511 Views
Last Modified: 2012-06-22
Hello Experts,
I am having a major problem with a java program that is supposed to have the user enter a customer number and the results will be a print output of the customer number, last name, and balance. This information is retrieved from a text file created from another java program which I did create successfully. I am able output to screen the first record correctly when I enter the customer number 0003 (1st record in text file), but there is a 0 above the results for some reason unknown to me. When I enter the next customer number after that I get nothing but 0s and spaces. I need help figuring this out, please. I hope I explained the problem well enough. Below is the text file and the program code.
I went ahead and attached the text file.
Thanks  
 
package createBankFile;

import java.nio.file.*;
import java.nio.channels.FileChannel;
import java.nio.ByteBuffer;
import static java.nio.file.StandardOpenOption.*;
import java.util.Scanner;

import javax.print.DocFlavor.READER;

public class ReadBankAccountsRandomly
	{
	   public static void main(String[] args)  
	   {
	      Scanner keyBoard = new Scanner(System.in);
	      Path file = Paths.get("C:\\JavaPrograms\\RandomCustomers.txt");	         
	      String s = "0000,       ,00000.00" + System.getProperty("line.separator");	         
	      final int RECSIZE = s.length();
	      byte[] data = s.getBytes();
	      
	       
	      FileChannel fc = null;
	      String idString;
	      int id;
	      final String QUIT = "999";
	      try
	      {
	         fc = (FileChannel)Files.newByteChannel(file, READ);
	         ByteBuffer buffer = ByteBuffer.wrap(data);
	         
	         System.out.print("Enter customer account number or " + QUIT + " to quit >> ");	           
	         idString = keyBoard.nextLine();
	         while(!idString.equals(QUIT))
	         {
	            id = Integer.parseInt(idString); 
	            buffer = ByteBuffer.wrap(data);
	            fc.position(id * RECSIZE);
	            fc.read(buffer);
	            s = new String(data);
	            System.out.println(s);
	            System.out.print("Enter customer account number >> " + QUIT + " to quit >> ");	              
	            idString = keyBoard.nextLine();
	            
	         }
	         fc.close();
	      }
	      catch (Exception e)
	      {
	          System.out.println("Error message: " + e);
	      }
	   }
	}

Open in new window

RandomCustomers.txt
0
Comment
Question by:robertben
2 Comments
 
LVL 9

Accepted Solution

by:
arioh earned 500 total points
ID: 37724047
you have wrong "s" definition. there must be 8 spaces, not 7
0
 

Author Closing Comment

by:robertben
ID: 37725079
I cannot believe one space is all it took. All those hours of frustration for one space.
Your help is much appreciated. Thank you.
0

Featured Post

Courses: Start Training Online With Pros, Today

Brush up on the basics or master the advanced techniques required to earn essential industry certifications, with Courses. Enroll in a course and start learning today. Training topics range from Android App Dev to the Xen Virtualization Platform.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
stackato and cloud 4 85
hibernate example for saving data 19 37
Unhandled exception type Exception 18 28
String array comparison 4 32
An old method to applying the Singleton pattern in your Java code is to check if a static instance, defined in the same class that needs to be instantiated once and only once, is null and then create a new instance; otherwise, the pre-existing insta…
Java functions are among the best things for programmers to work with as Java sites can be very easy to read and prepare. Java especially simplifies many processes in the coding industry as it helps integrate many forms of technology and different d…
Viewers learn about the scanner class in this video and are introduced to receiving user input for their programs. Additionally, objects, conditional statements, and loops are used to help reinforce the concepts. Introduce Scanner class: Importing…
This tutorial will introduce the viewer to VisualVM for the Java platform application. This video explains an example program and covers the Overview, Monitor, and Heap Dump tabs.

813 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

14 Experts available now in Live!

Get 1:1 Help Now