2016-05-21 2 views
0

Почему этот код не работает. Я любитель, начал изучать Java сегодня.Високосный год в java

enter image description here

ссылку на Java визуализатора: http://www.cs.princeton.edu/~cos126/java_visualize/#

это код:

public class ClassNameHere { 
public static int max(int[] m) { 
if ((m % 400 == 0) && (m % 4 == 0) && (m % 100 != 0)) { 
System.out.println(m + "is a leap year"); 
} else { 
System.out.println(m + "is not a leap year"); 

} 
} 
} 
max(2000); 
+0

сделать несколько поисковых запросов и найти код для високосного года. –

+0

, пожалуйста, добавьте код, скажите, что вы ожидаете, и скажите, что у вас есть. – Meier

+1

Ваша логика испорчена. Если 'm% 400 == 0', то' m% 100 == 0'. – Turing85

ответ

0

первое, что я хотел бы сказать, что, как вы работать с объектами, не делая особого смысла ... И все начинаются здесь:

public static int max(int[] m) { 
if ((m % 400 == 0) && (m % 4 == 0) && (m % 100 != 0)) { 

Поскольку m - это массив из ints, логический способ для компилятора не может понять, что будет делить массив на 4 или принять по модулю этого деления .... этот сегмент кода даже не может быть скомпилирован.

2-й. эта логика здесь не правильно:

if ((m % 400 == 0) && (m % 4 == 0) && (m % 100 != 0)) { 

он должен быть

if ((m % 400 == 0) || (m % 4 == 0) && (m % 100 != 0)) { 

Пример:

public boolean isLeap(final int year) { 
    return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0); 
} 
0

Ваша логика в строке if ((m % 400 == 0) && (m % 4 == 0) && (m % 100 != 0)) неверна. Вот это правильная программа для проверки високосного года: -

public class DetermineLeapYearExample { 
    public static void main(String[] args) { 

        //year we want to check 
        int year = 2004; 

        //if year is divisible by 4, it is a leap year 

        if((year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0))) 
          System.out.println("Year " + year + " is a leap year"); 
        else 
          System.out.println("Year " + year + " is not a leap year"); 
      } 
    } 
    Hope it will help 
0

макс параметр метода представляет собой массив определяется как «ИНТ [] м», поэтому максимальная (2000) не будет работать. Кроме того, как указано в другом ответе, у вас нет основной функции.