数学字符串没有空格? [英] Math string with no spaces?

查看:68
本文介绍了数学字符串没有空格?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

import java.util.Scanner;

public class Improved {
    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        System.out.println("Enter a number operaion number: "); 
        int operand1 = Integer.parseInt(input.nextLine());
        char expo1 = input.next().charAt(0);
        int operand2 = Integer.parseInt(input.nextLine());

        System.out.println( operand1 + expo1 + operand2 + "=");

        if ( expo1 == '/'  && operand2 == '0' ){
            System.out.println("Cannot divide by zero"); }
        else
            if (expo1 == '-') {
                System.out.println(operand1-operand2);
            } else 
            if (expo1 == '+') {
                System.out.println(operand1+operand2);
            } else
            if (expo1 == '/') {
                System.out.println(operand1/operand2);
            } else 
            if (expo1 == '%') {
                System.out.println(operand1%operand2);
            }
            else{
                System.out.println(" Error.Invalid operator.");
            }
    }
}

//This bottom works, but I found out that this is not what is supposed to be done with this problem

/*
public class Else {
    public static void main(String[] args) {

        int operand1;
        char exp1;
        int operand2;

        if (args.length != 3 ) {
            System.err.println("*** Program needs 3 arguements***");
            System.err.println("Usage: java Else int1 exp int2");
            System.exit(1);
        }

        operand1 = Integer.parseInt(args[0]);

        exp1 = args[1].charAt(0);

        operand2 = Integer.parseInt(args[2]);


        System.out.print(args[0] + args[1] + args[2] + "=");

        if(exp1 == '-') {
            System.out.println(operand1 - operand2);
        } else 
        if (exp1 == '+') {
            System.out.println(operand1 + operand2);
        } else
        if (exp1 == '/') {
            System.out.println(operand1 / operand2);
        } else 
        if (exp1 == '%') {
            System.out.println(operand1 % operand2);
        }
        else{
            System.out.println(" Error.Invalid operator.");
        }
    }
}
*/

我要程序执行的操作是让一个人输入一个数学运算1/2或1%2(不是乘法)
,但是就像没有空格一样。不过,我想检查正在执行的操作,这就是为什么我放置if语句的原因。我没有得到的是程序在字符串中出现操作时如何知道。我什至不确定我是否设置正确。总的来说,我想要一个字符串,先读取数字,然后再读取操作,然后再读取数字。很抱歉,这好像是在做我的硬件,但是我尝试过多次编写此程序,但无法理解如何使用字符串来执行此操作。我写了第二本书,表明我已经做过多次,所以可以忽略它。非常感谢!

What I want the program to do is ask one to enter a math operation 1/2 or 1%2 (not multiplication) , but just like that without spaces. Still, I want to check which operation is being done which is why i put the if statements. What I don't get is how the program would know when an operation appears in a string. I'm not even sure if I set it correctly. Overall, I want a string that reads the number then the operation an then the number again. I'm sorry if this seems like doing my hw, but I have tried making this program multiple times, but can't understand how I can do this with a string. I wrote the second one to show that I have done this multiple times, so you can ignore it. Thank You very much!

推荐答案

我想添加另一个解决方案,从而省去了很多解析工作。

I would like to add another solution, which removes a lot of the parsing work.

import java.util.Scanner;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

class Scratch {
    public static void main(String[] args) throws ScriptException {
        System.out.println("Enter an operation:");
        Scanner input = new Scanner(System.in);
        String operation = input.nextLine();

        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("js");
        Object result = engine.eval(operation);
        System.out.printf("%s = %s%n", operation, result);
    }
}

样本结果

Enter an operation:
2 + 3 * 4
2 + 3 * 4 = 14.0

这篇关于数学字符串没有空格?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