20155237 第十一周java课堂程序

内容一:后缀表达式

abcde/-f+

内容二:实现Linux下dc的功能,计算后缀表达式的值

填充下列代码:

  1. import java.util.Scanner;
  2. public class MyDCTester {
  3. public static void main (String[] args) {
  4. String expression, again;
  5. int result;
  6. try
  7. {
  8. Scanner in = new Scanner(System.in);
  9. do
  10. {
  11. MyDC evaluator = new MyDC();
  12. System.out.println ("Enter a valid postfix expression: ");
  13. expression = in.nextLine();
  14. result = evaluator.evaluate (expression);
  15. System.out.println();
  16. System.out.println ("That expression equals " + result);
  17. System.out.print ("Evaluate another expression [Y/N]? ");
  18. again = in.nextLine();
  19. System.out.println();
  20. }
  21. while (again.equalsIgnoreCase("y"));
  22. }
  23. catch (Exception IOException)
  24. {
  25. System.out.println("Input exception reported");
  26. }
  27. }
  28. }
  29. import java.util.StringTokenizer;
  30. import java.util.Stack;
  31. public class MyDC
  32. {
  33. /** constant for addition symbol */
  34. private final char ADD = '+';
  35. /** constant for subtraction symbol */
  36. private final char SUBTRACT = '-';
  37. /** constant for multiplication symbol */
  38. private final char MULTIPLY = '*';
  39. /** constant for division symbol */
  40. private final char DIVIDE = '/';
  41. /** the stack */
  42. private Stack<Integer> stack;
  43. public MyDC() {
  44. stack = new Stack<Integer>();
  45. }
  46. public int evaluate (String expr)
  47. {
  48. int op1, op2, result = 0;
  49. String token;
  50. StringTokenizer tokenizer = new StringTokenizer (expr);
  51. while (tokenizer.hasMoreTokens())
  52. {
  53. token = tokenizer.nextToken();
  54. **//如果是运算符,调用isOperator
  55. if ()
  56. {
  57. //从栈中弹出操作数2
  58. //从栈中弹出操作数1
  59. //根据运算符和两个操作数调用evalSingleOp计算result;
  60. //计算result入栈;
  61. }
  62. else//如果是操作数
  63. //操作数入栈;
  64. }**
  65. return result;
  66. }
  67. private boolean isOperator (String token)
  68. {
  69. return ( token.equals("+") || token.equals("-") ||
  70. token.equals("*") || token.equals("/") );
  71. }
  72. private int evalSingleOp (char operation, int op1, int op2)
  73. {
  74. int result = 0;
  75. switch (operation)
  76. {
  77. case ADD:
  78. result = op1 + op2;
  79. break;
  80. case SUBTRACT:
  81. result = op1 - op2;
  82. break;
  83. case MULTIPLY:
  84. result = op1 * op2;
  85. break;
  86. case DIVIDE:
  87. result = op1 / op2;
  88. }
  89. return result;
  90. }
  91. }

填写的代码是:

//如果是运算符,调用isOperator

if ()

{

//从栈中弹出操作数2

//从栈中弹出操作数1

//根据运算符和两个操作数调用evalSingleOp计算result;

//计算result入栈;

}

else//如果是操作数

//操作数入栈;

}

//当输入是运算符

调用isOperator方法片段所输入的是否为运算符,是运算符则为true,不是则为false,当是运算符的时候进行出栈、运算、将结果进栈的操作

根据提示信息和栈的基础操作,从栈中弹出一个数字为stack.pop(),并将此值赋给int a,

根据所给的evalSingleOp对前两个操作数进行加减乘除,并用charAt(0)方法取得字符串的运算符号,进行相应的运算。

码云链接

