给定用户输入的字符串句子。使用单词#在单独的行上打印每个单词。例如,如果句子"帽子中的猫"输入后,输出
字#1:中 字#2:猫
字#3:在 字#4:中 字#5:帽子
Scanner input = new Scanner (System.in);
String sentence;
String words = "";
int count = 1;
sentence = input.nextLine();
for (int i = 1; i < sentence.length(); i++)
{
if (sentence.charAt(i) == ' ')
count++;
}
{
words = sentence.substring(0,sentence.indexOf(' '));
System.out.println(words);
}
答案 0 :(得分:4)
String s = "The cat in the hat";
Scanner scan = new Scanner(s);
int wordNum = 1;
while(scan.hasNext()){
String temp = scan.next();
System.out.println("word#" + wordNum + ": \t" + temp);
wordNum++;
}
或
System.out.print("word#" + wordNum + ": \t" + temp + "\t");
如果你想要所有人都在同一条线上
答案 1 :(得分:0)
在for循环中,跟踪每个单词的起始索引(例如,将其存储在变量中)。每当您点击一个新空间时,使用带有数字的子字符串打印出该单词。
您可能想要处理的一些案例。如果句子以一堆空格开头或结尾,则需要处理此句子而不打印任何内容或增加字数。如果单词之间有多个空格,则需要执行相同操作。
答案 2 :(得分:0)
以下代码分隔给定字符串的单词
480x800
答案 3 :(得分:0)
这不是发布作业的正确位置,无论如何下面的代码做你想要的。如果要打印需要存储它们的单词,例如列表或数组。
List<String> words = new ArrayList<>();
String sentence = "The cat in the hat ";
int pos = 0;
int lastCharIndex = sentence.length() - 1 ;
for (int i = 0; i < sentence.length(); i++){
char cur = sentence.charAt(i);
//start to collect char for word only if
//the starting char is not a space
if(sentence.charAt(pos) == ' ' ){
pos+=1;
continue;
}
//continue the cycle if the current char is not a space
// and it isn't the last char
if(cur != ' ' && i != lastCharIndex){
continue;
}
//last word could not terminate with space
if(i == lastCharIndex && cur != ' '){
i+=1;
}
String word = sentence.substring(pos,i);
pos=i;
words.add(word);
}
System.out.println(words);
如果单词之间或句子末尾有额外的空格,代码也要小心。希望这可以提供帮助。
答案 4 :(得分:-1)
你是否尝试过stringbuilder,或者你可以在arraylist中添加所有元素然后对它们进行计数。或计算字符。
Scanner input = new Scanner (System.in);
String sentence;
String words = "";
int count = 0;
for(char c : input.toCharArray()){
count++;
}
System.out.println("The word count is "+ count);