题目:
请你编写程序实现能处理两个数的+、-、*、/、%的表达式程序。数据的输入/输出全部使用标准输入/输出,输入数据的第一行为你需要计算表达式的个数,从第2行开始,每一行为你计算的一个表达式,每行数据中没有空格,除%运算外的输入数据皆为float数,除%运算结果为整数外,其他都保留两位小数,每个表达式的结果使用一行输出。
输入测试用例:
4
1+2
3.12*4
7%3
1/3
用例输出结果:
3.00
12.48
1
0.33
代码:
通过出现的运算符将字符串分成两个由数字组成的字符串,将数字字符串转化为数字进行运算,但是"-"必须在最下面,因为会出现负数,此时负数的"-"并能当作运算符运算两个数的差
import java.util.Scanner;
public class Xingyuxingxi{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int a= sc.nextInt();
for (int i = 0; i < a; i++) {
String b=sc.next();
if(b.contains("+"))//包含+
{
String []num=b.split("\\+");//将字符串分为两部分
double s1=Double.parseDouble(num[0]);//将数字部分转化为浮点数
double s2=Double.parseDouble(num[1]);
System.out.printf("%.2f\n",s1+s2);
} else if (b.contains("/")) {//包含/
String []num=b.split("/");
double s1=Double.parseDouble(num[0]);
double s2=Double.parseDouble(num[1]);
System.out.printf("%.2f\n",s1/s2);
}
else if(b.contains("*"))//包含*
{
String []num=b.split("\\*");
double s1=Double.parseDouble(num[0]);
double s2=Double.parseDouble(num[1]);
System.out.printf("%.2f\n",s1*s2);
} else if (b.contains("%")) {//包含%
String []num=b.split("%");
double s1=Double.parseDouble(num[0]);
double s2=Double.parseDouble(num[1]);
System.out.printf("%.0f\n",s1%s2);
} else if (b.contains("-")) {//包含-
String []num=b.split("-");
double s1=Double.parseDouble(num[0]);
double s2=Double.parseDouble(num[1]);
System.out.printf("%.2f\n",s1-s2);
}
//注意-要在最后面,因为可能有负数
}
}
}