以下代码按字典顺序对单词词典进行排序。问题是我无法访问for循环之外的排序数组。嗯,我认为这是问题所在。我已经在另一个方法中声明了数组字,并将其返回到同一个类中的私有变量。但是在我对数组进行排序并尝试将其打印出来之后,它只打印出原始数组。我还想提一下,这个排序方法确实有效,因为我在另一个类中测试了它,其中所有内容都在main方法中。所以我再次相信我的问题与返回新的排序数组有关。在排序数组之后,当我尝试返回数组时,我还需要在方法中编写几行代码,使用"返回单词;"我无法编写此代码。
public void insertionSort() {
int in, out;
for (out=1; out<nElems; out++){
String temp = words[out]; // remove marked item
in = out; // start shifting at out
while (in>0 && words[in-1].compareTo(temp)>0){ // until temp is lexicographically after after the word it is being compared to
words[in] = words[in-1]; // shifts word to next position in lexicographical order
--in;
}
words[in] = temp;
}
for(int i=0; i <words.length; i++)
System.out.println(words[i]);
答案 0 :(得分:0)
我已用另一种方法声明了数组字
听起来你已经声明了两个数组:一个在另一个方法中,一个完全独立的数组正在被排序。确保两个方法都使用相同的数组。
如果您希望它们都使用在类级别声明的数组,请不要在另一个方法中声明单独的数组。例如,如果您在另一种方法中有String[] words = new String[10];
,请将其更改为words = new String[10];
。如果你真的需要nElems
变量(即,如果sort方法不能简单地使用words.length
),请确保该变量也没有被重新声明并且被设置为正确的值。
或者,如果它接受任何要作为参数排序的数组,那么排序方法将更有用,而不是依赖于将数据排序到特定数组中:
public static void insertionSort(String[] words, int nElems) {
/* ... rest of method as before ... */
}
我也使用了static
方法,因为它不再依赖于任何实例字段。
答案 1 :(得分:0)
好吧,正如我理解你所说的那样,你在类级别使用私有变量,该变量从方法中接收单词[]数组项......在这种情况下: