像表格一样格式化 Java 输出

2024-01-04

我试图以类似表格的格式输出有关我的程序存储的学生的信息,因为 \t 并不总是提供正确的间距。为了做到这一点,我遇到了这个问题 https://stackoverflow.com/a/2745239/1692226并尝试启用类似的解决方案。但是,当我尝试这样执行代码时,我在代码中的格式行中遇到了错误。

public void displayStudents (){
    System.out.println ("\n-----------------------------");
    System.out.println ("Email System - Display Students");
    System.out.println ("-----------------------------");
    System.out.format("%10s%15d%15s%15s%20s", "Grade", "Last Name", "First Name", "Student Number", "Parent Email");

    StudentNode current = top;
    while (current != null){
        Student read = current.getStudentNode();
        System.out.format ("%10s%15d%15s%15s%20s", ""+read.getClass(), read.getLastName(), read.getFirstName(), ""+read.getStudentNum(), read.getParentEmail());
        //This will output with a set number of character spaces per field, giving the list a table-like quality
    }
}//End of displayStudents

The goal of the code is to output in a manner similar to the following image. enter image description here

请帮助我找出我的错误。也许有另一种方法可以执行此操作吗?

Thanks.

编辑:我收到的错误是

GradeException in thread "main" java.util.IllegalFormatConversionException: d != java.lang.String
at java.util.Formatter$FormatSpecifier.failConversion(Unknown Source)
at java.util.Formatter$FormatSpecifier.printInteger(Unknown Source)
at java.util.Formatter$FormatSpecifier.print(Unknown Source)
at java.util.Formatter.format(Unknown Source)
at java.io.PrintStream.format(Unknown Source)
at StudentList.displayStudents(StudentList.java:184)
at OnlineCommunications.emailOption(OnlineCommunications.java:403)
at OnlineCommunications.main(OnlineCommunications.java:451)

需要注意的是,Grade 是整数,Long 是双精度数。


错误是因为%d用于数字非浮点值(int, long, etc).

在打印标题的行中,您必须使用%XXs(其中 XX 是数字)因为您通过了Strings 作为参数:

System.out.format("%10s%15s%15s%15s%20s",
    "Grade", "Last Name", "First Name", "Student Number", "Parent Email");

在里面的行中while-loop,你需要设置%d为了int and long变量,例如年级和学号,无需将其转换为String using "" + intProperty:

System.out.format ("%10d%15s%15s%15d%20s",
    read.getClass(), read.getLastName(), read.getFirstName(),
    read.getStudentNum(), read.getParentEmail());

由于您似乎想要将输出格式化为左侧(而不是右侧),因此您应该在 XX 数字之前添加一个连字符 (-):

//similar for title
System.out.format ("%-10d%-15s%-15s%-15d%-20s",
    read.getClass(), read.getLastName(), read.getFirstName(),
    read.getStudentNum(), read.getParentEmail());

注意:我假设read.getClass() and read.getStudentNum()将返回Grade and Student number值作为int or long.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

像表格一样格式化 Java 输出 的相关文章

