您好我正在尝试使用NetBeans将输出与Java控制台窗口对齐。
ATM我在arraylist中有一组MP3Tracks(类)。用户能够按艺术家,专辑和放大器对音轨进行排序。通过控制台对重新排序列表进行排序后跟踪名称等:
的System.out.println(矢量);
我的MP3Track类重写toString():
@Override
public String toString(){
return(String.format("Track No: %-8s Track Title: %-25s Artist Name: %-15s Album Name: %-20s Track Length: %-10s", trackNo , trackTitle, artistName, albumName, trackLength + "\n"));
}
此解决方案适用于除第一行以外的所有行,第一行和最后一位数输出为[]。我希望所有行都排成行并在开头和结尾删除[]。我是第一年的软件工程专业的学生,这是我在Java的第一次任务,所以请原谅我的经验不足!
我非常感谢这里的一些建议。
非常感谢...
答案 0 :(得分:2)
您正在使用
打印矢量System.out.println(vector);
它调用vector
的{{1}}方法获取其String表示形式,而toString()
的Java的String表示形式的格式如下:
Collection
您可以迭代矢量并打印[element1.toString(), element2.toString, ... ]
s:
MP3Track
并删除MP3Track字符串表示结尾处的for (MP3Track mp3Track : vector) {
System.out.println(mp3Track);
}
,这样会更好。
或者,您创建一个\n
类的子类并覆盖其Vector
方法并使用它,但这将是过度杀戮的。
答案 1 :(得分:0)
您不应该依赖toString()
向最终用户提供数据。 toString
用于调试目的。大括号在那里因为数组toString
打印它们。
当您想要向用户呈现数据时,您应该使用外部查看器类,根据您的需要打印就像应该打印的内容。
这个,或者你可以创建一个委托给JavaSE集合并覆盖List
的{{1}}实现,但我真的不喜欢这种做法。
类似的东西:
toString