gpt4 book ai didi

java - 计算分数表达式 : Subtraction

转载 作者:行者123 更新时间:2023-12-02 00:33:33 30 4
gpt4 key购买 nike

我正在用java创建一个分数类。该程序采用整个分数表达式,并根据带有 switch 语句的运算符执行操作。我一切正常,除了当程序给出一个减法表达式(即 -1/2--1/2)时。当我测试这个表达式时,我收到一个数字格式异常。我相信这与我的 StringTokenizer 中的分隔符有关,但不知道该怎么做。如有任何帮助,我们将不胜感激。

String regex = "-?[0-9]+[ \t]*/[ \t]*-?[0-9]+[ \t]*[+-/\\*][ \t]*-?[0-9]+[ \t]*/[ \t]*-?[0-9]+";
Scanner input = new Scanner(System.in);
System.out.print("Please enter a fraction expression i.e., -1/2 - -1/4: ");
String expression = input.nextLine();

if (!expression.matches(regex)) {
System.out.println("Not a valid fraction expression");
}
ArrayList<String> myList = new ArrayList<>();
StringTokenizer st = new StringTokenizer(expression, "-/*\t ", true);
while (st.hasMoreTokens()) {
String token = st.nextToken();
if (!token.equals(" ") && !token.equals("\t"))
myList.add(token);
}

int num1 = Integer.parseInt(myList.get(0));
int den1 = Integer.parseInt(myList.get(2));
int num2 = Integer.parseInt(myList.get(4));
int den2 = Integer.parseInt(myList.get(6));

Fraction fraction1 = new Fraction(num1, den1);
Fraction fraction2 = new Fraction(num2, den2);

String operator = myList.get(3);

switch (operator) {
case "+":
System.out.println(fraction1.add(fraction2));
break;
case "-":
System.out.println(fraction1.sub(fraction2));
break;
case "*":
System.out.println(fraction1.mult(fraction2));
break;
case "/":
System.out.println(fraction1.div(fraction2));
break;
}

最佳答案

我测试了您的代码片段,并在更改分隔符时使其正常工作 “-/\t”到 “/\t”

另一个注意事项:当输入的字符串与您的表达式不匹配时,您可能希望从代码中返回:

    if (!expression.matches(regex)) {
System.out.println("Not a valid fraction expression");
return;
}

关于java - 计算分数表达式 : Subtraction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57994543/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com