QuarterResult
sınıfı oluşturuyorum ve temel olarak setResult
yöntemiyle ilgili sorun yaşıyorum (bu, kodun tamamı değil, ancak soru için gereken kod).Java - Dersler ve Nesneler, Set çalışmıyor mu?
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;
}
}
}
Testi kodu: Ben kodu değişti
ERROR: java.lang.AssertionError: expected:<25.1> but was:<0.0>
myResult.setResult(0, 25.1);
assertEquals(25.1, myResult.getMark(0), 0.01);
Şimdi önerileri söylediği gibi.
if (index <= 0 || index >= results.length) {
çizgi olduğunu
java.lang.NullPointerException
at xxxx.QuarterResult.setResult(QuarterResult.java:25)
: Şimdi istisna alıyorum.
Birisi bunun neden çalışmadığını açıklayabilir, ders kitabındaki benzer örnekle çalışıyor gibi görünüyor, ancak sadece kodumla çalışmaz.
'index <= 0' -' index '' 0 '' değiştir – Ambrish
Bu kodda belirli bir sorun için zaten bir yanıt varsa, sorunuzu düzenlemeyin. – Tom
Tom'un yorumunu genişletmek için: Şimdiye kadar işaret edilen bir hatayı düzeltdiyseniz, ancak yine de aynı hatayı düzeltdiyseniz, o zaman sorunuzu yanıtlayın (örneğin, "Bunu düzeltdim ve yine de aynı hatayı aldım" gibi). indeks <= 0 '' indeks <0 '' a dönüştükten sonra assertasyon hatası alınıyor, sonra ne 'myResult.getMark (0)' ın yaptıklarını göster. – Thomas