0

我的一个 AP 项目包括将每个单词从一个字符串中分离出来,我已经尝试完成了无数次但没有成功!我的班级还没有学习数组、正则表达式或拆分,所以如果你能帮忙,请避免这些。但是我们确实学习了 substring、charAt、indexOf、length、trim ...

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

}

主要的:

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!任何人都可以请帮助并展示我可以完成此任务的方法,我尝试了很多想法但没有一个奏效。

4

3 回答 3

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;
}
于 2013-11-02T02:04:31.397 回答
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 语句以检查字符串是否包含空格字符。

要解决分配问题,您将需要某种循环(递归也可以是一种循环)来为每个单词重复一个稍微修改的过程。提示:获取第一个词,然后获取除提取词之外的原始字符串。

于 2013-11-02T01:44:24.290 回答
-1

您可以使用标准方法 String#split()

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

请注意,单词是一个数组

于 2013-11-02T01:53:20.390 回答