java实现四则运算
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java实现四则运算相关的知识,希望对你有一定的参考价值。
(1)只能处理[0,1000]范围内(操作数及答案都在该范围)的四则运算,
(2)只能做整数运算,除法一定为整除
(3)操作数及操作符都随机产生(4)对于同一考生不能产生相同的题目(1+,*2和2+,*1) 小弟初学java,只求基本的算法代码
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; }
因此稍微复杂一点的题目就可以做出来了 不过,中间还有些许 分数什么的,还有文件操作之类的要求,时间紧迫,我会慢慢一步一步完成之后的要求的。
之后是测试样例。。。
以上是关于java实现四则运算的主要内容,如果未能解决你的问题,请参考以下文章