首先想这个问题的核心,输出几位数用while循环直接累加到count。
但是逆序输出数字的时候,要考虑到如果数字是1000的话,输出0001是不太现实的,所以我目前这个方法是将整形转化为数组,在将数组转化来进行操作。
但是在刚开始对输入的数字进行累加求几位数的时候,此时,这个值已经因为执行的原因发生变化了,所以,我用了一个最笨叶适最简单的方法,将值在执行之前赋值给另一个值,相同的值不同的变量进行不同的方法执行。
但是这个整数时有范围的,int类型的值是有一个取值范围的,可以改成Long类型的,这样求的数值的范围会大很多,但是没他打的用处。
后面用的整形和数组的转化是x[i]=Integer.parseInt(String.valueOf(num.charAt(i)))
下面见全部的代码详细:
新手小白,仅记录自己的习题,还待改进,请多支持。
package practice3;
import java.util.Scanner;
public class Test9 {
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
System.out.println("请输入一个的整数:");
int m = input.nextInt();
int n1= m;
int count=0;
while(m>=1) {
m /=10;
count++;
}
System.out.println("您输入的数字是"+count+"位。");
System.out.println("请逆序打印出各位数字:");
String num = String.valueOf(n1);
int [] x = new int [num.length()];
for (int i = 0; i <num.length(); i++) {
x[i]=Integer.parseInt(String.valueOf(num.charAt(i))); //API文档 查找String.valueof
}
// for (int i = 0; i < num.length(); i++) {
// System.out.print(x[i]+" ");
// }
int arr1[]= new int[x.length];
for (int i1 = 0,j=x.length-1; i1 < x.length; i1++,j--) {
arr1[j]= x[i1];
}
for (int i = 0; i < arr1.length; i++) {
System.out.print(arr1[i]+"\t");
}
}
}