首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >多项式添加:无法运行代码

多项式添加:无法运行代码
EN

Stack Overflow用户
提问于 2015-04-27 17:52:21
回答 1查看 106关注 0票数 1

这个程序在Eclipse上。我必须声明变量"Integer“而不是"int”。在编译时,此代码没有显示错误,但存在运行时错误。请解决这个问题。

运行时错误:

代码语言:javascript
运行
复制
Exception in thread "main" java.lang.NullPointerException
    at Polynomial.add(Polynomial.java:17)
    at PolynomialTest.main(PolynomialTest.java:7)

Polynomial.java

代码语言:javascript
运行
复制
public class Polynomial{
Integer coef[]; 
Integer exp;     
public Polynomial(Integer a, Integer b) {
    coef = new Integer[b+1];
    coef[b] = a;
    exp = b;
}
// return c = a + b
public Polynomial add(Polynomial b) {
   Polynomial a = this;
   Polynomial c= new Polynomial(0, Math.max(a.exp, b.exp));
   for (Integer i = 0; i <= a.exp; i++){
       c.coef[i] = c.coef[i]  + a.coef[i];
   }
   for (int i = 0; i <= b.exp; i++){
       c.coef[i] += b.coef[i];
   }
   return c;
}
public String toString() {
    if (exp ==  0){
        return "" + coef[0];
    }else
    if (exp ==  1){
        return coef[1] + "x + " + coef[0];
    }
    String s = coef[exp] + "x^" + exp;
    for (int i = exp-1; i >= 0; i--) {
        if      (coef[i] == 0){
            continue;
        }
        else if (coef[i]  > 0){
            s = s + " + " + ( coef[i]);
        }
        if (i == 1){
            s = s + "x";
        }
        else 
            if (i >  1) {
            s = s + "x^" + i;
        }
    }
    return s;
}}

PolynomialTest.java

代码语言:javascript
运行
复制
public class PolynomialTest {
      // test client
    public static void main(String[] args) { 
        Polynomial p1   = new Polynomial(4, 4);
        Polynomial p2   = new Polynomial(7, 2);
        Polynomial p3   = new Polynomial(3, 0);
        Polynomial p    = p1.add(p2).add(p3);   // 4x^3 + 3x^2 + 1
        Polynomial q1   = new Polynomial(2, 2);
        Polynomial q2   = new Polynomial(5, 4);
        Polynomial q    = q1.add(q2);

        System.out.println("p(x) =        " + p);
        System.out.println("q(x) =        " + q);
        System.out.println("p(x) + q(x) = " + p.add(q));
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-27 18:30:05

由于Integer是一个对象,因此需要使用新的Integer对象初始化coef数组中的每个条目。

您可以在Polynomial构造函数中这样做:

代码语言:javascript
运行
复制
public class Polynomial{
Integer coef[]; 
Integer exp;     
public Polynomial(Integer a, Integer b) {
    coef = new Integer[b+1];
    for (int i = 0; i < coef.length; i++){
       coef[i] = new Integer(0);  //create a new Integer and initialize to zero
    }
    coef[b] = a;
    exp = b;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29902693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档