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

时间:2019-12-16 20:00:23

标签: java methods variable-assignment

我已经尝试了好一阵子了,但是我却无所适从。我必须使用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);

1 个答案:

答案 0 :(得分:0)

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

正如评论中所说,解决方案是将compare声明为int

   int compare = word1.compareTo(word2);

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

更多高级信息:您可以将int 投射到char,这是一种转换,可能会导致精度损失。这不是您想要的,因此我在此一提。如果您有好奇心,可以搜索该词。