我已经尝试了好一阵子了,但是我却无所适从。我必须使用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);
答案 0 :(得分:0)
word1.compareTo(word2)
(更正大写字母后)将返回int
(您可以在文档中阅读此事实,大多数IDE也会告诉您)。 compare
被声明为char
。您无法将int
分配给char
。而且,如果可以的话,“失去精确性”将是一种严重的委婉说法。 int
被签名,compareTo()
结果的符号告诉您两个字符串的顺序。 char
如果您认为它是一个数字(已经是滥用),则该数字不能为负值。这样一来,您将丢失刚刚查询的信息。
正如评论中所说,解决方案是将compare
声明为int
:
int compare = word1.compareTo(word2);
(现在结合了声明和赋值,通常可以提高可读性。)
更多高级信息:您可以将int
投射到char
,这是一种转换,可能会导致精度损失。这不是您想要的,因此我在此一提。如果您有好奇心,可以搜索该词。