多项式加法如何工作?
答案: - 通过添加相同的功率的系数
SO P1 = 5X^3 - 4X + 8
和P2 = 6X^5 -2X^2 + 7X^1 + -4
变得
P1 = 0X^5 + 5X^3 + 0X^2 - 4X^1 + 8X^0
P2 = 6X^5 + 0X^3 -2X^2 + 7X^1 - 4X^0
____________________________________
SUM = 6X^5 + 5X^3 -2X^2 + 3X^1 + 4X^0
____________________________________
您可以将电源作为重点和系数的值在Map.Then迭代的地图,并添加系数的值
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
class SumOfPolynomials {
/**
* @param args
* @throws FileNotFoundException
*/
public static void main(String[] args) throws FileNotFoundException {
List<Map<Integer, Integer>> listOfPolynomials = new ArrayList<Map<Integer, Integer>>();
File polyfile = new File("polyinput.txt");
Scanner read = new Scanner(polyfile);
while (read.hasNextLine()){
String LINE = read.nextLine();
String[] lineSpillted =LINE.split(";");
Map<Integer, Integer> poynomial = new HashMap<Integer, Integer>();
for(int i =1;i<lineSpillted.length-1;i=i+2){ //i starts from ignores P1,P2 etc
poynomial.put(Integer.parseInt(lineSpillted[i+1]), Integer.parseInt(lineSpillted[i]));
}
listOfPolynomials.add(poynomial);
}
read.close();
Map<Integer, Integer> result = polynomialSum(listOfPolynomials.get(0), listOfPolynomials.get(1));
if(listOfPolynomials.size()>2){
for(int i=2;i<listOfPolynomials.size()-1;i++){
result = polynomialSum(result,listOfPolynomials.get(i));
}
}
// print out the SUM as VALUEX^KEY
System.out.println();
int c = 0;
for (Map.Entry<Integer, Integer> entry : result.entrySet()) {
System.out.print(entry.getValue() + "X^" + entry.getKey());
c++;
if (c != result.size()) {
System.out.print("+");
}
}
}
public static Map<Integer, Integer> polynomialSum(Map<Integer, Integer> arg1,
Map<Integer, Integer> arg2) {
Map<Integer, Integer> SUM = new HashMap<Integer, Integer>();
for (Map.Entry<Integer, Integer> entry : arg1.entrySet()) {
Integer power = entry.getKey();
Integer coeff1 = entry.getValue();
Integer coefficient;
if (arg2.containsKey(power)) {
coefficient = arg2.get(power) + coeff1;
} else {
coefficient = coeff1;
}
SUM.put(power, coefficient);
}
for (Map.Entry<Integer, Integer> entry : arg2.entrySet()) {
if (SUM.containsKey(entry.getKey())) {
continue;
} else {
SUM.put(entry.getKey(), entry.getValue());
}
}
return SUM;
}
}
编辑的多个Polynomials.Multiple多项式在一个列表中加入,然后总和被计算通过遍历列表
输出: -
![Output](https://i.stack.imgur.com/bo5yC.jpg)
这并不像您想象的那么容易。如果它是家庭作业,那么创建自己的类来解析字符串并创建多项式的抽象表示。否则,找一个处理这个的库。 – 2014-08-30 15:44:24
我已经尝试将它们转换成字符串,但之后我很无能。我阅读了它们,但在分隔它们之后不知道如何使用它们。我怎么能做一个未定义的变量数学。然后我必须添加或减去所有单独的数字也许?我只读过它们并将它们放入数组列表中。 – Dave 2014-08-30 15:45:03
我如何进行表示? – Dave 2014-08-30 15:47:53