java - 我的 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;
}
解决方案
您的Polynomials
班级有 3 个字段,其中一个名为coef
. 然后在您的 toString 方法中声明一个局部变量,也称为coef
.
在 java 中,这意味着局部变量“遮蔽”了字段——换句话说,对于整个方法,coef
指的是.String[] coef = null;
而不是int[] coef
.
并且该本地字段始终为空-您创建它,将其初始化为空,并且永远不要更改它。因此,choef[0]
将保证在运行时抛出 a NullPointerException
。
修复似乎是……完全删除该String[] coef = null;
行。我不知道你为什么写那个或者它试图完成什么。
注意:课程不应该命名Polynomial
吗?将一个类命名为复数通常是一个不好的迹象。
推荐阅读
- sql-server - 用于恢复数据库的 SQL Server T-SQL 脚本问题
- c++ - 如何将 std::setw() 与数组输出一起使用?
- python - 将类变量与实例相乘的问题
- c# - 需要帮助了解 Azure Functions 中异步/等待调用中的后台任务
- typescript - 从常量对象文字中获取键
- wix - 卸载时未删除注册表项 (WIX)
- python - 创建用于术语计数和频率跟踪的 MultiIndex Pandas DataFrame
- node.js - 我如何使用通过 Sequelize 访问的另一个表数据访问另一个表
- node.js - 如何将 CORS 站点动态添加到 Google Cloud App Engine 节点 API
- selenium - Scrapy-Selenium 分页