簡體   English   中英

如何在char數組Java中找到字符后跟一個字符?

[英]How do I find a character followed by a character in a char array Java?

我試圖在字符數組中找到一個字符數組,以便在該數組中,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
  }
}

首先,要使i + 1超過數組索引,請在循環中使用i < arr.length - 1 然后,在if語句中將arr[i++]更改為arr[i+1]

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
    }
}

PS:道具名稱是有意從大寫字母切換的,以與Java命名約定一致。

到目前為止,我更喜歡其他解決方法。 如果您想堅持自己的方法,則需要正確的增量運算符(並注意索引不要超出范圍):

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

ed

問題出在這里: Array[i++] == B ,即i++是一個后置增量,這意味着它首先被求值為i然后再遞增1

例如,如果i=0 ,則Array[i++] == B給出Array[0] == B ,之后i=1

解決問題:使用Array[i+1] == BArray[++i] == B代替

在這里閱讀

因此, i++返回i但它將i1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM