我希望有人可以帮我解决这个问题。我试图添加一个构造函数,允许从3x^y
形式的字符串输入多项式数据,并将系数,变量和指数值放入类中定义的相应变量。我实现的构造函数允许程序编译,但在运行应用程序时会冻结...
这样:
trinomial[0] = new Term (3,'x',2);
设置为:
trinomial[0] = new Term ("3x^y");
基本上,我试图让定义的类接受两种形式的输入(字符串和双/字符/指数格式)。对此的任何帮助将不胜感激。
public class TrinomialTest {
static void printTrinomial(Term [] x) {
for(int i=0;i<x.length;i++){
System.out.print(x[i]); //AUTOMATICALLY CALLS TOSTRING() WHEN PRINTLN
}
}
public static void main(String[] args) {
Term [] trinomial = new Term [3];
trinomial[0] = new Term (3,'x',2);
trinomial[1] = new Term (12, 'x', 1);
trinomial[2] = new Term (-23, 'x', 0);
printTrinomial(trinomial);
}
}
class Term {
private double coefficient; //the number
private char variable; // the letter
private int exponent;
public Term (double c, char v, int e) {
coefficient = c;
variable = v;
exponent = e;
}
//New Constructor
//
public Term (String Term) {
String c = "";
String v = "";
String e = "";
int exponentIndex = 0;
exponentIndex = Term.indexOf("^");
if(Term.substring(0,1).matches("[0-9]")){
c = Term.substring(0,1);
v = Term.substring(1,2);
}
else{
c = "0";
v = Term.substring(0,1);
}
do{
e = Term.substring(exponentIndex,exponentIndex+1);
}while(Term.indexOf("^")!=-1);
coefficient = Double.parseDouble(c);
variable = v.charAt(0);
exponent = Integer.parseInt(e);
}
public String toString() {
int c = (int)coefficient;
if (exponent==1&&c>0)
return (""+"+"+c+variable);
else if (exponent==1&&c<0)
return (""+c+variable);
else if (exponent==0&&c>0)
return (""+"+"+c);
else if (exponent==0&&c<0)
return (""+c);
return (""+c+variable+"^"+exponent);
}
}
答案 0 :(得分:2)
简单的解决方案:
String term = "32x^33";
String[] tokens = term.split("\\^");
String coeff = tokens[0].substring(0, tokens[0].length()-1);
String var = tokens[0].substring(tokens[0].length()-1, tokens[0].length());
String exp = tokens[1];
System.out.println("coeff = "+coeff+", var = "+var+", exp = "+exp);