标题: 我是新手,求助 [打印本页] 作者: 湛添友 时间: 2014-3-24 21:28 标题: 我是新手,求助 public class Shiliu{
public static void toHex(int a)
{StringBuffer sb=new StringBuffer();
for(;a>0;a=a>>>4)
{
int x=a&15;
if(x>9)
sb.append((char)(x-10+'A'));
if(x<=9)
sb.append(x);
}
System.out.println(sb.reverse());
}
public static void main(String[] args){
int n=2560;
toHex(n);
}
}
这样可以
public class Shiliu{
public static void toHex(int a)
{StringBuffer sb=new StringBuffer();
int y;
for(;a>0;a=a>>>4)
{
int x=a&15;
if(x>9)
y=(char)(x-10+'A');
sb.append(y);
if(x<=9)
sb.append(x);
}
System.out.println(sb.reverse());
}
public static void main(String[] args){
int n=2560;
toHex(n);
}
}
为什么这样不可以? 作者: yanzhendong 时间: 2014-3-24 21:56
y=(char)(x-10+'A');这一句楼主将char类型赋值给int类型,会存在类型提升,类型提升后sb.append(y)相当于sb.append(int y);作者: 谭荣强 时间: 2014-3-24 23:32
错误1:int y:y是局部变量(就是定义在方法上或方法内部的变量),需要初始化。比如int y=0;或者 int y=(x-10+'A');
错误2.int y ;表示y是int型。而 y=(char)(x-10+'A');(char)表示将(x-10+'A')的结果强转为char类型,所以int=char,出错。
错误3.if(x>9)
y=(char)(x-10+'A');
sb.append(y); if()语句如果不加{},表示只执行if下面的一行代码。所以 sb.append(y);没有被执行到。
有if最好就加{},毕老师那是图方便,人家熟练。
代码已改。
public class Shiliu{
public static void toHex(int a)
{StringBuffer sb=new StringBuffer();
int y=0;//改动
for(;a>0;a=a>>>4)
{
int x=a&15;
if(x>9)
{//加了大括号
y=(x-10+'A');//改动
sb.append((char)y);//改动
}
if(x<=9)
sb.append(x);