5

请原谅我发布了一个与我昨晚发布的问题非常相似的问题。我已经简化了问题,以便提出更具体的问题:

当我使用以下代码时,出现(预期的类、接口或枚举)错误:

import java.util.*;


ArrayList<egg> eggys = new ArrayList<egg>;


public class EggTest{
    public static void main(String [] args){

        egg a = new egg();
        egg b = new egg();

        eggys.add(a);
        eggys.add(b);

        for (egg eggo :eggys){
            System.out.println(eggo.size);
        }
    }
}

编译器的输出是:

eggys.java:4: class, interface, or enum expected
ArrayList<egg> eggys = new ArrayList<egg>;
^
1 error

我做的不对。谁能帮我弄清楚如何使用 ArrayList?

4

6 回答 6

6

您只能在类或方法中声明变量;不是顶级代码。

于 2013-07-26T17:05:31.707 回答
2

与 C 或 C++ 等其他语言不同,您不能将变量或其他声明放在类或函数之外:

public class EggTest{
    public static void main(String [] args){

        egg a = new egg();
        egg b = new egg();
        List<egg> eggys = new ArrayList<egg>();
        eggys.add(a);
        eggys.add(b);

        for (egg eggo :eggys){
            System.out.println(eggo.size);
        }
    }
}

在这种情况下,局部变量看起来是更好的选择。

于 2013-07-26T17:05:42.720 回答
2

Java 是一种纯面向对象的语言,这意味着任何/所有属性都应该属于一个实体,即类/接口/枚举。在您的情况下,您已经定义了一个属性/变量,如下所述,它不属于类/枚举/接口,因此 java 编译器会抱怨它。

ArrayList<egg> eggys = new ArrayList<egg>;

您不能像其他编程语言中的全局变量那样拥有此属性。Java 的纯面向对象性质不允许这样做。

正如下面评论中的“skiwi”所提到的,您的 ArrayList 定义中也存在语法错误。你在最后缺少括号。应更正为:

ArrayList<egg> eggys = new ArrayList<egg>();
于 2013-07-26T17:09:47.667 回答
1

两件事情:

  1. 将此行放在类中

    ArrayList<egg> eggys = new ArrayList<egg>;

  2. 您在上面的行中缺少 ()。它应该是:

    ArrayList<egg> eggys = new ArrayList<egg>();

于 2013-07-26T17:15:22.720 回答
0

执行以下操作。

import java.util.*;

public class EggTest{
ArrayList<egg> eggys = new ArrayList<egg>();
    public static void main(String [] args){

        egg a = new egg();
        egg b = new egg();

        eggys.add(a);
        eggys.add(b);

        for (egg eggo :eggys){
            System.out.println(eggo.size);
        }
    }
}

或者

import java.util.*;

public class EggTest{

    public static void main(String [] args){
        ArrayList<egg> eggys = new ArrayList<egg>();
        egg a = new egg();
        egg b = new egg();

        eggys.add(a);
        eggys.add(b);

        for (egg eggo :eggys){
            System.out.println(eggo.size);
        }
    }
}

ArrayList仅当您仅在 main 方法中访问变量时才能使用第二种方法。

您得到的错误只是因为您试图将ArrayList变量声明为顶级声明。java中的变量只能在类或方法中声明。

于 2013-07-26T17:08:19.210 回答
0

我想知道eggys list 在课堂上做了什么。在 Java 中,您不能将上面的变量声明为普通类。

于 2013-07-26T17:18:46.270 回答