巧用重写toString的方法,输出格式的问题留给java帮我解决吧~

来源:互联网 发布:人工智能电影天堂 编辑:程序博客网 时间:2024/04/30 05:40

 

 

 

 

 

 

 

 

用动态数组ArrayList实现上面效果。看似简单其实也的确不难,不过有些细节可能会被忽略。

我刚看到的时候也没太在意每组数据间的小箭头,一股脑的想到去用动态二维数组来实现,因此写下了下面的代码,不过还好因此知道了用ArrayLIst模拟实现动态数组的方法,不过就是觉得有点麻烦,实际上不知道能不能派上用场。

import java.util.ArrayList;
public class MailAddressTest
{
 public static void main(String [] argv)
 {
  ArrayList mailObjx=new ArrayList();
  {
   ArrayList mailObjy=new ArrayList();
      mailObjy.add("Name : ");
      mailObjy.add("Street : ");
      mailObjy.add("City : ");
      mailObjy.add("Country : ");
      mailObjy.add("PinCode : ");
      mailObjx.add(mailObjy);
  }
  {
   ArrayList mailObjy=new ArrayList();
      mailObjy.add("David Clarke");
      mailObjy.add("10 Downing Street");
      mailObjy.add("LondonState:London");
      mailObjy.add("United Kingdom");
      mailObjy.add("110022");
      mailObjx.add(mailObjy);
  }
  {
   ArrayList mailObjy=new ArrayList();
      mailObjy.add("John Lenon");
      mailObjy.add("12 Park Avenue");
      mailObjy.add("Californiastate:California");
      mailObjy.add("USA");
      mailObjy.add("210033");
      mailObjx.add(mailObjy);
  }
  {
   ArrayList mailObjy=new ArrayList();
      mailObjy.add("Stefii Graff");
      mailObjy.add("14 Maple Lane");
      mailObjy.add("MahomaState:Sydney");
      mailObjy.add("Australia");
      mailObjy.add("412033");
      mailObjx.add(mailObjy);
  }
  System.out.println("*****************************");
  System.out.println("客户电子邮件地址");
  System.out.println("*****************************/n[/n");
  for(int i=1;i<mailObjx.size();i++)
  {
   for(int j=0;j<((ArrayList)mailObjx.get(i)).size();j++)
   {
    System.out.print(((ArrayList)mailObjx.get(0)).get(j));
    System.out.println(((ArrayList)mailObjx.get(i)).get(j));

   }
   System.out.println();
  }
  System.out.println("]");
 }
}

虽然看起来有点累,不过最关键其实是最后几句的ArrayList的嵌套而已,不过这样做不能做到题目要求的效果,主要是那几个可恶的小箭头做的怪。

要显示箭头和两边的小框其实是直接显示ArrayList对象toString后java自动加上去的分隔符,如果先要保留并且按照自己希望的格式显示的话就需要修改被加入到ArrayList的元素对象的toString方法以达到目的。正确的代码如下:

import java.util.ArrayList;
public class MailAddressTest2
{
 ArrayList mailObj;
 MailAddressTest2()
 {
  mailObj=new ArrayList();
 }
 void add()
 {
  mailObj.add(new Info("David Clarke","10 Downing Street","LondonState : London","United Kingdom","110022"));
  mailObj.add(new Info("John Lenon","12 Park Avenue","CaliforniaState : California","USA","210033"));
  mailObj.add(new Info("Stefii Graff","14 Maple Lane","MahomaState : Sydney","Australia","412033"));
  
 }
 void disp()
 {
  System.out.println(mailObj);
 }
}
class Info
{
 String name,street,city,country,pinCode;
 Info(String name,String street,String city,String country,String pinCode)
 {
  this.name=name;
  this.street=street;
  this.city=city;
  this.country=country;
  this.pinCode=pinCode;
 }
 public String toString()
 {
  return "/nName : "+this.name+"/nStreet : "+this.street+
  "/nCity : "+this.city+"/nCountry : "+this.country+
  "/nPinCode : "+this.pinCode+"/n";

 }
}
class Test
{
 public static void main(String [] argv)
 {
  MailAddressTest2 obj=new MailAddressTest2();
  obj.add();
  obj.disp();
 }
}

在这里需要修改的是自定义的Info类的toString的方法,然后直接把ArrayList的对象mailObj输出就行了。

 

自我总结:应该学会利用java的override功能,重写一些已有的方法,让别人的代码为自己服务,不过想偷懒也不是一件容易的事情啊~

原创粉丝点击