簡體   English   中英

Java-類和對象,設置不起作用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM