2013-01-22 2 views
3

편집 : 해결. 0 작품을 반환, 분명히!LinkedList가 비어있는 경우 int를 반환하는 메서드에서 아무 것도 반환하지 않습니까?

좋아요, 너무 짧아서 Linked List가 비어 있으면 int 값을 돌려 주어야합니다. 어떻게해야합니까?

if(front == null) { 
    return ; 
} 

이 작동하지 않습니다

public int countDuplicates() { 

int duplicates = 0; 

ListNode current = front; 

int num = current.data; 
current = current.next; 

while(current != null) { 
    if(current.data == num) { 
     duplicates++; 
    } else { 
     num = current.data; 
    } 
    current = current.next; 
} 
return duplicates; 
} 

나는이 때. 내가 무엇을 할 수 있을지?

+0

0 ... – user949300

+0

@Karan .. 그 문제가 해결 될 말을 질문을 편집하지 마십시오. 오히려 귀하의 쟁점을 해결 한 대답 중 하나를 수락 한 것으로 표시하십시오. 모든 대답 이외의 화살표 중 하나를 클릭 할 수 있습니다. –

답변

1

코드를 그대로 유지하려면 int를 반환하거나 예외를 throw하거나 종료해야합니다.

  1. 반환하는 int : 당신은 "실패"값으로 특정 int 값을 지정하고이 값이 "정상"을 실행하는 동안 충돌되는 경우 결코 있는지 확인해야합니다.

  2. 예외를 던집니다. 다른 답변에서 자세히 설명했습니다. 이미 설명했습니다.

  3. 프로그램을 종료하십시오.

가장 좋은 방법은 코드를 변경 할 수있다 - null 옵션이 있으므로, 함수가 예를 들어, 정수를 반환합니다. 물론이를 해결하는 다른 방법도 있습니다.

5

당신은 오히려 던질 수있는 IllegalArgumentException : -

if(front == null) { 
    throw new IllegalArgumentException("List is empty"); 
} 
+0

그래, 그 대안이지만 내가 연습 오전 온라인 컴파일러는 예외를 허용하지 않습니다. – None

+0

@KaranGoel. 이 경우,'int' 리턴 타입보다는'Integer' 리턴 타입을 사용하고, 빈리스트에는'null'을 리턴 할 수 있습니다. 다른 방법은 없습니다. –

+0

작동하지 않습니다. 반환 유형이 일치하지 않습니다. – None

2

당신이 고정 된 값을 정의하는 하나 같은 Integer.MIN_VALUE으로, 그 목록이 비어 있음을 나타냅니다, 또는 선언을 변경하는 것은 가능하여 메서드를 public Integer countDuplicates()으로 변경하고 목록이 비어 있으면 null을 반환합니다.

3

메서드가 int을 반환하는 경우 "아무것도 표시하지 않음"을 나타내는 허용 가능한 값을 결정해야합니다. 0 또는 유효한 결과가 >= 0 인 경우 -1과 같은 음수 값을 사용하여 "없음"을 나타냅니다.

Integer 개체를 반환하도록 메서드를 수정하거나 null을 반환 할 수 있습니다.

0

예외를 표시하지 않으려면 음수와 같은 일부 "예외 값"을 반환하십시오. 예를 들어, Java는 항목이 없으면 -1을 리턴하는 많은 indexOf(Object somethingToLookFor) 메소드를 가지고 있습니다.

예에서 -1은 중복 될 수 없기 때문에 예외적으로 작동합니다.

개인적으로 빈 목록의 경우 0을 개인적으로 반환합니다. 빈 목록에는 0 개의 중복이 있습니다. 그러나 스펙에서 예외적 인 것을 주장하면 -1을 반환합니다.

0

당신은 당신이 음의 값을 반환 할 수이

public Object countDuplicates() { 
    if(////condition) 
     return ///int; 
    else 
     return null; 
0

같은 객체 또는 문자열로 반환 유형을 변경하고 int로 결과를 구문 분석 INT에서 반환 값을 변경할 수 있습니다. 난 그냥 당신이 돌아 제안을 내 대답을 편집

-1
public boolean isEmpty(){ 
    if (head == null) return true; 
    else return false ; 
} 
관련 문제