2013-11-02 4 views
0

Один из моих проектов AP включает в себя разделение каждого слова из строки, я пробовал выполнить множество раз, но без успеха! Мой класс еще не узнал о массивах, регулярном выражении или разбиении, поэтому, если вы можете помочь, пожалуйста, избегайте любого из них. Однако мы действительно изучали подстроки, Шара, IndexOf, длина, отделка ...Как отделить каждое слово от строки в java?

Это одна из моих попыток: (обратите внимание, что для того, чтобы мне на самом деле замечаю я разделить их я стараюсь добавлять N в строку Я воссоздающий, что newWord)

public class Functions { 
public static String stringReversal(String word){ 
    if (word.length() <= 1){ 
     return word; 
    }else{ 
     char c = word.charAt(0); 
     return stringReversal(word.substring(1)) + c; 
    } 
} 

public static Boolean palindrome(String word){ 
    Boolean palindrome; 
    if (word.equalsIgnoreCase(stringReversal(word))){ 
     return palindrome = true; 
    } else{ 
     return palindrome = false; 
    } 
} 

public static String pigLatin(String sentence){ 
    if(sentence.length() <= 1){ 
     return sentence; 
    } else { 
     String newWord = ""; 
     return newWord += pigLatin(sentence.substring(0, sentence.indexOf(" "))) + " N "; 
    } 
} 

}

Main:

public class Main { 
public static void main (String [] args){ 
    Scanner in = new Scanner(System.in); 
    String word = in.nextLine(); 
    System.out.println(Functions.test(word)); 
    } 
} 

Однако выход только печать N! Кто-нибудь может помочь и показать способ, которым я могу это сделать, я пробовал много идей, но никто не работал.

+1

'sentence.substring (0, sentence.indexOf ("")', вероятно, эквивалент 'sentence.substring (0, 0)' –

+1

как насчет петель? – hasan83

+0

@hasan не узнали, что до главы 15 –

ответ

0

Поскольку это, по-видимому, очень связано с домашней работой, я буду размещать только некоторые подсказки и предложения, вам придется комбинировать мои подсказки и предложения, чтобы сами придумать/решение.

Я считаю, что это: sentence.indexOf("") должен быть таким: sentence.indexOf(" ")

Проверка IndexOf пустая строка нет особого смысла (она всегда возвращает ноль, так как пустая строка может быть найдена всюду в пределах строки).

public static void main(String[] args) { 
    String word = "a bit of words"; 
    System.out.println(test(word)); 
} 

public static String test(String sentence){ 
    if(sentence.length() <= 1){ 
     return sentence; 
    } else { 
     String newWord = ""; 
     return newWord += test(sentence.substring(0, sentence.indexOf(" "))) + " N "; 
    } 
} 

Вышеприведенные печатает: a N

Однако, если ваш вход только одно слово, то sentence.indexOf(" ") вернет -1. Вам нужно будет это проверить. Предложение: измените ваш оператор if вместо этого, чтобы проверить, содержит ли строка пробел или нет.

Для решения задачи вам понадобится какой-то цикл (рекурсия также может быть своего рода циклом), чтобы повторить слегка модифицированный процесс для каждого слова. Подсказка: выберите первое слово, затем выберите исходную строку, кроме извлеченного слова.

+0

исправил это, но теперь я получаю сообщение об ошибке: Исключение в теме "main" java.lang.StringIndexOutOfBoundsException: Индекс строки за пределами диапазона: -1 –

+0

@ user2895567 Вы получите это «Исключение», когда вы дойдете до конца строки. Это означает, что вы находитесь на последнем слове, поэтому больше нет пробелов. –

+0

@ user2895567 Обновите свой вопрос новым кодом. Я действительно не вижу, как вы получите эту ошибку, если только вы не включили -1. –

-1

вы можете использовать стандартный метод Строка # раскол()

String[] words = sentence.split(' '); 

примечание чем слова является массивом

+0

Нет, я так не думаю. –

+0

** Прочитайте вопрос! ** 'Мой класс еще не узнал о массивах, регулярных выражениях или разбиениях, поэтому, если вы можете помочь, пожалуйста, избегайте любых из них.' –

0
public static void main(String[] args) 
{ 
    Scanner in = new Scanner(System.in); 
    try 
    { 
     while(true) 
     { 
      String word = in.nextLine(); 
      System.out.println(splitWords(word)); 
     } 
    } 
    finally 
    { 
     in.close(); 
    } 

} 

private static String splitWords(String s) 
{ 
    int splitIndex = s.indexOf(' '); 
    if(splitIndex >= 0) 
     return s.substring(0, splitIndex) + " N " + splitWords(s.substring(splitIndex + 1)); 
    return s; 
} 
+0

Ответ на 100% -ный код обычно не очень полезен. Более полезно добавить немного описания **, почему ** вы отправляете этот код и **, что ** ваш код делает. –

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