Home > Mobile >  How can I correctly implement the methods in my class?
How can I correctly implement the methods in my class?

Time:10-25

I have a class SimpHisto that takes in an array of generic type SL, and returns the size and the count of a specific element of that array. After I tried to run my code, I get an error saying:

> Task :compileJava UP-TO-DATE
> Task :processResources UP-TO-DATE
> Task :classes UP-TO-DATE
> Task :compileTestJava
> Task :processTestResources NO-SOURCE
> Task :testClasses
> Task :test FAILED

No element at index
    

Can someone please explain what's wrong with my code and provide any explanations on solutions?

Thank you

CodePudding user response:

The error is in your Iterate. You throw that exception if (index <= items.length). index starts with 0 so this is always true. You only have to change to >=

As mentioned by 英語は苦手 your while in getCount does not call next. Since you iterate over the items directly I would prefer to remove the Iterator at all. And a Stream may increase readability:

return (int) Stream.of(this.items)
    .filter(dt -> dt == item)
    .count();

EDIT: without Stream-API you can iterate over your items directly:

for (SL dt : this.items) {
    if (dt == item) {
        n  ;
    }
}

If you want to use the Iterator you have to call next

while (L.hasNext()) {
    SL dt = L.next();
    if (dt == item) {
        n  ;
    }
}

BTW: why assertEquals(3, elemCount);? There are 4 elements

  • Related