-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' 是 == 到“none”?

当我运行程序时出现问题 - 它在

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

我将整个 .java 文件和 bankinfo.txt 文件上传到 这里

4

1 回答 1

2

你需要使用cb.equals("none"). 阅读此处以获得更多说明。

您的代码应如下所示:

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

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

此外,这也应该适用于sbca

于 2012-06-16T03:38:08.633 回答