首页 > 解决方案 > 一行上的多个输入,具有多个变量和两位数(微分计算器)

问题描述

package DerivativeFormulas;

import Variables.Variables;

import java.io.IOException;

public class PowerRule {

public static void main(String[] args) throws IOException {

    //User inputs derivative equation
    System.out.print("Enter the derivative - ");
    Variables.userInputs = Variables.input.readLine().split("");


    //Coefficient is put into the string array "userInputs"
    Variables.coefficient = Integer.parseInt(Variables.userInputs[0]);

    //User inputs the variable assigned to function
    String x;
    x = Variables.userInputs[1];

    //User inputs power symbol "^"
    String power;
    power = Variables.userInputs[2];


    Variables.polydeg = Integer.parseInt(Variables.userInputs[3]);

    System.out.println((Variables.coefficient * Variables.polydeg) + x + power + (Variables.polydeg - 1));
  }
}

我试图制作一个程序,该程序将使用幂规则对函数进行导数。用户输入一个前导系数,然后是一个变量,然后是幂符号“^”,然后是变量的指数,中间没有任何空格。输入全部在一行上。4x^2 outputs 8x^1仅当用户输入的前导系数和指数 < 10 时,该程序才成功。每当我尝试为系数或指数输入两位数时,都会出现错误。.split("")当我通过更改为在输入之间放置空格时,我可以让程序工作.split(" "),但我不希望输入之间有任何空格。例如10x^10将不起作用。我该如何解决?

这里也是变量。

package Variables;

import java.io.*;

public class Variables {

    //Main user input
    public static BufferedReader input = new BufferedReader(new InputStreamReader(System.in));


    //User inputs get put into a string array
    public static String userInputs[] = new String[4];

    //Numbers
    public static int coefficient;
    public static int polydeg;

    //Symbols
    public static char e = 'e';

}

标签: java

解决方案


由于在表达式中ax^b a并且b可能是多个数字,因此split()可能不是最好的工具。您可以使用indexOfandsubstring函数来提取数字:

String temp = Example.input.readLine();
Example.userInputs[0] =  temp.substring(0, temp.indexOf("x"));
Example.userInputs[1] = "x";  
Example.userInputs[2] = "^";
Example.userInputs[3] = temp.substring(temp.indexOf("^") +1, temp.length());

推荐阅读