I’m trying to create a filereader that will create up to 50 instances of customers, each with:
String last names, first names,
int birth year, month, day, and SIN number (9 digits)
double savings balance (private double sbalance), chequing account, and credit card.
The text file consists of nine fields, repeating for each customer.
Yang
Wesley
324917400
1996
8
1
3233.36
none
none
Tam
Christian
984635684
1996
6
12
none
10233.52
none
This is the method:
public static customer [] customerarray = new customer [50];
public static void readfile (){
String sb = "";
String cb = "";
String ca = "";
int counter = 0;
String thisLine;
try {
BufferedReader br = new BufferedReader(new FileReader("bankinfo.txt"));
while ((thisLine = br.readLine()) != null) {
customerarray[counter].setLastName(thisLine);
System.out.println (lastname);
customerarray[counter].setFirstName(br.readLine());
System.out.println (firstname);
customerarray[counter].setSin(Integer.parseInt(br.readLine()));
System.out.println (sin);
customerarray[counter].setYear(Integer.parseInt(br.readLine()));
System.out.println (year);
customerarray[counter].setMonth(Integer.parseInt(br.readLine()));
System.out.println (month);
customerarray[counter].setDay(Integer.parseInt(br.readLine()));
System.out.println (day);
sb = br.readLine();
System.out.println (sb);
if (sb == "none"){
customerarray[counter].setSBalance("none") ;
}
else {
customerarray[counter].setSBalance(Double.parseDouble(sb));
}
cb = br.readLine();
System.out.print (cb);
if (cb == "none"){
customerarray[counter].setCBalance ("none");
System.out.print (cbalance);
}
else if (cb != "none"){
customerarray[counter].setCBalance(Double.parseDouble(cb));
}
else{
System.out.print ("error CBalance");
}
ca = br.readLine();
if (ca == "none"){
customerarray[counter].setSBalance("none") ;
}
else {
customerarray[counter].setCardbal(Double.parseDouble(ca));
}
counter++;
}
}
catch (IOException e) {
System.err.println("Error: " + e);
}
customerarray[0].printSin();
}
Output is:
Yang
Wesley
324917400
1996
8
1
3233.36
noneException in thread "main" java.lang.NumberFormatException: For input string: "none"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1222)
at java.lang.Double.parseDouble(Double.java:510)
at customer.readfile(customer.java:81)
at customer.main(customer.java:38)
Why can’t it recognize that ‘cb’ is == to “none”?
The problem occurs when I run the program – it crashes at
if (cb == "none"){
customerarray[counter].setCBalance ("none");
System.out.print (cbalance);
}
else if (cb != "none"){
customerarray[counter].setCBalance(Double.parseDouble(cb));
}
I uploaded the entire .java file and bankinfo.txt file to
here
You need to use
cb.equals("none"). Read here for more clarification.Your code should look like:
(No need to check
else if, as it is either “none” or not.)Also, this should be applied to
sbandcaas well.