匿名用户
1级
2010-09-13 回答
public class Test {
public void method(int a) {
int size = 1;
int shang = 3;
//这个方法是判断你的a换算成3进制有几位数,我们拿10进制的来比较
//10就是10的1次方,100是10的2次方,1000是10的3次方
while (a >= shang) {// 103>=3 103>=9 103>=27 103>=81 103<243 quit
++size; // size=2 size=3 size=4 size=5
shang = shang * 3; //shang=9 RE shang=27 RE shang=81 RE shang=243 RE
}
//有几位数就建立多大的数组
int[] arry = new int[size];//size=5
int i = 0;
//该方法求各个位置上的数十多少,还是拿10进制来比较
//321%10余1个位就是1,然后除于10,等于32
//32%10余2十位就是2,再除于10,等于3
//3%10余3百位就是3,再除于10,等于0.3,int类型自动取整,等于0
//退出循环
while (a != 0) { //103!=0 34!=0 11!=0 3!=0 1!=0 0==0 quit
arry[i] = a % 3; //103%3=1 34%3=1 11%3=2 3%3=0 1%3=1
a = a / 3; //a=103/3=34 RE 34/3=11 RE 11/3=3 RE 3/3=1 RE 1/3=0
i++;
}
// for(Integer ii : arry){ //这是什么意思?
for (int k = arry.length - 1; k >= 0; k--) { //数组逆向输出
System.out.print(arry[k]);
//因为我们求余是先求的个位,所以要逆向输出,输出1 0 2 1 1
//1*81+0*27+2*9+1*3+1*1=81+18+3+1=103
System.out.print("\t");
}
}
public static void main(String[] args) {
Test t = new Test();
t.method(103);
//这个方法你再声明一个变量m,m等于几就可以把任意10进制数转化为m进制