Witam wszystkich jak widać po poście jestem tu nowy i od razu walne z grubej rury, mianowicie posiadam problem z Interfejsami w Javie. Mam takie zadanie:
Zdefiniować klasę Incrementor w taki sposób, aby następujący kod:
package incr;
import static incr.Incrementer.*;
public class Test {
public static void main(String[] args) {
// najprostsza iteracja - krok = 1
for(int k : in(1, 10)) System.out.print(k + " ");
System.out.println();
// Podany krok
for(int k : in(1, 10).by(2)) System.out.print(k + " ");
System.out.println();
// Można w odwrotną stronę - tu domyślnie krok = -1
for(int k : in(10, 1)) System.out.print(k + " ");
System.out.println();
// Ale można zakres formułować od min do max, a podany krok będzie
// decydował o kierunku iteracji
for(int k : in(1, 10).by(-1)) System.out.print(k + " ");
System.out.println();
// W trakcie iteracji można zmieniac krok
Incrementer inc;
for (int i : inc = in(1,10) ) {
if (i == 4) inc.by(2);
System.out.print(i + " ");
}
System.out.println();
for (int i : inc = in(1,10) ) {
if (i == 8) inc.by(-2);
System.out.print(i + " ");
}
System.out.println();
for(int k : inc = in(10, 1)) {
if (k == 5) inc.by(1);
System.out.print(k + " ");
}
}
}
Incrementer winien implementować interfejs Iterable
Patent polega na tym, żeby nie używać w programie tablic ani kolekcji (chodzi o klasę Inkrementer). Inkrementer winien implementować interfejs Iterable i wszystkie metody powinny się w niej znajdować.
Ja osobiście stworzyłem sobie interfejs o nazwie Incrementer i nabazgrałem trochę kodu (od razu napiszę, że jest niepoprawny i to bardzo mocno) -dokładnie 2 wersje można rzec:
package incr;
import java.util.Iterator;
import incr.Test.*;
public interface Incrementer{
public class Interable implements Iterable <Integer> {
public static int min, max, war;
public static Iterator in(int x, int y){
return new Iterator(min,max);
}
}
@Override
public Iterator<Integer> iterator() {
// TODO Auto-generated method stub
return null;
}
}
}
To daje dużo błędów.
Natomiast to jest całkiem przyzwoite:
package incr;
import java.util.Iterator;
import incr.Test.*;
public interface Incrementer
public static Iterator in(int min, int y){
return new Iterator() {
public int hasNext(int min) {
return min;
}
public Object next() {
throw new UnsupportedOperationException("Not supported yet.");
}
public void remove() {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public boolean hasNext() {
// TODO Auto-generated method stub
return false;
}
};
}
A zapmniał bym o najważniejszym program ma zwracać wynik
1 2 3 4 5 6 7 8 9 10
1 3 5 7 9
10 9 8 7 6 5 4 3 2 1
10 9 8 7 6 5 4 3 2 1
1 2 3 4 6 8 10
1 2 3 4 5 6 7 8 6 4 2
10 9 8 7 6 5 6 7 8 9 10
Za każdą pomoc będe wdzięczny, ponieważ siedzę nad tym już naprawdę długo, dużo równiez przeczytałem i nadal znajduję się w tym samym miejscu.
Najbardziej by mi zależało na pokazaniu jakiejś metody dzięki której mógłbym sie dostać do klasy Test i zdefiniować in, albo jakoś mnie naprowadzić, abym mógł w SPACJA końcu skończyć to zadanie bo jeszcze trochę i zacznę walić głową w klawiaturę.
PS
Posta o interfejsach na forum czytałem. :|
Pozdrawiam