useDelimiter与其他分隔符组合使用任意数量的空格字符?

时间:2016-11-24 20:38:16

标签: java arraylist delimiter

我试图让程序只是派生出一个用户输入的多项式。我试图解释像" 3x2 + 5x4 + 3"而不只是" 3x2+5x4+3"。我目前将分隔符设置为scan.useDelimiter("[A-Za-z\\s+-]");。我认为这会涵盖任何字母,+或 - 符号,以及任何数量的空白字符?但是,当我把输入放在像#34; 3x2 + 5x4 + 3"当我使用scan.nextInt()时,扫描仪就会停止。

我会抛出我用来测试内容的代码的相关部分。我确定有更高效的路线(可能是HashMap,并从列表中移除常量等)但是我得到这样的东西后我会担心这个问题!

ArrayList<Integer> coeffArr = new ArrayList<>();
ArrayList<Integer> expArr = new ArrayList<>();
String polynomial;
Scanner scan = new Scanner(System.in);

System.out.println("Write your polynomial in the form of (coefficient)(variable)(exponent). (ie: 3x2 is 3x squared):");
polynomial = scan.nextLine();

scan = new Scanner(polynomial); 
scan.useDelimiter("[A-Za-z\\s+-]");

while(scan.hasNextInt())
{
    coeffArr.add(scan.nextInt());

    if(scan.hasNextInt())
        expArr.add(scan.nextInt());
}

if(coeffArr.size() != expArr.size())
    constant = coeffArr.get(coeffArr.size()-1);

for(int i = 0; i < expArr.size(); i++)
{
    System.out.print( (coeffArr.get(i) * expArr.get(i)) + "x" + (expArr.get(i)-1) + " ");
}

基本上,如果我把输入作为&#34; 3x3+5x2+4&#34;它将输出&#34; 9x2 + 10x1&#34;,但如果我要做&#34; 3x3 + 5x2 + 4&#34;我输入的所有内容都是&#34; 9x2&#34;。我该如何解决这个问题?为什么会这样?

0 个答案:

没有答案