猿问

将七段转换为数字

我想在java中将七段数字转换为普通字符串。例如,如果输入这样的字符串


输入


   _  _     _  _  _  _  _  _   

 | _| _||_||_ |_   ||_||_|| |

 ||_  _|  | _||_|  ||_| _||_|

输出应该像


1234567890

我找到了这个 JavaScript答案,我正在尝试将其转换为 java。


现在我有:


private static void get7segment(String ascii) 

    {

        String[] splited="909561432".split("");

        HashMap<Integer,Integer> map=new HashMap<Integer,Integer>();

        map.put(0, 63);

        map.put(1, 6);

        map.put(2, 91);

        map.put(3, 79);

        map.put(4, 102);

        map.put(5, 109);

        map.put(6, 125);

        map.put(7, 7);

        map.put(8, 127);

        map.put(9, 111);            

    }

如有任何帮助,将不胜感激


牛魔王的故事
浏览 87回答 1
1回答

海绵宝宝撒

public static void main(String[] args) {String example= " _     _  _     _  _  _  _  _ \n| |  | _| _||_||_ |_   ||_||_| \n|_|  ||_  _|  | _||_|  ||_| _|";        System.out.println(get7segment(example));}    private static String get7segment(String ascii) {        String result = "";        String[] lines = ascii.split("\n");        String[] line1;        String[] line2;        String[] line3;        for (int j = 0; j < lines.length - 2; j += 4) {            line1 = lines[j].split("");            line2 = lines[j + 1].split("");            line3 = lines[j + 2].split("");            String pow = "";            int mod = 3;            for (int i = 0; i < line1.length; i++) {                if (i % mod == 0) {                    String strAs = digitToString(pow);                    result += strAs;                    pow = "";                }                if (line1[i].equals("_") && i % mod == 1)                    pow += "0";                if (line2[i].equals("|") && i % mod == 0)// left                    pow += "5";                if (line2[i].equals("|") && i % mod == 2)// right                    pow += "1";                if (line2[i].equals("_") && i % mod == 1)// bottom                    pow += "6";                if (line3[i].equals("|") && i % mod == 0)// left                    pow += "4";                if (line3[i].equals("|") && i % mod == 2)// right                    pow += "2";                if (line3[i].equals("_") && i % mod == 1)// bottom                    pow += "3";                if (line1.length - 1 == i) {                    String strAs = digitToString(pow);                    result += strAs;                    pow = "";                }            }            result += "\n";        }        return result;    }    /*     * Converting single ascii digit to regular digit     */    private static String digitToString(String asciiDigit) {        if (asciiDigit == null || asciiDigit.equals(""))            return "";        int pow = 0;        for (int i = 0; i < asciiDigit.length(); i++)            pow += Math.pow(2, Character.getNumericValue(asciiDigit.charAt(i)));        HashMap<Integer, Integer> map = new HashMap<Integer, Integer>() {            {                put(63, 0);                put(6, 1);                put(91, 2);                put(79, 3);                put(102, 4);                put(109, 5);                put(125, 6);                put(7, 7);                put(127, 8);                put(111, 9);            }        };        return map.containsKey(pow) ? Integer.toString(map.get(pow)) : "?";    }输出:0123456789
随时随地看视频慕课网APP

相关分类

Java
我要回答