Java小程序 数值取基数

Java 整数类型取基数

 对于数值的基数读取,博主这里有两个方案,如果有其他读取方案,可以写在评论

首先是第一种方案

public class Base1 {
	
	public int[] base(int index) {
		String str = index+""; //将数值转换为字符串类型
		char[] c = str.toCharArray();
		int[] arrayInt = new int[c.length];
		for (int i = 0; i < c.length; i++) {
			String s = c[i]+"";
			arrayInt[i]= Integer.parseInt(s);
		}
		return arrayInt;
	}

	public static void main(String[] args) {
		int[] array= new Base().base(157896);
		for (int i = 0; i < array.length; i++) {
			if(i!=0) System.out.print(" ");
			System.out.print(array[i]);
		}
	}

}
**运行结果:1 5 7 8 9 6**

然后我们来看第二种方案

public class Base2 {
	
	public int[] base(int index) {
		String str = index+"";
		int[]  array = new int[str.length()];
		for(int i = 1,j=0 ; i <= index ; i*=10,j++) {
			array[j] = index / i %10;
		}
		return array;
	}

	public static void main(String[] args) {
		int[] array= new Base2().base(157896);
		for (int i = 0; i < array.length; i++) {
			if(i!=0) System.out.print(" ");
			System.out.print(array[i]);
		}
	}

}

**运行结果:6 9 8 7 5 1**

第一种方案的思路来源与Python的eval()函数;这种方案的优点是空间占用不大,空间复杂度没有第二种高。

第二种方案的时间复杂度可能会小一点,但是由于第二种方案有数值运算符的存在,所以这两个方案差不多,都挺优秀的。

总结一下:如果对返回的数组不做调试,第一种返回的属于从左到右的顺序返回,所以想要从个位数调用得这样写for循环

		int[] array= new Base1().base(157896);
		for (int i = array.length-1; i >=0; i--) {
			if(i!=array.length-1) System.out.print(" ");
			System.out.print(array[i]);
		}

而第二种就不需要倒着写

		int[] array= new Base2().base(157896);
		for (int i = 0; i < array.length; i++) {
			if(i!=0) System.out.print(" ");
			System.out.print(array[i]);
		}