华为机试 - 题目4 - 表达式求值

来源:互联网 发布:西安儿童编程培训机构 编辑:程序博客网 时间:2024/06/06 09:19
/** * 2014年华为机试 第三题 * 三、题目描述(50分): 通过键盘输入100以内正整数的加、减运算式,请编写一个程序输出运算结果字符串。输入字符串的格式为:“操作数1 运算符 操作数2”,“操作数”与“运算符”之间以一个空格隔开。补充说明:1、操作数为正整数,不需要考虑计算结果溢出的情况。2、若输入算式格式错误,输出结果为“0”。要求实现函数: void arithmetic(const char *pInputStr, long lInputLen, char *pOutputStr);【输入】 pInputStr:  输入字符串            lInputLen:  输入字符串长度         【输出】 pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长; 【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出示例 输入:“4 + 7”  输出:“11”输入:“4 - 7”  输出:“-3”输入:“9 ++ 7”  输出:“0” 注:格式错误 * @author snail * 耗时: 13:49 - 14:15 ,共26分钟。 * 耗时原因:没有区分开 Scanner reader = new Scanner(System.in);  * reader.next() 与 nextLine() ,next()是取输入的第一个空格前的东西, * nextLine()这里取得是输入的一行信息 */public class Test201403 {private static String calculate(String str){String[] args = str.split(" ");int a = 0;int b = 0;if (args.length != 3) {return "格式错误,必须是2个操作数和1个运算符,您输入的运算式子长度是"+args.length;}try {a = Integer.parseInt(args[0]);b = Integer.parseInt(args[2]);} catch (NumberFormatException e) {return "格式错误,操作数必须是整数,而不能是其他字符";}int result = 0;String c = args[1];if (c.equals("+")) {result = a+b;return String.valueOf(result);}else if (c.equals("-")) {result = a-b;return String.valueOf(result);}else {return "运算符格式错误,您所输入的运算符是"+c;}}public static void main(String args[]){Scanner reader = new Scanner(System.in);System.out.println("请输入100以内正整数的加、减运算式,回车结束输入");String inputString = reader.nextLine();System.out.println("您所输入的是:"+inputString);System.out.println("运算结果是:"+calculate(inputString));}}

0 0