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