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

问题描述

请注意,我是编程的完整入门者,并且发现学习Java非常困难。我有一项学校任务,要求我为toString()方法编写代码,但我盲目地遵循老师在课堂上编写/教学的内容,但由于某些原因,当我运行该代码时,我的代码似乎无法正常工作测试文件?我在下面包含了我的代码。

我确实收到一条错误消息,内容如下-“空指针访问:变量coef只能在此位置为null” ,但是当我更改所有coef []变量时,则需要更改代码变得无聊,因为它只等于空。

任何指针都非常感谢!

编辑1 :谢谢您的答复-我认为我需要在我的toString()方法中将coef []初始化为变量(哎呀!)。另外,感谢您提供了指向NullPointer问题的链接-该链接提供了一些非常详尽的解释,现在我了解到我已取消引用coeff[]变量。

查询a:我已经删除了第一行,但现在看来我的代码在此行return coef[1]+ "x + " + coef[0];上失败了

查询b:很好奇,如果类为复数,为什么这是一个不好的信号?

    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类包含3个字段,其中一个称为coef。然后,在toString方法中声明一个局部变量,也称为coef

在Java中,这意味着局部变量“使字段”变暗了” -换句话说,对于整个方法,coef是指String[] coef = null;而不是{ {1}}。

并且该本地字段始终为空-您创建它,将其初始化为null,并且从不对其进行更改。因此,int[] coef将确保在运行时抛出choef[0]

解决方法似乎是....只需完全删除该NullPointerException行。我不知道你为什么写那本书,或者它试图达到什么目的。

NB:该类不应该命名为String[] coef = null;吗?将类命名为复数通常是一个不好的信号。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...