当前位置: 首页 > news >正文

曹妃甸建设局网站网络营销的多种形式和特点

曹妃甸建设局网站,网络营销的多种形式和特点,做网站为什么要买服务器,php做网站的重点使用递归和解释器模式 程序结构设计具体实现1. 先上最重要的实现类:ExpressionParser(最重要)2. 再上上下文测试代码:Context(程序入口,稍重要)3. 使用到的接口和数据结构(不太重要的…

使用递归和解释器模式

  • 程序结构设计
  • 具体实现
    • 1. 先上最重要的实现类:ExpressionParser(最重要)
    • 2. 再上上下文测试代码:Context(程序入口,稍重要)
    • 3. 使用到的接口和数据结构(不太重要的结构封装)
      • 3.1 interface
        • 3.1.1 NumberExpression
        • 3.1.2 四则运算Expression实现类
          • 3.1.2.1 AddExpression
          • 3.1.2.2 SubtractExpression
          • 3.1.2.3 MultiplyExpression
          • 3.1.2.4 DivideExpression

程序结构设计

Context 编写测试代码
expression
Expression interface
四则运算Expression implement
NumberExpression implement
ExpressionParser 核心实现类

具体实现

1. 先上最重要的实现类:ExpressionParser(最重要)

package com.example.demo;import com.example.demo.expression.*;import java.util.regex.Matcher;
import java.util.regex.Pattern;public class ExpressionParser {private String input;private int index;public ExpressionParser(String input) {this.input = input.replaceAll("\\s", ""); // 移除空格this.index = 0;}public Expression parse() {return parseExpression();}private Expression parseExpression() {Expression left = parseTerm();while (index < input.length()) {char operator = input.charAt(index);if (operator == '+' || operator == '-') {index++;Expression right = parseTerm();if (operator == '+') {left = new AddExpression(left, right);} else {left = new SubtractExpression(left, right);}} else {break;}}return left;}private Expression parseTerm() {Expression left = parseFactor();while (index < input.length()) {char operator = input.charAt(index);if (operator == '*' || operator == '/') {index++;Expression right = parseFactor();if (operator == '*') {left = new MultiplyExpression(left, right);} else {left = new DivideExpression(left, right);}} else {break;}}return left;}private Expression parseFactor() {if (index < input.length()) {char currentChar = input.charAt(index);if (Character.isDigit(currentChar)) {return parseNumber();} else if (currentChar == '(') {index++;Expression expression = parseExpression();if (index < input.length() && input.charAt(index) == ')') {index++;return expression;} else {throw new IllegalArgumentException("Mismatched parentheses");}}}throw new IllegalArgumentException("Invalid expression");}private Expression parseNumber() {Pattern numberPattern = Pattern.compile("\\d+");Matcher matcher = numberPattern.matcher(input.substring(index));if (matcher.find()) {String numberStr = matcher.group();index += numberStr.length();return new NumberExpression(Integer.parseInt(numberStr));} else {throw new IllegalArgumentException("Invalid number");}}
}

2. 再上上下文测试代码:Context(程序入口,稍重要)

package com.example.demo;import com.example.demo.expression.Expression;public class Context {public static void main(String[] args) {String inputExpression = "(3 + 55) * 2 - 4 / 2";ExpressionParser parser = new ExpressionParser(inputExpression);Expression expression = parser.parse();int result = expression.interpret();System.out.println("Result: " + result);}
}

3. 使用到的接口和数据结构(不太重要的结构封装)

3.1 interface

package com.example.demo.expression;public interface Expression {int interpret();
}
3.1.1 NumberExpression
package com.example.demo;import com.example.demo.expression.Expression;public class NumberExpression implements Expression {private int number;public NumberExpression(int number) {this.number = number;}@Overridepublic int interpret() {return number;}
}
3.1.2 四则运算Expression实现类
3.1.2.1 AddExpression
package com.example.demo.expression;public class AddExpression implements Expression {private Expression left;private Expression right;public AddExpression(Expression left, Expression right) {this.left = left;this.right = right;}@Overridepublic int interpret() {return left.interpret() + right.interpret();}
}
3.1.2.2 SubtractExpression
package com.example.demo.expression;// 非终结符表达式:减法表达式
public class SubtractExpression implements Expression {private Expression left;private Expression right;public SubtractExpression(Expression left, Expression right) {this.left = left;this.right = right;}@Overridepublic int interpret() {return left.interpret() - right.interpret();}
}
3.1.2.3 MultiplyExpression
package com.example.demo.expression;// 非终结符表达式:乘法表达式
public class MultiplyExpression implements Expression {private Expression left;private Expression right;public MultiplyExpression(Expression left, Expression right) {this.left = left;this.right = right;}@Overridepublic int interpret() {return left.interpret() * right.interpret();}
}
3.1.2.4 DivideExpression
package com.example.demo.expression;// 非终结符表达式:除法表达式
public class DivideExpression implements Expression {private Expression left;private Expression right;public DivideExpression(Expression left, Expression right) {this.left = left;this.right = right;}@Overridepublic int interpret() {int divisor = right.interpret();if (divisor != 0) {return left.interpret() / divisor;} else {throw new ArithmeticException("Division by zero");}}
}
http://www.yayakq.cn/news/743591/

相关文章:

  • 大庆建设网站东莞网站建设开发
  • 惠州城乡规划建设局网站狠狠做狠狠干免费网站
  • 徐州seo计费管理网站优化公司排名
  • 温州手机网站制作哪家好网页制作图片大小设置
  • 成都网站制作怎么样公司怎么做网站
  • 学校网站建设网站网站开发课程内部培训
  • 最专业的外贸网站建设常见网站建设
  • 网站做成微信小程序建网站制作
  • 基于flash网站设计wordpress pdf 在线
  • 网站域名 续费郑州网站建设伟置
  • 那样的网站安卓app软件定制
  • 知名的家居行业网站制作哪个购物网站最便宜
  • 芗城区建设局网站青岛海诚互联做网站好吗
  • 给朋友做的相册网站没有了wordpress angularjs
  • 哈尔滨网站排名公司深圳seo博客
  • 广州手机网站建设公司在哪个网站上做实验仪器比较好
  • 用vs做的网站怎么打开吗厨具网站模板
  • 长春网站排名创业ppt模板免费
  • 企业网站seo报价网站 东莞长安
  • 网站域名到期查询电脑制作h5最常用软件
  • 哈尔滨seo网站管理网站开发软件网站开发
  • 做外贸进国外网站企业培训员工培训平台
  • 提升网站建设品质价位网站模板能自己做吗
  • 医疗营销的网站怎么做吉安seo网站快速排名
  • 网站建设服务 行业代码广告设计公司标志
  • 企业网站管理系统下载深圳市建设设计院网站
  • 网站情况建设说明wordpress 优化js
  • 淮安营销型网站建设中国建设银行网站用户名
  • 安装discuz x 3.1 网站虚拟主机的要求如何查网站空间大小
  • 单页营销网站设计炫彩发光字制作网站