我试图将句子中的单词分开。句子的每个单词都存储在字符串word
中,然后它将所有内容重新添加到一个字符串中。
但为什么我的子串线会出错呢?
String sent = IO.readString();
char x;
String word ="";
int count = 0;
for(int i = 0; i < sent.length(); i++){
x = sent.charAt(i);
if(x == ' ')
{
word = sent.substring(x-count,x);
word = word + ' ';
count =0;
}
count++;
}
答案 0 :(得分:3)
word = sent.substring(x-count,x);
应为word = sent.substring(i-count,i);
答案 1 :(得分:1)
因为x
是char
,而不是int
,所以
word = sent.substring(x-count,x);
它应该(可能)类似于
word = sent.substring(i-count,i);
因为i
是String
中的位置。
答案 2 :(得分:1)
您应该考虑使用String.split()
,它会返回String
数组。
文档:http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split(java.lang.String)
要使用空格和标点符号作为分隔符,您可以执行以下操作:
String[] arrWords = sentence.split("([ ,.]+)");
如果您真的想要使用原始路线,则必须为第一个单词和最后一个单词添加一些特殊情况。虽然,当有多个空格或标点符号时会发生什么?测试并发现!
public class SeparateWords
{
public static void main(String[] args)
{
String sent ="Hello there how are you";
char x;
String word ="";
int count = 0;
for(int i = 0; i <= sent.length(); i++){
if (i == sent.length()){
word = sent.substring(i-count+1,i);
System.out.println(word);
break;
}
x = sent.charAt(i);
if(x == ' ')
{
if ((i-count) == 0){
word = sent.substring(i-count,i);
}
else{
word = sent.substring(i-count+1,i);
}
System.out.println(word);
word = word + ' ';
count =0;
}
count++;
}
}
}
输出:
Hello
there
how
are
you