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]);
		}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章