Metody klasy String

0

Witam , mam do wykonania następujacy program:

Wykorzystując metody klasy String napisz program dzielący ciąg znaków
z pierwszego zadania na wyrazy.

A to co zrobiłem do tej pory:

 
public class kot {
  static String x = "Ala ma kota";

  	
  public static void main(String[] args) {
		
	System.out.println(x.substring(0, x.indexOf(" ")));
	System.out.println(x.indexOf(" "));
	System.out.println(x.substring(4, x.indexOf(" ")));
		}

}

Problem polega na tym ,że nie mogę używać żadnej pętli...
Pierwszy wyraz "ala" jest wycinany poprawnie lecz drugi mający początek w indexie nr 4 już nie. Pojąwia się następujący błąd:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(Unknown Source)
at kot.main(kot.java:16)

Domyślam się że przy wycięciu pierwszego wyrazu jest on zapamiętywany w zmiennej x więc wyraz ten nie posiada litery z numerem indexu z numerem 4.
Jest jakiś sposob aby wykorzystać jakies metody nie uzywając żadnej pętli ?
a i dodam że ten program ma być uniwersalny na każdy ciag znakow nie tylko na ten powyżej.

1
        System.out.println(x.substring(0, x.indexOf(" "))); // x = "Ala ma kota", .substring(0, x.indexOf(" ")) = .substring(0, 3) = "Ala"
        System.out.println(x.indexOf(" "));
        System.out.println(x.substring(4, x.indexOf(" "))); // x = "Ala ma kota", .substring(4, x.indexOf(" ")) = .substring(4, 3) = ciąg znaków od znaku 4 do 3, czyli o długości -1

indexOf nic nie wycina, substring nic nie wycina, zwraca jedynie kopię wybranego fragmentu stringa.
każdą metodę każdego obiektu/klasy możesz wywoływać tak w pętli, jak i poza.
rozwiązanie tego zadania bez użycia pętli jest całkowicie bezcelowe, będzie i tak polegać na powtórzeniu kilka/kilkadziesiąt razy kawałka kodu, dlatego nie wierzę, że ktoś zlecił Ci to zadanie do zrobienia w tak durny sposób.
i wreszcie - klasa String definiuje metodę split, która załatwi to co potrzebujesz w trzech linijkach (split, a potem println w pętli for)

2
String zdanie = "Ala ma kota";
String[] wyrazy = zdanie.split(" ");
for (String wyraz : wyrazy) {
  System.out.println(wyraz);
}

I to wszystko ;)

0

Dzięki. Wiem ze jest co najmniej dziwne ,ale nie miałem jeszcze na zajeciach wykladu z pętli dlatego nie mogę jej używac. Dzięki za pomoc

0

A żeby się nie czepiali o for wynik możesz wypisać : Arrays.asList(zdanie)

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