数字格式异常:无法识别字符串

时间:2012-06-16 03:34:18

标签: java

我正在尝试创建一个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

1 个答案:

答案 0 :(得分: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