Ich erstelle eine QuarterResult
Klasse und grundsätzlich habe ich Probleme mit der setResult
Methode (das ist nicht der gesamte Code, aber der Code, der für meine Frage notwendig ist).Java - Klassen und Objekte, Set funktioniert nicht?
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;
}
}
}
Prüfregeln:
myResult.setResult(0, 25.1);
assertEquals(25.1, myResult.getMark(0), 0.01);
ERROR: java.lang.AssertionError: expected:<25.1> but was:<0.0>
Nun, wenn ich den Code geändert, wie gesagt die Vorschläge. Ich erhalte jetzt eine Ausnahme:
java.lang.NullPointerException
at xxxx.QuarterResult.setResult(QuarterResult.java:25)
, die die
if (index <= 0 || index >= results.length) {
Linie ist.
Kann jemand erklären, warum das nicht funktioniert, schien es mit dem ähnlichen Beispiel im Lehrbuch zu funktionieren, funktioniert aber einfach nicht mit meinem Code.
Ändern Sie 'index <= 0 'zu' index <0' – Ambrish
Bearbeiten Sie Ihre Frage nicht, wenn es bereits eine Antwort für ein bestimmtes Problem in diesem Code gibt. – Tom
Um Toms Kommentar zu erweitern: Wenn Sie einen Fehler behoben haben, der bereits darauf hingewiesen wurde, aber immer noch den gleichen Fehler bekommen, dann _add_ das zu Ihrer Frage (zB wie "Ich habe das und das behoben, aber immer noch den gleichen Fehler") Sie erhalten immer noch den Assertion-Fehler, nachdem Sie 'index <= 0 'in' index <0 'geändert haben, und zeigen Sie uns dann, was' myResult.getMark (0) 'macht. – Thomas