2011-10-03 115 views
0

我想知道compareTo方法是隻查看字符串的長度還是查看字符串的每個字符?Java使用compareTo與字符串數組

如果它只是看長度我怎麼能比較字符串數組中的兩個元素來查看哪個元素更大。

我試圖做的是編寫一個遞歸查看數組右側,中間和左側的方法,並返回數組中最長字符串的索引。

我有它正常工作,唯一的問題是當有兩個相同長度的字符串,它返回第一個。

只是澄清compareTo方法如何看待弦會幫我解決這個問題,我覺得

如何爲一串數字比較lexographically? 17會比15大嗎?

+0

只看長度並不能真正達到文檔所說的那樣嗎? –

+1

你可能會發現[documentation](http://download.oracle.com/javase/6/docs/api/java/lang/String.html#compareTo(java.lang.String)有幫助。如果你只是想比較字符串的長度,那麼你可能會發現'length()'比'compareTo()'更有用。 – aroth

+0

不,它將不得不看看每個字符是什麼我不知道如果compareTO做 – alexthefourth

回答

0

compareTo字符串按字典順序完成。 (或按字母順序)它不會比較字符串的長度。

A小於B如果A字母B.

如果要比較一個字符串的長度之前,你可以從.length()方法的長度,並將其與作爲一個整數。

編輯:

字典順序由ASCII/Unicode值完成。

因此在您的示例中,17大於15。因爲1是相同的(一個並列),並且7具有比5更高的ASCII/UNICODE值。

0

compareTo將比較字符串的字母順序(字典順序)。

documentation here.

+0

它實際上告訴細節深入研究,您可以查看字符串源代碼。 – Vacker

0

我在想,如果compareTo方法着眼於弦的只是長度,或者如果它看起來在字符串中的每個字符?

它(可能)會查看字符串中的每個字符。它當然不僅僅看長度。

如果它只是看長度我怎麼能比較字符串數組中的兩個元素來查看哪個元素更大。

它沒有,所以這個問題是沒有意義的。

我試圖做的是編寫一個遞歸查看數組右邊,中間和左邊的方法,並返回數組中最長字符串的索引。

我有它正常工作,唯一的問題是當有兩個相同長度的字符串,它返回第一個。

我們就需要看你的代碼明白什麼是真正去錯,但它是最有可能一些陌生感在String.compareTo(String)

怎麼辦串的語義造成的數字比較詞彙學? 17會比15大嗎?

是的,它按字典順序比較字符串。是「17」會比「15」大。 (但是如果你比較字符串的話,「17」也會大於「15」;另一方面,「7」在詞典上大於「13」,但數字上小於它)。

也許你需要閱讀了解「字典順序」的含義;維基百科summarizes it爲:

「在數學中,字典或詞典順序,(也被稱爲詞彙順序,字典順序,字母順序或詞典(人)的產品),是方式的字母順序的一般化的字是基於字母的字母順序。「