我是学习 java 的新手。我目前的任务是让用户使用运算符输入他们想要的值,并在一行中得到一个不带空格的结果。我弄明白了大部分代码,但在不添加空格的情况下运行它时遇到了麻烦。例如:1+1=2(这将起作用)1+1(这会导致错误)
以下是我的代码:
import java.util.Scanner;
public class Mod2 {
Scanner sc = new Scanner(System.in);
static int value1;
static int value2;
static int result;
String input = "";
public static void main(String[] args){
Mod2 m = new Mod2();
System.out.println("Beginning Application");
System.out.println("Enter expression like [value][operator][value2] no spaces");
value1 = m.sc.nextInt();
String input = m.sc.next();
value2 = m.sc.nextInt();
switch (input) {
case "+":
result = (value1 + value2);
System.out.println(result);
break;
case "-":
result = (value1 - value2);
System.out.println(result);
break;
case "*":
result = (value1 * value2);
System.out.println(result);
break;
case "/":
result = (value1 / value2);
System.out.println(result);
break;
case "%":
result = (value1 % value2);
System.out.println(result);
break;
}
System.out.println("Ending application");
System.exit(0);
}
}
3条答案
按热度按时间z9gpfhce1#
您可以按操作符拆分输入字符串,然后使用该字符串的前半部分作为值1,然后使用后半部分作为值2。
input.split("-");
//您可以在此处使用正则表达式来检查运算符是否存在这应该允许您输入“2+2”并产生4作为结果
qmb5sa222#
对于
nextXXX()
方法(nextLine()除外),Scanner使用最多某个分隔符的字符串作为其标记。默认情况下,使用空格作为分隔符。例如,因为字符串“100+50”不包含任何空格,所以它是单个标记。此内标识不是int,因此对nextInt()
的调用将失败。你能做什么?要么您使用
nextLine()
阅读整行内容,然后您必须自己解析它。或者,使用不同的分隔符。例如。
分隔符是正则表达式。您可以在Pattern的文档中找到有关这些内容的更多信息。
编辑:注意,使用的表达式不适用于负数。
mgdq6dx13#
我不知道我是否理解,但是当正确的操作员中有空间时,问题就会发生。
您只需在输入开关之前删除操作符空格,如下所示: