using the toString method to display information in an arraylist without brackets and commas

北城余情 提交于 2019-12-24 15:37:17

问题


I am using a toString method to display data in an arraylist. How do I write the code so that it displays the information without the [ , , ] around my information

see the code below:

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;

this is the output:

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

notice the brackets and commas that need to be removed


回答1:


Don't use toString() at all. It is not meant to be used to create formatted UI strings. It is a developer tool, not a user presentation tool.

I will add a caveat for the cases where the object represents something with a simple accepted format that can serve both purposes. Java primitive wrappers (like Integer and Float) are an example of this. Other simple classes such as a 2D point can work in this regard as well, but this quickly falls apart as an object becomes more complex.

To do what you are attempting, just create a method to do your display and do the formatting in that method instead.




回答2:


Use a guava joiner as in

Joiner.on("").join(
    aBank.getAccounts().get(i).getTransaction())



回答3:


Do you really need to use the toString() Method? Otherwise you could build up the string for each array by yourself.

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



回答4:


Modify the "toString" method of the Object returned by "getTransaction()" !?




回答5:


What about this?

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



回答6:


Try to write it more readable.

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


来源:https://stackoverflow.com/questions/6252973/using-the-tostring-method-to-display-information-in-an-arraylist-without-bracket

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!