您的位置:首页 > 编程语言 > Java开发

Java键盘输入八进制和十六进制

2017-12-01 22:02 148 查看
今天有同学问我Java怎么用键盘输入十六进制数转换成十进制数输出,我查了一下,发现网上的部分回答不够清楚,很多人不理解为什么输入人后回车就报错了(代码无误)。如下:

public static void main(String argv)throws Exception {

Scanner sc = new Scanner(System.in);
System.out.print("\n请输入一个16进制数:");
String str = sc.next();
int n = Integer.parseInt(str, 16);
System.out.println("输入 " + str + ",转换成整数是  " + n);
}
我试着运行了一下这段代码,输入0x39,回车,然后报错了:Exception in thread "main" java.lang.NumberFormatException: For input string: "0x39"(数字格式异常)

查看API后发现,Integer类里面的静态方法parseInt(String s, int radix): 这个函数在用Scanner输入字符串的时候,不能有前导0x或者0,后面的radix参数就是指定你输入的进制类型,例子:

public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s;
int b;
s = scanner.nextLine();
b = Integer.parseInt(s, 16);
System.out.println(b);
}


这样就转换成功了,切记,输入的字符串一定要和后面的radix相匹配,例如radix = 8,输入9,八进制中没有9,所以程序抛出异常。

另外Integer类里面还提供了一个静态方法decode(String nm),该函数将String对象解码为Integer对象返回,这里的参数nm,需要带前导,指定代表进制类型。例子:

public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s;
s = scanner.next();
Integer a;
a = Integer.decode(s);
System.out.println(a);
}


                  

本人刚开始试着写博客,有什么错误或者描述不当的地方还请大家指出,谢谢大家的查看!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 进制转换