0

我有一个按字母顺序对单词进行排序的程序,这些单词来自输入它们的用户(我使用的是 GUI)。不幸的是,由于我还不知道的原因,代码的“排序”部分有一些下划线,但我怀疑它与类/数组有关。有关如何纠正此问题的任何提示都会很棒!

在“公共”下,我创建了一个类和数组。

class Word{
    String word;
    Word(String _word) {
        word= _word;
    }
}

ArrayList <Word> small = new ArrayList <Word>(); //array for words...

在 GUI 上的“排序按钮”actionPerformed 下...

String word;
Word b = new Word(word); //these two lines stores words inputted by user
small.add(b); //second line

//begins to sort
for (int k = 0; k < word.length(); k++) {
    word[k] = word; //underlined red "array required"
    int x;
    for (int i = 0; i < word.length(); i++) {
        // Assume first letter is x
        x = i;
        for (int j = i + 1; j < word.length(); j++) {
            if (word[j].compareToIgnoreCase(word[x]) < 0) { 
            //underlined red "array required"
                x = j;
            }
        }
        if (x != i) {
            //swap the words if not in correct order
            final String temp = word[i]; //underlined red "array required"
            word[i] = word[x]; //underlined red "array required"
            word[x] = temp; //underlined red "array required"
        }
        istArea.append(word[i] + "\n");// Output ascending order
        //underlined red "array required"
    }
}
4

2 回答 2

3

这不编译。你不能输入word[x],因为word它不是一个数组,它是一个String. 如果您尝试获取 的第一个字符,请String改用:

char c = "foo".charAt(0);

您可以将该 0 更改为x在您的算法中。

或者,您可以这样做:

char[] chars = "foo".toCharArray();

现在,您现在可以使用的每个地方都words[x]可以使用chars[x]它并且应该可以编译。

但是,这是您的许多错误之一:

  1. 你有l自己的行,没有分号。我什至不知道你在这里的意图,但你不能那样做。以下是其他一些问题:
  2. small没有定义。这是什么?
  3. istArea没有定义。这是什么?
  4. 应该是什么word[k] = word;意思?
于 2013-06-11T22:35:46.833 回答
0

如果你想让它工作,你需要声明一个数组Strings

String[] myArray;

然后你可以说:

myArray[k] = word;

等等...

于 2013-06-11T22:43:31.153 回答