编写一个一位数算术表达式计算器,要求用户从命令提示符下输入表达式,如5*4,程序返回结果5*4 = 20。循环提示,直至用户输入“$”符号终止程序。【提示:程序解析表达式,得出操作数和操作符,进行运算后返回结果。】要求程序交互提示如下:
程序提示:请输入一位数表达式…
用户输入:3+2
程序返回:3+2 = 5
程序提示:请输入一位数表达式…
用户输入:$
程序退出:退出系统  求高手帮解!!本人不知道如何将用户输入的数字和运算符号分别获取并进行运算~ 

解决方案 »

  1.   


    import java.util.Scanner;
    public class Main {
    public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    boolean flag = true;
    String str = null;
    int num1, num2;
    long sum;
    while(flag) {
    System.out.println("请输入一位数表达式...");
    str = input.nextLine();
    //如果输入是$,则退出循环
    if(str.trim().equals("$")) {
    flag = false;
    return;
    }
    //分割出两个操作数,可以是多位,但是必须符合1*3这种形式
    String[] temp = str.split("\\D");
    //得到操作符
    String operator = str.replaceAll("\\d", "");

    //如果操作数少于两个,就提示错误,并返回
    if(temp.length != 2) {
    System.out.println("请输入符合要求的表达式!");
    return;
    }

    //执行运算,得打结果
    num1 = Integer.parseInt(temp[0]);
    num2 = Integer.parseInt(temp[1]);
    if(operator.equals("+")) {
    sum = num1 + num2;
    } else if(operator.equals("-")) {
    sum = num1 - num2;
    } else if(operator.equals("*")) {
    sum = num1 * num2;
    } else if(operator.equals("/")) {
    if(num2 == 0) {
    System.out.println("除数不能为0");
    return;
    }
    sum = num1 / num2;
    } else if(operator.equals("%")) {
    if(num2 == 0) {
    System.out.println("模数不能为0");
    return;
    }
    sum = num1 % num2;
    } else {
    System.out.println("你输入的操作符有误,请重新输入表达式!");
    return;
    }
    System.out.println(str + "=" + sum);
    }
    }
    }
    这个程序估计能够满足楼主的需求,好运!
      

  2.   

    String[] temp = str.split("\\D");String operator = str.replaceAll("\\d", "");
    小弟不是很明白这是什么意思? 请指教?
      

  3.   

    这就是Java中的正则表达式,\D表示非数字字符,上面的代码String[] temp = str.split("\\D");的意思是安操作符分割输入的表达式,\d是数字字符,String operator = str.replaceAll("\\d", "");这句的意思是把里面的数字字符全部替换为"",然后就得到操作符了!