如何在char数组Java中找到字符后跟一个字符?

时间:2019-02-22 07:27:21

标签: java arrays char

我正在尝试在字符数组中找到一个字符数组,以便在该数组中,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
  }
}

3 个答案:

答案 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=0Array[i++] == B给您Array[0] == B,然后是i=1

解决此问题:改用Array[i+1] == BArray[++i] == B

read here

所以, i++返回i,但它使i增加1