题目描述
写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 )
输入描述:
输入一个十六进制的数值字符串。
输出描述:
示例1输出该数值的十进制字符串。
输入
0xA
输出
10
关键在于使用Integer的parseInt函数
public static int parseInt(String s, int radix) throws NumberFormatException
-
使用第二个参数指定的基数,将字符串参数解析为有符号的整数。除了第一个字符可以是用来表示负值的 ASCII 减号
'-'
('\u002D’
)外,字符串中的字符必须都是指定基数的数字(通过Character.digit(char, int)
是否返回一个负值确定)。返回得到的整数值。如果发生以下任意一种情况,则抛出一个
NumberFormatException
类型的异常:- 第一个参数为
null
或一个长度为零的字符串。 - 基数小于
Character.MIN_RADIX
或者大于Character.MAX_RADIX
。 - 假如字符串的长度超过 1,那么除了第一个字符可以是减号
'-'
('u002D’
) 外,字符串中存在任意不是由指定基数的数字表示的字符。 - 字符串表示的值不是
int
类型的值。
示例:
parseInt("0", 10) 返回 0 parseInt("473", 10) 返回 473 parseInt("-0", 10) 返回 0 parseInt("-FF", 16) 返回 -255 parseInt("1100110", 2) 返回 102 parseInt("2147483647", 10) 返回 2147483647 parseInt("-2147483648", 10) 返回 -2147483648 parseInt("2147483648", 10) 抛出 NumberFormatException parseInt("99", 8) 抛出 NumberFormatException parseInt("Kona", 10) 抛出 NumberFormatException parseInt("Kona", 27) 返回 411787
- 第一个参数为
-
-
-
参数:
-
s
- 包含要解析的整数表示形式的String
-
radix
- 解析s
时使用的基数。
返回:
- 使用指定基数的字符串参数表示的整数。 抛出:
-
NumberFormatException
- 如果String
不包含可解析的int
。
-
一个参数的ParseInt函数
parseInt
public static int parseInt(String s) throws NumberFormatException
-
将字符串参数作为有符号的十进制整数进行解析。除了第一个字符可以是用来表示负值的 ASCII 减号
'-'
('\u002D'
) 外,字符串中的字符都必须是十进制数字。返回得到的整数值,就好像将该参数和基数 10 作为参数赋予parseInt(java.lang.String, int)
方法一样。 -
-
-
参数:
-
s
- 包含要解析的int
表示形式的String
。
返回:
- 用十进制参数表示的整数值。 抛出:
-
NumberFormatException
- 如果字符串不包含可解析的整数。
-
AC代码如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
System.out.println(Integer.parseInt(str.substring(2,str.length()),16));
}
}
该测试用例有些问题
下面这个代码通过了:
import java.util.Scanner;
public class Main{
public static void main(String[]args){
Scanner in = new Scanner(System.in);
while(in.hasNextLine()){
String str = in.nextLine();
System.out.println(Integer.parseInt(str.substring(2),16));//str.substring(2)表示去除0x
}
}
}
更多推荐
华为——进制转换
发布评论