0

私はこの方法を使用しています

static void readFile()
    {
        try
        {
            FileInputStream fstream = new FileInputStream( "Insurances.txt" );
            BufferedReader br = new BufferedReader( new InputStreamReader( fstream ) );
            String strLine;
            String [] array;
            while ( ( strLine = br.readLine() ) != null )
            {
                array = strLine.split( "," );
                pword++;
                int type = Integer.parseInt(array[0]);
                int tm = Integer.parseInt(array[1]);
                int year = Integer.parseInt(array[2]);
                int month = Integer.parseInt(array[3]);
                int day = Integer.parseInt(array[4]);
                int pass = Integer.parseInt(array[5]);
                double tc = 0;
                if ( type==2 )
                {
                    String man = array[6];
                    String mod = array[7];
                    int cc = Integer.parseInt(array[8]);
                    String lp = array[9];
                    String ex = array [10];
                    boolean extra;
                    if ( ex.equals("true") )
                    {
                        extra = true;
                    }
                    else
                    {
                        extra = false;
                    }
                    insurances[insur] = new CarInsurance( pword, type, tm, year, month, day, pass, tc, man, mod, cc, lp, extra  );
                    tc = insurances[insur].calculateCost( pass, a, insur );
                    insurances[insur].setCost( tc );
                    insur++;
                }
                else
                {
                    insurances[insur] = new LifeInsurance( pword, type, tm, year, month, day, pass, tc );
                    tc = insurances[insur].calculateCost( pass, a, insur );
                    insurances[insur].setCost( tc );
                    insur++;
                }
                System.out.println("y");
            }
            inp.close();
        }
        catch ( Exception e )
        {
            e.getMessage();
        }
    }

txt ファイルから情報を読み取り、LifeInsurance クラスまたは CarInsurance のオブジェクトを作成します。これを使用する理由System.out.println("y");は、作成したいオブジェクトと同じ数のループを完了するかどうかを確認するためです。私のプログラムを実行しようとすると、7つのループ(7つのy)しか得られませんが、13が必要です.txtファイルに書いたものは次のとおりです。

1,12,2013,6,1,1939

2,12,2008,1,10,1939,メルセデス,E200,2000,AEX32100,false

2,12,2009,1,11,1939,メルセデス,E200,2000,AEX32100,false

2,12,2009,2,10,1940,フィアット,プント,1400,BIO1245,false

2,12,2009,2,10,1940,座席,イビザ,1600,BIE3987,false

2,12,2010,1,10,1940,座席,イビザ,1600,BIE3987,false

2,12,2013,6,1,1941,アウディ,A4,1600,IXE1256,true

1,12,2008,1,2,1942

1,12,2009,1,2,1942

1,12,2010,1,2,1942

1,12,2011,1,2,1943

2,12,2010,7,23,1943,ルノー,クリオ,1400,ZIO3890,真

2,12,2011,7,23,1943,ルノー,クリオ,1400,ZIO3890,真

13 ループすべてを完了しない理由が見つからないので、助けてください。前もって感謝します。

4

3 に答える 3

1

スタックトレースが示すように、LifeInsurance クラスの 18 行目が表示されます。

LifeInsurance.calculateCost での java.lang.NullPointerException (LifeInsurance.java:18)

8行目のデータは、コスト計算で何かnullを誘発するようです.

予期しない種類のデータによるエラーなのか、コードの問題なのかを知るには、まず 1 行目を 8 行目に置き換えてから、コードをデバッグしたくない場合は引数を 1 つずつ置き換えます。

(「答え」でごめんなさい、コメントを追加できないようです)

于 2013-06-03T21:36:28.987 に答える
-1

入力ファイルに 13 行が含まれていない場合、13 のループが発生することはありません。あなたのプログラムは、それらを一度に 1 行ずつ読み取ることが期待されています。

于 2013-06-03T20:33:48.473 に答える