(Java初学者)需要类、接口或枚举

(Java初学者)需要类、接口或枚举,java,Java,请原谅我发布了一个与我昨晚发布的问题非常相似的问题。为了提出更具体的问题,我简化了问题: 当我使用以下代码时,我得到一个(类、接口或枚举预期)错误: import java.util.*; ArrayList<egg> eggys = new ArrayList<egg>; public class EggTest{ public static void main(String [] args){ egg a = new egg();

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

当我使用以下代码时,我得到一个(类、接口或枚举预期)错误:

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);
        }
    }
}
import java.util.*;
ArrayList eggys=新的ArrayList;
公开课考试{
公共静态void main(字符串[]args){
蛋a=新蛋();
蛋b=新蛋();
添加(a);
添加(b);
用于(蛋蛋蛋:蛋蛋蛋){
系统输出打印LN(鸡蛋大小);
}
}
}
编译器的输出为:

eggys.java:4: class, interface, or enum expected
ArrayList<egg> eggys = new ArrayList<egg>;
^
1 error
eggys.java:4:需要类、接口或枚举
ArrayList eggys=新的ArrayList;
^
1错误

我做得不对。有人能帮我弄清楚如何使用ArrayList吗?

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

< P>不同于其他语言,如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);
        }
    }
}
公共类测试{
公共静态void main(字符串[]args){
蛋a=新蛋();
蛋b=新蛋();
List eggys=new ArrayList();
添加(a);
添加(b);
用于(蛋蛋蛋:蛋蛋蛋){
系统输出打印LN(鸡蛋大小);
}
}
}
在这种情况下,局部变量看起来是一个更好的选择。

如下所示

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.*;
公开课考试{
ArrayList eggys=新的ArrayList();
公共静态void main(字符串[]args){
蛋a=新蛋();
蛋b=新蛋();
添加(a);
添加(b);
用于(蛋蛋蛋:蛋蛋蛋){
系统输出打印LN(鸡蛋大小);
}
}
}

import java.util.*;
公开课考试{
公共静态void main(字符串[]args){
ArrayList eggys=新的ArrayList();
蛋a=新蛋();
蛋b=新蛋();
添加(a);
添加(b);
用于(蛋蛋蛋:蛋蛋蛋){
系统输出打印LN(鸡蛋大小);
}
}
}
第二种方法只能在访问主方法内部的
ArrayList
变量时使用

您得到的错误只是因为您试图将
ArrayList
变量声明为顶级声明。java中的变量只能在类内声明
Java是一种纯粹面向对象的语言,这意味着任何/所有属性都应该属于一个实体,即类/接口/枚举。在您的例子中,您定义了一个属性/变量,如下所述,它既不属于类/enum/接口,也不属于类/enum/接口,因此java编译器会对此进行投诉

ArrayList<egg> eggys = new ArrayList<egg>;
ArrayList eggys=新的ArrayList;
不能像其他编程语言中的全局变量那样拥有此属性。Java纯粹面向对象的特性不允许这样做

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

ArrayList<egg> eggys = new ArrayList<egg>();
ArrayList eggys=new ArrayList();
两件事:

  • 把这条线放在教室里

    ArrayList eggys=新的ArrayList

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

    ArrayList eggys=new ArrayList()


  • 我不知道艾格的名单在班上做什么。在爪哇中,不能将变量声明为正常类。

    请考虑用UpPaseCdFrasTr字母命名类。用更简单的术语来说,这是一种约定:您可以在类的顶部在方法之前给变量一个起始值,如“inti=1”,但如果它使用“new”则不行。所以“foo bar=new foo()”,必须放在一个方法内部不过。OP没有遵守命名约定,更糟糕的是,在语言理解过程中犯了一个语法错误。@skiwi是的,当我试图专注于语言理解时,我忽略了他的语法错误。不管怎样,谢谢让我把它解决了。谢谢大家,我现在已经知道了!我会尽快找到答案!
    ArrayList<egg> eggys = new ArrayList<egg>();