【Java】整数拆分输出
思路:
①判断输入的数字的长度(是几位);
②循环来不断解剖每一位的数值;
③个位:整个数值对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;
}
}
- 如果是要求先输出高位,再输出低位(123,先输出1 再输出2 最后输出3):
- n /= 10;
- 不断抹去最后一位,只剩第一位,循环即可得到
思路:
- 逆序后 得到 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; } }
用 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; } }