初学者 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;
with
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() http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#sort%28java.lang.Object%5B%5D%29为您对字符串进行排序。从排序数组中取出第二个(索引 1)字符串即可得到中间字符串。如果您想使用不区分大小写的顺序进行排序,您可以使用Arrays.sort(array, String.CASE_INSENSITIVE_ORDER)
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)