Test w Javie- zadanie

0

Cześć wszystkim

mam takie zadanko ze studiów:

Muszę zaimplementować klasę, która jest konieczna aby poniższy kod kompilował się i oddawał wynik "Test ok"

public class Test{    
   public static void main(String[] args){
        Element e = new Element();
     
     oczekiwanie(6, e.getResult().length);
     
     oczekiwanie(30, e.getResult()[0]);
     oczekiwanie(40, e.getResult()[1]);
     oczekiwanie(50, e.getResult()[2]);
     oczekiwanie(60, e.getResult()[3]);

      
     e.insert(4,70);
     oczekiwanie(70, e.getResult()[4]);
     e.insert(5,80);
     oczekiwanie(80, e.getResult()[5]);
      
     oczekiwanie(30, e.getResultAt(0));
     oczekiwanie(40, e.getResultAt(1));
}

    public static void oczekiwanie(int should, int is){
        if(should == is)
            System.out.println("test ok"); 
        else     
            System.out.println("error"); 
    }
 
}

Rozumiem że te trzy metody które muszę przetestować oddają wynik z tablicy, ale jakiej tablicy (jak, gdzie ją stworzyć?) Dużo myśląc wystukałam tylko (ale wiem że to jest źle ) :

  class Element{
     
int[] tab = new int[6];
 
    Element(){
    }
     
    void setTab(int[] tab){
        this.tab[] = tab[];
    }
    int getTab(){
        return tab[];
    }
     
    int getResult(){
        return tab[];
    }
     
    int insert(int index, int z){
        return tab[index] = z; 
    }
     
    int getResultAt(int index){
        return tab[index];
    }
 

Możecie mnie jakoś nakierować na dobrą odpowiedź?

1
oczekiwanie(30, e.getResult()[0]);

Oznacza, że e które jest obiektem klasy 'Element' ma metodę getResult(), która zwraca tablicę, w tym wypadku tablicę intów. Niewiele CI brakowało, ale mylisz się jeszcze w zwracaniu odpowiednich typów z metody.

class Element {

    int[] result = new int[6];

    Element() {
    }


    int[] getResult() {
        return this.result;
    }

    int insert(int index, int z) {
        return this.result[index] = z;
    }

    int getResultAt(int index) {
        return this.result[index];
    }

}

Porównaj swoją metodę getResult():

  int getResult(){
        return tab[];
    }

a moją:

int[] getResult() {
        return this.result;
    }

EDIT:
Pomijając, że ten test jest skonstruowany tylko dla 6 liczb, zamiast tablic z predefiniowanym rozmiarem lepiej korzystać na przyszłość z list. Tam nie musisz podawać rozmiaru na starcie.

Gdybyś w teście dopisał linie:

oczekiwanie(80, e.getResult()[6]);

to dostałbyś ArrayIndexOutOfBoundsException, że nie ma takiego indeksu w tablicy, tzn, że tablica jest za mała.

1

Obczaj poniższy kod:

class Test{    
   public static void main(String[] args){
        Element e = new Element();

     oczekiwanie(6, e.getResult().length);

     oczekiwanie(30, e.getResult()[0]);
     oczekiwanie(40, e.getResult()[1]);
     oczekiwanie(50, e.getResult()[2]);
     oczekiwanie(60, e.getResult()[3]);

     e.insert(4,70);
     oczekiwanie(70, e.getResult()[4]);
     e.insert(5,80);
     oczekiwanie(80, e.getResult()[5]);

     oczekiwanie(30, e.getResultAt(0));
     oczekiwanie(40, e.getResultAt(1));
}

    public static void oczekiwanie(int should, int is){
        if(should == is)
            System.out.println("test ok"); 
        else     
            System.out.println("error"); 
    }

}

class Element{

    int[] tab = new int[6];

    void setTab(int[] tab){
        this.tab = tab;
    }

    int[] getResult(){
        return tab;
    }

    int insert(int index, int z){
        return tab[index] = z; 
    }

    int getResultAt(int index){
        return tab[index];
    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1