我试图让程序只是派生出一个用户输入的多项式。我试图解释像" 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;。我该如何解决这个问题?为什么会这样?