あなたのコードはコンパイルされ実行されますが、私は静的メソッドを以下のような式で呼び出すべきではありません:
LeapYearCheck ob = new LeapYearCheck();
ob.isLeapYear();
ob.daysInMonth();
これらのインスタンスメソッドを静的メソッドとして呼び出すかか、必要に応じて型名で修飾するか
LeapYearCheck.isLeapYear();//Explicit
daysInMonth();//Implicit
インスタンスメソッドであるかのように静的メソッドを呼び出すと、インスタンスに依存するようなルックが混乱しますが、そうではありません。
次の奇妙はここにあります:
static void isLeapYear() {
Scanner input = new Scanner(System.in);
int month = input.nextInt();
System.out.println("Enter a year: ");
ユーザーの入力を待っているが、ユーザーに理由を伝えずに - とにかく月を無視することは意味があります。年がうるう年かどうかは分かりません。ちょうどこの行を取り除く:
int month = input.nextInt();
さらに、このロジックは壊れています:
if (month == 2) {
System.out.println("There are 29 days in February: " + year + " year");
} else if (month == 1) {
System.out.println("The are 31 days in January " + year + " year");
} else if (month == 2) {
System.out.println("The are 28 days in February " + year + " year");
次に、 daysInMonth
メソッドの場合:
- 今年は尋ねることはありません
- 2月の29日を報告する前にうるう年を検出しようとしていません。
基本的にコードは現時点ではちょっと混乱しますが、 main
からメソッドを呼び出せないという問題は、問題ではありません。
編集:あなたのうるう年の計算はとにかく間違っています - 私は物事のカレンダー側が練習の目標の一部であると仮定していますが、通常は Calendar
そのサブクラス)または Joda時間から始めましょう。