java实现四则运算

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java实现四则运算相关的知识,希望对你有一定的参考价值。

(1)只能处理[0,1000]范围内(操作数及答案都在该范围)的四则运算,
(2)只能做整数运算,除法一定为整除
(3)操作数及操作符都随机产生(4)对于同一考生不能产生相同的题目(1+,*2和2+,*1) 小弟初学java,只求基本的算法代码

最后一个提示没看懂意思。import java.util.Random;
public class JiS
public static void main(String[] args)

Random r=new Random();
char[]ch=new char[]'+','-','*','/';
boolean flag=true;
while(flag)
int a=r.nextInt(10001);
int b=r.nextInt(10001);
char c=ch[r.nextInt(ch.length)];
// System.out.println(a+","+b+","+c);
switch(c)

case '+':
if(a+b<=10000)System.out.println(a+"+"+b+"="+(a+b));flag=false;
break;
case '-':
if(a-b>=0)System.out.println(a+"-"+b+"="+(a-b));flag=false;
break;
case '*':
if(a*b<=10000)System.out.println(a+"*"+b+"="+a*b);flag=false;
break;
case '/':
if(b!=0)System.out.println(a+"/"+b+"="+a/b);flag=false;
break;



参考技术A 楼上的,最少要说,JAVA是面向对象的语言吧。你这一大堆写完了,完全是C语言写法。你就不能分个类么?

计算四则运算表达式(Java语言实现)

  计算四则运算表达式主要是分两步运算

      第一步是把 中缀表达式 转换成 后缀表达式。参考大一下期学的 《数据结构与算法分析--C语言描述》3.3.3 教材,完成下列代码:

static String mid_to_suf(String str){
        Stack<Character> s = new Stack<Character>();
        String suf = new String();
        HashMap<Character, Integer> map = new HashMap<Character, Integer>();
        map.put(‘+‘, 1);               //设置运算符的优先级
        map.put(‘-‘, 1);            
        map.put(‘*‘, 2);
        map.put(‘/‘, 2);
        map.put(‘(‘, 3);
        for (int i = 0; i < str.length(); i++){
            char c = str.charAt(i);
            if (c == ‘=‘)
                break;
            if (c == ‘ ‘ || (c >= ‘0‘ && c <= ‘9‘))
                suf += c;
            else if (c == ‘(‘)
                s.push(c);
            else if (c == ‘)‘){
                while (!s.isEmpty()){
                    char op = s.pop();
                    if (op == ‘(‘)
                        break;
                    suf += op;
                }
            }
            else {
                if (s.isEmpty())
                    s.push(c);
                else {
                    while (!s.isEmpty()){
                        char op = s.peek();
                        if (op == ‘(‘)
                            break;
                        if (map.get(op) < map.get(c) )
                            break;
                        else {
                            s.pop();
                            suf += op;
                        }
                    }
                    s.push(c);
                }
            }
        }
        while (!s.isEmpty())
            suf += s.pop();
        return suf;
    }

 

  第二步是计算后缀表达式的方法, 曾在湘大oj上做过这样的题目 http://202.197.224.59/exam/index.php/problem/read/id/1036 

技术分享
private static int cal(String s) {
        Stack<Integer> stack = new Stack<Integer>();
        for (int i = 0; i < s.length(); i++){
            char c = s.charAt(i);
            boolean flag = false;
            int tmp = 0;
            if (c == ‘ ‘)
                continue;
            while (is_num(c)){
                tmp *= 10;
                tmp += (c - ‘0‘);
                i++;
                c = s.charAt(i);
                flag = true;
            }
            if (flag){
                i--;
                stack.push(tmp);
                tmp = 0;
            }
            else {
                int x1 = stack.pop();
                int x2 = stack.pop();
                int ans = 0;
                if (c == ‘*‘)
                    ans = x1 * x2;
                else if (c == ‘-‘)        
                    ans = x2 - x1;
                else if (c == ‘+‘)
                    ans = x1 + x2;
                else if (c == ‘/‘)
                    ans = x2/x1; 
                else if (c == ‘%‘)
                    ans = x2 % x1;
                stack.push(ans);
            }
        }
        return stack.pop();
    }

    private static boolean is_num(char c) {
        if (c >= ‘0‘ && c <= ‘9‘)
            return true;
        return false;
    }
View Code

  因此稍微复杂一点的题目就可以做出来了 不过,中间还有些许 分数什么的,还有文件操作之类的要求,时间紧迫,我会慢慢一步一步完成之后的要求的。

之后是测试样例。。。

技术分享

以上是关于java实现四则运算的主要内容,如果未能解决你的问题,请参考以下文章

结对编程--四则运算(Java实现)

java四则运算

Java实现四则运算

计算四则运算表达式(Java语言实现)

小学四则运算生成Java实现 (彭迪彬 李尤)

结对编程Java实现四则运算(林伯浩 刘育明)