gpt4 book ai didi

java - 如何使这段代码不打印负值?

转载 作者:行者123 更新时间:2023-12-02 09:13:04 26 4
gpt4 key购买 nike

编写的代码是为了将十六进制值转换为十进制值,但是当我输入无效数字(例如“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);

最佳答案

您有2个选择,请添加条件

for (int i = 0; i < s.length(); i++)
{
char c = s.charAt(i);
int d = digits.indexOf(c);
if (d == -1) {
val = -1;
break;
}
val = 16*val + d;
}

if (val == -1) {
System.out.println("Invalid number");
} else {
System.out.println(val);
}

或者像这样使用java内置转换器

public static void main(String[] args) {
// TODO Auto-generated method stub
String s = "a1";
try {
int val = Integer.parseInt(s, 16);
System.out.println(val);
} catch(NumberFormatException ex) {
System.out.println("Invalid number");
}
}

关于java - 如何使这段代码不打印负值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59238988/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com