【发布时间】:2015-02-14 03:36:54
【问题描述】:
通过阅读论坛上的其他问题,我知道数组索引是导致问题的原因,但我不知道任何解决方法。我评论了投掷发生的地方。整个投掷是
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 35
at assignment4.AnagramUtil.getLargestAnagramGroup(AnagramUtil.java:82)
at assignment4.AnagramTester.main(AnagramTester.java:36)
如果有人对我如何完成这项工作有任何想法,请告诉我。另外,我认为我的任何方法都与解决此问题无关,但如果需要,我可以将它们放在这里。
/*areAnagrams
* parameters: sorted strings x & y
* returns boolean
* implements sort method
*/
public static boolean areAnagrams(String x, String y)
{
if(sort(x).equals(sort(y)))
return true;
return false;
}
/*
* This function takes a string array and finds the largest anagram group.
* AnagramComparator.insertionSort() sorts the array by placing anagrams together,
* so no sorting is needed.
* I use ArrayList because I want to be able to freely add to the string array.
* returns a new String[]
*/
public static String[] getLargestAnagramGroup(String[] input)
{
String[] s=input;
AnagramComparator.insertionSort(s, new AnagramComparator());
int largestCount = 0, tempCount=1;
ArrayList<String> largest= new ArrayList<String>();
ArrayList<String> temp= new ArrayList<String>();
for(int i=0; i<s.length; i++)
{
//since it's already sorted, we need only to compare.
//add
temp.add(s[i]);
//Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 35
if (areAnagrams(s[i],s[i+1])) //at assignment4.AnagramUtil.getLargestAnagramGroup(AnagramUtil.java:82)
{
//add s[i+1] to array list
temp.add(s[i+1]);
tempCount++;
}
else
{
//if tempcount> largestcount, empty contents of largest and make temp largest
if (tempCount>largestCount)
{
if(!largest.isEmpty())
largest.clear();
largest=temp;
largestCount=tempCount;
}
//reset tempcount
tempCount=1;
}
}
String[] result= new String[largest.size()];
for (int j=0;j<largest.size();j++)
result[j]=largest.get(j);
return result;
}
【问题讨论】:
-
当 i = length-1; 时这条线会发生什么temp.add(s[i+1]);
-
为什么需要
String[] s=input; -
它仍然抛出。可能有帮助,我不知道。
-
我使用 String[] s= 输入,因此插入排序不会影响输入。
-
@JawshBivens 引用不能那样工作。
String[] s = input复制引用,而不是数组 - 现在input和s都包含对一个数组的引用。
标签: java arrays string arraylist