试题 历届试题 小计算器

    技术2022-07-10  139

    问题描述 模拟程序型计算器,依次输入指令,可能包含的指令有 1.数字:‘NUMX,X为一个包含大写字母和数字的字符串,表示一个当前进制的数 2.运算指令:’ADD‘,‘SUB’,‘MUL’,‘DIV’,‘MOD’,分别表示家减乘,除法取商,除法取余 3.进制转换指令:’CHANECK‘,将当前进制转换为K进制 4.输出指令:’EQUAL‘,以当前进制输出结果 5.重置指令:’CLEAR‘,清楚当前数字 import java.io.BufferedReader; import java.io.IOExeption; import java.io.InputSteamReader; public class Main{ public static void main(String[] args) throws IOException{ BufferedReader bufferedReader = new BufferReader(new InputStreamReader(System.in)); int n=Integer.parseInt(bufferedReader.readLine()); for(int i=0;i<n;i++){ String[] tmp=bufferedReader.readLine().split(" "); operate(tmp); } }

    static String op=" “; static int hex=10; static long[] num=new long[2]; public static void operate(String[] tmp) throws IOException{ switch(tmp[0]){ case “NUM”: if(op.equalsIIgnoreCase(” “)){ num[0]=Long.valueOf(tmp[1],hex); }else{ num[1]=Long.valueOf(tmp[1],hex); num[0]=caculate(); op=” “; break; case"ADD”: op=“ADD”; break; case"SUB": op=“SUB”; break; case"MUL": op=“MUL”; break; case"DIV": op=“DIV”; break; case"MOD": op=“MOD”; break; case"CHANGE": hex=Integer.parseInt(tmp[1]); break; case"EQUAL": print(); break; case"CLEAR": num[0]=0; num[1]=0; op=" “; break; default: break;} } public static void print(){ System.out.println(Long.toString(num[0],hex).toUpperCase()); } public static long caculate(){ long ret=0; switch(op){ case"ADD”: ret=num[0]+num[1]; break; case"SUB": ret=num[0]-num[1]; break; case"MUL": ret=num[0]*num[1]; break; case"DIV": ret=num[0]/num[1]; break; case"MOD": ret=num[0]%num[1]; default: break; } return ret;} }

    Processed: 0.014, SQL: 9