2016-02-05 2 views
0

Я создал класс, который возвращает 3 значения arraylist в основную программу, но когда я использую свой метод get(), компилятор выдает мне ошибку en, которая не может найти этот метод - символ. Я пробовал делать то же самое, но не с арраистом, а с массивом, и, похоже, он работает. Но я не могу понять, как это будет с массивом.Получить метод из класса на Arraylist

// Ошибка на кнопку «action evt» на второй отметке кода.

Ошибка msg: «Не удалось найти символьный метод 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; 
    } 


} 

Вот класс, который получает категорию класса сверху.

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

Возможный дубликат [Что означает ошибка компиляции «Не удается найти символ»?] (Http://stackoverflow.com/questions/25706216/what-does-a- не может-find-symbol-compilation-error-mean) – azurefrog

+0

Измените свой вопрос с помощью ** точного ** сообщения об ошибке. –

+0

@ Ошибка в Code-Apprentice msg: «Невозможно найти метод-символ getmarka()». – foutzos

ответ

3

Проблема заключается в том, что у вас есть автомобили класса Cars и ArrayList, и вы их сбиваете с толку.

В этом блоке из вашего примера 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"; 
} 
+0

Большое вам спасибо! Он работал так, как должен ... !!! – foutzos

+1

Одна вещь, которую я хотел бы сказать для будущей ссылки, заключается в том, что вместо инициализации 'car' каждый раз, когда код запускается, вы можете использовать цикл foreach:' for (Cars car: Cars) '. Подробнее [здесь] (http://stackoverflow.com/questions/85190/how-does-the-java-for-each-loop-work). –

+0

@foutz Я предлагаю вам начать использовать классы классов именования, начиная с имени верхнего регистра и имени переменной в нижнем регистре. Это поможет вам избежать подобных проблем. –

Смежные вопросы