2014-09-01 9 views
-8

Эта программа отделяет слова в предложении. Пожалуйста, не используйте метод «split», поскольку он находится вне учебной программы нашей школы. Пожалуйста, ответьте, не зная.Есть ли более простой способ написать эту java-программу?

int length=0; 
    int x=sent.length(); 
    int a; 
    int b=0; 
    for(a=0;a<x;a++) 
    { 
     char z=sent.charAt(a); 
     if(z==' ') 
     { 
      String hell=sent.substring(b,a); 
      System.out.println(hell); 
      b=b+hell.length()+1; 
     } 
    } 
+0

Как нам знать, какие методы можно использовать, и которые вы не можете. Вы можете написать 'b = a + 1;' –

+0

что такое _sent_? Строка? – Nabin

+0

Для чего используется 'length'? –

ответ

0

Вы можете сделать это с помощью IndexOf и подстрок:

int index= word.indexOf(" "); 
do{ 
    System.out.println(word.substring(0, index)); 
    word = word.substring(index + 1); 
    index = word.indexOf(" "); 
} while (index != -1); 
1

Более простой способ сделать это

for(char ch : sent.toCharArray()) { 
    if (ch == ' ') ch = '\n'; 
    System.out.print(ch); 
} 
+0

Будет ли это работать над фразой с несколькими пробелами? (Мне нравится простота этого, хотя!) – therealrootuser

+0

@ mattingly890 он сделал бы то же самое, т. Е. Создал пустую строку. Единственное различие заключается в том, что он печатает конечное слово, тогда как код OP не печатает последнее слово, если не следует пробел. –

2

Я лично использую java.util.Scanner. Если это выходит за рамки вашей школы, найдите новую школу!

import java.util.Scanner; 

public class Example { 

    public static void main(String[] args) { 
     String sentence = "Hello world of overflowing stacks"; 

     Scanner sc = new Scanner(sentence); 
     while (sc.hasNext()) 
     { 
      System.out.println(sc.next()); 
     } 
    } 
} 

Выход:

Hello 
world 
of 
overflowing 
stacks 
+0

java.util.Scanner находится в нашем объеме, но они могут попросить нас специально использовать буферизованный считыватель, а не использовать класс сканера, задавая такой вопрос. Индийские школы, bro: P – raiGuy

+0

Я не вижу ничего неправильного в ограничениях. Вы должны узнать, как «Сканер» будет реализован до того, как вы начнете принимать его как должное. Если вся школа учит вас, как использовать кучу консервированных кусочков кода (что и есть стандартная библиотека), это не совсем правильно учит вас. –

+0

Справедливая точка зрения, хотя противоположная проблема (которую я также видел от начинающих программистов) заключается в том, что они пытаются написать все и не имеют понятия, как эффективно использовать библиотеки (включая стандартные библиотеки). Полагаю, это балансирующая игра. – therealrootuser

Смежные вопросы