gpt4 book ai didi

Java:三个字符串,字典顺序

转载 作者:行者123 更新时间:2023-11-30 07:11:10 27 4
gpt4 key购买 nike

初级 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com