java - Arterisk 不能从字符串中拆分出来
问题描述
我正在用分数计算器练习 Java。它所做的只是,计算器将确定输入中给出的操作(例如1/4 + 2/4
)来计算分数并返回结果。但是,该程序似乎无法将动脉*
从中分离出来,String [] fractionsplit
并给了我以下错误消息:
String multiplication() {
String fractioninput = input.replaceAll(" ", "");
System.out.println("You entered " + fractioninput);
String [] fractionsplit = fractioninput.split("//*/");
Integer num1 = Integer.parseInt(fractionsplit[0]);
Integer den1 = Integer.parseInt(fractionsplit[1]);
Integer num2 = Integer.parseInt(fractionsplit[2]);
Integer den2 = Integer.parseInt(fractionsplit[3]);
result = ((num1 * num2) + "/" + (den1 * den2));
System.out.println("This is multiplication of fraction. Result is " + result);
return result;
}
线程“主”java.lang.NumberFormatException 中的异常:对于输入字符串:java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68) 处 java.base/java.lang.Integer 处的“2*3” .parseInt(Integer.java:652) 在 java.base/java.lang.Integer.parseInt(Integer.java:770) 在 Encapsulation.MultiplicationDivision.multiplication(fractiontest1.java:77) 在 Encapsulation.fractiontest1.main(fractiontest1.爪哇:19)
我正在使用相同的方式开发加法、减法和除法运算的方法,它们都按预期工作,只是multiplication()
特别失败。我提到了这个问题,但仍然有问题。如果有人能向我指出这个问题,我将不胜感激。谢谢
解决方案
由于*
是元字符,因此您需要使用\
. 而且由于\
也是一个元字符,你需要另一个\
来逃避它。因此,您需要\\*
用作正则表达式。
演示:
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
String exp = "4*5";
String[] arr = exp.split("\\*");
System.out.println(Arrays.toString(arr));
}
}
输出:
[4, 5]
推荐阅读
- c# - 无法通过 masstransit Broker 发送消息无法访问:guest@localhost:5672/
- python - Python/Kivy 文本输入到 json 文件中的字典
- c++ - 如何通过另一个函数创建多个调用函数
- flutter - 如何在 ListView.builder 中一次选择一项?
- python - 为什么我的程序在计算器中重写相同的结果
- node.js - 通过stdin处理node.js中的海量数据
- react-native - react-native-webrtc/RTCView.js 尝试导入错误:“requireNativeComponent”未从“react-native-web/dist/index”导出
- go - 如何在 golangci-lint 中跳过文件?
- android - Mvvm Coroutine Mockito 测试 ViewModel 给出错误
- reactjs - 无法安装@material-ui/pickers(ERESOLVE 无法解析依赖树)