如何使用 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);
(现在结合了声明和赋值,这通常有助于提高可读性。)
更多高级信息:您可以将 转换为 int
为 char
,这是一种转换,给出了上述 可能的损失精度。这不是你想要的,所以我把它放在一边。有兴趣的可以搜索这个词
我已经尝试解决这个问题很长一段时间了,但我不知所措。我必须使用 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);
(现在结合了声明和赋值,这通常有助于提高可读性。)
更多高级信息:您可以将 转换为 int
为 char
,这是一种转换,给出了上述 可能的损失精度。这不是你想要的,所以我把它放在一边。有兴趣的可以搜索这个词