程序运行时总是显示有错误,求修改
阅读
import java.io.*;
class Demo065
{
public static void main(String[] args)throws IOException
{
zhuanhuan c=new zhuanhuan();
c.zhch();
}
}
class zhuanhuan
{
public void zhch()throws IOException//从键盘输入数字,先转换成16进制,然后转换成2进制
{
System.out.println("Please input the hex number");
InputStream in=System.in;
int x=in.read();
StringBuilder sb=new StringBuilder();
while(x!=0)//转换成十六进制
{
int temp=x%16;
x=x/16;
if(temp>9)
{
sb.append((char)((temp-10)+'a'));
}
else sb.append(temp);
}
int i=Integer.parseInt(sb.toString(),2);//调用系统方法转换成2进制
System.out.println(i);
}
}
------解决方案--------------------
int i=Integer.parseInt(sb.toString(),2);//调用系统方法转换成2进制
这个方法不是将前面的字符串转换成2进制,而是将前面的二进制字符串换算成十进制形式
楼主试试int i=Integer.parseInt("100",2)然后打印i的值,肯定是4
------解决方案--------------------
InputStream in=System.in;
int x=in.read();
这样读取其实是错误的,in.read()是从控制台中读取一个字符,然后将读入的字符的ASCII码转换成int型,你打印出x出来看看,出入5的时候出来的结果是53(就是字符5的ascii码)
可以用Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
------解决方案--------------------
我对代码进行调试:
然后进入:
查找454行jdk中的实现:
可以发现16进制中X是基数不在 MIN_RADIX <= radix <= MAX_RADIX 范围之内,因此返回-1,接着跟着程序就抛出相干异常!
阅读
上一篇:关于InetAddress.getByName,该怎么解决 下一篇:返回列表