Java 从Arraylist上的类获取方法

Java 从Arraylist上的类获取方法,java,arraylist,Java,Arraylist,我创建了一个类,该类向主程序返回arraylist的3个值,但当我使用get()方法时,编译器抛出一个错误,无法找到此方法符号。我尝试了同样的方法,不是使用arraylist,而是使用数组,它似乎很有效。但我无法想象数组列表会是什么样子 //错误出现在代码第二个标记上的“action evt”显示按钮上 错误消息为:“找不到符号方法getmarka()” 我把代码贴在下面,也许你能帮我 具有返回值的get方法的类: public class Cars { private Stri

我创建了一个类,该类向主程序返回arraylist的3个值,但当我使用
get()
方法时,编译器抛出一个错误,无法找到此方法符号。我尝试了同样的方法,不是使用arraylist,而是使用数组,它似乎很有效。但我无法想象数组列表会是什么样子

//错误出现在代码第二个标记上的“action evt”显示按钮上

错误消息为:“找不到符号方法getmarka()”

我把代码贴在下面,也许你能帮我

具有返回值的get方法的类:

    public class Cars
{
    private String modelo,marka;
    private int kyvismos;
    public Cars(String m,String ma,int k)
    {
       modelo=m;
       marka=ma;
       kyvismos=k;
    }
    public String getmodelo()
    {
        return modelo;
    }
    public String getmarka()
    {
        return marka;
    }
    public int getkyvismos()
    {
        return kyvismos;
    }
    public void setmodelo(String m)
    {
        modelo=m;
    }
    public void setmarka(String ma)
    {
        marka=ma;
    }
    public void setkyvismos(int k)
    {
        kyvismos=k;
    }
    public String toString()
    {
        return modelo+","+marka+","+kyvismos;
    }


}
下面是将category类置于顶部的类

    public class MyFrame extends Frame
{
    ArrayList<Cars> Cars = new ArrayList<>();
    private Button add;
    private Button show;
    private Button quit;
    public MyFrame(String title)
    {
        super(title);
        resize(500,300);
        setResizable(false);
        setLayout(new GridLayout(3,1));
        add=new Button("ADD");
        show=new Button("SHOW");
        quit=new Button("QUIT");
        add (add);
        add (show);
        add (quit);
    }
    public boolean action(Event evt,Object arg)
    {
        if(evt.target.equals(add))
        {
            String value1= JOptionPane.showInputDialog("Enter Car Model ");
            String value2= JOptionPane.showInputDialog("Enter Car Mark ");
            int value3= Integer.parseInt(JOptionPane.showInputDialog("Enter Kyvismos "));
            Integer I=new Integer(value3);
            Cars.add(new Cars(value1,value2,value3));//or pinakas.add(value);
        }
        else
        if(evt.target.equals(show))
        {
            String s="";
            int i;
            for(i=0;i<Cars.size();i++){
              **//here is the error on Cars.getkyvismos() or getmarka() or getmodelo();**
              //if(Cars.getkyvismos()>1900)
              s=s+Cars.getmarka()+Cars.getmodelo()+"\n";
            }
            JOptionPane.showMessageDialog(null, "cars with kyvismo >1900 are \n " + s);
        }
        else
        if(evt.target.equals(quit))
        {
            System.exit(0);
        }
        return true;
    }
}
公共类MyFrame扩展了Frame
{
ArrayList Cars=新的ArrayList();
私人按钮添加;
私人按钮秀;
私人按钮退出;
公共MyFrame(字符串标题)
{
超级(标题);
调整大小(500300);
可设置大小(假);
setLayout(新网格布局(3,1));
添加=新按钮(“添加”);
显示=新按钮(“显示”);
退出=新按钮(“退出”);
添加(添加);
添加(显示);
添加(退出);
}
公共布尔操作(事件evt,对象arg)
{
如果(evt.target.equals(加法))
{
字符串值1=JOptionPane.showInputDialog(“输入车型”);
字符串值2=JOptionPane.showInputDialog(“输入汽车标记”);
int value3=Integer.parseInt(JOptionPane.showInputDialog(“输入Kyvismos”);
整数I=新整数(值3);
Cars.add(新车(value1,value2,value3));//或pinakas.add(value);
}
其他的
如果(evt.target.equals(显示))
{
字符串s=“”;
int i;
对于(i=0;i1900)
s=s+Cars.getmarka()+Cars.getmodelo()+“\n”;
}
showMessageDialog(null,“kyvismo>1900的汽车为\n”+s);
}
其他的
if(evt.target.equals(退出))
{
系统出口(0);
}
返回true;
}
}

提前感谢,如果是新手问题,请道歉

问题在于您有一个类Cars和一个ArrayList实例Cars,并且您混淆了它们

在本例中,
Cars
指的是列表,而不是单个汽车

for(i=0;i<Cars.size();i++){
**//here is the error on Cars.getkyvismos() or getmarka() or getmodelo();**
    //if(Cars.getkyvismos()>1900)
    s=s+Cars.getmarka()+Cars.getmodelo()+"\n";
}

问题在于您有一个类Cars和一个ArrayList实例Cars,并且您混淆了它们

在本例中,
Cars
指的是列表,而不是单个汽车

for(i=0;i<Cars.size();i++){
**//here is the error on Cars.getkyvismos() or getmarka() or getmodelo();**
    //if(Cars.getkyvismos()>1900)
    s=s+Cars.getmarka()+Cars.getmodelo()+"\n";
}

可能重复的请使用准确的错误消息编辑您的问题。@代码学徒错误消息为:“找不到符号方法getmarka()”。可能重复的请使用准确的错误消息编辑您的问题。@代码学徒错误消息为:“找不到符号方法getmarka()”。我想说的一点是,不是每次运行代码时都初始化
car
,而是可以使用foreach循环:
for(Cars-car:Cars)
。请参阅更多。@foutz我建议您开始使用以大写字母开始命名类和以小写字母命名变量名的约定。这将帮助您避免此类问题。@foutz另外,
car
cars
之间的差异非常小,很容易混淆。也许,
carList
作为一个名称会使区别更加明显,这样您就可以避免此类错误。我想说的一件事是,作为将来的参考,不是每次运行代码时都初始化
car
,而是可以使用foreach循环:
for(Cars-car:Cars)
。请参阅更多。@foutz我建议您开始使用以大写字母开始命名类和以小写字母命名变量名的约定。这将帮助您避免此类问题。@foutz另外,
car
cars
之间的差异非常小,很容易混淆。也许
carList
作为一个名字会使区别更加明显,这样你就可以避免这些类型的错误。