概述
这是一道关于进制的题目,其本质是把十进制数字用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;
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"));
}
}
输出:
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
28
最后
以上就是温柔过客为你收集整理的java算出十进制中0和1的个数_剑指Offer(Java版):把十进制数字用A~Z表示成二十六进制。...的全部内容,希望文章能够帮你解决java算出十进制中0和1的个数_剑指Offer(Java版):把十进制数字用A~Z表示成二十六进制。...所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复