赞
踩
思路:
①判断输入的数字的长度(是几位);
②循环来不断解剖每一位的数值;
③个位:整个数值对10取余即可得到个位;
④十位:整个数值对100取余得到XX,然后除以10,可以利用强转 Int 类型来得到十位;
⑤百位:整个数值对1000取余得到XXX,然后除以100,同样利用 Int 类型得到百位;
… …
⑥其中的 Math.pow(10,3) 为10的3次方;
/*输入一个整数,从个位开始,逐步拆分出每一位数字,每个数字输出占一行*/ import java.util.Scanner; public class SplitInteger { public static void main(String[] args) { int n; //输入整数n Scanner sc = new Scanner(System.in); n=sc.nextInt(); //拆分并输出每一位数字 for(int i=1;i<=NumLength(n);i++){ System.out.println(n%((int)Math.pow(10,i))/(int)Math.pow(10,i-1)); } //强转Int类型 sc.close(); } // 判断数据长度的方法 public static int NumLength(int num){ int count=0; while(num>=1){ num = num/10; count ++; } return count; } }
思路:
- 逆序后 得到 3 、2、 1
- 第一个乘以(10^(数值长度-1))即100
- 第二个乘以 (10^(数值长度-2))即10;
- 第三个乘以 (10^(数值长度-3))即 1 ;
- 以上可以 Math.pow(m,n) 即m的n次方 结合循环来计算
import java.util.Scanner; //拓展:思路一下,如何得到一个整数n逆序后的整数? 比如输入n的值是123,得到逆序后的整数321. public class Demo01 { public static void main(String[] args) throws Exception{ int n =0; //待输入的数据 int result =0; //输入整数n Scanner sc = new Scanner(System.in); n = sc.nextInt(); int length;//数组长度 length = NumLength(n); int[] num = new int[length];//动态初始化数组 //拆分每一位数字 保存到数组int[] num中 for (int i = 0; i <= length-1; i++) { num[i] = (n % (int)Math.pow(10, i+1)) / (int)Math.pow(10, i); System.out.println(num[i]); } //已完成逆序,现在转为数值 for(int i=0;i<=length-1;i++){ result += num[i]*(int)Math.pow(10,length-i-1); } System.out.println(result); sc.close(); } public static int NumLength(int num){ int count=0; while(num>=1){ num = num/10; count ++; } return count; } }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
用 while 和 do-while 循环来做/*输入任意位数的正整数n,从个位开始逆序得到各位数字并生成整数m。比如,输入n为123,生成整数m为321*/ import java.util.Scanner; public class ReverseInt2 { public static void main(String[] args) { int n ,m=0 ; //n表示输入的整数 //输入正整数n Scanner sc = new Scanner(System.in); n=sc.nextInt(); int len = length(n); int[] num = new int[len]; int i=0; //生成逆序的整数m do{ num[i] = (n%(int)(Math.pow(10,i+1))/(int)Math.pow(10,i)); m += num[i]*Math.pow(10,len-i-1); }while(i++<len-1); //输出结果 System.out.println("逆序后为"+m); sc.close(); } public static int length(int x){ int count =0; while(x!=0){ x /= 10; count++; } return count; } }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。