validation - Writing data to sequential text file with java -
validation - Writing data to sequential text file with java -
there text file 'clients.txt' having next contents:
100 james greenish 123.45 200 sue magenta 12345.67
it has 2 records. in first record '100' business relationship no., 'james' firstname, 'green' lastname , '123.45' balance.
the code below 'accountrecord.java' file containing above fields , routine set methods:
public class accountrecord { private int account; private string firstname; private string lastname; private double balance; // no-argument constructor calls other constructor default values public accountrecord() { this(0, "", "", 0.0); // phone call four-argument constructor } // end no-argument accountrecord constructor // initialize record public accountrecord(int acct, string first, string last, double bal) { setaccount(acct); setfirstname(first); setlastname(last); setbalance(bal); } // end four-argument accountrecord constructor // set business relationship number public void setaccount(int acct) { business relationship = acct; } // end method setaccount // business relationship number public int getaccount() homecoming account; } // end method getaccount // set first name public void setfirstname(string first) { firstname = first; } // end method setfirstname // first name public string getfirstname() { homecoming firstname; } // end method getfirstname // set lastly name public void setlastname(string last) { lastname = last; } // end method setlastname // lastly name public string getlastname() { homecoming lastname; } // end method getlastname //set balance public void setbalance(double bal) { balance = bal; } // end method setbalance // balance public double getbalance() { homecoming balance; } // end method getbalance } // end clas
the code below 'createtextfile.java'. has 1 code line: 'output = new formatter( "clients.txt" );', instantiate formatter object 'clients.text' format:
import java.io.filenotfoundexception; import java.lang.securityexception; import java.util.formatter; import java.util.formatterclosedexception; import java.util.nosuchelementexception; import java.util.scanner; import com.deitel.ch17.accountrecord; public class createtextfile { private formatter output; // object used output text file // enable user open file public void openfile() { seek { output = new formatter( "clients.txt" ); // open file } // end seek grab ( securityexception securityexception ) { system.err.println( "you not have write access file." ); system.exit( 1 ); // terminate programme } // end grab grab ( filenotfoundexception filenotfoundexception ) { system.err.println( "error opening or creating file." ); system.exit( 1 ); // terminate programme } // end grab } // end method openfile // add together records file public void addrecords() { // object written file accountrecord record = new accountrecord(); scanner input = new scanner( system.in ); system.out.printf( "%s\n%s\n%s\n%s\n\n", "to terminate input, type end-of-file indicator ", "when prompted come in input.", "on unix/linux/mac os x type <ctrl> d press enter", "on windows type <ctrl> z press enter" ); system.out.printf( "%s\n%s", "enter business relationship number (> 0), first name, lastly name , balance.", "? " ); while ( input.hasnext() ) // loop until end-of-file indicator { seek // output values file { // retrieve info output record.setaccount( input.nextint() ); // read business relationship number record.setfirstname( input.next() ); // read first name record.setlastname( input.next() ); // read lastly name record.setbalance( input.nextdouble() ); // read balance if ( record.getaccount() > 0 ) { // write new record output.format( "%d %s %s %.2f\n", record.getaccount(), record.getfirstname(), record.getlastname(), record.getbalance() ); } // end if else { system.out.println( "account number must greater 0." ); } // end else } // end seek grab ( formatterclosedexception formatterclosedexception ) { system.err.println( "error writing file." ); return; } // end grab grab ( nosuchelementexception elementexception ) { system.err.println( "invalid input. please seek again." ); input.nextline(); // discard input user can seek 1 time again } // end grab system.out.printf( "%s %s\n%s", "enter business relationship number (>0),", "first name, lastly name , balance.", "? " ); } // end while } // end method addrecords // close file public void closefile() { if ( output != null ) output.close(); } // end method closefile }
the lastly portion of code main method as:
public class createtextfiletest { public static void main( string[] args ) { createtextfile application = new createtextfile(); application.openfile(); application.addrecords(); application.closefile(); } // end main }// end class createtextfiletest
when run class , seek come in new record message as:
run: terminate input, type end-of-file indicator when prompted come in input. on unix/linux/mac os x type <ctrl> d press come in on windows type <ctrl> z press come in come in business relationship number (> 0), first name, lastly name , balance. ? 300 har par 112.235 come in business relationship number (>0), first name, lastly name , balance. ? ^z invalid input. please seek again. come in business relationship number (>0), first name, lastly name , balance. ?
being new programming confused why input invalid. need help rectify code or rectify input. whole code has been submitted problem can judged minutely. using netbean ide 8.0 , jdk-8u5-windows-64.
edit : prepare mistake
ctrl+z
not bullet proof method under windows. you'd improve (as business relationship number must > 0) : to terminate input, come in 0 , enter
. after line
record.setaccount( input.nextint() ); // read business relationship number
add
if ( record.getaccount() == 0 ) { return; }
java validation
Comments
Post a Comment