【发布时间】:2018-04-28 15:39:47
【问题描述】:
我正在尝试从字符串中获取具有确定长度的各种切片。
在下面的代码中,我不知道为什么子字符串函数的返回与设置的长度不匹配。
我只在第一次返回时看到匹配值,但之后的所有结果都是无效的。
class Counter {
public static void main(String[] args) {
String listBits = "5,1,1,5,0,5,3,3,2,0,2,3,1,1,0,";
int width = 6;
String stringSlice = "";
int maxBeginSlice = listBits.length() - (width * 2) + 1;
System.out.println(listBits);
for (int x = 1; x <= maxBeginSlice; x = x + 2) {
System.out.print((x - 1) + "->");
stringSlice = listBits.substring(x - 1, width * 2);
System.out.println(stringSlice);
}
}
}
输出:
5,1,1,5,0,5,3,3,2,0,2,3,1,1,0,
0->5,1,1,5,0,5,
2->1,1,5,0,5,
4->1,5,0,5,
6->5,0,5,
8->0,5,
10->5,
12->
14->
例外情况:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException:
String index out of range: -2
at java.lang.String.substring(String.java:1967)
at Main.main(Main.java:49)
【问题讨论】:
-
能把得到的输出和想要得到的输出贴出来吗?
-
您知道构成字符串的不仅是数字,还有逗号、','、它们之间的字符?
-
我想要的只是不同位置的字符串中相同长度的切片。
-
@GilbertoRodrigues,再次阅读有关子字符串的文档。第二个参数是结束索引,而不是长度。
-
感谢@JoakimDanielson。解决了!!