题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
扩展为可输入任意小于int最大值的正整数
运行结果:
import javax.swing.JOptionPane;
public class ResolveDigit {
public static void main(String[] args) {
String in = JOptionPane.showInputDialog("输入任意数字");
JOptionPane.showMessageDialog(null, "原来的:"+in
+"\n转换后:"+resolve(Integer.valueOf(in)));
}
//规律:4=4321%10000/1000;3=4321%1000/100;2=4321%100/10;1=4321%10/1;
static String resolve(int num) {
StringBuilder res = new StringBuilder();
int[] digit = new int[20];//存放输入数字的每一位
int n = judgeDigit(num);
for (int i=n; i>=1; i--) {
digit[i-1] = num % powerOfTen(i)/powerOfTen(i-1);
}
//分解出来的整数 每一位逆序存放在数组
for (int i=0; i<n; i++) {
res.append(digit[i]);
}
return res.toString();
}
//判断数字是几位数字
static int judgeDigit(int num) {
int n = 1;
while (true) {
if (powerOfTen(n) > num) {
break;
} else {
n++;
}
}
return n;
}
//获取10的n次方
static int powerOfTen(int n) {
if (n == 0) return 1;
return 10*powerOfTen(n-1);
}
}