2017-4-18笔试题解答
形式化算式
计算很简单,输出比较麻烦。输出我们需要对每个数字/符号单独输出。可以观察到,每个字符实际上都是一个矩阵,所以我们可以预处理出每个字符矩阵的样子,然后输出即可。
代码如下:
1 import java.text.DecimalFormat; 2 import java.util.Scanner; 3 4 import javax.script.ScriptEngine; 5 import javax.script.ScriptEngineManager; 6 import javax.script.ScriptException; 7 8 public class x { 9 static char [][]map; 10 public static void main(String[] args) { 11 12 13 ScriptEngineManager sem=new ScriptEngineManager(); 14 ScriptEngine engine=sem.getEngineByExtension("js"); 15 String s=new Scanner(System.in).nextLine(); 16 double result1; 17 double result = 0; 18 19 try { 20 result = Double.parseDouble(""+engine.eval(s)); 21 DecimalFormat df = new DecimalFormat("########0.00"); 22 23 24 result1=Double.parseDouble(df.format(result)); 25 if(Math.abs(result1-Math.floor( result1))>0.0001) 26 { 27 s+="="+ result1 ; 28 } 29 else{ 30 s+="="+(new Double(result1)).intValue(); ; 31 } 32 int len=0; 33 34 for( int i=0; i<s.length(); i++) 35 { 36 char x=s.charAt(i); 37 if(x=='1') 38 len+=1; 39 else if(x=='.') 40 len+=2; 41 else if(x=='=') 42 len+=4; 43 else 44 len+=3; 45 46 } 47 map=new char [5][]; 48 // System.out.println(s); 49 for( int i=0; i<5; i++) 50 { 51 map[i]=new char [len+2*(s.length()-1)]; 52 } 53 // System.out.println("len="+(len+2*(s.length()-1))); 54 for( int i=0; i<s.length(); i++) 55 { 56 draw(s.charAt(i)); 57 } 58 } catch (ScriptException e) { 59 // TODO Auto-generated catch block 60 e.printStackTrace(); 61 } 62 for(int i=0;i<5;i++) 63 { 64 for( int j=0; j<map[i].length; j++) 65 { 66 System.out.print(map[i][j]); 67 } 68 System.out.println(""); 69 } 70 // System.out.println(result); 71 72 } 73 74 static int f=0; 75 private static void draw(char c) { 76 // TODO Auto-generated method stub 77 if(c=='1') 78 { 79 map[0][f]='*'; 80 map[1][f]='*'; 81 map[2][f]='*'; 82 map[3][f]='*'; 83 map[4][f]='*'; 84 } 85 86 else if(c=='2') 87 { 88 map[0][f]='*';map[0][f+1]='*';map[0][f+2]='*'; 89 map[1][f]=' ';map[1][f+1]=' ';map[1][f+2]='*'; 90 map[2][f]='*';map[2][f+1]='*';map[2][f+2]='*'; 91 map[3][f]='*';map[3][f+1]=' ';map[3][f+2]=' '; 92 map[4][f]='*';map[4][f+1]='*';map[4][f+2]='*'; 93 } 94 else if(c=='3') 95 { 96 map[0][f]='*';map[0][f+1]='*';map[0][f+2]='*'; 97 map[1][f]=' ';map[1][f+1]=' ';map[1][f+2]='*'; 98 map[2][f]='*';map[2][f+1]='*';map[2][f+2]='*'; 99 map[3][f]=' ';map[3][f+1]=' ';map[3][f+2]='*'; 100 map[4][f]='*';map[4][f+1]='*';map[4][f+2]='*'; 101 } 102 else if(c=='4') 103 { 104 map[0][f]='*';map[0][f+1]=' ';map[0][f+2]='*'; 105 map[1][f]='*';map[1][f+1]=' ';map[1][f+2]='*'; 106 map[2][f]='*';map[2][f+1]='*';map[2][f+2]='*'; 107 map[3][f]=' ';map[3][f+1]=' ';map[3][f+2]='*'; 108 map[4][f]=' ';map[4][f+1]=' ';map[4][f+2]='*'; 109 } 110 else if(c=='5') 111 { 112 map[0][f]='*';map[0][f+1]='*';map[0][f+2]='*'; 113 map[1][f]='*';map[1][f+1]=' ';map[1][f+2]=' '; 114 map[2][f]='*';map[2][f+1]='*';map[2][f+2]='*'; 115 map[3][f]=' ';map[3][f+1]=' ';map[3][f+2]='*'; 116 map[4][f]='*';map[4][f+1]='*';map[4][f+2]='*'; 117 } 118 else if(c=='6') 119 { 120 map[0][f]='*';map[0][f+1]='*';map[0][f+2]='*'; 121 map[1][f]='*';map[1][f+1]=' ';map[1][f+2]=' '; 122 map[2][f]='*';map[2][f+1]='*';map[2][f+2]='*'; 123 map[3][f]='*';map[3][f+1]=' ';map[3][f+2]='*'; 124 map[4][f]='*';map[4][f+1]='*';map[4][f+2]='*'; 125 } 126 else if(c=='7') 127 { 128 map[0][f]='*';map[0][f+1]='*';map[0][f+2]='*'; 129 map[1][f]=' ';map[1][f+1]=' ';map[1][f+2]='*'; 130 map[2][f]=' ';map[2][f+1]=' ';map[2][f+2]='*'; 131 map[3][f]=' ';map[3][f+1]=' ';map[3][f+2]='*'; 132 map[4][f]=' ';map[4][f+1]=' ';map[4][f+2]='*'; 133 } 134 else if(c=='8') 135 { 136 map[0][f]='*';map[0][f+1]='*';map[0][f+2]='*'; 137 map[1][f]='*';map[1][f+1]=' ';map[1][f+2]='*'; 138 map[2][f]='*';map[2][f+1]='*';map[2][f+2]='*'; 139 map[3][f]='*';map[3][f+1]=' ';map[3][f+2]='*'; 140 map[4][f]='*';map[4][f+1]='*';map[4][f+2]='*'; 141 } 142 else if(c=='9') 143 { 144 map[0][f]='*';map[0][f+1]='*';map[0][f+2]='*'; 145 map[1][f]='*';map[1][f+1]=' ';map[1][f+2]='*'; 146 map[2][f]='*';map[2][f+1]='*';map[2][f+2]='*'; 147 map[3][f]=' ';map[3][f+1]=' ';map[3][f+2]='*'; 148 map[4][f]='*';map[4][f+1]='*';map[4][f+2]='*'; 149 } 150 else if(c=='0') 151 { 152 map[0][f]='*';map[0][f+1]='*';map[0][f+2]='*'; 153 map[1][f]='*';map[1][f+1]=' ';map[1][f+2]='*'; 154 map[2][f]='*';map[2][f+1]=' ';map[2][f+2]='*'; 155 map[3][f]='*';map[3][f+1]=' ';map[3][f+2]='*'; 156 map[4][f]='*';map[4][f+1]='*';map[4][f+2]='*'; 157 } 158 else if(c=='+') 159 { 160 map[0][f]=' ';map[0][f+1]=' ';map[0][f+2]=' '; 161 map[1][f]=' ';map[1][f+1]='*';map[1][f+2]=' '; 162 map[2][f]='*';map[2][f+1]='*';map[2][f+2]='*'; 163 map[3][f]=' ';map[3][f+1]='*';map[3][f+2]=' '; 164 map[4][f]=' ';map[4][f+1]=' ';map[4][f+2]=' '; 165 } 166 else if(c=='-') 167 { 168 map[0][f]=' ';map[0][f+1]=' ';map[0][f+2]=' '; 169 map[1][f]=' ';map[1][f+1]=' ';map[1][f+2]=' '; 170 map[2][f]='*';map[2][f+1]='*';map[2][f+2]='*'; 171 map[3][f]=' ';map[3][f+1]=' ';map[3][f+2]=' '; 172 map[4][f]=' ';map[4][f+1]=' ';map[4][f+2]=' '; 173 } 174 else if(c=='*') 175 { 176 map[0][f]=' ';map[0][f+1]=' ';map[0][f+2]=' '; 177 map[1][f]='*';map[1][f+1]=' ';map[1][f+2]='*'; 178 map[2][f]=' ';map[2][f+1]='*';map[2][f+2]=' '; 179 map[3][f]='*';map[3][f+1]=' ';map[3][f+2]='*'; 180 map[4][f]=' ';map[4][f+1]=' ';map[4][f+2]=' '; 181 } 182 else if(c=='/') 183 { 184 map[0][f]=' ';map[0][f+1]=' ';map[0][f+2]=' '; 185 map[1][f]=' ';map[1][f+1]=' ';map[1][f+2]='*'; 186 map[2][f]=' ';map[2][f+1]='*';map[2][f+2]=' '; 187 map[3][f]='*';map[3][f+1]=' ';map[3][f+2]=' '; 188 map[4][f]=' ';map[4][f+1]=' ';map[4][f+2]=' '; 189 } 190 else if(c=='=') 191 { 192 map[0][f]=' ';map[0][f+1]=' ';map[0][f+2]=' ';map[0][f+3]=' '; 193 map[1][f]='*';map[1][f+1]='*';map[1][f+2]='*';map[1][f+3]='*'; 194 map[2][f]=' ';map[2][f+1]=' ';map[2][f+2]=' ';map[2][f+3]=' '; 195 map[3][f]='*';map[3][f+1]='*';map[3][f+2]='*';map[3][f+3]='*'; 196 map[4][f]=' ';map[4][f+1]=' ';map[4][f+2]=' ';map[4][f+3]=' '; 197 } 198 else if(c=='.') 199 { 200 map[0][f]=' ';map[0][f+1]=' '; 201 map[1][f]=' ';map[1][f+1]=' '; 202 map[2][f]=' ';map[2][f+1]=' '; 203 map[3][f]='*';map[3][f+1]='*'; 204 map[4][f]='*';map[4][f+1]='*'; 205 } 206 char x=c; 207 if(x=='1') 208 f+=3; 209 else if(x=='.') 210 f+=4; 211 else if(x=='=') 212 f+=6; 213 else 214 f+=5; 215 216 217 } 218 }