Problem z zadaniem

Problem z zadaniem
H2
  • Rejestracja:około 7 lat
  • Ostatnio:prawie 7 lat
  • Postów:2
0

Hej, mam problem z zadaniem z javy. Będę wdzięczna za każdą wskazówkę jak się za to zabrać.
Pzdr

Zaprojektować klasę IterNap, reprezentującą łańcuchy znakowe. Klasa IterNap (implementując interfejs Iterable) powinna umożliwiać iterowanie po znakach napisu stosując instrukcję for-each. Implementacja klasy IterNap nie może korzystać z tablic, ani z kolekcji z bibliotek Javy. Stworzyć klasę w taki sposób, aby następujący program

public class IterNapTest {

public static void main(String [] args) 
{
    IterNap napis = new IterNap("prOgrAmoWanIe ObiEktOwe i Gui");

        // iteracja po znakach napisu,
        // domyślnie zaczynając od pierwszego znaku (o indeksie 0)
        // i z krokiem iteracji = 1
    for (char z: napis) 
        System.out.print(z + " ");

    System.out.println();

    napis.ustawPoczatek(2);     // ustawienie początku iteracji (tu: 2-gi znak, o indeksie 2)
    napis.ustawKrok(3);         // ustawienie kroku iteracji (tu: co 3-ci znak)

        // iteracja po znakach napisu,
        // od ustalonego znaku, z określonym krokiem
    for (char z: napis) 
        System.out.print(z + " ");
}

}

wyprowadził na konsolę poniższe wyniki:

p r O g r A m o W a n I e O b i E k t O w e i G u i
O A W I O E O G

szweszwe
No ale w czym dokładnie masz problem?
H2
  • Rejestracja:około 7 lat
  • Ostatnio:prawie 7 lat
  • Postów:2
0

Jak stworzyć klasę nie korzystając z kolekcji i tablic

BA
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 4 lata
  • Lokalizacja:Kraków
  • Postów:68
1

Moim zdaniem sensem tego zadania jest taka implementacja, która w odpowiedni sposób będzie obliczać indeks znaku w podanym Stringu i zwracać odpowiedni znak. Dlatego nie są potrzebne kolekcje i tablice.

CM
  • Rejestracja:około 9 lat
  • Ostatnio:ponad 6 lat
  • Lokalizacja:Warszawa
  • Postów:118
1

Tutaj @Wibowit opisuje jak działa iterowanie w Javie Iterable, Iterator.

Nie znam Javy, ale na szybko można napisać to jakoś tak:

Kopiuj
import java.util.Iterator;

public class IterNap implements Iterable<Character> {

	private int start;
	private int end;
	private final String sentence;
	private int step;
	
	public IterNap(String sentence) {
		this.start = 0;
		this.end = sentence.length();
		this.sentence = sentence;
		this.step = 1;
	}
	
	public IterNap(String sentence, int start, int step) {
		this.start = start;
		this.end = sentence.length() - start;
		this.sentence = sentence;
		this.step = step;
	}
	
	public void setStart(int start) {
		this.start = start;
	}
	
	public void setStep(int step) {
		this.step = step;
	}
	
	@Override
	public Iterator<Character> iterator() {
		
        return new Iterator<Character>() {
        	 
        	int current_index = start;
            
            @Override
            public boolean hasNext() {
                return current_index < end;
            }
 
            @Override
            public Character next(){
            	Character current_char = sentence.charAt(current_index);
            	current_index += step;
            	return current_char;
            }
 
            @Override
            public void remove() {
                throw new UnsupportedOperationException("Illegal action.");
            }
        };
	}
	
	public static void main(String [] args) 
	{
	    IterNap napis = new IterNap("prOgrAmoWanIe ObiEktOwe i Gui");

	    for (char z: napis) 
	        System.out.print(z + " ");

	    System.out.println();

	    napis.setStart(2);
	    napis.setStep(3);

	    for (char z: napis) 
	        System.out.print(z + " ");
	}
	
}

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.