JAVA语言实现四则运算和pad图展示

本文介绍了如何通过编程将四则运算转换为后缀表达式,利用栈数据结构处理加、减、乘、除操作,详细展示了在Java中的实现过程。
摘要由CSDN通过智能技术生成

四则运算是指加法、减法、乘法和除法四种运算,例如:1+(2-3/4)*5 。我们可以很快得到答案,但如何通过编程实现其运算呢?

​
//四则运算
public class FourFundamentalRules {
    private static Stack<Character> stack = new Stack<>();//后缀表达式
    private static Stack<Character> stack_1 = new Stack<>();//符号栈
    private static Stack<Character> stack_2 = new Stack<>();//临时栈
    public static void main(String[] args) {
        String str = "1+(2-3/4)*5";
        try {
            Double b = calculate(str);
            System.out.println("运算结果为:"+b);
        }catch (Exception e){
            System.out.println("error");
        }
    }
    //运算
    private static Double calculate(String str) throws Exception{
        char[] arr = str.toCharArray();
        //转化为后缀表达式
        for(int i=0;i<arr.length;i++){
            if(Character.isDigit(arr[i])){//判断是否为数字
                stack.push(arr[i]);
            }else if(arr[i] == '*'||arr[i] == '/'){
                while(!stack_1.empty()){
                    char ch = stack_1.pop();
                    if(ch == '('){
                        stack_1.push(ch);
                        break;
                    }else if(ch == '*' || ch == '/'){
                        stack.push(ch);
                    }else{
                        stack_2.push(ch);
                    }
                }
                while(!stack_2.empty()){
                    stack_1.push(stack_2.pop());
                }
                stack_1.push(arr[i]);
            } else if(arr[i] == '+'|| arr[i] == '-'){
                while(!stack_1.empty()){
                    char ch = stack_1.pop();
                    if(ch == '('){
                        stack_1.push(ch);
                        break;
                    }else if(ch == '*' || ch == '/'||ch == '+'|| ch == '-'){
                        stack.push(ch);
                    }else{
                        stack_2.push(ch);
                    }
                }while(!stack_2.empty()){
                    stack_1.push(stack_2.pop());
                }
                stack_1.push(arr[i]);
            }else if(arr[i] == '('){
                stack_1.push(arr[i]);
            }else if(arr[i] == ')'){
                char ch = stack_1.peek();
                while(ch != '('){
                    ch = stack_1.pop();
                    stack.push(ch);
                }
                stack.pop();
            }else{
                throw new Exception();
            }
        }
        while(!stack_1.empty()){
            stack.push(stack_1.pop());
        }
        //进行运算
        while(!stack.empty()){
            stack_2.push(stack.pop());
        }
        Stack<Double> s = new Stack<>();//用于最后计算的栈
        while(!stack_2.empty()){
            char ch = stack_2.pop();
            if(ch == '*' || ch == '/'||ch == '+'|| ch == '-'){
                double sum = 0;
                double num1= s.pop();
                double num2= s.pop();
                switch (ch){
                    case '*':sum = num2*num1;break;
                    case '/':sum = num2/num1;break;
                    case '+':sum = num2+num1;break;
                    case '-':sum = num2-num1;break;
                }
                s.push(sum);
            }else if (Character.isDigit(ch)){
                s.push((double)Character.getNumericValue(ch));
            }else{
                throw new Exception();
            }
        }
        return s.pop();
    }
}

​

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实现Java开发pad端app登录,需要以下步骤: 1. 创建登录界面:在pad端app中创建一个界面,包含用户名和密码的输入框,以及登录按钮。 2. 连接后台服务器:使用Java的HttpURLConnection类或者HttpClient库连接后台服务器,向服务器发送登录请求。 3. 后台验证:后台服务器接收到请求后,对用户名和密码进行验证,如果验证成功,则返回成功的消息和用户信息,否则返回失败的消息。 4. 登录成功:如果后台验证成功,可以在pad端app中保存用户信息,跳转到主界面。 5. 登录失败:如果后台验证失败,则需要提示用户重新输入用户名和密码,或者提供其他的操作。 下面是一个简单的Java代码示例,用于连接后台服务器并发送登录请求: ``` import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class Login { public static void main(String[] args) { try { // 创建连接 URL url = new URL("http://localhost:8080/login?username=admin&password=123456"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setRequestProperty("Content-Type", "application/json"); connection.setDoOutput(true); // 发送请求 BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); String line; StringBuilder result = new StringBuilder(); while ((line = reader.readLine()) != null) { result.append(line); } reader.close(); // 处理返回结果 System.out.println(result.toString()); } catch (Exception e) { e.printStackTrace(); } } } ``` 在上面的代码中,我们使用了HttpURLConnection类创建连接,并且设置了请求方法、请求头和请求参数。最后,我们通过读取返回的输入流,获取后台服务器返回的结果。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值