没有负数的计算器

简单表达式计算

http://www.nowcoder.com/questionTerminal/6221faa383fc49f1b10dffcb62c866bf

用split先按+-号断开,再各按*/号断开

import java.util.*;
public class Main{
    public static int f(String str){
        String[] v = str.split("[*/]");//先算乘除法
        int r = Integer.valueOf(v[0]);
        int k = v[0].length();//运算符的下标
        for(int i = 1; i < v.length; ++i){
            if(str.charAt(k) == '*') r *= Integer.valueOf(v[i]);
            if(str.charAt(k) == '/') r /= Integer.valueOf(v[i]);
            k += v[i].length() + 1;
        }
        return r;
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(true){
            String str = sc.nextLine();
            if(str.equals("END")) break;
            String[] v = str.split("[+-]");//再算加减法
            int r = f(v[0]);
            int k = v[0].length();//运算符的下标
            for(int i = 1; i < v.length; ++i){
                if(str.charAt(k) == '+') r += f(v[i]);
                if(str.charAt(k) == '-') r -= f(v[i]);
                k += v[i].length() + 1;
            }
            System.out.println(r);
        }
    }
}
全部评论

相关推荐

07-01 17:14
中北大学 Java
兄弟们是真是假
牛客46374834...:我在boss上投java岗从来没成功过
点赞 评论 收藏
分享
07-02 13:52
武汉大学 golang
骗你的不露头也秒
牛客87776816...:😃查看图片
点赞 评论 收藏
分享
认真搞学习:28小登的建议,投算法岗不要写什么物理竞赛,互联网+,多写点项目,用什么算法做了什么。还有本科算法是不可能的开发你这个也没有项目啊
点赞 评论 收藏
分享
让资本家给我当牛做马:26的秋招还没开始啊?你找的是实习?实习的话你马上就研三了为什么还要实习?
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务