2014-02-13 6 views
3

Есть ли метод, который уже существует, и если не может быть написан метод, который может форматировать большие числа и вставлять в них запятые?Способ вставки запятых в большие числа

100  = 100 
1000 = 1,000 
10000 = 10,000 
100000 = 100,000 
1000000 = 1,000,000 


public String insertCommas(Integer largeNumber) { 

} 

ответ

3

С NumberFormat вы можете сделать это легко:

NumberFormat format = NumberFormat.getInstance(Locale.US); 

System.out.println(format.format(100)); 
System.out.println(format.format(1000)); 
System.out.println(format.format(1000000)); 

будет Ouput:

100 
1,000 
1,000,000 
2

Вы смотрели на DecimalFormat (дифференцирование абстрактной NumberFormat)? Вы можете указать customise формат в соответствии с вашими потребностями.

DecimalFormat myFormatter = new DecimalFormat("###,###.###"); 
String output = myFormatter.format(value); 

Заметим также, что вы можете определить форматирование на основе локали.

5

Вы можете использовать NumberFormat#getNumberInstance с Locale.US:

Локаль объект представляет определенную географическую, политическую, или культурную область . Операция, требующая выполнения Locale для выполнения своей задачи , называется чувствительной к локали и использует локаль для настройки информации для пользователя. Например, отображение числа является чувствительной к языку операцией - номер должен быть отформатирован согласно обычаям и соглашениям страны, региона, или культуры.


System.out.println(NumberFormat.getNumberInstance(Locale.US).format(10000000)); 

Это будет печатать:

10,000,000 

Side Примечание: В Java 7, вы можете написать int с подчеркиванием: 1_000_000.

0

Я старался быть очень четко с тем, что я делаю, это может быть сделано в гораздо меньше линий ,

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

Если модуль размера номера 3 равен нулю (например, 123456), мы должны удалить последнюю запятую.

Теперь мы восстанавливаем исходный порядок строк, реверсив его снова, и voilá.

public String insertCommas(Integer largeNumber) { 

    String result; 
    String reversedNum = new StringBuilder(""+largeNumber).reverse().toString(); 
    String reversedResult = ""; 

    Pattern pattern = Pattern.compile("\\d{3}"); 
    Matcher matcher = pattern.matcher(reversedNum); 

    int lastIndex = reversedNum.length(); 
    while(matcher.find()){ 
     reversedResult += matcher.group()+","; 
     lastIndex = matcher.end(); 
    } 

    String remaining = reversedNum.substring(lastIndex); 
    reversedResult += remaining; 
    result = new StringBuilder(reversedResult).reverse().toString(); 
    if(remaining.isEmpty()){ 
     result = new  StringBuilder(reversedResult).reverse().toString().substring(1); 
    }else{ 
     result = new StringBuilder(reversedResult).reverse().toString(); 
    } 

    return result; 
} 
+0

Lol i хотя он хотел сделать какую-то домашнюю работу. Кстати, правильный способ - использовать NumberFormat – adriannieto

Смежные вопросы