использование метода toString для отображения информации в массиве без скобок и запятых - PullRequest
1 голос
/ 06 июня 2011

Я использую метод toString для отображения данных в массиве. Как мне написать код, чтобы он отображал информацию без [,,] вокруг моей информации

см. Код ниже:

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 ]

3 голосов
/ 06 июня 2011

Не использовать toString () вообще. Он не предназначен для создания отформатированных строк пользовательского интерфейса. Это инструмент разработчика, а не инструмент презентации пользователя.

Я добавлю предостережение для случаев, когда объект представляет что-то в простом принятом формате, который может служить обеим целям. Примитивные оболочки Java (такие как Integer и Float) являются примером этого. Другие простые классы, такие как 2D-точка, также могут работать в этом отношении, но они быстро распадаются, когда объект становится более сложным.

Чтобы сделать то, что вы пытаетесь, просто создайте метод для отображения и выполните форматирование в этом методе.

2 голосов
/ 06 июня 2011

Вам действительно нужно использовать метод toString ()?В противном случае вы можете создать строку для каждого массива самостоятельно.

tmpArray = aBank.getAccounts().get(i).getTransaction();
StringBuilder builder = new StringBuilder();
for (String value : tmpArray) {
  builder.append(value);
}    
System.out.println(builder.toString());
2 голосов
/ 06 июня 2011

Используйте столяр гуавы , как в

Joiner.on("").join(
    aBank.getAccounts().get(i).getTransaction())
1 голос
/ 06 июня 2011

Попробуйте написать его более читабельным.

   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()));
       }
      }
}
1 голос
/ 06 июня 2011

Как насчет этого?

List<String> list = ArrayList<String>();
String asString = list.toString().replaceAll("^\\[", "").replaceAll("\\]$", "").replace(",", "");
1 голос
/ 06 июня 2011

Изменить метод «toString» объекта, возвращаемого функцией «getTransaction ()»!?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...