如何将对象数组合并为单个格式化的String

时间:2014-03-14 15:19:33

标签: java arrays string swing

我一直在寻找这个答案,过去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

2 个答案:

答案 0 :(得分:4)

如果您正确实施ComputertoString()功能,您应该得到您想要的。例如:

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());
   }
}