- 问题描述
编写一个程序,以字符串方式输入一个前缀表达式,然后计算它的值。输入格式为:“运算符 对象1 对象2”,其中,运算符为“+”(加法)、“-”(减法)、“*”(乘法)或“/”(除法),运算对象为不超过10的整数,它们之间用一个空格隔开。要求:对于加、减、乘、除这四种运算,分别设计相应的函数来实现。
输入格式:输入只有一行,即一个前缀表达式字符串。
输出格式:输出相应的计算结果(如果是除法,直接采用c语言的“/”运算符,结果为整数)。
-
输入输出样例
样例输入
5 2
样例输出
7
-
解题思路:
本题主要考察对Scanner类的运用以及分支结构判断运算符。
需要注意的是:**swtich()变量类型只能是int、short、char、byte和enum类型(JDK 1.7 之后,类型也可以是String了)。**但是Scanner只能扫描字符串类型的数据,因此需要将接收的字符串转换为char型进而计算结果。
代码如下:
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String x = sc.next();
char x1 = x.charAt(0);//将String类型转换为char型
int n1 = sc.nextInt();
int n2 = sc.nextInt();
System.out.println(calculate(x1,n1,n2));
}
//swtich()变量类型只能是int、short、char、byte和enum类型(JDK 1.7 之后,类型也可以是String了)。
private static int calculate(char x1, int n1, int n2) {
// 计算表达式
int num = 0;
switch(x1){//使用分支结构判断前缀运算符
case '+': num=n1+n2; break;
case '-': num=n1-n2; break;
case '*': num=n1*n2; break;
case '/': num=n1/n2; break;
}
return num;
}
}