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

Java 如何使用compareTo()方法按字母顺序对字符串排序?,java,methods,variable-assignment,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 requi

我想弄明白这一点已经有一段时间了,但我不知道该怎么办。我必须使用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);
word1.compareTo(word2)
(更正大写字母后)返回一个
int
(您可以在文档中阅读此事实,大多数IDE也会告诉您)<代码>比较被声明为
字符
。不能将
int
分配给
char
。如果可以的话,“精确性的丧失”将是一种严重的委婉说法。一个
int
是有符号的,并且
compareTo()结果的符号告诉您两个字符串的顺序。
char
如果您认为它是一个无符号的数字(这已经是一个误用),那么它不能包含负值。因此,您将丢失刚才查询的信息

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

   int compare = word1.compareTo(word2);
(现在将声明和赋值结合起来,这通常有助于可读性。)


更高级的信息:您可以将
int
转换为
char
,这是一种转换,可能会导致上述精度损失。这不是你想要的,所以我就不提了。如果您感兴趣,可以搜索该术语。

我无法编译您的代码。在Eclipse中,我得到了类型不匹配:无法在
Compare=Word1.compareTo(Word2)行上从int转换为char。这是您所询问的同一问题的不同症状。
中的
是什么?什么是
Word1\u字母0
?什么是
Word2\u字母0
?——为什么在两个
String
对象(
Word1
Word2
)上使用的结果是
char
值(
Compare
),当它被记录为返回
int
时?仅供参考:Java命名约定是局部变量名以小写字母开头,所以它应该是
Word1
word2
比较
word1\u长度
等。欢迎使用堆栈溢出。如果您遵循Java命名约定,我们将更容易阅读您的代码(您希望我们这样做)。变量名应该以小写字母开头。我想这里的具体问题是
Word1.compareTo(Word2)
返回一个
int
,但是
Compare
是一个
char
。声明
Compare
int
。非常感谢您的帮助,我将更改我的命名约定(我不知道有什么地方出错,正如我在老师要求大写的注释中所提到的),我想我的问题是对该方法如何工作的普遍无知。(这很有趣。可能你的老师以前用C#或另一种习惯用大写字母的语言编码过。)哇,令人惊讶的解释