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

2024-03-01

初学者 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(使用前将#替换为@)

Java:三个字符串,字典顺序 的相关文章

随机推荐

  • 从 picasso 获取图像 uri?

    我有一个相当大的图像 URL 列表 我用它来加载ViewPager使用毕加索 我需要能够通过意图为这些图像提供共享功能 最终通过共享操作提供者 http developer android com guide topics ui actio
  • 从扫描的 GS1 类型条形码中提取信息

    我还想从扫描的 GS1 条形码消息中确定产品信息 例如描述 制造商和有效期 我怎样才能做到这一点 获取以 GS1 应用标识符标准格式存储数据的 GS1 类型条形码所表示的信息涉及两个过程 萃取通过扫描符号获得的 GS1 结构数据中包含的数据
  • CSS Jquery 垂直导航菜单与水平子菜单

    我想创建一个像这样的导航菜单 main item1 main item2 sub item1 sub item2 sub item3 main item3 main item4 我现在看到的是这样的 main item1 main item
  • 在 ASP.NET Boilerplate 中上传图像

    发布图片时 HttpContext Current Request is null 有什么简单的方法可以实现这一目标吗 我在用dropzone js在客户端 项目是带有 Web API ASP NET Core 2 0 模板的 Angula
  • yii2 在 gridview 中更改控制器操作

    我有 ItemController 并在 actionView 中放置了 Itempicture 的 gridview 我希望当我单击图标视图时 更新和删除 然后转到 ItempictureController 那么如何使用不同的控制器更改
  • Unicode - VARCHAR 和 NVARCHAR

    Creating Table Create Table Test1 id Varchar 8000 Inserting a record Insert into Test1 Values 我們的鋁製車架採用最新的合金材料所製成 不但外型輕巧
  • 在浏览器中呈现终端输出

    我有一个文件 其中包含用以下命令捕获的一堆终端日志screen公用事业 这是一个片段 A 0m 27m 24m J 34m 39m base 38 5 242mbase 39m 35m 39m 133 B K 1l gt 2004l A 0
  • 使用 jQuery 离开页面

    我只有一个可用的相对链接 但我想使用 jQuery 导航到这个相对链接 我只在 jQuery 中看到 AJAX 功能 我如何使用 jQuery 或纯 HTML JavaScript 来做到这一点 window location href s
  • Xcode 脚本上的相对路径

    我正在尝试使用 Xcode 运行脚本 但有几个问题 1 Xcode 说将脚本拖放到运行脚本部分 但这会创建一个绝对路径 Users Me Desktop Project etc 如果其他人或 CI 机器检查了代码 这显然是没有用的 如何指定
  • C++ 开关仅适用于整型的理由是什么? [复制]

    这个问题在这里已经有答案了 我觉得C 应该允许switch 超过任何可以比较的类型 而不仅仅是整数类型 看起来很奇怪的是 switch myEnum case myEnumValue1 break case myEnumValue1 bre
  • 创建一个基于查询字符串重定向或使用 .htaccess 的 PHP 页面

    我购买了重力形式 WordPress 插件 但遇到了一个问题 它无法根据用户的输入将用户重定向到特定的 URL 然而 一位开发人员确实告诉我 它具有重定向到页面并根据输入引入查询字符串的功能 我需要做的就是在页面上使用 PHP 根据查询字符
  • 在 Chrome 中选择相同文件时,FileReader onload 不会被触发

    FileReader onload当用 Chrome 选择同一个文件时 第二次不会被触发 而 FireFox 总是会被触发 function uploadCover input if input files input files 0 va
  • 什么是带有 activesupport time_zone 的“循环参数引用”错误?

    我是 ruby on Rails 的新手 我正在尝试创建一个教程 我执行的时候遇到问题rake db migrate hugo ubuntu pin board rake db migrate home hugo rvm gems ruby
  • 如何将构建过程参数放入TFS中的类别中?

    当我打开构建定义时 我可以看到参数被分成带有数字前缀的部分 例如1 基本 2 其他等 但是 当我编辑 xaml 时 没有指示这些类别的定义位置 有人可以提供一些关于它们在参数列表中的位置的指导吗 这是一个类似的问题 只是发布者询问了基于构建
  • 如何以react hook形式验证密码并确认密码?反应钩子形式是否有任何验证属性和消息来显示错误?

    实际上 我尝试验证表单并卡住以验证密码并确认密码 中是否有任何属性useForm在最新版本中验证密码并以反应钩子形式显示消息 请帮忙 实际上 我尝试验证表单并卡住以验证密码并确认密码 中是否有任何属性useForm在最新版本中验证密码并以反
  • 如何读取 csv django http 响应

    在视图中 我使用简单的 csv writer 创建一个完全由 csv 组成的 Django HttpResponse 对象 response HttpResponse content type text csv response Conte
  • 为什么vite中不能使用reflect-metadata

    import reflect metadata function validate target any let paramtypes Reflect getMetadata design paramtypes target console
  • 以特殊格式收集存储库中所有分支的列表 [Git]

    有没有办法收集存储库中的分支列表以及最后提交日期 换句话说 我想将这样的内容打印到标准输出 branch name 1 date1 branch name 2 date2 branch name 3 date3 是否可以 EDIT 我尝试使
  • PermissionError: [Errno 13] 权限被拒绝 Flask.run()

    我正在使用 python 3 运行 MacOS X 文件夹和文件有 755 但我也在 777 中测试过它 但没有成功 我的问题是 如果我有正确的权限 为什么它不允许我在没有 sudo 的情况下运行 还是我的设置不正确 cris mbp Pr
  • Java:三个字符串,字典顺序

    初学者 Java 程序员在这里 我试图将三个字符串相互比较 并让系统按字典顺序吐出第二个 中间的单词 import java util public class Ordered2 public static void main String