【问题标题】:Java using compareTo with an array of stringsJava 使用带有字符串数组的 compareTo
【发布时间】:2026-02-07 02:05:02
【问题描述】:

我想知道 compareTo 方法是只查看字符串的长度还是查看字符串的每个字符?

如果它只查看长度,我将如何比较字符串数组中的两个元素以查看哪个元素更大。

我想做的是编写一个方法,递归地查看数组的右侧、中间和左侧,并返回数组中最长字符串的索引。

我可以正常工作,唯一的问题是当有两个相同长度的字符串时,它会返回第一个。

只是澄清 compareTo 方法如何看待字符串将帮助我解决我认为的这个问题

数字字符串如何按字典顺序比较? 17 会比 15 大吗?

【问题讨论】:

  • 只看长度并不能真正实现文档所说的,对吗?
  • 您可能会发现 [文档](download.oracle.com/javase/6/docs/api/java/lang/… 很有帮助。如果您只想比较字符串长度,那么您可能会发现 length()compareTo() 更有用。
  • 不,它必须查看每个字符,我不确定 compareTO 是否可以
  • 所以你想要最长的字符串。但是当两个字符串的长度相同时,它会返回第一个。但这不是你想要的。所以你希望它返回第二个,而不是第一个?!?

标签: java arrays string


【解决方案1】:

compareTo 用于字符串是按字典顺序完成的。 (或按字母顺序)它不比较字符串的长度。

如果 A 按字母顺序在 B 之前,则 A 小于 B。

如果要比较字符串的长度,可以从.length()方法中获取长度,并以整数进行比较。

编辑:

按字典顺序由 ASCII/UNICODE 值完成。

因此,在您的示例中,17 大于 15。因为1 相同(平局),并且7 的ASCII/UNICODE 值高于5

【讨论】:

    【解决方案2】:

    compareTo 将比较两个字符串的字母(字典)顺序。

    documentation here.

    【讨论】:

    • 它实际上告诉了细节,为了深入研究你可以查看字符串源代码。
    【解决方案3】:

    我想知道 compareTo 方法是只查看字符串的长度还是查看字符串的每个字符?

    它(可能)查看字符串中的每个字符。当然不只看长度。

    如果它只查看长度,我将如何比较字符串数组中的两个元素以查看哪个元素更大。

    没有,所以这个问题没有实际意义。

    我想做的是编写一个方法,递归地查看数组的右侧、中间和左侧,并返回数组中最长字符串的索引。

    我可以正常工作,唯一的问题是当有两个相同长度的字符串时,它会返回第一个。

    我们需要查看您的代码才能了解实际出了什么问题,但这很可能不是是由 String.compareTo(String) 的语义上的一些奇怪引起的

    数字字符串如何按字典顺序比较? 17 会比 15 大吗?

    是的,它确实按字典顺序比较字符串。是的,“17”会大于“15”。 (但是如果你也比较数字字符串,“17”会大于“15”。另一方面,“7”在字典上大于“13”,但在数字上小于它。)

    也许您需要阅读“字典顺序”的含义;*summarizes it 为:

    “在数学中,字典顺序或字典顺序(也称为词汇顺序、字典顺序、字母顺序或字典(al)乘积)是单词的字母顺序基于的方式的概括字母的字母顺序。”

    【讨论】:

      最近更新 更多