我是一个新的(不是全新的)在java中 所以我有一个程序可以将十六进制转换为二进制 所以输出应该是这样的:
如果用户输入:200F: “输出应该是这样的:” 2- 0010 0-0000 0-0000 F-1111
但问题是如果用户输入一个小写字母,则显示为null 看看我的代码:
import java.util.*;
import java.io.*;
class Ideone
{
public static void main(String[] args) throws IOException {
BufferedReader input = new BufferedReader(new InputStreamReader(
System.in));
HashMap<Character, String> map = new HashMap<Character, String>();
map.put('0', "0000");
map.put('1', "0001");
map.put('2', "0010");
map.put('3', "0011");
map.put('4', "0100");
map.put('5', "0101");
map.put('6', "0110");
map.put('7', "0111");
map.put('8', "1000");
map.put('9', "1001");
map.put('A', "1010");
map.put('B', "1011");
map.put('C', "1100");
map.put('D', "1101");
map.put('F', "1111");
System.out.print("Input your Hex Number here : ");
String userInput = input.readLine();
String resultx = "";
for (int i = 0; i < userInput.length(); i++) {
/* used for separating the value */
char hexVal = userInput.charAt(i);
String binary = map.get(hexVal);
resultx=resultx +"\n" + hexVal + "-" + binary;
}
//Main output
System.out.println("The Binary of " + userInput + ":" + "\n" + resultx);
}
}
我想我也可以创建一个包含小写字母的hashmap,但我认为如果我这样做,我的代码就会变得难看......
那么你可以帮助我如何忽略我的代码中的情况吗?
我还创建了另一个程序,我使用数组,但有人告诉我它有一个丑陋的结构,它不高效和准确..他们还说我是一个复杂的,所以他们给了我一个使用hashmap的想法和内置转换器。但是hashmap看起来很好..
查看我的其他代码:并告诉我哪两个更好,因为当我运行这个程序时,它运行良好,没问题。所以请查看:
谢谢你。我希望你能解决我的问题..答案 0 :(得分:1)
在处理之前将用户输入字符串转换为大写。
System.out.print("Input your Hex Number here : ");
String userInput = input.readLine();
userInput = userInput.toUpperCase();
答案 1 :(得分:1)
String binary = map.get(Character.toUpperCase(hexVal));
也可以解决问题。