控制台输出对齐

时间:2013-11-03 02:03:45

标签: java

enter image description here您好我正在尝试使用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的第一次任务,所以请原谅我的经验不足!

我非常感谢这里的一些建议。

非常感谢...

2 个答案:

答案 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