嗨,大家好我正在研究任何一段中的anagram探测器。
我有一个数组索引超出范围异常的问题,我很确定数组位置及其内存位置是运行时生成的,没有用户的干扰。
import java.util.*;
import java.util.Random;
class never {
public static void main(String[] args) {
Scanner scan = new Scanner(System. in );
int[] array1 = new int[100];
int[] checker = {
121, 97, 104, 101, 97, 100, 104, 105, 109, 63, 32
};
String input = scan.nextLine();
String str = input.toLowerCase();
String str1 = input.replaceAll("\\W", " ");
String[] name1 = new String[5000];
name1 = str1.split(" ");
int length = name1.length;
System.out.println(length);
for (int i = 0; i < length; i++) {
if (name1[i] == " ") {
name1[i] = name1[i + 1];
}
}
for (int i = 0; i < length; i++) {
for (int j = i + 1; j < length; j++) {
Boolean s1 = name1[i].equals(name1[j]);
if (s1 == true) {
name1[j] = " ";
}
if (name1[i] == " ") {
name1[i] = name1[j];
name1[j] = " ";
}
}
}
length = name1.length;
System.out.println(length);
for (int i = 0; i < length; i++) {
for (int j = 0; j < name1[i].length(); j++) {
char charz = name1[i].charAt(j);
int iz = (int) charz;
for (int k = 0; k < 11; k++) {
if (iz == checker[k]) {
length--;
}
}
}
}
System.out.println(length);
for (int i = 0; i < length; i++) //Problem lies here
{
name1[i] = name1[i].toLowerCase();
}
for (int i = 0; i < length; i++) {
for (int j = i + 1; j < length; j++) {
int counter = 0;
char[] arr1 = name1[i].toCharArray();
char[] arr2 = name1[j].toCharArray();
java.util.Arrays.sort(arr1);
java.util.Arrays.sort(arr2);
int arraylen;
if (arr1.length != arr2.length) {
continue;
} else arraylen = arr1.length;
for (int k = 0; k < arraylen; k++) {
if (arr1[i] == arr2[i]) {
counter = counter + 1;
if (counter == arraylen) {
System.out.println(name1[i] + " " + name1[j]);
}
}
}
}
}
}
}
答案 0 :(得分:0)
索引越界异常意味着您正在尝试访问不存在的索引。
假设您有一个包含9个元素的数组。 array [9]将是第10个,它不会存在。