2011-10-11 7 views
1

다른 작업을 수행해야하며, 작업은 compareTo 메소드를 사용하여 알파벳순으로 3 개의 문자열을 정렬하는 것입니다. 기본적으로이 프로그램은 테스터 클래스에서 3 개의 문자열 (a, b 및 c)을 받고 "getMin", "getMiddle"및 "getMax"를 반환합니다.Java, 배열없이 알파벳 순으로 정렬

나는 getmin과 max를 알아 냈지만, 쉬운 것 같지만, getMiddle에 문제가있다.

 String min = ""; 
    if (a.compareTo(b) <= 0 && a.compareTo(c) <= 0) min = a; 
    else if (b.compareTo(a) <= 0 && b.compareTo(c) <= 0) min = b; 
    else if (c.compareTo(b) <= 0 && c.compareTo(a) <= 0) min = c; 
    return min; 

유사 약간 다른 GET 최대에 대한

을 : 이 난 최소 및 최대를 위해이 것입니다. 어떻게하면 getMiddle을 만들 수 있습니까? 또한 아직 "배웠지"않은 배열을 사용할 수 없습니다. 교수는 중도에 대한 코드가 약 5-6 줄이어야한다고 말했다.

감사

compareTo 메소드의
+0

왜 '인터뷰 질문'으로 태그가 지정 되었습니까? –

답변

6

곱하기 리턴 값. 값이 중간 인 경우 compareTo 메소드의 결과에는 다른 부호가 있습니다. 곱하기 결과가 0이거나 음수 부호가 있습니다.

String getMiddle(String a,String b,String c) 
{ 
    String middle = ""; 
    if (a.compareTo(b)*a.compareTo(c) <= 0) middle = a; 
    else if (b.compareTo(a)*b.compareTo(c) <= 0) middle = b; 
    else if (c.compareTo(b)*c.compareTo(a) <= 0) middle = c; 
    return middle; 
} 
+0

아, 정말 감사합니다, 꽤 똑똑한 것, 그다지 생각하지 못했습니다.) – Cody

1
String middle = ""; 
    if (a.compareTo(b) <= 0 && a.compareTo(c) >= 0) middle = a; 
    else if (b.compareTo(a) <= 0 && b.compareTo(c) >= 0) middle = b; 
    else if (c.compareTo(b) <= 0 && c.compareTo(a) >= 0) middle = c; 
    return middle; 
+0

yah하지만 간단하지는 않지만, 무엇을 제외하고 무엇을 시도했는지 'if (a.compareTo (c) <= 0 && a.compareTo (b)> = 0) middle = a; ' thats도 가능합니다. 다른 두 변수에 대해 : ( – Cody

1

그것을 당신의 방법을 수행, 그 결과는 다음과 같습니다

if  (a.compareTo(b) > 0 && a.compareTo(c) <= 0) middle = a; 
else if (a.compareTo(c) > 0 && a.compareTo(b) <= 0) middle = a; 
else if (b.compareTo(a) > 0 && b.compareTo(c) <= 0) middle = b; 
else if (b.compareTo(c) > 0 && b.compareTo(a) <= 0) middle = b; 
else middle = c; 
return middle 

글쎄, 그 뒤에 일반 요점입니다. 더 적은 수의 라인으로이 중 일부를 결합 할 수는 있지만, 나는 당신에게 맡길 것입니다.

+0

yh 내가 아는 것은, 내가 뭘 시작했는지 알지만 코드의 권장 라인을 약간 넘는 것입니다. 방법 ivorycirrus는 그것이 나이었다고 생각하는 것이 정확했다. – Cody

0

이합니다 ... mid..haven't 그것이 라인 예측의 수로서, 나는 어쨌든 ... 아주 잘 충족 확실하지 않다, 또한 thorougly..and 테스트를 제공

String mid = ""; 
    if (a.compareTo(b) <= 0) { 
     if (b.compareTo(c) <= 0) mid = b; 
     else mid = c;} 
    else if(a.compareTo(c) <= 0) mid = a; 
    else mid = c; 
    return mid; 
1

왜 그렇게 복잡합니까? 을 사용하면 TreeSet을 사용하며 내부적으로 compareTo()를 사용합니다.

+0

yah 그러나 우리는 아직 배웠다. 그래서 우리는 실제로 그것을 사용하지 않는다. – Cody

0

추가 한 후에 데이터를 정렬하기 때문에 TreeSet 만 사용합니다.

+0

yah 그러나 우리는 아직 그것을 배웠지 않았다. 그래서 우리는 정말로 그것을 사용한다. – Cody

관련 문제