猿问

将七段转换为数字

我想在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);            

    }

任何帮助都会很高兴


忽然笑
浏览 166回答 2
2回答

胡说叔叔

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

暮色呼如

尝试将三行字符串解析为数字序列将很棘手,因为在数字之间没有某种分隔符。123456789012345678901234567890..._.._....._.._.._.._.._.._...|._|._||_||_.|_...||_||_||.|..||_.._|..|._||_|..||_|._||_|.123456789012345678901234567890上面是您的原始示例,其中的空格被点替换以突出显示它们。请注意,有些数字是 1 个字符宽 ('1'),有些是 2 个字符 ('3', '7'),其余的则是 3 个字符。问题: - '1's 总是只占两列吗?- '2' 和 '3' 之间以及 '6' 和 '7' 之间有一个空格,但其他数字之间没有。在“1”之前还有一个前导空格。需要少于三列的字符是否会有前导空格的规则?- 还会有其他空间吗?我这样做的方法是制作一个带有三个字符串(三行)的对象。字符串必须等长。然后,实现一个 char-wise 解析器,将字符从三个字符串中平均提取出来。如果所有三个字符都是空格,请删除它们。如果没有,读一栏,你有'1'吗?如果没有,请阅读另一个,你有“3”还是“7”?如果没有,请阅读第三篇,你有什么性格?这有帮助吗?
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答