这里是初学者 Java 程序员。我试图将三个字符串相互比较,并让系统按字典顺序吐出第二个/中间的单词。
import java.util.*;
public class Ordered2
{
public static void main(String[] args)
{
String firstString, secondString, thirdString;
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter three different strings.");
System.out.println("The string in the middle order lexicographically will be displayed.");
firstString = keyboard.nextLine();
secondString = keyboard.nextLine();
thirdString = keyboard.nextLine();
String topString, middleString, bottomString;
if (firstString.compareTo(secondString) > 0 && (firstString.compareTo(thirdString) > 0))
{ topString = firstString; }
else if (firstString.compareTo(secondString) < 0 && (firstString.compareTo(thirdString) > 0)) {
middleString = firstString; }
else { bottomString = firstString; }
if (secondString.compareTo(firstString) > 0 && (secondString.compareTo(thirdString) > 0)) {
topString = secondString; }
else if (secondString.compareTo(firstString) < 0 && (secondString.compareTo(thirdString) > 0)) {
middleString = secondString; }
else { bottomString = secondString; }
if (thirdString.compareTo(secondString) > 0 && (thirdString.compareTo(firstString) > 0)) {
topString = thirdString; }
else if (thirdString.compareTo(secondString) < 0 && (thirdString.compareTo(firstString) > 0)) {
middleString = thirdString; }
else { bottomString = thirdString; }
System.out.println("The second string in lexicographic order: " + middleString);
}
}
这不会编译,并告诉我 middleString 尚未初始化。任何帮助将不胜感激。
最佳答案
Java 编译器不知道 if
的哪个分支语句将被执行。这意味着,如果您在一个分支中初始化变量而不是在另一个分支中初始化,则不能保证为该变量分配值。在您的代码中,所有变量当然都会被初始化,但编译器无法知道这一点,因此会出现错误。您可以将这三个初始化为 null
或空字符串。替换String topString, middleString, bottomString;
与
String topString = null;
String middleString = null;
String bottomString = null;
此外,您可能需要使用 Java 的一些内置排序功能来为您进行排序:
import java.util.*;
public class Ordered2
{
public static void main(String[] args)
{
String firstString, secondString, thirdString;
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter three different strings.");
System.out.println("The string in the middle order lexicographically will be displayed.");
firstString = keyboard.nextLine();
secondString = keyboard.nextLine();
thirdString = keyboard.nextLine();
String[] array = new String[] {firstString, secondString, thirdString};
Arrays.sort(array);
System.out.println("The second string in lexicographic order: " + array[1]);
}
}
Arrays.sort()
为您对字符串进行排序。从排序数组中取出第二个(索引 1)字符串即可得到中间字符串。如果要使用不区分大小写的顺序进行排序,可以使用 Arrays.sort(array, String.CASE_INSENSITIVE_ORDER)
.
关于Java:三个字符串,字典顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21465258/