【问题标题】:How to sort strings alphabetically using compareTo() method? [closed]如何使用 compareTo() 方法按字母顺序对字符串进行排序? [关闭]
【发布时间】:2020-04-09 07:44:03
【问题描述】:

我一直试图弄清楚这一点,但我不知道该怎么做。我必须使用 compareTo() 方法按字母顺序对两个不同的字符串进行排序,但是,编译器输出“可能丢失精度”,我不知道该怎么做。这是代码;

    String Word1;
    String Word2;

    char Compare;

    int Word1_Length = 0;
    int Word2_Length = 0;

    System.out.println("This event will require you to enter two words.");
    System.out.println("PLEASE ENTER THE FIRST WORD");

    Word1 = in.readLine();
    Word1_Length = Word1.length();
    System.out.println(Word1_Length);
    Word1_Letter0 = Word1.charAt(0);
    System.out.println(Word1_Letter0);

    System.out.println("PLEASE ENTER THE SECOND WORD");

    Word2 = in.readLine();
    Word2_Length = Word2.length();
    System.out.println(Word2_Length);
    Word2_Letter0 = Word2.charAt(0);
    System.out.println(Word2_Letter0);

    Compare = Word1.compareTo(Word2);

    System.out.println(Compare);

【问题讨论】:

  • 我无法编译你的代码。在我的 Eclipse 中,我在行 Compare = Word1.compareTo(Word2); 上得到 Type mismatch: cannot convert from int to char。这是您询问的同一问题的不同症状。
  • 什么是inWord1_Letter0 是什么? Word2_Letter0 是什么? --- 你为什么认为在两个String 对象(Word1Word2)上使用compareTo() 的结果是char 值(Compare),当它被记录 i> 返回int?
  • 仅供参考: Java 命名约定是局部变量名称以小写字母开头,因此应为word1word2compareword1_Length 等。
  • 欢迎来到 Stack Overflow。如果您遵循 Java 命名约定,我们将更容易阅读您的代码(您希望我们这样做)。变量名应以小写字母开头。
  • 我想这里的具体问题是Word1.compareTo(Word2) 返回一个int,但Compare 是一个char。将Compare 声明为int

标签: java methods variable-assignment


【解决方案1】:

word1.compareTo(word2)(更正大写字母后)返回 int(您可以在文档中阅读这一事实,大多数 IDE 也会告诉您)。 compare 被声明为 char。您不能将int 分配给char。如果可以的话,“失去精确性”将是一种严重的委婉说法。 int 已签名,compareTo() 结果的符号告诉您两个字符串的顺序。 char 如果您认为它是一个数字(这已经是一个误用),它是无符号的,它不能保持负值。因此,您将丢失刚刚查询的信息。

正如 cmets 中所说,一个解决方案是声明 compareint

   int compare = word1.compareTo(word2);

(现在结合了声明和赋值,这通常有助于提高可读性。)

更高级的信息:您可以将int转换char,这是一种导致上述精度可能损失的转换。这不是你想要的,所以我先提一下。有兴趣的可以搜索下这个词。

【讨论】:

  • 非常感谢您的帮助,我将更改我的命名约定(我不知道有什么问题,正如我在 cmets 中提到的,我的老师要求大写),我想我的问题是一般性的对方法的功能一无所知。
  • (这很有趣。可能你的老师已经编写过 C# 或其他以前习惯使用大写的语言。)
  • 哇哇惊人的解释????
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-03
  • 2013-10-28
  • 2013-09-12
  • 1970-01-01
  • 2013-09-04
  • 1970-01-01
  • 2012-03-16
相关资源
最近更新 更多