Java黑皮书课后题第10章:*10.26(计算器)修改程序清单7-9,接收一个字符串表达式,其中操作符和操作数由0到多个空格隔开
第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);}
}
Java黑皮书课后题第10章:*10.26(计算器)修改程序清单7-9,接收一个字符串表达式,其中操作符和操作数由0到多个空格隔开相关推荐
- Java黑皮书课后题第9章:*9.4(使用Random类)编写一个程序,创建一个种子为1000的Random对象,然后使用nextInt(100)方法显示0到100之间的前50个随机整数
Java黑皮书课后题第9章:*9.4(使用Random类)编写一个程序,创建一个种子为1000的Random对象,然后使用nextInt方法显示0到100之间的前50个随机整数 题目 赘述 代码 题目 ...
- Java黑皮书课后题第7章:*7.28(数学:组合)编写一个程序,提示用户输入10个整数,然后显示从这10个数中选出两个数的所有组合
7.28(数学:组合) 题目 题目描述 破题 代码 运行示例 题目 题目描述 *7.28(数学:组合)编写一个程序,提示用户输入10个整数,然后显示从这10个数中选出两个数的所有组合 破题 声明一个长 ...
- Java黑皮书课后题第3章:3.12(回文数字)编写一个程序,提示用户输入一个三位的整数,然后确定它是否是回文数
3.12(回文数字)编写一个程序,提示用户输入一个三位的整数,然后确定它是否是回文数 题目 题目描述 示例 破题 代码 题目 题目描述 3.12(回文数字)编写一个程序,提示用户输入一个三位的整数,然 ...
- Java黑皮书课后题第4章:*4.25(生成车牌号码)假设一个车牌号码由三个大写字母和后面的四个数字组成。编写一个程序,生成一个车牌号码
*4.25(生成车牌号码)假设一个车牌号码由三个大写字母和后面的四个数字组成.编写一个程序,生成一个车牌号码 题目 题目概述 破题 代码 题目 题目概述 *4.25(生成车牌号码)假设一个车牌号码由三 ...
- Java黑皮书课后题第8章:*8.22(偶数个1)编写一个程序,产生一个6*6的填满0和1的二维矩阵,显示该矩阵,检测是否每行以及每列中有偶数个1
*8.22(偶数个1)编写一个程序,产生一个6*6的填满0和1的二维矩阵,显示该矩阵,检测是否每行以及每列中有偶数个1 题目 题目描述 破题 代码 题目 题目描述 8.22(偶数个1)编写一个程序,产 ...
- Java黑皮书课后题第7章:**7.23(游戏:储物柜难题)一个学校有100个储物柜和100个学生。所有的储物柜在上学的第一天都是关着的。…在所有学生都经过教学楼并且改变柜子之后,哪些柜子是开着的?
7.23(游戏:储物柜难题)一个学校有100个储物柜和100个学生.所有的储物柜在上学的第一天都是关着的.-在所有学生都经过教学楼并且改变柜子之后,哪些柜子是开着的? 题目 题目描述 破题 代码 运行 ...
- Java黑皮书课后题第8章:*8.31(几何:交点)编写一个方法,返回两条直线的交点。四个点存放在4*2的二维数组points中。编写一个程序,提示用户输入4个点,并显示交点
*8.31(几何:交点)编写一个方法,返回两条直线的交点.四个点存放在4*2的二维数组points中.编写一个程序,提示用户输入4个点,并显示交点 题目 题目描述 破题 代码 本题运行实例 题目 题目 ...
- Java黑皮书课后题第7章:**7.17(对学生排序)编写一个程序,提示用户输入学生个数、学生姓名和他们的成绩,然后按照学生成绩的降序打印学生的姓名。假定姓名是不包含空格的字符,使用next()读取
**7.17(对学生排序)编写一个程序,提示用户输入学生个数.学生姓名和他们的成绩,然后按照学生成绩的降序打印学生的姓名.假定姓名是不包含空格的字符,使用next方法读取 题目 题目描述 破题 代码 ...
- Java黑皮书课后题第2章:*2.17(科学:风寒温度)外面有多冷?...twc=35.74+0.6215ta-35.75v0.16+0.4275tav0.16,输入度数、风速显示风寒温度
*2.17(科学:风寒温度)外面有多冷?...twc=35.74+0.6215ta-35.75v0.16+0.4275tav0.16,输入度数.风速显示风寒温度 题目 题目描述 破题 运行示例 代码 ...
最新文章
- centos 7 文档服务器,centos 7 web服务器
- [oracle]常用SQL汇总
- memcached完全剖析系列教程《转》 memcached完全剖析系列教程–2.理解memcached的内存存储...
- 8、SpringBoot-CRUD默认访问的首页以及thyleaf的静态文件引入/WebMvcConfigurer / WebMvcConfigurationSupport...
- React中的路由react-router
- 02-Linux Kernel(armv8-aarch64)的原子操作的底层实现
- 使用JDBC-ODBC桥接方式访问Access数据库(实例)
- 手绘导图版:深入解析机器学习在风控场景中的8大应用
- Corba传值包含中文解决
- 1067 mysql,mysql免安装版1067错误终极解决办法图文教程
- linux里面的命令
- Linux chkconfig命令
- 软件项目管理案例教程(第三版)其它课后题答案持续更新,欢迎收藏+关注
- python自动生成和文件同名的文件夹,并将文件移动到同名文件夹中
- 如何在南方CASS中内插高程点
- n维椭球体积公式_物质的量浓度公式如何应用
- Prolog编程学习(一)
- 适者生存还是强者生存
- ps 自动生成html代码,ps怎么生成html网页文件 PS生成html网页文件的具体教程
- youtube爬虫搭建