Java 使用foreach时获得异常,但常规for循环执行良好
使用常规foloop,获得正确的输出,使用for each循环抛出ArrayOutOfBound异常。有人能解释一下吗Java 使用foreach时获得异常,但常规for循环执行良好,java,for-loop,exception,foreach,Java,For Loop,Exception,Foreach,使用常规foloop,获得正确的输出,使用for each循环抛出ArrayOutOfBound异常。有人能解释一下吗 public class FindTheDiff { public static void main(String args[]){ System.out.println(isAnagramRecursion("all","laa")); } private static boolean isAnagramRecursion(S
public class FindTheDiff {
public static void main(String args[]){
System.out.println(isAnagramRecursion("all","laa"));
}
private static boolean isAnagramRecursion(String param1, String param2) {
int[] arr = new int[122];
char[] param1Lower = param1.toLowerCase().toCharArray();
char[] param2Low2 = param2.toLowerCase().toCharArray();
for (char ch1 : param1Lower) {
arr[ch1] = arr[ch1]+1;
}
for (char ch2 : param2Low2){
arr[ch2] = arr[ch2]-1;
}
for (int i :arr) {
if(arr[i] != 0)
return false;
}
/*for (int i = 0; i < arr.length; i++) {
if(arr[i] != 0)
return false;
}*/
return true;
}
}这是错误的循环。在执行forEach循环时,迭代的是值,而不是索引。在您的情况下,正确的forEach循环应该是:
for (int arrValue :arr) {
if(arrValue != 0)
return false;
}
这是错误的循环。在执行forEach循环时,迭代的是值,而不是索引。在您的情况下,正确的forEach循环应该是:
for (int arrValue :arr) {
if(arrValue != 0)
return false;
}
这里我不是数组的索引,而是数组的值。但在常规循环中,i是索引
for (int i :arr) {
if(arr[i] != 0)
return false;
}
在if条件下使用数组means i的值
for (int i :arr) {
if(i != 0)
return false;
}
这里我不是数组的索引,而是数组的值。但在常规循环中,i是索引
for (int i :arr) {
if(arr[i] != 0)
return false;
}
在if条件下使用数组means i的值
for (int i :arr) {
if(i != 0)
return false;
}