0

我试图让用户输入一个像 4x+3x-2x 这样的多项式。然后我希望它将每个术语解析为一个字符串数组。我有它的工作,但我的问题是我只能用 + 或 -,而不是 + 和 - 来做到这一点。

    //instance variables
    Scanner scan = new Scanner(System.in);
    String polynomial = "";

    //takes in the polynomial
    System.out.println("Enter a polynomial");
    polynomial = scan.next();

    //print the polynomial
    System.out.println("\n" + "Your polynomial is "+ polynomial);   

    //parse the polynomial into a StringArray
    String[] polyArray = polynomial.split("\\-");  

<--------- 我如何让这部分接受一个加号或一个减号,而不仅仅是一个减号?

4

1 回答 1

3

如果要拆分/减,这会消耗分隔符:

String[] polyArray = polynomial.split("[-+]");

如果要拆分 *before/after plus/minus,将运算符保留为自己的字符串,则需要一个不消耗它们的正则表达式:

String[] polyArray = polynomial.split("(?=[-+])|(?<=[-+])");

最后一个正则表达式使用look arounds,它断言但不消耗输入(它们是零宽度匹配)。

于 2013-11-03T04:01:15.357 回答