這是一道關於進制的題目,其本質是把十進制數字用A~Z表示成二十六進制。 函數
A是65,A到Z是26個字母,A對應1,至關於26*0+65-65+1=1;AB則是26*1+66-65+1=28,ABC則是26*28+67-65+1=731,編碼
package cglib;spa
public class List1
{
public static int numberTransform2(String str)
{
char[] strArray = str.toCharArray();
int num = 0;
if(strArray.length < 0)//若是沒有輸入字符,則報錯。
{
System.out.println("沒有輸入字符");
return -1;
}
int sum = 0;
for(int i =0; i < strArray.length; i++)
{
System.out.println("i="+i+",strArray[i]="+strArray[i]);
System.out.println("((int)(strArray[i] -'A'))="+((int)(strArray[i] -'A')));
int temp = strArray[i] - 'A';
System.out.println("減A的值後temp="+temp);
if(temp >= 26 || temp < 0)
{
System.out.println("字符不合規範");
return -1;
}
sum = 26*sum + temp + 1;
//num = num * 26 + ((int)(strArray[i] -'A') +1);
//System.out.println("運算後num="+num);
System.out.println("運算後sum="+sum);
}
return sum;
}
public static void main(String[] args) {
System.out.println(numberTransform2("AB"));
}
}.net
輸出:orm
i=0,strArray[i]=A
((int)(strArray[i] -'A'))=0
減A的值後temp=0
運算後sum=1
i=1,strArray[i]=B
((int)(strArray[i] -'A'))=1
減A的值後temp=1
運算後sum=28
28blog