我一直在寻找这个答案,过去2个小时没有运气,所以我现在正在发布我的问题。我很抱歉,如果它与已经问过的人类似,但我无法从已经回答的内容中得到明确答案。
这里是:
我正在做一个学校项目,我们在这个项目中阅读"计算机"对象(这种形式总共有8个字段:manufacturer:model:memory:diskMemory:CPU:opticalDrive:OSVersion:RetailPrice
)
读取文件后,您应该使用接受所有上述参数(分离)的构造函数分隔字段并构造计算机对象数组,并将它们的引用存储在数组的每个位置。
这是我的问题所在: 然后你显示一个菜单,用户选择一个选项,最简单的只是在JOPtionPane上显示以下表格中的计算机对象列表:
Manufacturer1 model1 memory1 disk1 CPU1 optical1 OS1 retailPrice1
Manufacturer2 model2 memory2 disk2 CPU2 optical2 OS2 retailPrice2
等等,直到你完成数组。我无法弄清楚如何将对象数组压缩成上面形式的单个字符串。 Computer类为每个字段都有一个getMethod,我只是难以让它们以这种方式对齐。它必须是JOPtionPane上的简单.INFORMATION_MESSAGE类型。如果你们都需要看到计算机类代码让我知道,我可以发布它。这是我第一次在本网站发帖,所以如果形式不正确,我会道歉。
非常感谢你的帮助, 鲍勃
编辑: 这是输出应该是这样的: http://i229.photobucket.com/albums/ee38/Yukijin-Uchiha/ScreenShot2014-03-14at113759AM_zps05b5dbb5.png
答案 0 :(得分:4)
如果您正确实施Computer
类toString()
功能,您应该得到您想要的。例如:
public class Computer {
public String toString() {
return (new StringBuilder(getManufacturer()).append(":").
append(getModel()).append(":").
append(getMemory()).append(":").
append(getDiskMemory()).append(":").
append(getCPU()).append(":").
append(getOpticalDrive()).append(":").
append(getOSVersion()).append(":").
append(getRetailPrice()).
toString();
}
}
然后用
调用它String computerObjAsString = aComputerInstance.toString();
使用Computer
个对象数组执行此操作:
StringBuilder outBldr = new StringBuilder();
for(Computer cmptr : anArrayOfComputers) {
outBldr.append(cmptr).append(System.getPropetry("line.separator", "\r\n"));
}
System.out.println(outBldr);
答案 1 :(得分:1)
您应该覆盖计算机对象中的toString()
方法,以包含要打印的详细信息。然后,对于数组中的每个Computer对象,请调用<object name>.toString()
以显示相应的信息。
public class Computer {
private String name;
private String type;
public Computer(String n, String t) {
this.name = n;
this.type = t;
}
public String toString() {
return "Name: " + this.name + " Type: " + this.type;
}
public static void main(String[] args) {
Computer c = new Computer("atari","old-school");
System.out.println(c.toString());
}
}