Java计算器,你给出一个像123 * 123的字符串,并给你答案

时间:2017-04-24 09:27:16

标签: 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 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);
    }
}

1 个答案:

答案 0 :(得分:1)

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

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");
}

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