题目描述:
刚上三年级的小明正在做一道四则运算题,他的编程哥哥突发灵感,想做一个程序检验小明的答案对不对,你能猜到小明哥哥的代码是什么吗?
要求输入一个算式(算式包含运算符号和数字,其中乘号用小写字母x代替,除号用/来代替,数字大于0小于10)
该题目来自变态的杨老板
样列输入:
5x5+4+2
样例输出:
31
样列输入:
5x5+4+5x5+1
样例输出:
55
数据规模与约定数字大于0小于10
代码
package YRZ;
import java.util.Scanner;
public class YRZ01 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.nextLine();//输入算式
char f[] = new char[s.length()];//建立char数组
for (int i = 0; i < f.length; i++) {
f[i] = s.charAt(i);//将数字和运算符依次存入char数组
}
int h[] = new int[10];//建立一个int数组大小随意,最好在10左右
int count = 0;
h[count] = f[count] - '0';//先将第一个数字存入int数组中
for (int i = 1; i < s.length(); i += 2) {
if (f[i] == 'x') {
h[count] = h[count] * (f[i + 1] - '0');//如果第一个是符号是乘号或是除号//那么就与第一个数字相乘和相除
}
if (f[i] == '/') {
h[count] = h[count] / (f[i + 1] - '0');
}
if (f[i] == '+') {
count++;//如果是加号或是减号那么数组进入下一位,后面若是再次出现
// 那么这个下一位的数组充当第一位
h[count] = f[i + 1] - '0';
}
if (f[i] == '-') {
count++;
h[count] = -(f[i + 1] - '0');//如果是减号,那就存入负数
}
}
//最后数组里面只有正负数,且它们全部相加的结果就是等式的答案
int end = 0;
for (int i = 0; i < h.length; i++) {
end += h[i];
}
System.out.println(end);//输出答案
}
}