java子字符串是否可以在超出范围的索引上运行?
这是一个经验证的可运行且正确的doe。它颠倒了句子的语序 但是这条线java子字符串是否可以在超出范围的索引上运行?,java,string,Java,String,这是一个经验证的可运行且正确的doe。它颠倒了句子的语序 但是这条线 public class Main { public static String reverseWords(String s) { StringBuilder reversed = new StringBuilder(); int j = s.length(); for (int i = s.length() - 1; i >= 0; i--) {
public class Main {
public static String reverseWords(String s) {
StringBuilder reversed = new StringBuilder();
int j = s.length();
for (int i = s.length() - 1; i >= 0; i--) {
if (s.charAt(i) == ' ') {
j = i;
} else if (i == 0 || s.charAt(i - 1) == ' ') {
if (reversed.length() != 0) {
reversed.append(' ');
}
reversed.append(s.substring(i, j));
}
}
return reversed.toString();
}
public static void main(String[] args) {
String str = "sky is blue";
String retStr = reverseWords(str);
System.out.println(retStr);
}
}
它将在第一时间被称为s.substring(7,11),s是“天空是蓝色的”。
所以你可以看到索引7是“b”,但索引11在“e”之后
在c++中,我知道这个问题。但是为什么在Java中,它是好的呢?太困惑了。
我检查了java文档,它说substring()接受开始和结束索引。
我现在不知道
需要帮助吗
感谢子字符串从指定的beginIndex开始,并扩展到索引endIndex-1处的字符。“java子字符串可以在超出范围的索引上运行吗?”不,它不能。因为这是来自文档的直接引用,您应该放一个指向它们的链接。
reversed.append(s.substring(i, j));