2011-10-03 120 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为:

“在数学中,字典或词典顺序,(也被称为词汇顺序,字典顺序,字母顺序或词典(人)的产品),是方式的字母顺序的一般化的字是基于字母的字母顺序。“