0

稍后编码第一个问题......

public class Program2 
{
//The custom word object used when parsing the input file
class Word
{
    public String wordname;
    public int count;
    public int uniqueWord = 0;

    public Word(String word)
    {
        wordname = word;
        count = 1;
    }

    public boolean wordExists(String word)
    {
        if (word == this.wordname)
        {
            this.count++;
            return true;
        }
        else
        {
            return false;
        }   
    }

    public int getCount(Word word)
    {
        return this.count;
    }

    public String getName(Word word)
    {
        return this.wordname;
    }

}


// The main method
public static void main(String[] args) throws IOException
{
    //new array of words size 100
    Word[] words = new Word[100];
    //set the first word to bananna
    Word words[0] = new Word("bananna");
    //print bananna
    System.out.print(getName(words[0]));
}
}

好的,根据我对 Java 的了解,上面的代码应该让我创建一个单词数组,将第一个设置为“bananna”,然后将其打印出来。我几乎没有制作这样的自定义类的经验,也找不到很好的建模资源。此外,我不是 100% 确定我理解调用静态/非静态方法,所以我确信一些错误也来自于此。

程序最终应该做什么,作为我为什么这样做的参考,我必须从文件中获取信息(分隔字符串也就是单词)并查看它是否已经存在于单词数组中(如果确实如此),如果没有,则创建一个新词。

我得到的错误在这里:


Program2.java:116: ']' expected
            Word words[0] = new Word("bananna");
                       ^
Program2.java:116: illegal start of expression
            Word words[0] = new Word("bananna");
                        ^
2 errors

如果您需要任何其他信息,请告诉我。我会在一小时后回来查看这篇文章。感谢您提供的任何帮助!

4

4 回答 4

2
Word words = new Word[100];

我可以看到您的主要问题是Word[100]包含 Word 对象的 Array 类型。您需要 words 变量是 type Word[],而不仅仅是 type Word

关于静态和非静态,可以这样想:您已经编写了一个 Word,然后您可以创建任意数量的属于该类的Word对象。当某事物是静态的时,表示它属于 Word,因此它属于一个词的定义,不属于任何特定的词。相反,非静态的东西将属于特定的 Word 对象。

于 2012-09-18T20:52:58.487 回答
1

当您尝试创建数组时出现语法错误,您应该有:

Word[] words = new Word[100];

如果要在Word.newWord()不调用Word 类实例上的方法的情况下进行调用,则此方法需要是static.

于 2012-09-18T20:53:01.390 回答
1

让我们从第一条错误消息开始。这告诉您Word[]并且Word是不兼容的类型。最后[]的 告诉你这是一个Word对象数组。换句话说,Word words声明对单个Word对象的引用。而您的使用new分配了它们的数组。要解决此问题,只需更改为Word[] words.

我不会详细介绍其他错误消息,因为在您修复此错误消息后它们可能会发生变化。祝你的 Java 好运!

于 2012-09-18T20:54:32.823 回答
1

问题在于您创建对象数组的方式。您应该声明 Class 的数组,然后创建对象:

//new array of words size 100
Word[] words = new Word[100];

//然后创建对象

words[0] = new Word("apple");
于 2012-09-18T20:56:38.877 回答