Java计算器,您可以给出一个类似123*123的字符串,并给出答案
我想用java做一个计算器。目前,它只能使用包含空格的字符串,例如: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
“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!谢谢你修理。