[英]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] == B
或Array[++i] == B
代替
因此, i++
返回i
但它將i
加1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.