从Arraylist上的类中获取方法

时间:2016-02-05 21:03:15

标签: java arraylist

我创建了一个类,它将一个arraylist的3个值返回给主程序但是当我使用我的get()方法时,编译器会抛出错误,找不到这个方法 - 符号。我尝试了同样的事情,不是一个arraylist但是有一个数组,它似乎工作。但我无法想象数组列表的方式。

//错误已开启"行动evt"在第二个代码标记上显示按钮。

错误消息是:"找不到符号方法getmarka()"。

我发布下面的代码也许你可以帮助我。

Class with 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;
    }


}

这是获得类别类的类。

    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;
    }
}

如果是新手问题,请提前致谢并抱歉!

1 个答案:

答案 0 :(得分:3)

问题在于你有一个类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";
}

ArrayList Cars没有方法getmarka()

你需要像

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