2017-07-12 10 views
-3

私は自分のコードを実行しようとするが、それはいつも私にこの例を示します休暇のアレイ欠落しているコード

日:休暇の0 日:休暇の0 日:0 BUILD SUCCESSFUL(合計時間:15秒)

public class VacationScale { 

    int[] vacationDays = new int[7]; 
    int yearsOfService; 

    public void vacationDays() { 

     vacationDays = new int[7]; 
     vacationDays[0] = 10; 
     vacationDays[1] = 15; 
     vacationDays[2] = 15; 
     vacationDays[3] = 15; 
     vacationDays[4] = 20; 
     vacationDays[5] = 20; 
     vacationDays[6] = 25; 

    } 

    public void displayVacationDays() { 
     if (yearsOfService >= 0 && yearsOfService < 6) { 

      System.out.println("Days of Vacation: " + 
        vacationDays[yearsOfService]); 
     } else if (yearsOfService >= 6) { 
      System.out.println("Days of vacation: " + vacationDays[6]); 

     } else { 
      System.out.println("Invalid years of service"); 
     } 
    } 

    void setVacationScale() { 
    } 
} 
+0

出力は何ですか? – Seblor

+3

'public void vacationDays()'はコンストラクタではないため、自動的に呼び出されることはありません。あなたは 'displayVacationDays'を呼び出す前にそれを呼び出しましたか? – litelite

+1

主な方法はどこですか? –

答えて

-1

vacationDays()関数が呼び出されていないようです。コードはデフォルト値で実行されているので、int配列のデフォルト値は各要素0の配列です。

+0

共有してくれてありがとうございます。 – javabeginner

+0

なぜこれがdownvotedでしたか? – prashant

0

public void vacationDays()はコンストラクタではなく通常の方法であるため、自動では呼び出されません。あなたはおそらくそれをコンストラクタとして持つことを意味します。

public void vacationDays() { 

     vacationDays = new int[7]; 
     vacationDays[0] = 10; 
     vacationDays[1] = 15; 
     vacationDays[2] = 15; 
     vacationDays[3] = 15; 
     vacationDays[4] = 20; 
     vacationDays[5] = 20; 
     vacationDays[6] = 25; 
    } 

で::だから置き換える

オブジェクトが作成されたときに

public VacationScale() { 

    vacationDays = new int[7]; 
    vacationDays[0] = 10; 
    vacationDays[1] = 15; 
    vacationDays[2] = 15; 
    vacationDays[3] = 15; 
    vacationDays[4] = 20; 
    vacationDays[5] = 20; 
    vacationDays[6] = 25; 

} 

そしてvacationDaysが初期化されます。 displayVacationDaysは期待通りに動作します。

displayVacationDaysが呼び出される前に、vacationDaysが必ず少なくとも1回呼び出されるようにすることもできます。

vacationDaysが宣言中に初期化され、intの配列のデフォルト値が0であるため、現在のコードが機能します。現在の結果が説明されています。

+0

liteliteありがとうございました。 – javabeginner

+0

休暇日:20 休暇日:15 休暇日数:20 BUILD SUCCESSFUL(合計時間:0秒) – javabeginner

関連する問題