随机推荐

  • 使用 Rails 进行应用程序测试

    这更多的是一个一般性问题和某种最佳实践讨论 如何测试 Rails 应用程序 有 BDD 和 TDD 之类的口头禅以及 RSpec 和 Cucumber 之类的框架 但多少才足够 最好的方法是什么 使用 Cucumber 作为集成测试就足够了
  • 我可以将 Microsoft.Maui.Storage.Preferences 抽象为 MAUI 中的 IPreferences

    我正在编写一个 NET MAUI 应用程序 我想使用在我的 ViewModel 中 但是不希望将我的 ViewModel 绑定到静态Preferences类 否则很难测试 所以我注意到有一个IPreferences接口 但我不知道它的目的是
  • 使用 dotCover 时测试结果不一致

    我有一些带有单元测试的代码 这些代码在调试版本中通过 但在发布版本中失败 这是正确的 但是 当使用 JetBrains dotCover 运行时 相同的测试可以在调试和发布模式下通过 为了提供一些背景知识 这里是有问题的测试代码 只是为了让
  • iPhone应用程序允许背景音乐继续播放

    当我启动 iPhone 游戏时 一旦有声音播放 背景音乐或正在播放的播客就会停止 我注意到其他游戏允许背景音频继续播放 这怎么可能 我需要重写应用程序委托中的方法吗 将此行放入您的application didFinishLaunching
  • 为什么我不能从模板函数调用模板类的模板方法[重复]

    这个问题在这里已经有答案了 可能的重复 令人困惑的模板错误 https stackoverflow com questions 3786360 confusing template error 我有一个带有模板方法的模板类 现在我有另一个函
  • RabbitMQ 连接被拒绝 127.0.0.1:5672

    我正在准备一个简单的 ASP NET Core MVC Web 应用程序 我已经在我的笔记本电脑上安装了 RabbitMQ 服务器 RabbitMQ 管理 UI 正在运行localhost 15672 Rabbitmq 集群名称如下 ema
  • Rails 3 渲染视图没有动作

    我定义了特定操作的路线并创建了一个链接 我也创建了相应的视图 但没有代码定义控制器操作方法 单击链接后仍然会呈现视图 也就是说 视图是在实际不存在动作的情况下呈现的 有什么解释吗 是的 即使不存在相应的操作 视图也会被渲染 它会像为其定义的
  • .gitignore 不会忽略“git status”上带有空格的文件名

    当我做一个git status I get modified COM config Config Edit Project Settings lnk 但在我的 gitignore 中我有 lnk 这里发生了什么 会不会是空格的问题 问题不在
  • Cordova 的 FileTransfer 写入错误(代码 1)

    我正在使用 Android 版 Cordova 4 2 0 我有一些麻烦要解决文件传输插件 https github com apache cordova plugin file transfer好好工作 我认为有一个书写错误 except
  • 遗传算法中的轮盘赌选择。需要先对人口进行排序吗?

    在遗传算法中 当使用轮盘赌选择方法选择交叉成员时 是否需要首先按适应度等级对群体进行排序 可能性似乎是 首先按适应度升序对人口进行排序 按适应度降序对人口进行排序 不要对人口进行排序 让轮盘赌球落到它可能落下的地方 我认为无论哪种方式排序都
  • Xamarin.Android Intellisense 无法在 Visual Studio 2010 中工作

    我正在 Visual Studio 2010 中测试 Xamarin Android 并注意到在处理 Android 布局 axml 文件时没有 Android Intellisense 但是 当我处理 cs 文件时 我确实获得了 Andr
  • 在 Ionic 3 中定义模型的正确方法

    在 Ionic 3 中使用 getter 和 setter 定义模型的正确方法是什么 我跟着这个 export class ItemModel private name string constructor private n string
  • 封装 Ruby 函数

    我希望能够完全透明地包装任何 Ruby 过程 包括我自己没有编写源代码的过程 并记录其执行时间 my proc 也就是说 我想创建一个调用的过程my proc保存 上下文 接收者 论点 块 并打印出调用时的执行时间 例如 my proc p
  • 为什么 C# 中基类规范的含义不能递归地依赖于自身?

    以下 C 代码无法编译 public class A public interface B public class C A C B Error given here The type name B does not exist in th
  • WebResource.axd 和 ScriptResource.axd 加载时间超过 1 分钟

    我有个问题 有时 WebResource 和 ScriptResource 需要很长时间才能加载 超过 1 分钟 我们在一个集群中有多个节点 请注意 如果您在出现此问题之前打开了浏览器会话 则 axd 文件加载速度相当快 但新会话加载这些文
  • Spring数据休息@ManyToOne字段不以json形式出现

    我正在使用 Spring Boot Spring Data JPA 和 Spring Data Rest 技术开发一个 Web 项目 我能够成功设置所有内容并能够获取简单 POJO 的 JSON 我自定义了两个类以具有 OneToMany
  • 内联函数中 __LINE__ 的行为

    我有一个将行号和文件名传递给错误处理程序的宏 define SYSTEM FAILURE error code comment System Failure error code comment LINE FILE 如何将 LINE 在内联
  • Spring Rest API 和身份验证的自定义错误对象

    我有一个 Spring Boot Rest API 项目 我正在考虑如何更改从 Spring Boot 返回的默认错误对象 UseCase token api无需认证即可调用 其他api则通过传递token来调用 swagger UI 需要
  • 为什么我不应该混合使用制表符和空格?

    我经常读到 我不应该在 Haskell 中混合使用制表符和空格 或者我根本不应该使用制表符 为什么 问题是双重的 首先 Haskell 对缩进敏感 例如以下代码无效 example a b where a Hello b World 两个绑
  • 像表格一样格式化 Java 输出

    我试图以类似表格的格式输出有关我的程序存储的学生的信息 因为 t 并不总是提供正确的间距 为了做到这一点 我遇到了这个问题 https stackoverflow com a 2745239 1692226并尝试启用类似的解决方案 但是 当