java如何使此代码不打印负值?
编写代码是为了将十六进制值转换为十进制值,但当我输入一个无效数字(如“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;
}
系统。出来println(“等效dec编号为”+val)
# 1 楼答案
如果输入不是十六进制数,则可以引发异常,如下所示:
编辑:更好的选择,因此如果输入不是十六进制,for循环根本不会迭代。只需将其放在for循环之前,它就会发现您的输入是否包含不在
digits
字符串中的字符,并在这种情况下引发异常:# 2 楼答案
您有2个选择,添加一个条件
或者像这样使用java内置转换器