句子字符串应该是由空格分隔的一串单词,例如“现在是时候了”。 showWords工作是每行输出一个句子的单词。
这是我的作业,我正在尝试,正如您从下面的代码中看到的那样。我无法弄清楚如何以及用于逐字输出的循环...请帮忙。
import java.util.Scanner;
public class test {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Enter the sentence");
String sentence = in.nextLine();
showWords(sentence);
}
public static void showWords(String sentence) {
int space = sentence.indexOf(" ");
sentence = sentence.substring(0,space) + "\n" + sentence.substring(space+1);
System.out.println(sentence);
}
}
答案 0 :(得分:1)
由于这是一个家庭作业问题,我不会给你确切的代码,但我希望你看看split
- 类中的方法String
。然后我会推荐一个for循环。
另一个替代方法是在你的String中替换,直到没有剩余的空格(这可以通过循环和没有循环来完成,具体取决于你的方式)
答案 1 :(得分:1)
使用正则表达式,您可以使用单行代码:
System.out.println(sentence.replaceAll("\\s+", "\n"));
附加的好处是多个空格不会留空行作为输出。
<小时/> 如果您需要更简单的String
方法方法,则可以将split()
用作
String[] split = sentence.split(" ");
StringBuilder sb = new StringBuilder();
for (String word : split) {
if (word.length() > 0) { // eliminate blank lines
sb.append(word).append("\n");
}
}
System.out.println(sb);
<小时/> 如果你需要一个更加简单的方法(低至
String
索引)以及更多你自己的代码行;你需要将你的代码包装在循环中并稍微调整一下。
int space, word = 0;
StringBuilder sb = new StringBuilder();
while ((space = sentence.indexOf(" ", word)) != -1) {
if (space != word) { // eliminate consecutive spaces
sb.append(sentence.substring(word, space)).append("\n");
}
word = space + 1;
}
// append the last word
sb.append(sentence.substring(word));
System.out.println(sb);
答案 2 :(得分:1)
你走在正确的道路上。你的showWords方法适用于第一个单词,你必须完成它直到没有单词。
循环遍历它们,最好使用while循环。如果您使用while循环,请考虑何时需要停止,这将是没有更多单词的时候。
要执行此操作,您可以保留最后一个单词的索引并从那里搜索(直到不再有),或删除最后一个单词,直到句子字符串为空。
答案 3 :(得分:0)
Java的String
类有一个replace
方法,你应该研究一下。这将使homework
非常容易。
答案 4 :(得分:0)
<强>更新强>
使用String类的split方法在空格字符分隔符上拆分输入字符串,这样就得到了一个字符串数组。
然后使用修改的for循环遍历该数组以打印数组的每个项目。
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Enter the sentence");
String sentence = in.nextLine();
showWords(sentence);
}
public static void showWords(String sentence) {
String[] words = sentence.split(' ');
for(String word : words) {
System.out.println(word);
}
}
}