2013-03-29 3 views
0

내가 컴파일러 오류 받고 있어요 :컴파일러 오류 "호환되지 않는 유형의"

Exercise.java:47: error: incompatible types Time endTime = startTime.addMinutes(minutes);

         ^

필요를 찾음 시간 : 무효 1 오류

내가 사용하려고 해요 방법은 이 :

public void addMinutes(int mins) { 
    this.mins += mins; 
    if (this.mins >= 60) { // check if over 
     addHours(this.mins/60); 
     this.mins = this.mins % 60; 
    } 
    } 

이유가 확실하지 않습니다. 당신이 endTime

+0

Time 클래스는 어디에 정의되어 있습니까? 코드 또는 코드를 가져올 수 없습니다. – OldProgrammer

+0

당신의'addMinutes' 메쏘드는 아무 것도 반환하지 않습니다, 그것은'void' 타입입니다. 메소드는'this.mins + = mins; '를 호출하여'Exercise' 객체의 내부 상태를 변경합니다. –

답변

2

addMinutes 반환 유형 (void)을 반환하지 않습니다. 대신에 호출 된 Time 객체의 상태를 변경합니다.

중 하나는,이 같은 완료된 후 시간을 반환하는 방법을 변경 :

public Time addMinutes(int mins) { 
    this.mins += mins; 
    if (this.mins >= 60) { // check if over 
     addHours(this.mins/60); 
     this.mins = this.mins % 60; 
    } 
    return this; 
} 

또는 같은 당신의 사용을 변경 또는 더 간단하게

public Time getEnd() { 
    Time endTime; 
    startTime.addMinutes(minutes); 
    //This seems wrong, by the way. startTime will be modified by this call. 
    endTime = startTime; 
    return endTime; 
} 

:

public Time getEnd() { 
    startTime.addMinutes(minutes); 
    return startTime; 
} 
+0

또는 훨씬 간단하게'return startTime.addMinutes (minutes); ' – Smit

+0

@Smit 그것이 원래의 문제였습니다. 이 예제는 addMinutes 메소드가 변경되지 않은 상태로 유지되어야하는 경우를 처리하기위한 것이기 때문에 여전히 올바르지 않을 수 있도록 void 리턴 유형을 갖습니다. – femtoRgon

+0

+1 나는 당신의 요점을 이해했다, 나는 당신의'getEnd()'메소드 리턴 타입에 대해 이야기하고 있었다. – Smit

0

addMinutes 당신은이 라인이, Time (void)의 인스턴스를 반환하지 않습니다

Time endTime = startTime.addMinutes(minutes); 

을하지만 당신은 선언 addMinutes 있습니다

public void addMinutes(int mins) 

W hich는 아무것도 반환하지 않으므로 endTime에 할당 할 반환 값이 없습니다.

0

에 할당 할 수 있도록

import java.util.*; 
    import java.io.*; 

    public class Exercise { 

     private String exercise; 
     private int minutes; 
     private Time startTime; 
     private Time endTime; 
     private int addedminutes; 



     public Exercise(String exercisetype, int m, Time start) { 
     this.exercise = exercisetype; 
     this.minutes = m; 
     this.startTime = start; 
     } 


     public String getType() { 
     return this.exercise; 
     } 


     public int getMinutes() { 
     return this.minutes; 
     } 


     public Time getStart() { 
     return this.startTime; 
     } 


     public Time getEnd() { 
     Time endTime = startTime.addMinutes(minutes); 
     return endTime; 
     }   



     public int addMinutes(int added) { 
     addedminutes = this.minutes + added; 
     return addedminutes; 
     } 


     public Time setStart(Time newstart) { 
     this.startTime = newstart; 
     return newstart; 
     } 


     public String toString() { 

     String startStandard = startTime.getStandard(); 
     String endStandard = endTime.getStandard(); 

     String toReturn = (this.exercise + " for " + this.minutes + " minutes," + " from " + startStandard + " to " + endStandard); 
     return toReturn; 
     } 

     public boolean equals(Exercise exTwo) { 
     return exercise == exTwo.exercise && minutes == exTwo.minutes && startTime == exTwo.startTime; 
     } 

     private static String exercisetype; 
     public static String getTypes() { 
     String types = ("Exercise types: " + Exercise.exercisetype); 
     return types; 
     } 
}  
관련 문제