我的 toString() 方法代码有什么问题?

What's wrong with my code for the toString() method?

请注意,我是编程的初学者,并且发现学习 Java 非常困难。我有一项学校任务要求我为 toString() 方法编写代码,我盲目地遵循了我的老师在 class 中所做的 writing/teaching 但由于某种原因我的代码似乎没有工作时我运行测试文件?我在下面包含了我的代码。

我确实收到一条错误消息 - “空指针访问:变量 coef 在此位置只能为空” 但是当我更改所有 coef[]变量,那么我的代码就没有实际意义了,因为它等于 null。

非常感谢任何指点!

编辑 1:感谢您的回复 - 我想我需要将 coef[] 初始化为我的 toString() 方法中的一个变量(糟糕!!)。也感谢您为 NullPointer 问题提供 link - 它有一些非常详尽的解释,现在我明白我取消引用了 coeff[] 变量。

问题 a:我删除了我的第一行,但现在我的代码似乎在这一行失败了 return coef[1]+ "x + " + coef[0];

QUERY b:很想知道为什么 class 是复数是个坏兆头?

    public class Polynomials {

public Double coefficient;
public Integer exponent;
private int[] coef;

public String toString() {
String[] coef = null;
if (exponent <= -1)
return "0";
else if (exponent == 0)
return "" + coef[0];
else if (exponent == 1)
return coef[1]+ "x + " + coef[0];
String s = coef[exponent] + "x^" + exponent;
return s;
}

您的 Polynomials class 有 3 个字段,其中一个名为 coef。然后在您的 toString 方法中声明一个局部变量,也称为 coef.

在 java 中,这意味着 局部变量 'shadows' 字段 - 换句话说,对于整个方法, coef 引用String[] coef = null; 而不是 int[] coef.

并且本地字段 始终为 null - 您创建它,将其初始化为 null,并且永远不会更改它。因此,choef[0] 将保证在运行时抛出 NullPointerException

解决方法似乎是......完全删除 String[] coef = null; 行。我不知道你为什么写那个或者它试图完成什么。

注意: class 不应该命名为 Polynomial 吗?将 class 命名为复数通常是一个不好的迹象。