2012-06-16 54 views
-1

我试图创建一个filereader,将创建最多客户的50个实例,每个:数字格式异常:无法识别字符串

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. 

的文本文件,由九个领域,为重复每个客户。

Yang 
Wesley 
324917400 
1996 
8 
1 
3233.36 
none 
none 
Tam 
Christian 
984635684 
1996 
6 
12 
none 
10233.52 
none 

这是方法:

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(); 
    } 

输出是:

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) 

为什么不能承认, 'CB' 是==为 “无”?

的问题,当我运行程序时 - 崩溃的

if (cb == "none"){ 
customerarray[counter].setCBalance ("none"); 
       System.out.print (cbalance); 
      } 
      else if (cb != "none"){ 
       customerarray[counter].setCBalance(Double.parseDouble(cb)); 
      } 

我上传的整个java文件和bankinfo.txt文件 here

回答

2

您需要使用cb.equals("none")。请阅读here了解更多信息。

您的代码应该是这样的:

 if (cb.equals("none")){ 
      customerarray[counter].setCBalance ("none"); 
      System.out.print (cbalance); 
     } 
     else { 
      customerarray[counter].setCBalance(Double.parseDouble(cb)); 
     } 

(不需要检查else if,因为它是“无”或不)

此外,这应该适用于sbca