我在计算机科学和项目中,我决定创建一个程序,可以使用幂规则找到方程的导数,因此4x ^ 3变为3x ^ 2 . 我已经想过用单位数作为系数来完美地完成这项工作,但我想用多位数来找出出路 . 所以像56x ^ 5变成280x ^ 4 .

我知道我的代码有点混乱,可以通过使用方法更有条理,但我刚刚开始并将在不久的将来工作 . 代码如下,感谢您的帮助!

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

//finds the derivative of an equation (Example:  input: 2x^3+5x^4  Output: 6x^2+20x^3)

public class derivative {

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>();

    sign.add("0");

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

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

            equationArr.remove(i);              
        }           
    }

    System.out.println(stringDerive);
    System.out.println(sign);

    int coefficiant = 0;

    for (int i = 0; i < stringDerive.size()/2; i++) {

        System.out.print(stringDerive.get(coefficiant));
        System.out.print("x^");
        System.out.print(stringDerive.get(coefficiant+1));

        coefficiant = coefficiant + 2;

        if (sign.indexOf("-") != -1 || sign.indexOf("+") != -1) {

            int signCount = 1;
            System.out.print(sign.get(signCount));
            sign.remove(1); 
        }   
    }
 }
}