2017-10-10 8 views
1

제네릭 배열에서 가장 작은 요소를 찾는데 효과가있는 방법이 있습니다. 그러나 동일한 방법을 시도하지만 약간 다르기 때문에 실행 할 때마다 0을 반환합니다. 이유는 모르겠습니다.제네릭 배열 메서드, 정수, 문자열, 문자에서 가장 큰 요소를 찾습니다.

이 문제를 해결하는 방법을 아래의이 방법과 비슷하게 보이기를 바랍니다. Generic.max를 가져 오거나 컬렉션을 사용하고 싶지는 않습니다. 아래와 같이 더 원시적 인 방식으로하고 싶습니다.

다음과 비슷한 방법을 사용하여 최대 값을 찾으려면 어떻게해야합니까? < 0을> 0으로 변경하려고하면 작동하지 않습니다. 이 방법을 최대 방법으로 만들려면 어떻게해야합니까?

public static <E extends Comparable<E> > int getSmallesElement(E[] list) { 
     int minIndex = 0; 
     // Iterate from i+1 ti i-1 
     for (int index = minIndex + 1; index <= list.length - 1; index++) { 
      minIndex = (list[index].compareTo(list[minIndex]) < 0)? index : minIndex; 
     }// end for 

     return minIndex; 
    }// end getSmallest method 

내가 좋아하는 조건의 첫 번째 메소드를 사용할 수 있다고 말했던 것처럼 말입니다. 나는 제네릭에 익숙하지 않고 이러한 메서드를 정수, 문자열 및 문자 배열에서 사용할 수 있도록 노력하고 있습니다.

감사합니다.

+0

'maxIndex = maxIndex; '... – Amit

+0

Generic.max 란 무엇입니까? – shmosel

+0

코드에 따라 하나의 요소 만있는 배열의 최소/최대 인덱스는 어떻게됩니까? 그리고 요소가없는 배열의? –

답변

0

조건부 표현식을 if 문으로 다시 작성했지만 올바르게 수행하지 못했습니다. index = maxIndex 대신 maxIndex = index이 필요합니다.

오히려 if의 두 지점에서 각 반복에 maxIndex를 할당하는 것보다, 당신은 단지 "true"를 지점에 할당 할 수 있고, 전부 "거짓"지점을 드롭 : 당신은 재설정하고

for(int index = maxIndex + 1; index <= list.length -1; index++) { 
    if (list[maxIndex].compareTo(list[index]) < 0) { 
     maxIndex = index; 
    } 
} 
0

index로 루프 대신 상대 maxIndex을 설정하는 간다 :

public static <E extends Comparable<E> > int getLargestElement(E[] list) { 
    int maxIndex = 0; 
    for(int index = 1; index <= list.length -1; index++) { 
     if (list[index].compareTo(list[maxIndex]) > 0) { 
      maxIndex = index; 
     } 
    } 
    return maxIndex; 
} 
+0

이유는 모르겠지만 여전히 반환 중입니다. –

+0

이 스 니펫이 작동해야합니다. 귀하가 관찰 한 입력 내용을 '0'으로 공유하십시오. – Mureinik

-1

가 드디어 일을 뭔가를 발견했다.

public static <E extends Comparable<E> > E getLargestElement(E[] list) { 
     E max = list[0]; // set first value in array as current max 
     for(int i = 1; i < list.length; i++) { 
      if(list[i].compareTo(max) > 0) { 
       max = list[i]; 
      } 
     }// end for 
     return max; 
    } 

다른 답변 및 사용하려는 방법이 0을 계속 반환하는 이유는 누구에게 설명 할 수 있습니까? 그것은 나에게 소리가 나는 것처럼 보였고 당신의 대답은 모두했지만 작동하지 않았습니다.