gpt4 book ai didi

java - 像表格一样格式化 Java 输出

转载 作者:行者123 更新时间:2023-12-03 21:35:39 27 4
gpt4 key购买 nike

我试图以类似表格的格式输出我的程序存储的有关学生的信息,因为\t 并不总是提供正确的间距。为此,我遇到了 this question并尝试启用类似的解决方案。但是,当我尝试这样执行它时,我的代码中的格式行出现错误。

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

代码的目标是以类似于下图的方式输出。 enter image description here

请帮助我找出我的错误。是否有替代方法可以执行此操作?

谢谢。

编辑:我得到的错误是

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是double。

最佳答案

错误是因为%d 是数字非浮点值(intlong 等)。

在打印标题的行中,您必须使用 %XXs(其中 XX 是一个数字),因为您将 Strings 作为参数传递:

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

while-loop里面的那一行,你需要为intlong设置%d > 变量,如年级和学号,无需使用 ""+ intProperty 将其转换为 String:

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()read.getStudentNum() 会返回 GradeStudent number 值为 intlong

关于java - 像表格一样格式化 Java 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15052235/

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