【笔试】今日头条 形式化输出

来源:互联网 发布:手机号码拦截软件 编辑:程序博客网 时间:2024/05/23 17:59

题目


解答

import java.text.DecimalFormat;import java.util.*;public class Main {public static void main(String[] args){HashMap<String, String> rsStr = new HashMap<String, String>();rsStr.put("11", "*");rsStr.put("12", "*");rsStr.put("13", "*");rsStr.put("14", "*");rsStr.put("15", "*");rsStr.put("21", "***");rsStr.put("22", "  *");rsStr.put("23", "***");rsStr.put("24", "*  ");rsStr.put("25", "***");rsStr.put("31", "***");rsStr.put("32", "  *");rsStr.put("33", "***");rsStr.put("34", "  *");rsStr.put("35", "***");rsStr.put("41", "* *");rsStr.put("42", "* *");rsStr.put("43", "***");rsStr.put("44", "  *");rsStr.put("45", "  *");rsStr.put("51", "***");rsStr.put("52", "*  ");rsStr.put("53", "***");rsStr.put("54", "  *");rsStr.put("55", "***");rsStr.put("61", "***");rsStr.put("62", "*  ");rsStr.put("63", "***");rsStr.put("64", "* *");rsStr.put("65", "***");rsStr.put("71", "***");rsStr.put("72", "  *");rsStr.put("73", "  *");rsStr.put("74", "  *");rsStr.put("75", "  *");rsStr.put("81", "***");rsStr.put("82", "* *");rsStr.put("83", "***");rsStr.put("84", "* *");rsStr.put("85", "***");rsStr.put("91", "***");rsStr.put("92", "* *");rsStr.put("93", "***");rsStr.put("94", "  *");rsStr.put("95", "***");rsStr.put("01", "***");rsStr.put("02", "* *");rsStr.put("03", "* *");rsStr.put("04", "* *");rsStr.put("05", "***");rsStr.put("+1", "   ");rsStr.put("+2", " * ");rsStr.put("+3", "***");rsStr.put("+4", " * ");rsStr.put("+5", "   ");rsStr.put("-1", "   ");rsStr.put("-2", "   ");rsStr.put("-3", "***");rsStr.put("-4", "   ");rsStr.put("-5", "   ");rsStr.put("*1", "   ");rsStr.put("*2", "* *");rsStr.put("*3", " * ");rsStr.put("*4", "* *");rsStr.put("*5", "   ");rsStr.put("/1", "   ");rsStr.put("/2", "  *");rsStr.put("/3", " * ");rsStr.put("/4", "*  ");rsStr.put("/5", "   ");rsStr.put("=1", "    ");rsStr.put("=2", "****");rsStr.put("=3", "    ");rsStr.put("=4", "****");rsStr.put("=5", "    ");rsStr.put(".1", "  ");rsStr.put(".2", "  ");rsStr.put(".3", "  ");rsStr.put(".4", "**");rsStr.put(".5", "**");Scanner sc = new Scanner(System.in);String inStr = sc.nextLine().replace(" ", "");double rs = calculate(toSuffix(inStr));if(rs % 1 == 0){int rs1 = (int)rs;inStr = inStr + "=" + rs1;}else{String rs2 = "" + rs;int index = rs2.indexOf('.');if(rs2.length() < index + 3)inStr = inStr + "=" + rs;else{DecimalFormat df = new DecimalFormat("######0.00");inStr = inStr + "=" + df.format(rs);}}char[] inStrArr = inStr.toCharArray();String outStr = "";for(int i = 1; i <= 5; i++){for(int j = 0; j < inStrArr.length; j++){switch(inStrArr[j]){case '1':outStr += rsStr.get("" + '1' + i);break;case '2':outStr += rsStr.get("" + '2' + i);break;case '3':outStr += rsStr.get("" + '3' + i);break;case '4':outStr += rsStr.get("" + '4' + i);break;case '5':outStr += rsStr.get("" + '5' + i);break;case '6':outStr += rsStr.get("" + '6' + i);break;case '7':outStr += rsStr.get("" + '7' + i);break;case '8':outStr += rsStr.get("" + '8' + i);break;case '9':outStr += rsStr.get("" + '9' + i);break;case '0':outStr += rsStr.get("" + '0' + i);break;case '+':outStr += rsStr.get("" + '+' + i);break;case '-':outStr += rsStr.get("" + '-' + i);break;case '*':outStr += rsStr.get("" + '*' + i);break;case '/':outStr += rsStr.get("" + '/' + i);break;case '=':outStr += rsStr.get("" + '=' + i);break;case '.':outStr += rsStr.get("" + '.' + i);break;}if(j != inStrArr.length - 1)outStr += "  ";}outStr += "\r\n";}System.out.println(outStr);}public static List<Object> toSuffix(String s) {Map<String, Integer> map = new HashMap<String, Integer>();map.put("+", 0);map.put("-", 0);map.put("*", 1);map.put("/", 1);List<Object> list = new ArrayList<Object>();String[] number = s.split("[^\\d]");String[] operator = s.split("\\d+");Stack<String> stack = new Stack<String>();for (int i = 0; i < number.length; i++) {if (operator[i].length() != 0) {while (!stack.isEmpty()&& map.get(operator[i]) <= map.get(stack.peek())) {list.add(stack.pop());}stack.push(operator[i]);}list.add(Double.parseDouble(number[i]));}while (!stack.isEmpty()) {list.add(stack.pop());}return list;}public static double calculate(List<Object> list) {Stack<Double> stack = new Stack<Double>();for (Object obj : list) {if (obj instanceof Double) {stack.push((Double) obj);} else {double b = stack.pop();double a = stack.pop();if (obj.equals("+"))stack.push(a + b);if (obj.equals("-"))stack.push(a - b);if (obj.equals("*"))stack.push(a * b);if (obj.equals("/"))stack.push(a / b);}}return stack.pop();}}


0 0
原创粉丝点击