欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > java >内容正文

java

Java黑皮书课后题第10章:*10.26(计算器)修改程序清单7-9,接收一个字符串表达式,其中操作符和操作数由0到多个空格隔开

发布时间:2024/8/1 java 41 豆豆

第10章:*10.26(计算器)

  • 题目
  • 程序清单7-9
  • 本题代码:大幅优化升级

题目

程序清单7-9

对代码进行了修改:原代码将".“认做乘号,修改后将”*"作为乘号

public class qingdan {public static void main(String[] args) {// Check number of String passedif (args.length != 3){System.out.println("Usage: java Calculator operand1 operator operand2: ");System.exit(1);}// The result of the operationint result = 0;// Determine the operatorswitch (args[1].charAt(0)){case '+': result = Integer.parseInt(args[0]) + Integer.parseInt(args[2]);break;case '-': result = Integer.parseInt(args[0]) - Integer.parseInt(args[2]);break;case '*': result = Integer.parseInt(args[0]) * Integer.parseInt(args[2]);break;case '/': result = Integer.parseInt(args[0]) / Integer.parseInt(args[2]);}// Display resultSystem.out.println(args[0] + " " + args[1] + " " + args[2] + "=" + result);} }

本题代码:大幅优化升级

(需要数据结构的玩意儿)
可以执行多步运算
可以支持多位运算
可以支持带括号的运算
可以支持带小数的数字
但依然只支持加减乘除
这里我们借助了jie位大佬的代码

https://www.cnblogs.com/woider/p/5331391.html

这里就不粘贴大佬代码了
有需要可以直接复制粘贴
但注意要将大佬代码里所有的“Calculate”替换为“Test26_Calculate”
或者将下面我给出的代码里所有“Test26_Calculate”替换为“Caculate”

public class Test26 {public static void main(String[] args) {double result = 0;int input_length = args.length;String input_string = "1";for (int i = 0 ; i < input_length ; i++){input_string += args[i];}if (input_string.length() >= 2){input_string = input_string.substring(2, input_string.length());// 此时input_string只有数字、符号和括号}result = Test26_Calculator.conversion(input_string);System.out.println(result);} } 与50位技术专家面对面20年技术见证,附赠技术全景图

总结

以上是生活随笔为你收集整理的Java黑皮书课后题第10章:*10.26(计算器)修改程序清单7-9,接收一个字符串表达式,其中操作符和操作数由0到多个空格隔开的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。