本帖最后由 邵阳 于 2012-6-23 18:12 编辑
- class Shao
- {
- public static void main(String[] args)
- {
- shao_2(-60);
- }
- public static void shao_1(int key,int a,int b)
- {
- char []chs={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E'};
- char[]chr=new char[32];
- int pose=0;
- while( key!=0)
- {
- int temp=key&a;
- chr[pose++]=chs[temp];
- key=key>>>b;
- }
- for (int x=pose-1;x>=0 ;x-- )
- {
- System.out.print(chr[x]+",");
- }
- }
- public static void shao_2(int key)
- {
- shao_1(key,15,4);
- }
- public static void shao_3(int key)
- {
- shao_1(key,1,1);
- }
- public static void shao_4(int key)
- {
- shao_1(key,7,3);
- }
- }
复制代码 我输入数字是-60 ,然后可以正确转化成二进制,八进制。但是十六进制却出现
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 15
at Shao.shao_1(Demo.java:68)
at Shao.shao_2(Demo.java:81)
at Shao.main(Demo.java:7)
我知道这个意思是数组的上限超出了,但是还是不知道错误在哪,还有如何改正。
另外就是能不能详细讲一下为什么
chr[pose++]=chs[temp]; 这里多增一次啊
所以 int x=pose-1。
把运算过程写一下吧。比老师没有讲明白
|
|