【问题标题】:What's wrong with my code for the toString() method? [duplicate]我的 toString() 方法的代码有什么问题? [复制]
【发布时间】:2020-10-17 09:51:13
【问题描述】:

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

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

任何指针都非常感谢!

编辑 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;
}

【问题讨论】:

  • String[] coef = null;当您尝试访问索引 coef[0] 处的数组时,这会导致空指针
  • 为什么要在toString() 方法中定义变量String[] coef?您已经有一个同名的 private int[] coef 字段。

标签: java tostring polynomials


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    • 2015-01-31
    • 1970-01-01
    相关资源
    最近更新 更多