Тип кастинга для BigDecimal - PullRequest
0 голосов
/ 03 января 2012

У меня есть метод возврата типа ArrayList<String>, который также читает аргумент того же типа. Теперь, как мне type cast или изменить мой BigDecimal, чтобы прочитать это значение?

public static ArrayList<String> currencyUtilArray(ArrayList<String> amountStr ) {
BigDecimal amount = new BigDecimal(ArrayList<String> amountStr);
//How do I define that the amountStr is ArrayList<String> and need to place in BigDecimal amount one after another till the end of the List 
    return amountStr;
}

Или мне нужно сделать

Ответы [ 3 ]

1 голос
/ 03 января 2012

Вы не можете набрать приведение String к BigDecimal или и наоборот .

Если строки в массиве должны представлять число при объединении, тогда выполнитечто-то вроде этого:

 StringBuilder sb = new StringBuilder();
 for (String s : amountStr) {
     sb.append(s);
 }
 BigDecimal amount = new BigDecimal(sb.toString());

С другой стороны, если каждая строка представляет отдельное число:

for (String s : amountStr) {
    BigDecimal amount = new BigDecimal(s);
    // ... and do something with it ...
}
1 голос
/ 03 января 2012

Я не думаю, что вы ссылаетесь на это правильно.Вы не можете преобразовать весь ArrayList как AL типа string в Big Decimal.

Сначала измените ArrayList amountStr из нового BigDecimal (-);и ссылка на одну строку из ArrayList.

Это означает, что вам придется перебирать все это, складывая его в сумму:

BigDecimal amount = new BigDecimal(amountStr.get(0));
For(int i = 1; i < amountStr.size(); i++){
amount = amount.add(new BigDecimal(amountStr.get(i)));
}

Я считаю, что это должно дать вам то, что вам нужно, когда оно будет возвращено.

0 голосов
/ 03 января 2012

я понимаю, что вы хотите преобразовать list elements в BigDecimal Array. Если это так, вы можете сделать, как показано ниже:

BigDecimal[] amount = new BigDecimal[amountStr.size()];
for (int i=0;i<amountStr.size();i++) {
     amount[i] = new BigDecimal(amountStr.get(i));
 }
...