![](/img/trans.png)
[英]Trying to set the location of a Java Button using JFrame isn't working?
[英]Java - Classes and Objects, Set isn't working?
我正在創建一個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);
錯誤:java.lang.AssertionError:預期:<25.1>但原為:<0.0>
現在,當我按照建議所說更改代碼時。 我現在遇到一個例外:
java.lang.NullPointerException
在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;
}
循環真的必要嗎? (提示:否)
根據您的評論:“仍然不確定我的答案有什么問題”
我假設您是說您為什么會收到斷言錯誤。 由於代碼中的錯誤,因此從未設置results[0]
,因此仍具有它初始化時使用的值,對於double
變量或double[]
數組的元素,該值為0.0。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.