【发布时间】:2019-12-08 19:13:44
【问题描述】:
编写代码是为了将十六进制值转换为十进制,但是当我输入无效数字(例如“S”)时,它会打印出一个负值。
public static void main(String[] args) {
// TODO Auto-generated method stub
String s = "a1";
String digits = "0123456789ABCDEF";
s = s.toUpperCase();
int val = 0;
for (int i = 0; i < s.length(); i++)
{
char c = s.charAt(i);
int d = digits.indexOf(c);
val = 16*val + d;
}
System.out.println("等效的十进制数为"+val);
【问题讨论】:
-
因为如果您的数字变量中不存在该字符,则 indexOf(c) 返回 -1
-
@billalGHILAS 我该如何更改它?请帮忙
-
if (d==-1) {则以不同的方式进行..}