首页 > 解决方案 > 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()特别失败。我提到了这个问题,但仍然有问题。如果有人能向我指出这个问题,我将不胜感激。谢谢

标签: javasplit

解决方案


由于*是元字符,因此您需要使用\. 而且由于\也是一个元字符,你需要另一个\来逃避它。因此,您需要\\*用作正则表达式。

演示:

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]

推荐阅读