我正在尝试在字符数组中找到一个字符数组,以便在该数组中,A后面是B。出于某种原因,我没有收到错误,但也无法使它完成我的工作当我有一个数组与组合。我只是想知道是否有人可以解释我做错了什么,并指出正确的方向。
char[] Array = new char[] {'A','B','C','D'....};
char A = 'A';
char B = 'B';
....
for (int i = 0 ; i < Array.length; i ++) {
if (Array[i] == A && Array[i++] == B) {
//Work Here
}
}
答案 0 :(得分:4)
首先,要使i + 1
超出数组索引,请在for循环中使用i < arr.length - 1
。然后,在arr[i++]
语句中将arr[i+1]
更改为if
。
char[] arr = new char[] {'A','B','C','D'....};
char a = 'A';
char b = 'B';
....
for (int i = 0 ; i < arr.length - 1; i++) {
if (arr[i] == a && arr[i+1] == b) {
//Work Here
}
}
P.S:道具名称是故意从大写字母切换的,以与Java命名约定保持一致。
答案 1 :(得分:0)
到目前为止,我更喜欢其他答案的方法。如果您想坚持自己的方法,则需要正确的增量运算符(并注意索引不要超出范围):
for (int i = 0 ; i < Array.length-1;) {
if (Array[i++] == A && Array[i] == B) {
//Work Here
}
}
对于一个不相信它的人,运行一些数据:
public static void main(String... args) {
char[] Array = new char[]{'A', 'B', 'C', 'D', 'A', 'B','C', 'D', 'B','A', 'A'};
char A = 'A';
char B = 'B';
for (int i = 0; i < Array.length - 1;) {
if (Array[i++] == A && Array[i] == B) {
System.err.println("found at index;" +i);
}
}
}
输出:
found at index;1
found at index;5
已确认
答案 2 :(得分:0)
问题出在这里:Array[i++] == B
,即i++
是一个职位递增,这意味着它首先被求值为i
,然后再递增1
。 / p>
例如,如果i=0
是Array[i++] == B
给您Array[0] == B
,然后是i=1
解决此问题:改用Array[i+1] == B
或Array[++i] == B
所以,
i++
返回i
,但它使i
增加1