2016-10-05 102 views
0

我正在學習java。我有一本高達SE6日期的書。 現在有詢問我的練習:字符串上的布爾比較

編寫需要兩個字符串參數,並使用所有布爾比較來比較兩個字符串並打印結果的方法。在main();用一些不同的String對象調用你的方法。

當我想:

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

我有錯誤說> operator is not valid for type String

現在我的問題是 - 如果這本書是過時和東西改變了,還是我誤解的東西任務?

+0

只需使用a.equals(b) –

+0

布爾運算符對於String對象實際上是無效的,所以沒有什麼意外。這個練習沒有布爾比較,而是運算符,所以我想象的目的是看看字符串布爾方法如何工作(等於,包含,startsWith等) –

+0

我不能在對象上使用>,<。字符串是Java中的一個對象。因此,如果您想比較,請使用.compareTo。 (在閱讀Matthew評論後糾正了我的評論) – PKR

回答

1

我想這項任務旨在爲您提供自己的字符串比較的,因此,例如:

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

字符串是對象,不是基本類型,並且不能與比較運算符進行比較。在String中有一個compareTo(String anotherString)方法,它返回一個數字,這取決於哪個字符串在詞法上更大。

+1

暫且拋開對於委託人解釋的猜測,我想你應該至少使用'Math.min(a.length(),b.lentgh())'而不是max,否則存在'StringIndexOutOfBoundsException '。 –

+0

當然,謝謝! –

0

您不能在Java中的Strings上使用關係運算符(<,< =,>,> =)。 Java不依賴於運算符重載。

可以使用compareTo方法比較字符串: 如果參數是一個字符串,按字典順序等於此字符串,則值爲0;如果參數是按字典順序大於此字符串的字符串,則值小於0;如果參數是按字典順序小於此字符串的字符串,則值大於0。