Java 用字符串方法导出多项式
有一个来自用户的输入字符串。这是一个多项式。如果不使用数组,如何导出此polinom ınput=3x^4+5x^45-2+77x^100 输出必须为12x^3+225x^44+7700x^99 我怎么知道多项式中有多少个x语句 我的代码是:Java 用字符串方法导出多项式,java,string,Java,String,有一个来自用户的输入字符串。这是一个多项式。如果不使用数组,如何导出此polinom ınput=3x^4+5x^45-2+77x^100 输出必须为12x^3+225x^44+7700x^99 我怎么知道多项式中有多少个x语句 我的代码是: String katsayi = polinom.substring(0, polinom.indexOf("x")); String us = polinom.substring(a + 1); int katSayi = Integer.parseIn
String katsayi = polinom.substring(0, polinom.indexOf("x"));
String us = polinom.substring(a + 1);
int katSayi = Integer.parseInt(katsayi);
int uS = Integer.parseInt(us);
katSayi = katSayi * uS;
uS = uS - 1;
katsayi = Integer.toString(katSayi);
us = Integer.toString(uS);
yeniPolinom = katsayi + "x^" + us;
System.out.println(yeniPolinom);
解析一个看起来像多项式的字符串可能非常乏味,因为有数百种方法可以写下同一个多项式。但是,如果我们坚持使用ax^n格式,您可以查看此答案以提取多项式的系数: 考虑使用导数方法创建一个多项式类。如何使用正则表达式查找[number1]x^[number2]格式的部分,然后用[num1]*[num2]x^[numm2-1]替换这些部分?下面是一个基于找到的值动态创建替换零件的示例
String input = "3x^4+5x^45-2+77x^100";
Pattern p = Pattern.compile("(\\d+)x\\^(\\d+)");
// ^^^^ ^^^^
// group1 group2
Matcher m = p.matcher(input);
StringBuffer sb = new StringBuffer();
while (m.find()) {
int a = Integer.parseInt(m.group(1));
int n = Integer.parseInt(m.group(2));
if (n != 0)
m.appendReplacement(sb, (a * n) + "x^" + (n - 1));
else
m.appendReplacement(sb, "0");
}
m.appendTail(sb);
String output = sb.toString();
System.out.println(output);
输出:12x^3+225x^44-2+7700x^99
请注意,此解决方案非常有限。它假定所有部分都将以ax^n形式写入,因此对于诸如x^2而不是1x^2,或-1而不是-1x^0之类的数据,它将无法正常工作。我还假设n不是负数 你想得到导数吗?是的,但我会从用户那里得到innput字符串@BRSO05给我一点时间,我将尝试为您整理一个答案…用户将编写输入。因此,输入可以有许多x语句。我们不知道。我试图得到这个输入的导数。如果是3x^2+2x^33,则输出将是6x+66x@BRSO05所有部分是否都以ax^n的形式写入,或者输入是否可以像x^2一样写入而不是像1x^2一样写入,或者不可以像1一样写入x部分而不是像1x^0一样写入?
public static void main(String[] args) throws IOException {
String polynomial = "3x^4+5x^45-2+77x^100";
int lastNumber = 0;
int temp = 0;
String output = "";
for(int i = 0; i < polynomial.length() - 1; i++)
{
if(polynomial.charAt(i) == 'x')
{
int counter = i + 1;
int a = 0;
int b = 0;
String tempString1 = "";
String tempString2 = "";
String number = "";
while((polynomial.charAt(counter) != '0') && (polynomial.charAt(counter) != '1') && (polynomial.charAt(counter) != '2') && (polynomial.charAt(counter) != '3') && (polynomial.charAt(counter) != '4') && (polynomial.charAt(counter) != '5') && (polynomial.charAt(counter) != '6') && (polynomial.charAt(counter) != '7') && (polynomial.charAt(counter) != '8') && (polynomial.charAt(counter) != '9'))
{
tempString1 += polynomial.charAt(counter);
counter++;
}
while((counter < polynomial.length()) && ((polynomial.charAt(counter) == '0') || (polynomial.charAt(counter) == '1') || (polynomial.charAt(counter) == '2') || (polynomial.charAt(counter) == '3') || (polynomial.charAt(counter) == '4') || (polynomial.charAt(counter) == '5') || (polynomial.charAt(counter) == '6') || (polynomial.charAt(counter) == '7') || (polynomial.charAt(counter) == '8') || (polynomial.charAt(counter) == '9')))
{
number += polynomial.charAt(counter);
counter++;
}
a = Integer.parseInt(number);
temp = counter - 1;
counter = i - 1;
number = "";
while((polynomial.charAt(counter) != '0') && (polynomial.charAt(counter) != '1') && (polynomial.charAt(counter) != '2') && (polynomial.charAt(counter) != '3') && (polynomial.charAt(counter) != '4') && (polynomial.charAt(counter) != '5') && (polynomial.charAt(counter) != '6') && (polynomial.charAt(counter) != '7') && (polynomial.charAt(counter) != '8') && (polynomial.charAt(counter) != '9'))
{
tempString2 = polynomial.charAt(counter) + tempString2;
counter--;
}
while((counter >= 0) && ((polynomial.charAt(counter) == '0') || (polynomial.charAt(counter) == '1') || (polynomial.charAt(counter) == '2') || (polynomial.charAt(counter) == '3') || (polynomial.charAt(counter) == '4') || (polynomial.charAt(counter) == '5') || (polynomial.charAt(counter) == '6') || (polynomial.charAt(counter) == '7') || (polynomial.charAt(counter) == '8') || (polynomial.charAt(counter) == '9')))
{
number = polynomial.charAt(counter) + number;
counter--;
}
b = Integer.parseInt(number);
for(int j = lastNumber; j <= counter; j++)
{
output += polynomial.charAt(j);
}
output += "" + (a * b) + "x^" + (a - 1);
lastNumber = temp + 1;
i = temp;
}
}
System.out.println(output);
}
12x^3+225x^44-2+7700x^99