gpt4 book ai didi

Java - 类和对象,Set 不起作用?

转载 作者:行者123 更新时间:2023-12-01 16:52:55 26 4
gpt4 key购买 nike

我正在创建一个 QuarterResult 类,基本上我在使用 setResult 方法时遇到了问题(这不是完整的代码,而是我的问题)。

public class QuarterResult {
private double[] results;

public QuarterResults() {
results = new double[4];
}

/**
* Set the results at index i to the result passed as the parameter
* @param index (return if OOB)
* @param result
*/
public void setResult(int index, double result) {
if (index <= 0 || index >= results.length) {
return;
}
else {
for (int i = index; i < results.length; i++) {
results[index] = result;
}
}
}

测试代码:

myResult.setResult(0, 25.1);
assertEquals(25.1, myResult.getMark(0), 0.01);

ERROR: java.lang.AssertionError: expected:<25.1> but was:<0.0>

<小时/>

现在,当我按照建议所述更改代码时。我现在遇到异常:

java.lang.NullPointerException
at xxxx.QuarterResult.setResult(QuarterResult.java:25)

哪个是

if (index <= 0 || index >= results.length) {

线。

有人可以解释为什么这不起作用,它似乎适用于教科书中的类似示例,但不适用于我的代码。

最佳答案

if(index<= 0 ... - 你传递了 0,所以什么也没有发生。我猜你的意思是 if( index < 0 ...相反。

除此之外,在这种情况下我不仅会结束该方法,还会抛出异常,例如IllegalArgumentException ,否则您可能会错过错误的参数(正如您显然所做的那样)。

另请看一下这段代码:

for (int i = index; i < results.length; i++) {
results[index] = result;
}

循环真的有必要吗? (提示:否)

From your comment: "still unsure what's wrong with my answer"

我假设您的意思是为什么会出现断言错误。由于您的代码中的错误 results[0]从未设置过,因此仍然具有初始化时使用的值,即 double 为 0.0 double[] 的变量或元素数组。

关于Java - 类和对象,Set 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36498063/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com