在java中如何将每个单词从字符串中分离出来?

在java中如何将每个单词从字符串中分离出来?,java,string,Java,String,我的一个AP项目包括将每个单词从字符串中分离出来,我已经尝试了很多次,但都没有成功!我的班级还没有学习数组、正则表达式或拆分,所以如果你能帮忙的话,请避免这些。然而,我们确实学习了子串、字符、索引、长度、修剪 这是我的一个尝试: 请注意,为了让我真正注意到我已经拆分了它们,我尝试将N添加到我正在重新创建的字符串中,这就是newWord public class Functions { public static String stringReversal(String word){ if

我的一个AP项目包括将每个单词从字符串中分离出来,我已经尝试了很多次,但都没有成功!我的班级还没有学习数组、正则表达式或拆分,所以如果你能帮忙的话,请避免这些。然而,我们确实学习了子串、字符、索引、长度、修剪

这是我的一个尝试: 请注意,为了让我真正注意到我已经拆分了它们,我尝试将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 ";
    }
}

但是输出仅打印N!任何人都可以帮助我并展示一种方法来完成这项任务,我尝试了很多想法,但都没有成功。

由于这似乎与家庭作业高度相关,我只会发布一些提示和建议,您必须将我的提示和建议结合起来,自己提出/a解决方案

我相信: 句子索引 应该是这样的:句子.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

但是,如果您的输入只有一个单词,那么句子.indexOf将返回-1。你需要检查一下这个。建议:修改if语句以检查字符串是否包含空格字符


要解决赋值问题,需要某种循环递归,也可以是一种循环,对每个单词重复一个稍微修改的过程。提示:获取第一个单词,然后获取除提取单词以外的原始字符串。

您可以使用标准方法Stringsplit

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

注意,单词是一个数组

句子。子字符串0,句子。indexOf可能等同于句子。子字符串0,0@hasan直到第15章我们才知道哦,对。第15章,这说明了一切!“你现在在读哪一章?@SimonAndréForsberg 10真奇怪,它是这样教的。无论如何,请注意,在第一个空格之前,句子.substring0、句子.indexOf将获取所有内容。这是一个单词。您不想在第一个空格后获取所有内容吗?已修复此问题,但现在我收到一个错误:线程主java.lang.StringIndexOutOfBoundsException中的异常:字符串索引超出范围:-1@user2895567当到达字符串末尾时,您将收到该异常。这意味着您已经到了最后一个单词,因此没有更多的空格了。@user2895567用新代码更新您的问题。我真的不知道你会怎么得到那个错误,除非你在某处包含了-1。@SimonAndréForsberg done。我上传了我未完成的项目,可能上面的其他代码有干扰。@user2895567更新了我的答案。如果字符串不包含空格,则会出现此错误。不,我不这样认为。请阅读问题!我的班级还没有学会数组、正则表达式或拆分,所以如果你能帮忙的话,请避免这些。一个100%代码的答案通常不是很有帮助。更有用的是,添加一点说明,说明为什么要发布代码,以及代码的作用。
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;
}
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;
}