首页 > 解决方案 > 我的 toString() 方法的代码有什么问题?

问题描述

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

我确实收到一个错误,上面写着以下内容-“空指针访问:变量 coef 在此位置只能为空”但是当我更改所有 coef[] 变量时,我的代码变得毫无意义,因为它仅等同于空。

任何指针都非常感谢!

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

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

QUERY 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;
}

标签: javatostringpolynomials

解决方案


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

在 java 中,这意味着局部变量“遮蔽”了字段——换句话说,对于整个方法,coef指的是.String[] coef = null;而不是int[] coef.

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

修复似乎是……完全删除该String[] coef = null;行。我不知道你为什么写那个或者它试图完成什么。

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


推荐阅读