gpt4 book ai didi

java - 尝试使用 ArrayList 求解用户给定方程的导数

转载 作者:行者123 更新时间:2023-12-02 01:46:04 26 4
gpt4 key购买 nike

作为我的 AP 计算机科学项目的一部分,我决定从用户那里获取一个多项式,它将能够使用幂法则找到方程的导数。

例如,如果用户输入 2X^3+5x^2,则应输出 6x^2+10x^1,因此系数和次数相乘,得到那么度数就只是负一。这是我到目前为止所拥有的,但它给了我很多错误,并尝试遵循代码,但没有发现任何问题。感谢您的帮助。

import java.util.ArrayList;
import java.util.Scanner;


public class Practice {

public static void main(String[] args) {

//input of polynomial
System.out.println("Enter polynomial:");

Scanner sc = new Scanner(System.in);
String polynomialEquation = sc.nextLine();

//A string array list is created with the polynomial
ArrayList<String> equationArr = new ArrayList<String>();

for (int i = 0; i<polynomialEquation.length(); i++) {
equationArr.add(polynomialEquation.substring(i, i+1));
}

ArrayList<String> intStrings = new ArrayList<String>();

//separate the numbers from the list

for(int i =0; i<equationArr.size(); i++) {
if (equationArr.get(i).equals("1") || equationArr.get(i).equals("2") || equationArr.get(i).equals("3") ||equationArr.get(i).equals("4") ||equationArr.get(i).equals("5") ||
equationArr.get(i).equals("6") || equationArr.get(i).equals("7") || equationArr.get(i).equals("8") || equationArr.get(i).equals("9") || equationArr.get(i).equals("0"))
{
String addVal = equationArr.get(i);
intStrings.add(addVal);
equationArr.remove(i);

}
}


//convert string integers to integers
ArrayList<Integer> deriveInt = new ArrayList<Integer>(intStrings.size());

for (String myInt : intStrings)
{
deriveInt.add(Integer.valueOf(myInt));
}


//derive coefficiants

for (int i = 0; i<deriveInt.size()-1;i +=2) {

deriveInt.set(i, deriveInt.get(i)*deriveInt.get(i+1));

}

//derive exponent

for(int i = 1; i< deriveInt.size(); i +=2) {

deriveInt.set(i,deriveInt.get(i)-1);

}

//convert integer back to string
ArrayList<String> stringDerive = new ArrayList<String>();

for (Integer myInt2 : deriveInt)
{
stringDerive.add(String.valueOf(myInt2));
}

//get the signs from the original equation

ArrayList<String> sign = new ArrayList<String>();

for(int i =0; i<equationArr.size(); i++) {

if(equationArr.get(i).equals("+") || equationArr.get(i).equals("-")) {

sign.add(equationArr.get(i));

}
}

int totalSize = stringDerive.size() * 2 + equationArr.size();

for (int i = 0; i<totalSize-1; i=+2) {

int countSign= 0;

System.out.print(stringDerive.get(i));
System.out.print("x^");
System.out.print(stringDerive.get(i+1));
System.out.print(equationArr.get(countSign));

}
}
}

最佳答案

多项式由单项式组成。在您的示例中,这些是 2X^35x^2。解决问题的方法之一是编写 Monom 类和 Polynom 类。我会给你一个骨架,这样你就可以练习。

public class Helper {

private class Monom{

private int coefficient;
private int degree;

public Monom(int coefficient, int degree){
this.coefficient = coefficient;
this.degree = degree;
}

public Monom(String input){
//TODO parse input. E.g Monom("6x^2) --> this.coefficient = 6...
//TODO validate input
}

public Monom derivate(final Monom monom){
return new Monom(monom.getCoefficient() * monom.getDegree(), monom.getDegree() - 1);
}

public int getCoefficient() {
return coefficient;
}

public int getDegree() {
return degree;
}

@Override
public String toString(){
return this.coefficient + "x^" + this.degree;
}
}

//skeleton
private class Polynom{

private List<Monom> polynom; //holder of monoms
//TODO rest of code including constructors, validate, derivate...

public Polynom(List<Monom> monoms){
this.polynom = monoms;
}
public Polynom derivate(Polynom input){
List<Monom> temp = new ArrayList<>();
for (Monom monom: polynom){
temp.add(monom.derivate(monom));
}
return new Polynom(temp);
}
}

public static void main(String[] args) {

//TODO test code
List<Monom> monoms = new ArrayList<>();
//TODO rest of code like:
// Polynom myPolynom = new Polynom(List<Monom> monoms);
//...

}

}

就像我说的,这只是必须升级的代码...祝你好运。

关于java - 尝试使用 ArrayList 求解用户给定方程的导数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53652473/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com