如果输入小写,我的十六进制到二进制转换器为空

时间:2014-09-30 13:36:38

标签: java binary hex converter

我是一个新的(不是全新的)在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看起来很好..

查看我的其他代码:并告诉我哪两个更好,因为当我运行这个程序时,它运行良好,没问题。所以请查看:

my code

谢谢你。我希望你能解决我的问题..

2 个答案:

答案 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));也可以解决问题。