2014-12-01 4 views
-4

Я не могу их скомпилировать, кажется, что я пытаюсь передать логическое значение. Первый из них имеет 2 ошибки, которые не имеют никакого смысла для меняJava, проходящее логическое значение

public class Date { 
    public int m; 
    public int d; 
    public int y; 
    boolean isLeapYear; 

    public String monthIs(){ 
     return month; 
     m = Integer.parseInt(month); 
    } 

    public String dayIs(){ 
     return day; 
     d = Integer.parseInt(day); 
    } 

    public Date(String year){ 
     y = Integer.parseInt(year); 
     // Is y Divisible by 4 
     if (y % 4 == 0){ 

      // Is y Divisible by 4 but not 100 
      if (y % 100 != 0) 
       isLeapYear = true; 

      // Is y Divisible by 4 and 100 and 400 
      else if (y % 400 == 0) 
       isLeapYear = true; 

      // It's Divisible by 4 and 100 but not 400 
      else 
       isLeapYear = false; 
     } 
     // It's not divisible by 4 
     else 
     { 
      isLeapYear = false; 
      public boolean getisLeapYear() 
      { 
       return isLeapYear; 
      } 
     } 
    } 
} 

DateJDialog класс:

import javax.swing.JOptionPane; 
/** This program runs the Date class to determine if 
* the date entered falls within a leap year. 
*/ 
public class DateJDialog 
{ 
    public static void main(String[] args) 
    { 
     String month; 
     String day; 
     String year; 
     boolean isitLeapYear; 
     Date date; 
     //Get Input 
     JOptionPane.showMessageDialog(null, "This program determines if the date 
              entered falls within a leap year."); 
     month = JOptionPane.showInputDialog("What month?"); 
     day = JOptionPane.showInputDialog("What day?"); 
     year = JOptionPane.showInputDialog("What year?"); 

     //Create Date object 
     date = new Date(year); 

     if (date.getisLeapYear()==true); 
     if (isLeapYear = true) 
      JOptionPane.showMessageDialog(null, month + "-" + day + "-" + year 
      + " does fall within a leap year."); 
     else 
      JOptionPane.showMessageDialog(null, month + "-" + day + "-" + year 
      + " does not fall within a leap year."); 
     System.exit(0); 
    } 
} 
+9

Шаг 1: Отформатируйте свой код, чтобы он был доступен для людей. Шаг 2. Посмотрите на сообщение об ошибке. Не просто сдавайтесь при возникновении ошибки. * Прочитайте ошибку *, чтобы попытаться ее решить. – David

+2

Вы не можете определить метод ('getIsLeapYear') в середине другого метода. – ajb

+0

Вам нужно сделать 'isLeapYear == true' вместо' isLeapYear = true'- Также всегда отправляйте сообщение об ошибке, которое вы получаете - не оставляйте нас, чтобы угадать, что вы видите на экране. – nos

ответ

1

У вас есть несколько ошибок в коде, и я сделаю все возможное, чтобы указать их.

Во-первых, у вас есть это if-statement:

if (date.getisLeapYear()==true); 

if-statement должен иметь корпус, изготовленный из открывающей скобкой и закрывающая скобка (я считаю, что это будет компилировать, но не служит никакой цели). Вместо этого:

if (date.getisLeapYear()==true) { 
    //do something 
} 

Поскольку это, как представляется, быть boolean поглотитель, условная проверка может быть сокращен до:

if (date.getisLeapYear()) {//this checks for a "true" value, !date.getisLeapYear() checks for false 
    //do something 
} 

Ваш чек на isLeapYear быть истинным является неправильным, и снова напечатал в длину, когда не необходимо.

if (isLeapYear = true) 

Должно быть:

if (isLeapYear)//again checking if true. !isLeapYear would be checking for false. 

Ваш конструктор построен странно и совершенно неправильно. Прежде всего, если вы используете оператор if-else, то он должен использовать брекеты.

справедливо следующее, но считается плохой практикой:

if (condition) 
    //do soemthing 

Следующая требует фигурные скобки:

if (condition) { 

} else if (another condition) { 

} (...) 

Наконец, вы объявляя поглотитель внутри конструктора. Методы могут создаваться только в области класса, то есть методы не могут быть созданы внутри метода. Для того, чтобы решить эту проблему:

public Date() { 
    (...) 
} 

public boolean getisLeapYear() { 
    return isLeapYear; 
} 

Кроме того, только в качестве чаевых, вы можете цепи несколько экземпляров переменной в одном объявлении:

String month; 
String day; 
String year; 

Может быть написан как:

String month, day, year; 

I не знаю, распространяется ли это на все ваши ошибки, но это здоровое начало.

Смежные вопросы