2016-10-05 3 views
0

나는 지금 자바를 배우고있다. 나는 SE6 날짜까지 책을 가지고있다.문자열에 대한 부울 비교

두 개의 문자열 인수를 두 문자열을 비교하고 결과를 인쇄하기 위해 모든 부울 비교를 사용하는 방법을 쓰기 : 지금 나에게 묻는 운동이있다. main(); 몇개의 다른 String 객체로 당신의 메소드를 호출하십시오. 나는

을 시도했을 때 :

public static void compare(String a, String b){ 
    System.out.println(a>b); 
} 

나는 오류가 말했다 가지고 > operator is not valid for type String

이제 내 질문입니다 -이 책은 날짜와 무엇인가 이후로 변경, 또는 내가 뭔가를 오해하고 벗어난 경우 태스크?

for (int i = 0; i < Math.max(a.length(), b.lentgh(); i++) { 
    if (a[i] < b[i]) { 
    System.out.println("a < b"); 
    return; 
    } 
    // ... 

문자열 객체가 아닌 기본 요소이며, 비교 연산자와 비교 할 수 없습니다

+0

간단히 a.equals (b)를 사용하십시오. –

+0

부울 연산자는 실제로 String 객체에는 유효하지 않으므로 거기에 놀라지 마십시오. 이 연습에서는 연산자가 아닌 부울 비교를 수행하므로 문자열 부울 메서드가 작동하는 방식 (같음, 포함, startsWith 등)을 살펴 보는 것이 상상됩니다. –

+0

>, <객체에 사용. 문자열은 Java의 객체입니다. 따라서 비교하고 싶다면 .compareTo를 사용하십시오. (Matthew 논평을 읽고 내 의견을 바로 잡았습니다.) – PKR

답변

1

나는이 작업은 문자열 비교의 자신의 구현을 제공하기위한 것, 그래서 예를 들어 한 것 같아요. compareTo (String anotherString) 메서드는 String으로 작성되어 어떤 문자열이 어휘 적으로 더 큰지에 따라 숫자를 반환합니다.

+1

assignemnt의 해석에 대한 추측을 떠나서, 적어도 max가 아닌'Math.min (a.length(), b.lentgh()) '를 사용해야한다고 생각합니다. 그렇지 않으면 StringIndexOutOfBoundsException의 위험이 커집니다 '. –

+0

물론 감사합니다! –

0

Java의 문자열에 관계 연산자 (<, < =,>,> =)를 사용할 수 없습니다. Java는 연산자 오버로딩에 의존하지 않습니다.

String을 비교하는 데 compareTo 메서드를 사용할 수 있습니다. 인수가이 문자열과 사전 식으로 같은 문자열 인 경우 값은 0입니다. 인수가이 캐릭터 라인보다 사 전적으로 큰 캐릭터 라인의 경우는 0보다 작은 값. 인수가이 캐릭터 라인보다 사 전적으로 작은 캐릭터 라인의 경우는 0보다 큰 값