20155237 第十一周java课堂程序的更多相关文章

  1. 20155201 第十一周Java课堂实践

    一.表达式后缀表达式: a b x c d e / - f x + 二.mini dc MyDC.java import java.util.StringTokenizer; import java. ...

  2. 第十一周java课堂测试

    Main.java package class_third_copy; import java.util.Scanner; import classthird.Test; import classth ...

  3. 20155301第十一周java课栈程序

    20155301第十一周java课栈程序 内容一:后序表达式: abcde/-f+ 内容二:根据填充以下代码: import java.util.Scanner; public class MyDCT ...

  4. 第十一周java学习总结

    目录 第十一周java学习总结 学习内容 学习总结 提交代码截图 代码推送 第十一周java学习总结 学习内容 第13章 Java网络编程 主要内容 URL类 InetAdress类 套接字 UDP数 ...

  5. 20155301第十二周java课程程序

    20155301第十二周java课程程序 内容一:在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常,错误和边界情况 String类 charAt split Ar ...

  6. 20175215 2018-2019-2 第十一周java课程学习总结

    第13章 Java网络编程 13.1 URL类 URL类是java.net包中的一个重要的类,URL的实例封装着一个统一资源定位符(Uniform Resource Locator),使用URL创建对 ...

  7. 第十一周Java实验作业

    实验十一   集合 实验时间 2018-11-8 1.实验目的与要求 (1) 掌握Vetor.Stack.Hashtable三个类的用途及常用API: Vector类类似长度可变的数组,其中只能存放对 ...

  8. 第二周Java课堂作业

    演示一: public class EnumTest { public static void main(String[] args) { Size s=Size.SMALL; Size t=Size ...

  9. 第十一周Java学习总结。

    java UI 图形界面知识梳理: ATM: 在整个AWT包中提供的所有工具类主要分为以下3种. (1)组件:Component. (2)容器:Container. (3)布局管理器:LayoutMa ...

随机推荐

  1. 关于Dynamics CRM 安装用户权限的说明

    做了这么多年的CRM项目,但发现部分客户的IT安全监管很严格,在CRM系统安装时,要求给出系统安排账号的权限. 这时小伙伴们 坚持不住了~~ 天天都是用域控的admin操作,这个时候问我要什么权限,于 ...

  2. 【SPL标准库专题(5)】 Datastructures:SplStack & SplQueue

    这两个类都是继承自SplDoublyLinkedList,分别派生自SplDoublyLinkedList的堆栈模式和队列模式:所以放在一起来介绍: 堆栈SplStack # 类摘要 SplStack ...

  3. .NET笔试题集(四)

    转载于:http://www.cnblogs.com/ForEvErNoME/archive/2012/09/10/2678727.html 1.请你简单的说明数据库建立索引的优缺点 使用索引可以加快 ...

  4. 一个能够编写、运行SQL查询并可视化结果的Web应用:SqlPad

    SqlPad 是一个能够用于编写.运行 SQL 查询并可视化结果的 Web 应用.支持 PostgreSQL.MySQL 和 SQL Server.SqlPad 目前仅适合单个团队在内网中使用,它直接 ...

  5. python基础学习12----装饰器

    装饰器可以在不修改目标函数代码的前提下, 在目标函数执行前后增加一些额外功能 例如有一个简单的函数 import time def func1(): print("这是一个简单的函数&quo ...

  6. Java语言的主要特点

    Java语言有很多的优点,可靠.安全.编译和解释型语言.分布式.多线程.完全面向对象.与平台无关性等等. 与平台无关性 Java语言最大的优势在于与平台无关性,也就是可以跨平台使用. 绝大多数的编程语 ...

  7. 【待补充】[Spark Core] Spark 实现标签生成

    0. 说明 在 IDEA 中编写 Spark 代码实现将 JSON 数据转换成标签,分别用 Scala & Java 两种代码实现. 1. 准备 1.1 pom.xml  <depend ...

  8. ZooKeeper 集群的安装部署

    0. 说明 ZooKeeper 安装在 s102.s103.s104上,这三个节点同时是 Hadoop 的 DataNode 1. ZooKeeper 本地模式安装配置 1.0 在 s101 上进行安 ...

  9. Python pandas & numpy 笔记

    记性不好,多记录些常用的东西,真·持续更新中::先列出一些常用的网址: 参考了的 莫烦python pandas DOC numpy DOC matplotlib 常用 习惯上我们如此导入: impo ...

  10. 第二次SDN上机作业

    SDN第二次作业 1.安装floodlight fatter树在floodlight上的连接显示 2.生成拓扑并连接控制器floodlight,利用控制器floodlight查看图形拓扑 floodl ...