package pk1;
import java.util.Scanner;
public class 字符串 {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
String s=in.nextLine();
String sum=" ";
int loc=0;
int start=0;
while(loc<s.length()) {
loc=s.indexOf(' ',loc+1);
String s1=s.substring(start,loc);
start=loc+1;
sum+=s1.length()+" ";
}
System.out.println(sum.trim());
}
}
以下是题目
题目内容:
你的程序要读入一行文本,其中以空格分隔为若干个单词,以‘.’结束。你要输出这行文本中每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如“it's”算一个单词,长度为4。注意,行中可能出现连续的空格。
输入格式:
输入在一行中给出一行文本,以‘.’结束,结尾的句号不能计算在最后一个单词的长度内。
输出格式:
在一行中输出这行文本对应的单词的长度,每个长度之间以空格隔开,行末没有最后的空格。
输入样例:
It's great to see you here.
输出样例:
4 5 2 3 3 4
报错信息是什么,贴一下
用切割方法,if匹配到空格就切割
java.lang.StringIndexOutOfBoundsException 数组越界异常 教给你一个识别bug的方法 java不是有命名规则吗 按照命名规则加空格 StringIndexOutOfBoundsException 变成 String Index Out Of Bounds Exception 然后你就知道是什么bug了 这个bug的名字很显而易见 就是你想要的数字超过了数组的最大值 就出现这个异常了 出现的问题是在这一行 String s1=s.substring(start,loc); 但实际出现的问题是在这里 loc = s.indexOf(' ', loc + 1); 当到最后一位的时候 这里算出来的结果是-1 indexOf这个方法我去看了一下 是从哪个位置朝后检索这个字符 然而当你到最后一段的时候是没有空格的 然后抛出索引越界 -1 接下来你的String s1=s.substring(start,loc); 去从start位置开始 到 -1这个位置进行截取 自然就报错了 解决的办法
while (loc < s.length()) {
loc = s.indexOf(' ', loc + 1);
if (loc == -1) {
loc = s.length();
}
String s1 = s.substring(start, loc);
start = loc + 1;
sum += s1.length() + " ";
}