2013-05-25 3 views
-4

자바 함수의 값을 반환 어떻게 :당신은 내가 정말이 자바 클래스와 도움이 필요

public class Date { 

    // fields 

    private int month; 

    private int day; 

    private int year; 

    // constructor 

    public Date(int month, int day, int year){ 

     this.month = month; 

     this.day = day; 

     this.year = year; 

    } 

    public void setMonth(int month){ 

     this.month = month; 

    } 


    public void setDay(int day){ 

     this.day = day; 

    } 


    public void setYear(int year){ 

     this.year = year; 

    } 

    public int getMonth(){ 

     return month; 

    } 

    public int getDay(){ 

     return day; 

    } 

    public int getYear(){ 

     return year; 

    } 

    public String displayDate(){ 

     return month + "/" + day + "/" + "/" + year; 

    } 

public int add(int n) 
    { 
     if (n <= 20) 
      { 
       if (month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12) 
        { 
         if ((day+n > 0) && (day+n <=31)) 
          day= day+n; 
         else 
          month +=1; 
         if(month>12) 
          year+=1; 
         } 
      if (month==4 || month==6 || month==9 || month==11) 
       { 
        if ((day+n >0) && (day+n <=30)) 
         day= day+n; 
        else 
         month+= 1; 
        if (month>12) 
         year+=1; 
       } 
      }    
    } 
} 

나는이 프로그램을 실행할 때 나는 수익 문 누락 오류가 다음과 같이

내 클래스입니다 add 메서드? 이 방법은 일, 월, 일에 며칠 (n)을 추가해야합니다. 어떻게하면이 문제를 해결할 수 있을까요? 그것은 아무것도 반환하지 않는 경우

+0

중복 됨 : http://stackoverflow.com/questions/16754593/why-wont-this-return-method-compile –

+0

무언가를 반환하는 방법에 대해 알려주십시오. 그 방법으로 돌아 오는 것이 없습니다. – greedybuddha

+2

이 클래스가 얼마나 나쁜지를 과장하는 것은 불가능합니다. java.lang.Date 클래스 이름을 오버로드했다는 사실은 코드를 사용하는 모든 사람에게 혼동을줍니다. 그리고 당신의 구현은 끔찍합니다. – duffymo

답변

4
public int add(int n) 

, 다음의 반환 유형은 void해야한다 :

public void add(int n) 
2

변경 무효화하는 형식을 반환 할 수 있습니다.

편집 :

또는 당신은 Date 객체 반환 할 경우 :

public Date add(int n) 
{ 
    Date d = new Date(); 
    d.month = this.month; 
    d.year = this.year; 
    d.day = this.day; 

    if (n <= 20) 
     { 
      if (d.month==1 || d.month==3 || d.month==5 || d.month==7 || d.month==8 || d.month==10 || d.month==12) 
       { 
        if ((d.day+n > 0) && (d.day+n <=31)) 
         d.day= d.day+n; 
        else 
         d.month +=1; 
        if(d.month>12) 
         d.year+=1; 
        } 
     if (d.month==4 || d.month==6 || d.month==9 || d.month==11) 
      { 
       if ((d.day+n >0) && (d.day+n <=30)) 
        d.day= d.day+n; 
       else 
        d.month+= 1; 
       if (d.month>12) 
        d.year+=1; 
      } 
     } 
    return d;    
} 

을 또는 모든 당신을 위해 이것을 할 것입니다 자바 달력 클래스를 사용합니다.

+0

무효화 될 수 없으므로 일수를 추가 한 후 최종 날짜를 반환해야합니다. 나는 그 일을하는 법을 모른다. – user1471980

+0

Gotcha. 이 경우 반환 유형은 자신의 Date 클래스 여야합니다. add() 메소드로 새로운 인스턴스를 구축합니다. 'this'객체의 월, 일 및 년 필드를 새 객체에 복사합니다. 그런 다음 추가 논리를 수행하여 새 객체를 수정하고 새 객체를 반환합니다. – Tap

관련 문제