数字转换,例如10086转换为“10000+80+6”,123654转换为“100000+20000+3000+600+50+4”
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
public class StringTest {
public static void main(String[] args){
System.out.println(Test(10086));
}
public static String Test(Integer x){
String s = x.toString();
char[] chars = s.toCharArray();
int length = s.length();
StringBuilder stringBuilder=new StringBuilder();
HashMap<Integer,Character> values=new HashMap<>();
for (int i = 0; i <length; i++) {
values.put(i,chars[length-1-i]);
}
List<BigDecimal> list =new ArrayList<>();
System.out.println(values.toString());
for (Map.Entry<Integer, Character> entry :values.entrySet()) {
double value = Double.parseDouble(entry.getValue().toString());
BigDecimal a2 = new BigDecimal(value);
if (!a2.equals(BigDecimal.ZERO)){
double pow = Math.pow(10.0, entry.getKey());
BigDecimal a1 = new BigDecimal(pow);
BigDecimal multiply = a1.multiply(a2);
list.add(multiply);
}
}
list = list.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());
for (int i=0;i<list.size()-1;i++){
stringBuilder.append(list.get(i)+"+");
}
stringBuilder.append(list.get(list.size()-1));
System.out.println(list.toString());
return stringBuilder.toString();
}
}
方法二效率提升一点点
package ApiTest;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
public class StringTest2 {
public static void main(String[] args){
System.out.println(Test(123654));
}
public static String Test(Integer x){
String s = x.toString();
List<String> newList=new ArrayList<>();
List<BigDecimal> list =new ArrayList<>();
StringBuilder stringBuilder=new StringBuilder();
for(int i=s.length()-1;i>=0;i--){
newList.add(s.substring(i,i+1));
System.out.println(s.substring(i,i+1));
}
for (int i=0;i<newList.size();i++){
String s1 = newList.get(i);
BigDecimal a2 = new BigDecimal(s1);
if (!a2.equals(BigDecimal.ZERO)){
double pow = Math.pow(10.0, new Double(i));
BigDecimal a1 = new BigDecimal(pow);
BigDecimal multiply = a1.multiply(a2);
list.add(multiply);
}
}
list = list.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());
for (int i=0;i<list.size()-1;i++){
stringBuilder.append(list.get(i)+"+");
}
stringBuilder.append(list.get(list.size()-1));
System.out.println(list.toString());
return stringBuilder.toString();
}
}