题目:
几个需要注意的点:
- CLEAR指令:重制计算,相当于计算机中的C按钮
- CHANGE K指令:改变的是整个运算的进制,不是单独改变某个数的进制,如输入1024后,改变为二进制再加上100000(二进制数),最后输出的进制也是当前二进制数
- 如何解决不同进制之间的运算:把所有输入的数先转为十进制进行运算,然后最后输出的时候再按照之前的进制进行输出
Integer.parseInt(数, 数对应的进制)
/Integer.valueOf(数, 数对应的进制)
----- 将不同进制数转为十进制数Integer.toString(十进制数, 指定进制)
----- 将十进制数转为对应进制数
AC代码
import java.util.Scanner;
public class Main {
// 默认10进制
public static int Radix = 10;
// 数字x
public static Long x;
// 运算符
public static String operation = "null";
// 运算结果
public static Long RES = -1L;
// 进制转换指令
public static final String CHANGE = "CHANGE";
// 输入的数字NAM X
public static final String NUM = "NUM";
// 运算指令
public static final String ADD = "ADD";
public static final String SUB = "SUB";
public static final String MUL = "MUL";
public static final String DIV = "DIV";
public static final String MOD = "MOD";
// 输出指令
public static final String EQUAL = "EQUAL";
// 重制指令
public static final String CLEAR = "CLEAR";
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
// 指令的数量
int times = s.nextInt();
while (times >= 0) {
// 接受输入的指令
String cmd = s.nextLine();
String[] words = cmd.split(" ");
switch (words[0]) {
case CLEAR:
x = 0L;
RES = -1L;
operation = "null";
break;
case NUM:
// 以radix进制的数转10进制
x = Long.parseLong(words[1], Radix);
if (RES < 0) {
RES = x;
}
switch (operation) {
case "null":
break;
case "add":
RES += x;
break;
case "sub":
RES -= x;
break;
case "mul":
RES *= x;
break;
case "div":
RES /= x;
break;
case "mod":
RES %= x;
break;
}
break;
case CHANGE:
// 改变进制
Radix = Integer.parseInt(words[1]);
break;
case ADD:
operation = "add";
break;
case SUB:
operation = "sub";
break;
case MUL:
operation = "mul";
break;
case DIV:
operation = "div";
break;
case MOD:
operation = "mod";
break;
case EQUAL:
// 将结果运算结果以radix进制输出
System.out.println(Long.toString(RES, Radix).toUpperCase());
}
times--;
}
}
}
收获:
-
Java中自带的进制转换API
Integer.parseInt(数, 数对应的进制)
/Integer.valueOf(数, 数对应的进制)
----- 将不同进制数转为十进制数Integer.toString(十进制数, 指定进制)
----- 将十进制数转为对应进制数
-
Scanner类中next()系列方法
- nextInt() 输入整数
- nextLine() 输入字符串包含空格
- next() 输入字符串不能包含空格
更多推荐
PREV-55 小计算器 (进制转换)
发布评论