用Java编写一元稀疏多项式计算器,要完整代码
时间: 2023-09-23 09:05:46 浏览: 114
基于Java语言实现一元稀疏多项式计算器【100010608】
5星 · 资源好评率100%
### 回答1:
这是一个 Java 类,用于表示一元稀疏多项式。它包含了一些私有字段和方法,以及一些公有方法,供用户调用。
```
import java.util.Map;
import java.util.TreeMap;
public class SparsePolynomial {
// 私有字段:一个 TreeMap,用于存储多项式的各项系数
private TreeMap<Integer, Double> coefficients;
// 构造函数:创建一个空的多项式
public SparsePolynomial() {
coefficients = new TreeMap<>();
}
// 私有方法:设置多项式的系数
private void setCoefficient(int degree, double coefficient) {
// 如果系数为 0,则从多项式中删除该项
if (coefficient == 0) {
coefficients.remove(degree);
} else {
// 否则,设置该项的系数
coefficients.put(degree, coefficient);
}
}
// 公有方法:获取多项式的系数
public double getCoefficient(int degree) {
// 如果多项式中包含该项,则返回该项的系数
if (coefficients.containsKey(degree)) {
return coefficients.get(degree);
} else {
// 否则,返回 0
return 0;
}
}
// 公有方法:将多项式加上另一个多项式
public void add(SparsePolynomial other) {
// 遍历另一个多项式的所有项
for (Map.Entry<Integer, Double> entry : other.coefficients.entrySet()) {
// 获取该项的次数和系数
int degree = entry.getKey();
double coefficient = entry.getValue();
// 将该项加到当前多项式中
setCoefficient(degree, getCoefficient(degree) + coefficient);
}
}
// 公有方法:将多项式
### 回答2:
以下是用Java编写的一元稀疏多项式计算器的完整代码:
```java
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class PolynomialCalculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Map<Integer, Integer> polynomial = new HashMap<>();
System.out.print("请输入多项式的项数:");
int n = scanner.nextInt();
for (int i = 0; i < n; i++) {
System.out.print("请输入第 " + (i+1) + " 项的系数:");
int coefficient = scanner.nextInt();
System.out.print("请输入第 " + (i+1) + " 项的指数:");
int exponent = scanner.nextInt();
polynomial.put(exponent, coefficient);
}
System.out.print("请输入要计算的 x 值:");
int x = scanner.nextInt();
int result = calculatePolynomial(polynomial, x);
System.out.println("计算结果为:" + result);
}
public static int calculatePolynomial(Map<Integer, Integer> polynomial, int x) {
int result = 0;
for (Map.Entry<Integer, Integer> term : polynomial.entrySet()) {
int exponent = term.getKey();
int coefficient = term.getValue();
result += coefficient * Math.pow(x, exponent);
}
return result;
}
}
```
这个程序通过使用Java的`Map`数据结构来表示一元稀疏多项式。用户首先输入多项式的项数,然后逐个输入每一项的系数和指数,并将其保存在`Map`中。随后,用户输入要计算的 x 值,然后调用`calculatePolynomial`函数来计算多项式的值。该函数遍历`Map`中的每一项,并根据指数和系数计算多项式的值。最后,程序输出计算结果。
请注意,此程序假设输入的多项式中没有重复的指数。如果存在相同的指数,该代码将仅使用最后一个输入的系数。如果有必要,您可以根据需要进行修改。
### 回答3:
以下是一元稀疏多项式计算器的完整Java代码:
```java
import java.util.Scanner;
import java.util.TreeMap;
class PolynomialCalculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("输入多项式的项数:");
int n = scanner.nextInt();
TreeMap<Integer, Integer> polynomial = new TreeMap<>();
for (int i = 0; i < n; i++) {
System.out.print("输入第 " + (i + 1) + " 项的指数:");
int exponent = scanner.nextInt();
System.out.print("输入第 " + (i + 1) + " 项的系数:");
int coefficient = scanner.nextInt();
polynomial.put(exponent, coefficient);
}
System.out.println("多项式为:" + polynomialToString(polynomial));
System.out.print("输入要计算的自变量的值:");
int x = scanner.nextInt();
int result = evaluate(polynomial, x);
System.out.println("多项式在 " + x + " 处的值为:" + result);
scanner.close();
}
private static String polynomialToString(TreeMap<Integer, Integer> polynomial) {
StringBuilder stringBuilder = new StringBuilder();
for (int exponent : polynomial.descendingKeySet()) {
int coefficient = polynomial.get(exponent);
stringBuilder.append(coefficient);
if (exponent > 0) {
stringBuilder.append("x");
if (exponent > 1) {
stringBuilder.append("^").append(exponent);
}
}
stringBuilder.append(" + ");
}
stringBuilder.setLength(stringBuilder.length() - 3); // 去掉最后一个"+"
return stringBuilder.toString();
}
private static int evaluate(TreeMap<Integer, Integer> polynomial, int x) {
int result = 0;
for (int exponent : polynomial.keySet()) {
int coefficient = polynomial.get(exponent);
result += coefficient * Math.pow(x, exponent);
}
return result;
}
}
```
这个程序首先会要求用户输入多项式的项数,并依次输入每一项的指数和系数。然后程序根据用户的输入构建一个TreeMap,其中指数作为键,系数作为值。接下来,程序会输出构建好的多项式,并要求用户输入要计算的自变量的值。最后,程序会使用给定的自变量计算多项式在该处的值,并将结果输出。
阅读全文