【问题描述】从键盘输入一个十六进制数,将其转化为十进制输出。如果输入的不是一个有效的十进制数数字,则抛出异常。 【输入形式】xe 【输出形式】is not a hexadecimal Integer! 【样例输入】Abc 【样例输出】Decimal: 2748
时间: 2024-10-11 07:07:33 浏览: 35
在Java中,你可以使用内置的`Integer.parseInt()`方法,但需要先检查输入是否只包含十六进制字符(0-9和A-F或a-f)。这里是一个简单的示例程序来实现这一功能:
```java
import java.util.Scanner;
import java.util.InputMismatchException;
public class HexToDec {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter a hexadecimal number (prefix with 'x'): ");
String input = scanner.nextLine();
// 检查输入是否以 'x' 开头并由十六进制字符组成
if (!input.startsWith("x") || !isValidHex(input.substring(1))) {
throw new IllegalArgumentException("Input is not a hexadecimal number!");
}
int decimalValue = Integer.parseInt(input.substring(1), 16); // 转换为十进制
System.out.println("Decimal: " + decimalValue);
}
// 判断输入的字符串是否仅由十六进制字符组成
private static boolean isValidHex(String hex) {
for (char c : hex.toCharArray()) {
if (!Character.isLetterOrDigit(c) || !('0' <= c && c <= '9' || ('A' <= c && c <= 'F') || ('a' <= c && c <= 'f'))) {
return false;
}
}
return true;
}
}
```
对于给定的样例输入"Abc",运行上述代码后,输出应为"Decimal: 2748"。
阅读全文