2015-10-31 4 views
0

Я пытаюсь создать программу, которая может принимать ввод нескольких високосных лет в строке по массиву, а затем выводить, являются ли они високосными годами или нет в их собственных отдельных строках. Я не могу понять проблему. Вот мой код.Как использовать массивы в поиске високосного года

import java.util.Scanner; 

public class LeapYear2 { 

    static boolean[] leapYearStatus = new boolean[10]; 

    public static void main(String[] args) { 
     System.out.println("Enter consecutive years above 1582 with"); 
     System.out.println("spaces separating them then press enter."); 

     Scanner scan = new Scanner(System.in); 
     String input = scan.nextLine()+ " "; 
     String[] inputString = new String[input.length()/5]; 
     int[] inputValues = new int[input.length()/5]; 
     inputString = input.split("\\s+"); 

     for (int i =0; i < input.length()/5;i++) 
      inputValues[i] = Integer.parseInt(inputString[i]); 

     LeapYear2 check = new LeapYear2(); 

     check.checkLeap(inputValues); 
     check.output(leapYearStatus, inputValues); 
     scan.close(); 
    } 

    public void checkLeap(int value[]) { 
     for (int i = 0; i < value.length; i++) { 
      if (value[i] % 4 == 0) 
       if (value[i] % 400 == 0) 
        leapYearStatus[i] = true; 
       else if (value[i] % 100 == 0) 
        leapYearStatus[i] = false; 

     } 
    } 

    public void output(boolean[] leapYearStatus, int value[]) { 
     for(int i = 0; i < value.length; i++) 
      if(leapYearStatus[i] && value[i] > 1582){ 
       System.out.println(value[i] + " is a leap year!"); 
      }else if(!leapYearStatus[i] && value[i] > 1582){ 
       System.out.println(value[i] + " is not a leap year."); 
      }else { 
       System.out.println(value[i] + " is too small! (<= 1582)"); 
      } 
    } 

} 
+2

Начнем на один шаг до этого. Что вы вкладываете в программу? Каков ваш ожидаемый результат? Почему это отличается от того, что вы ожидаете? – Makoto

+0

Я пытаюсь ввести в программу строку лет, разделенных пробелами. Например: «2003 3049 1253 5432 3241». Затем выведите такой вывод, который требуется каждый год, и укажет, является ли год более крупным и является ли он високосным годом или нет. Пример: «2012 год не високосный год». –

+0

Хорошо. Так почему вы думаете, что это сломано? – Makoto

ответ

0

Вместо вложенной if, вы можете свести к одному if. Его то же самое, но более читаемое

if (value[i] % 400 == 0 || (value[i] % 4 == 0 && value[i] % 100 != 0)) { 
    leapYearStatus[i] = true; 
} else { 
    leapYearStatus[i] = false; 
} 
Смежные вопросы