黑马程序员技术交流社区

标题: 不知道这个那儿错了求大师指点 [打印本页]

作者: 你好我是潘机智    时间: 2015-3-20 10:12
标题: 不知道这个那儿错了求大师指点
/**
要求:算数60的十六进制表达方式
思路:1,先获取60二进制的后四位转化为十六进制
          2,再获取60二进制的前一组四位转化为十六进制
          3,判断所得数是否大于10,如果大于十要判断所得的字母
*/
class Zilian
{
        public static void main(String[] args)
        {
                int num=60,x,y,z,a,b;
                x=num&15;
                y=num>>>4;
                z=y&15;

               
                if(x>10)
                {
                        a=(char)('a'+(x-10));
                }
               
                else if(y>10)
                {
                        b=(char)('a'+(z-10));
                }
               
                else
                {
                        a=x;
                        b=z;
                }
                System.out.println("60的十六进制表达式为:0x"+b+a);
        }
}


运行结果报错是:可能未初始化变量a,b

我应该怎么修改?
作者: 殷俊    时间: 2015-3-20 10:20
局部变量没有默认初始化值,所以必须手动初始化,因此,你可以int a=0,b=0;就可以了
作者: 殷俊    时间: 2015-3-20 10:34
额,补充一下,你思路没问题,但是定义变量有问题,如果只是求60的十六进制,那么就不需要定义一个null变量,然后,这个题用循环再加上判断要好些,单独的判断,你这样是一定知道了60的二进制位有多少,然后定义多个变量,求出每四位的值赋给变量,但是如果一个数你不知道二进制有多少,那你这样就不方便了
作者: 你好我是潘机智    时间: 2015-3-20 10:44
殷俊 发表于 2015-3-20 10:34
额,补充一下,你思路没问题,但是定义变量有问题,如果只是求60的十六进制,那么就不需要定义一个null变量 ...

恩恩 好的 多谢指点~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2