-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.

テキストファイルは9つのフィールドで構成され、顧客ごとに繰り返されます。

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ん。)

sbまた、これはandにも適用する必要がありcaます。

于 2012-06-16T03:38:08.633 に答える