正如标题中所述,我想在Java中创建一个方法,该方法从字符串中查找每个单词并将其打印出来。
这就是它的样子(更多):
public int findFirstLetter(int pos, String text)
{
while (pos<text.length())
{
if (Character.isLetter(text.charAt(pos))==true&&(pos == 0||Character.isLetter(text.charAt(pos-1))==false)){return pos;}
pos++;
}
return -1;
}
public int findLastLetter(int pos, String text)
{
while (pos<text.length()){
if (Character.isLetter(text.charAt(pos))==true&&(pos+2>text.length()||Character.isLetter(text.charAt(pos+1))==false)){return pos;}
pos++;
if (pos == -1){break;};
}
return -1;
}
public void testString (String text)
{
int first = findFirstLetter(0,text);
int last = findLastLetter(0,text);
String word = "";
int startWord = 0;
int i = 0;
while (first!=-1)
{
word = text.substring(first, last+1);
System.out.println("word: "+word);
startWord = text.indexOf(word)+1;
first = findFirstLetter(startWord,text);
if(first == -1){break;}
last = findLastLetter(first,text);
}
当我提供一些String作为此方法的输入时,循环从中间开始重复并且没有到达终点。例如,在最后一句话中,该方法一遍又一遍地重复“循环结束”。有人可以给我一些建议,以便找出问题所在吗?
答案 0 :(得分:0)
正如@Tim Biegeleisen在其注释中所述,您可以使用split来获取单词,将其放入数组并在其上循环以打印它们。请注意,提供了两个选项,您应该选择其中一个。如果您正在学习Java,则第二个选项更易读易懂。
public void printWords(String s) {
String [] words = s.split("\\s+"); //Option 1: Tim Biegelsman regex
String [] words = s.split(" "); //Option 2: if the words are separated by blanks
for(String word : words) {
System.out.println(word);
}
}
还请注意,您可以通过以下方式保存一行代码:
public void printWords(String s) {
for(String word : s.split(" ")) {
System.out.println(word);
}
}