如何使用 compareTo() 方法按字母顺序对字符串进行排序?

How to sort strings alphabetically using compareTo() method?

我已经尝试解决这个问题很长一段时间了,但我不知所措。我必须使用 compareTo() 方法按字母顺序对两个不同的字符串进行排序,但是,编译器输出 "possible loss of precision",我不知道该怎么做。这是代码;

    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);

word1.compareTo(word2)(纠正大写后)returns 和 int(您可以在文档中阅读这个事实,大多数 IDE 也会告诉您)。 compare 被声明为 char。您不能将 int 分配给 char。如果可以的话,“精度损失”将是一个严重的委婉说法。一个int是有符号的,compareTo()结果的符号告诉你两个字符串的顺序。 char 如果您将其视为一个数字(这已经是一种误用)是无符号的,则它不能包含负值。所以你会丢失你刚刚查询的信息。

如评论中所述,解决方案是声明 compare 一个 int:

   int compare = word1.compareTo(word2);

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

更多高级信息:您可以将 转换为 intchar,这是一种转换,给出了上述 可能的损失精度。这不是你想要的,所以我把它放在一边。有兴趣的可以搜索这个词