2013-10-24 11 views
5

Zdanie Łańcuch ma być grupą słów oddzielonych spacjami, np. "Teraz jest czas". Pokaże się, że zadanie "Słów" jest wypisane na wyjściu słowa w wierszu.Jak wyświetlić zdanie słowo po słowie w oddzielnej linii

To jest moja praca domowa i próbuję, jak widać z poniższego kodu. Nie mogę się dowiedzieć, jak i której pętli użyć, aby wypowiadać słowo po słowie ... proszę o pomoc. String klasa

import java.util.Scanner; 


public class test { 
    public static void main(String[] args) { 
     Scanner in = new Scanner(System.in); 

     System.out.println("Enter the sentence"); 
     String sentence = in.nextLine(); 

     showWords(sentence); 
} 

    public static void showWords(String sentence) { 
     int space = sentence.indexOf(" "); 
     sentence = sentence.substring(0,space) + "\n" + sentence.substring(space+1); 
     System.out.println(sentence); 
    } 

} 

Odpowiedz

0

Java ma replace metody, które należy przyjrzeć się. To sprawi, że ten homework będzie całkiem łatwy.

String.replace

1

Ponieważ jest to kwestia pracy domowej, nie daje dokładny kod, ale chcę, aby przyjrzeć się metodzie split w String -class. A potem poleciłbym pętlę for-loop.

Inną alternatywą jest zastąpienie w ciąg, dopóki nie ma więcej miejsca w lewo (można to zrobić zarówno z pętlą i bez pętli, w zależności od tego, jak to zrobić)

+0

Metoda "replace" obsłuży wszystkie wystąpienia znaku spacji za pomocą pojedynczego wywołania metody. Brak potrzeby pętli. – nhgrif

+0

@nhgrif Ta metoda tak, ale istnieją inne alternatywne metody (takie jak replaceFirst lub użycie podciągu takiego jak OP już próbowało już).'replace' może być oczywiście najłatwiejszym rozwiązaniem. –

+0

Co powiesz na wiele spacji? Wymiana Regex jest lepszym wyborem. – Bohemian

0

Aktualizacja

Użyj metody dzielenia klasy String, aby podzielić ciąg wejściowy na separatorze znaków spacji, aby uzyskać tablicę ciągów słów.

Następnie przeprowadź pętlę w tej tablicy, używając zmodyfikowanej pętli for, aby wydrukować każdy element tablicy.

import java.util.Scanner; 


    public class Test { 
     public static void main(String[] args) { 
      Scanner in = new Scanner(System.in); 

      System.out.println("Enter the sentence"); 
      String sentence = in.nextLine(); 

      showWords(sentence); 
    } 

     public static void showWords(String sentence) { 
      String[] words = sentence.split(' '); 
      for(String word : words) { 
      System.out.println(word); 
      } 
     } 

    } 
+2

Pytanie dotyczy zadania domowego. Zamieszczanie otwartej odpowiedzi nie jest szczególnie pomocne. – nhgrif

+0

@nhgrif: tak masz rację. Dodałem trochę wyjaśnienia. – Rami

1

Korzystanie regex można użyć jednego-liner:

System.out.println(sentence.replaceAll("\\s+", "\n")); 

z dodatkową korzyścią, że wiele miejsc nie pozostawi puste wiersze jako wyjścia.


Jeśli potrzebujesz prostszy String metody podejść można użyć split() jak

String[] split = sentence.split(" "); 
StringBuilder sb = new StringBuilder(); 
for (String word : split) { 
    if (word.length() > 0) { // eliminate blank lines 
     sb.append(word).append("\n"); 
    } 
} 
System.out.println(sb); 


Jeśli potrzebujesz jeszcze nagą podejście kości (do String indeksów), a na liniach własnego kodu; musisz zawinąć kod wewnątrz pętli i nieco go poprawić.

int space, word = 0; 
StringBuilder sb = new StringBuilder(); 

while ((space = sentence.indexOf(" ", word)) != -1) { 
    if (space != word) { // eliminate consecutive spaces 
     sb.append(sentence.substring(word, space)).append("\n"); 
    } 
    word = space + 1; 
} 

// append the last word 
sb.append(sentence.substring(word)); 

System.out.println(sb); 
+0

Pytanie dotyczy zadania domowego. Zamieszczanie otwartej odpowiedzi nie jest szczególnie pomocne. – nhgrif

1

Jesteś na dobrej drodze. Twoja metoda showWords działa dla pierwszego słowa, po prostu musisz to zrobić, dopóki nie będzie słów.

Przepuszczaj je, najlepiej z pętlą while. Jeśli używasz pętli while, zastanów się, kiedy chcesz ją zatrzymać, co oznacza, że ​​nie ma więcej słów.

Aby to zrobić, można albo zachować indeks ostatniego słowa i wyszukać stamtąd (aż nie będzie ich więcej), albo usunąć ostatnie słowo, dopóki ciąg zdania nie będzie pusty.

Powiązane problemy