首页 > 其他分享 >ASD

ASD

时间:2023-08-17 21:33:46浏览次数:31  
标签:operatorStack List equals operandStack token ASD String

package com.cicc.irp.riskmgmt.service.impl;

import cn.hutool.core.collection.CollUtil;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Stack;

public class ExpressionParser {

public static void main(String[] args) {

    Map<String, List<String>> map = new HashMap<>();
    List<String> A = Arrays.asList("0", "1", "2", "3", "4", "5", "6");
    List<String> B = Arrays.asList("1", "3", "5");
    List<String> C = Arrays.asList("1", "2", "4");
    map.put("A",A);
    map.put("B",B);
    map.put("C",C);


    String expression1 = "     (A and B or (C and D)) or (E and(F or G)) and F and (H or (I and k))";
    String expression2 = "(A and (B or C)";
    List<String> list = evaluateExpression(expression1.trim(), map);

}


public static List<String> evaluateExpression(String expression,Map<String,List<String>> map) {
    // 利用正则表达式将表达式拆分成操作数和操作符
    //
    // String[] tokens = expression.split("\\(");
    //
    // Stack<List<String>> operandStack = new Stack<>(); // 操作数栈
    // Stack<String> operatorStack = new Stack<>(); // 操作符栈
    //
    // for (String token : tokens) {
    //     if (token.equals("(")) {
    //         operatorStack.push(token);
    //     } else if (token.equals(")")) {
    //         // 处理括号内的子表达式
    //         while (!operatorStack.peek().equals("(")) {
    //             // applyOperation(operandStack, operatorStack);
    //         }
    //         operatorStack.pop(); // 弹出左括号
    //     } else if (token.equals("and") || token.equals("or")) {
    //         // 处理逻辑运算符
    //         while (!operatorStack.isEmpty() && !operatorStack.peek().equals("(") && hasHigherPrecedence(token, operatorStack.peek())) {
    //             // applyOperation(operandStack, operatorStack);
    //         }
    //         operatorStack.push(token);
    //     } else {
    //         // 处理操作数
    //         if (token.equals("B")) {
    //             operandStack.push(checkIfEmpty(B));
    //         } else if (token.equals("C")) {
    //             operandStack.push(checkIfEmpty(C));
    //         } else if (token.equals("D")) {
    //             operandStack.push(checkIfEmpty(D));
    //         } else {
    //             // 可以在这里处理其他变量或者抛出异常
    //         }
    //     }
    // }

    // 处理剩余的操作符
    // while (!operatorStack.isEmpty()) {
    //     // applyOperation(operandStack, operatorStack);
    // }
    // return operandStack.pop(); // 返回最终结果
    return new ArrayList<>();
}

private static List<String> applyOperation(List<String> left, String operate,List<String>  right) {
    if(operate.equals("and")){
        left.retainAll(right);
       return left;
    } else {
        List<String> list = new ArrayList<>();
        if(CollUtil.isNotEmpty(left)){
            list.addAll(left);
        }

        if(CollUtil.isNotEmpty(right)){
            list.addAll(right);
        }
        return list;
    }
}

}

标签:operatorStack,List,equals,operandStack,token,ASD,String
From: https://www.cnblogs.com/ppku/p/17638891.html

相关文章

  • 台达伺服电机(Delta ASDA - B3 - E)报错解决方式
    一硬件设备三台台达伺服驱动器(DeltaASDA-B3-E)树莓派4B伺服电机型号(ECM-B3M-CA0604RS1),输入2.4A110V,输出0.4KW1.27N.M3000r/min 二DeltaASDA-B3-E常见报错解决方式1恢复出厂设置(绝大部分报错都可以用以下方式处理)  P2.008修改数值为10断电重启2AL......
  • WinUI(WASDK)使用MediaPipe检查人体姿态关键点
    前言之前有用这个MediaPipe.NET.NET包装库搞了手势识别,丰富了稚晖君的ElectronBot机器人的第三方上位机软件的功能,MediaPipe作为谷歌开源的机器视觉库,功能很丰富了,于是就开始整活了,来体验了一把人体姿态关键点检测。所用框架介绍1.WASDK这个框架是微软最新的应用开发框架,我......
  • 昆仑通态MCGS与台达伺服ASD-B2 通讯控制案例功能:通过昆仑通态MCGS触摸屏实现与台达AS
    昆仑通态MCGS与台达伺服ASD-B2 通讯控制案例功能:通过昆仑通态MCGS触摸屏实现与台达ASDB2通讯控制,全通讯控制台达B2驱动器速度设置,速度选择,速度启动,带扭矩限制速度控制,扭矩限制通讯设置。配件:昆仑通态MCGS触摸屏,台达ASDB2伺服驱动器+伺服电机。CN1接线端子,CN3伺服驱动器通讯......
  • 航空航天结构动力学国际研讨会(ICASD 2023)
    航空航天结构动力学国际研讨会(ICASD2023) 将于2023年9月15-17日在中国西安举行,首届航空航天结构动力学国际研讨会将由西北工业大学主办。为了更好地适应新经济的黄金时代,大力发展高新技术航天并推广应用是十分必要的, ISSDA2023 会议旨在为航空航天先进结构动力学相关领域的学......
  • asd
    #include<iostream>#include<string>#include<Windows.h>#include"minecraft.h"usingnamespacestd;TxMinecraftmc;intmain(intargc,char**argv){boolcon=mc.ConnectMinecraft("zk.makeblock.net.cn",&q......
  • 昆仑通态MCGS与台达伺服ASD-B2 通讯控制案例功能:通过昆仑通态MCGS触摸屏实现与台达AS
    昆仑通态MCGS与台达伺服ASD-B2通讯控制案例功能:通过昆仑通态MCGS触摸屏实现与台达ASDB2通讯控制,全通讯控制台达B2驱动器速度设置,速度选择,速度启动,带扭矩限制速度控制,扭矩限制通讯设置。配件:昆仑通态MCGS触摸屏,台达ASDB2伺服驱动器+伺服电机。CN1接线端子,CN3伺服驱动器通讯接......
  • 关于报错:Error adding module to project: setSdk: sdk '1.8' type 'JavaSDK' is not
    问题描述:Erroraddingmoduletoproject:setSdk:sdk'1.8'type'JavaSDK'isnotregisteredinProjectJdkTable(图片来自贴吧,看到有一个人问这个问题,然后自己碰到了但是忘了截图)说明当前项目在“ProjectJdkTable”里面是没有配置sdk1.8的。百度翻译过来就是:未在Project......
  • 昆仑通态MCGS与台达伺服ASD-B2 通讯控制案例
    昆仑通态MCGS与台达伺服ASD-B2 通讯控制案例功能:通过昆仑通态MCGS触摸屏实现与台达ASDB2通讯控制,全通讯控制台达B2驱动器速度设置,速度选择,速度启动,带扭矩限制速度控制,扭矩限制通讯设置。配件:昆仑通态MCGS触摸屏,台达ASDB2伺服驱动器+伺服电机。CN1接线端子,CN3伺服驱动器通讯......
  • ' asdf-vm ' 多版本管理器 Linux Mint安装
    前言asdf是一个工具版本管理器。所有的工具版本定义都包含在一个文件(.tool-versions)中,你可以将配置文件放在项目的Git存储库中以便于和团队其他成员共享,从而确保每个人......
  • asdasda
    为了不引入复杂性,在Windows系统上使用VisualStudio2017开始ffmpeg的学习,VisualStudio可以根据自己实际情况来选择。在ffmpeg的学习过程中会遇到很多的图像,有的时候也......