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]);
}