Java计算器,您可以给出一个类似123*123的字符串,并给出答案

Java计算器,您可以给出一个类似123*123的字符串,并给出答案,java,calculator,Java,Calculator,我想用java做一个计算器。目前,它只能使用包含空格的字符串,例如:“123*123” 我想让它在没有空格时分割字符串,比如:“123*123” 我该怎么做 public static void main(String[] args){ System.out.println("Porfavor insira a sua conta: "); Scanner scanner = new Scanner(System.in); int numeroEsque

我想用java做一个计算器。目前,它只能使用包含空格的字符串,例如:
“123*123”

我想让它在没有空格时分割字符串,比如:
“123*123”

我该怎么做

public static void main(String[] args){
     System.out.println("Porfavor insira a sua conta: ");
        Scanner scanner = new Scanner(System.in);
        int numeroEsquerda = scanner.nextInt();
        String op = scanner.next();
        int numeroDireita = scanner.nextInt();
        System.out.println(conta(numeroEsquerda,op,numeroDireita));
    }

    private static int conta(int numeroEsquerda, String op, int numeroDireita) {
        switch (op.charAt(0)) {
        case '+':
            return numeroEsquerda + numeroDireita;
        case '-':
            return numeroEsquerda - numeroDireita;
        case '*':
            return numeroEsquerda * numeroDireita;
        case '/':
            return numeroEsquerda / numeroDireita;
        }
        throw new IllegalArgumentException("Unknown operator:" + op);
    }
}

可以使用正则表达式拆分字符串:

s = "123*321";
Pattern p = Pattern.compile("(\\d+)(.)(\\d+)");

Matcher m = p.matcher(s);
if (m.matches()) {
    String numeroEsquerda = m.group(1);
    String op = m.group(2);
    String numeroDireita = m.group(3);
} else {
    new RuntimeException("Invalid input");
}

请注意,您仍然需要将数字字符串转换为整数。

因此您需要编写一个不需要空格的解析器。问题是我如何保持相同的格式,但不必执行例如1+2,我怎样才能使它变成1+2,就像你给一个字符串1234*1234,然后给你answer@MiguelFerreira您必须以不同的方式解析字符串。要么你用
扫描器一个接一个地读取一个字符,要么你自己解析输入字符串(循环&
.charAt(…)
),我真的不知道我是否理解你的意思。我对java和编程还很陌生:\n请注意,你的索引是错误的
m.group(0)
是整个模式,而不仅仅是第一个匹配组。@Tom Doh!谢谢你修理。