码迷,mamicode.com
首页 > 其他好文 > 详细

习题2.1 简单计算器(20 分)浙大版《数据结构(第2版)》题目集

时间:2017-10-07 20:40:21      阅读:373      评论:0      收藏:0      [点我收藏+]

标签:print   error   优先   ==   一个   scan   void   amp   new   

模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算。

输入格式:

输入在一行中给出一个四则运算算式,没有空格,且至少有一个操作数。遇等号”=”说明输入结束。

输出格式:

在一行中输出算式的运算结果,或者如果除法分母为0或有非法运算符,则输出错误信息“ERROR”。

输入样例:

1+2*10-10/2=

输出样例:

10


代码:
import java.util.Scanner;

public class Main {

  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int a = 0, b = 0;
    boolean flag = true;
    char ch = 0;
    String s;
    s = sc.nextLine();
    for(int i = 0;i < s.length();i ++)
    {
        if(s.charAt(i) >= ‘0‘ && s.charAt(i) <= ‘9‘)
        {
            b = s.charAt(i) - ‘0‘;
            while(s.charAt(i+1) >= ‘0‘ && s.charAt(i+1) <= ‘9‘)
            {
                i++;
                b *= 10;
                b += s.charAt(i) - ‘0‘;
            }
            if(ch == 0)a = b;
            else
            {
                if(ch == ‘+‘)a += b;
                else if(ch == ‘-‘)a -= b;
                else if(ch == ‘*‘)a *= b;
                else if(ch == ‘/‘)
                {
                    if(b == 0){flag = false; break;}
                    else a /= b;
                }
                else {flag = false;break;}
            }
        }
        else
        {
            if(s.charAt(i) == ‘=‘)break;
            ch = s.charAt(i);
        }
    }
    if(flag)System.out.print(a);
    else System.out.print("ERROR");
  }
}

 

习题2.1 简单计算器(20 分)浙大版《数据结构(第2版)》题目集

标签:print   error   优先   ==   一个   scan   void   amp   new   

原文地址:http://www.cnblogs.com/8023spz/p/7635608.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!