我来丢人了,前两天写了一道这个面试题,直接转了字符串再通过数组倒置输出,看了一圈网上好像还挺非主流的哈哈
1 public static void main(String[] args) { 2 3 Scanner sc = new Scanner(System.in); /*扫描加键盘上的数*/ 4 System.out.print("请您输入一个数");/*提示从键盘上输入*/ 5 int a = sc.nextInt(); /*把键盘上输入的数赋给A*/ 6 7 8 String b=String.valueOf(a);//int转字符串 9 String[] bArr=b.split("");//分割字符串放进数组 10 for (int i = bArr.length; i>1; i--) { 11 // System.out.println(i-1); 12 System.out.print(bArr[i-1]); 13 // 这里-1是因为数组的长度比索引小1,第一次i的大小会超出索引大小,例{1,2} i=2,最大索引为1 14 15 } 16 17 }
网上主流写法是循环取模后,把原数字通过除10,反正是int,尾数会被省略,但这个方法求1200这种尾数有零的,结果会无视0,运行结果为21。
1 public static void main(String[] args) { 2 int c=0,b=0; 3 Scanner sc = new Scanner(System.in); /*扫描加键盘上的数*/ 4 System.out.print("请您输入一个数");/*提示从键盘上输入*/ 5 int a = sc.nextInt(); /*把键盘上输入的数赋给A*/ 6 /* 7 String name = sc.nextLine(); 注:从键盘上输入字符串 8 float salary = sc.nextFloat(); 注:从键盘上输float类型的数字 9 */ 10 if(a>=10)/*判断a是否大于或等于10*/ 11 for(int i=0;a>=10;i++)/*一个循环,这个循环的次数由上一级的if语句来控制*/ 12 { 13 c=a%10;/*如果a>=10就取a的余数*/ 14 b=b*10+c;/*第一次循环b=0*10+a=a 第二次循环b=a1*10+a2,倒着赋值*/ 15 a=a/10;/*取完a的最后一位数然后就直接除10*/ 16 System.out.println(c+" "+a+" "+b);/*测试ABC的值*/ 17 } 18 b=a+b*10;/*当a>=10时b=0,所以b=a的个位数*/ 19 System.out.print(b);/*倒叙输出a*/ 20 21 }
原文:https://www.cnblogs.com/ByTwo/p/11986048.html