Я старался быть очень четко с тем, что я делаю, это может быть сделано в гораздо меньше линий ,
Алгоритм прост, я меняю строку ввода, затем я разделяю число с помощью регулярного выражения, в каждом совпадении мы добавляем запятую.
Если модуль размера номера 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;
}
Lol i хотя он хотел сделать какую-то домашнюю работу. Кстати, правильный способ - использовать NumberFormat – adriannieto