java - 如何修复这个十六进制到二进制转换器?
问题描述
我有以下代码。问题是当我输入 0-9 个字符时代码不起作用。问题出在哪里?
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
// Enter a hex digit
System.out.print("Enter a hex digit: ");
String hexString = input.nextLine();
// Enter one character
if (hexString.length() != 1) {
System.out.println("You must enter exactly one character");
}
// Display binary number for the hex digit
char hexchar = hexString.charAt(0);
if ((hexchar >= 'A' && hexchar <= 'F') || (hexchar >= 0 && hexchar <= 9))
{
System.out.print("The binary value is ");
switch(hexchar)
{
case 0: System.out.println(0000); break;
case 1: System.out.println(0001); break;
case 2: System.out.println(0010); break;
case 3: System.out.println(0011); break;
case 4: System.out.println(0100); break;
case 5: System.out.println(0101); break;
case 6: System.out.println(0110); break;
case 7: System.out.println(0111); break;
case 8: System.out.println(1000); break;
case 9: System.out.println(1001); break;
case 'A': System.out.println(1010); break;
case 'B': System.out.println(1011); break;
case 'C': System.out.println(1100); break;
case 'D': System.out.println(1101); break;
case 'E': System.out.println(1110); break;
case 'F': System.out.println(1111); break;
}
}
else
System.out.println(hexchar + " is and invalid input");
}
}
我希望代码只接受一位数字,然后将其转换为二进制数。如果不是,则显示错误,或添加处理异常
编辑:(工作)
if ((hexchar >= 'A' && hexchar <= 'F') || (hexchar >= '0' && hexchar <= '9'))
{
System.out.print("The binary value is ");
switch(hexchar)
{
case '0': System.out.println("0000"); break;
case '1': System.out.println("0001"); break;
case '2': System.out.println("0010"); break;
case '3': System.out.println("0011"); break;
case '4': System.out.println("0100"); break;
case '5': System.out.println("0101"); break;
case '6': System.out.println("0110"); break;
case '7': System.out.println("0111"); break;
case '8': System.out.println("1000"); break;
case '9': System.out.println("1001"); break;
case 'A': System.out.println("1010"); break;
case 'B': System.out.println("1011"); break;
case 'C': System.out.println("1100"); break;
case 'D': System.out.println("1101"); break;
case 'E': System.out.println("1110"); break;
case 'F': System.out.println("1111"); break;
}
现在我正在编辑错误代码并使其变得更好。非常感谢所有帮助过的人。
解决方案
因为hexchar
是一个字符。
您需要检查“0”、“1”、“2”等,而不是 0、1、2。
Btwswitch case
语句有一个default
关键字,使用它代替if else
.
然后可以避免“有效”字符检查,因为所有其他输入都将转到默认情况。
二进制数也应该以0b
(if int) 开头。
如果要打印二进制数,请在其周围加上引号,例如“0011”,因此它会强制使用您想要的字符串。
推荐阅读
- ios - Xcode 12.0.1 屏幕截图仅在 iOS 模拟器上捕获主屏幕
- css - 突出显示父导航元素
- python - tensorflow-gpu ValueError:未知层:功能
- c++ - 从 CreateProcess 运行 CMake 会返回 FileTracker FTK0001 错误
- android - MPAndroidChart:如何获得缩放的图表宽度?
- typescript - 如何从字符串中提取数字?
- laravel - 我们如何使用 apiresources laravel 将多个关系合并到一维数组中
- python - 我无法在 discord.py 中添加对消息的反应
- midi - 使用 DryWetMidi 创建一个简单的 MIDI 插件系统
- ios - iOS 14 小部件:如果项目的标题发生更改,则使配置无效/更新