使用toString方法在没有括号和逗号的ar​​raylist中显示信息

时间:2011-06-06 13:47:48

标签: java arraylist tostring

我使用toString方法在arraylist中显示数据。如何编写代码,以便在没有[,,]信息的情况下显示信息

请参阅以下代码:

case 6:
            System.out.println("Enter an account number to view the transactions of the account");
            number=keyboard.nextLong();
            found=false;
            try{
                for(int i=0;i<aBank.getAccounts().size();i++){

                if(aBank.getAccounts().get(i).getAccountNumber().compareTo(number)==0){
                    found=true;
                    System.out.println("Account " + number + ":\tStart Balance: " +money.format(aBank.getAccounts().get(i).getStartBalance()));
                    System.out.println(aBank.getAccounts().get(i).getTransaction().toString());
                    System.out.println("Ending Balance :" +money.format(aBank.getAccounts().get(i).getBalance()));
                }
                }
            }

        catch (Exception e){
            System.out.println("Unable to process request.\n" +e.getMessage());
        }
            break;

这是输出:

Account 1:  Start Balance: $1000.00
[Deposit    1   6/6/2011    $500.00
, Deposit   2   6/6/2011    $489.00
, Deposit   3   6/6/2011    $262.00
, Withdrawal    4   6/6/2011    $897.00
, Withdrawal    5   6/6/2011    $56.32
, Withdrawal    6   6/6/2011    $78.24
]
Ending Balance :$1219.44

注意需要删除的括号和逗号

6 个答案:

答案 0 :(得分:3)

根本不要使用toString()。它并不意味着用于创建格式化的UI字符串。它是一个开发人员工具,而不是用户演示工具。

我将为对象代表具有可用于两种目的的简单接受格式的内容的情况添加警告。 Java原始包装器(如Integer和Float)就是一个例子。其他简单的类(如2D点)也可以在这方面起作用,但随着对象变得更加复杂,这很快就会崩溃。

要执行您尝试的操作,只需创建一个方法来执行显示并改为使用该方法进行格式化。

答案 1 :(得分:2)

使用

中的guava joiner
Joiner.on("").join(
    aBank.getAccounts().get(i).getTransaction())

答案 2 :(得分:2)

你真的需要使用toString()方法吗? 否则你可以自己为每个数组构建字符串。

tmpArray = aBank.getAccounts().get(i).getTransaction();
StringBuilder builder = new StringBuilder();
for (String value : tmpArray) {
  builder.append(value);
}    
System.out.println(builder.toString());

答案 3 :(得分:1)

修改“getTransaction()”返回的Object的“toString”方法!?

答案 4 :(得分:1)

这个怎么样?

List<String> list = ArrayList<String>();
String asString = list.toString().replaceAll("^\\[", "").replaceAll("\\]$", "").replace(",", "");

答案 5 :(得分:1)

尝试将其写得更具可读性。

   try {
    for(BankAccount ba : aBank.getAccounts()) {
      if(ba.getAccountNumber().equals(number)) {
        found=true;
        System.out.println("Account " + number + ":\tStart Balance: " 
         +money.format(ba.getStartBalance()));                  
        for (Object tr : ba.getTransaction()) {
          System.out.println(tr);
        }
        System.out.println("Ending Balance :" +money.format(ba.getBalance()));
       }
      }
}