Как преобразовать строковые числа в целые числа, разделенные запятыми в java?
может ли кто-нибудь дать мне некоторые предопределенные методы или пользовательские методы для преобразования строковых чисел(пример: 123455) в целочисленное значение, разделенное запятыми (пример: 1,23,455).
6 ответов
предполагаю 123455
это String
.
String s = 123455;
String s1 = s.substring( 0 , 1 ); // s1 = 1
String s2 = s.substring( 1 , 3 ); // s2 = 23
String s3 = s.substring( 2 , 7 ); // s3 = 455
s1 = s1 + ',';
s2 = s2 + ',';
s = s1 + s2; // s is a String equivalent to 1,23,455
теперь мы используем static int parseInt(String str)
метод преобразования строки в целое число.Этот метод возвращает целочисленный эквивалент числа, содержащегося в String
указано str
использование radix 10.
здесь вы не можете конвертировать s ---> int
. Поскольку int не имеет запятых.Если вы попытаетесь преобразовать, вы получите следующее исключение java.ленг.NumberFormatException
вы должны использовать DecimalFormat
класса. http://download.oracle.com/javase/1.4.2/docs/api/java/text/DecimalFormat.html
наконец, я нашел точное решение для своих нужд.
import java.math.*;
import java.text.*;
import java.util.*;
public class Mortgage2 {
public static void main(String[] args) {
BigDecimal payment = new BigDecimal("1115.37");
NumberFormat n = NumberFormat.getCurrencyInstance(Locale.US);
double doublePayment = payment.doubleValue();
String s = n.format(doublePayment);
System.out.println(s);
}
}
то, что вы ищете-это класс DecimalFormat (здесь), где вы можете легко установить разделитель и преобразовать строку в число с помощью метода parse()
например.
результат, который вы ожидали, это " to запятая разделена целое значение", на мой взгляд, неверно. Однако, если вы просто ищете представительство выход, как насчет этих строк кодов, показанных ниже? (Обратите внимание, что вы не можете анализировать возвращаемое значение из valueToString в некоторый тип данных long, потому что это просто не имеет смысла :))
MaskFormatter format = new MaskFormatter("#,##,###");
format.setValueContainsLiteralCharacters(false);
System.out.println(format.valueToString(123455));