2016-05-16 3 views
0

Можете ли вы помочь мне в чем-то, где я не могу получить правильный код.Reconize a Array method

Он содержит два недостатка. Я не могу заставить его читать массив, поэтому он сравнивает входные данные. И при добавлении номера не добавляется число.

public class Bird { 

    private ArrayList<Vogels> Name; 
    private final Scanner scanner; 
    private int observed; 
    private String R; 


    public Bird (Scanner scanner) { 
     Name = new ArrayList<Vogels>(); 
     this.scanner = scanner; 
     this.observed = 0; 
     this.R = ""; 
    } 

Следующий метод, который я не могу заставить его работать. Я знаю, что проблема заключается в чтении массива, но я не могу заставить его правильно его прочитать.

public void Obs(){ 
     System.out.print("What was Observed:?"); 
     R = scanner.nextLine(); 
     if (!Name.equals(R)){ 
      System.out.println("Is not a bird!"); 
     }else{ 
      System.out.println("added"); 
      this.observed++; 
     }  
} 
+0

Ваши заявления о проблеме довольно расплывчаты. Можете быть более конкретными? Вы получаете какие-либо ошибки? * Вопросы, требующие помощи по отладке («почему этот код не работает?») Должны включать в себя желаемое поведение, конкретную проблему или ошибку и кратчайший код, необходимый для воспроизведения в самом вопросе. Вопросы без четкого описания проблемы не полезны другим читателям. Смотрите: [Как создать минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve). * – tnw

+0

Вы всегда видите «Не птица!»? Поле 'Name' - это список, а' R' - строка. когда вы их сравниваете, оно всегда будет ложным. –

+0

Что-то может быть неправильное здесь? 'if (! Name.equals (R)) {' Вы сравниваете 'ArrayList' с' String'? – Gangaraju

ответ

0

Вы пытаетесь сравнить строку с массивом

if (!Name.equals(R)){ 

вы должны получить объект из массива первого и получить значение строки из объекта, а затем вы должны сравнить , Name.get (0) ->, который дает объект Vogels (вам нужно написать логику либо для цикла, либо какого-либо другого механизма). Вы должны получить значение из объекта, а затем сравнить со строкой. Лучше опубликуйте свой объект Vogels.

+0

Siya ram chandra ki Jai! –

0

После изучения ваших кодов, похоже, вы хотите проверить, содержат ли список данные, считанные из файла, или нет. Если это то, что вы хотите, вы можете обновить свой код, как показано ниже:

public void Obs(){ 
      System.out.print("What was Observed:?"); 
//Improve your reading from scanner 
      R = scanner.nextLine(); 
      if (!Name.contains(Vogels.getVogels(R))){ 
       System.out.println("Is not a bird!"); 
      }else{ 
       System.out.println("added"); 
       this.observed++; 
      }  
    } 

Где getVogel является метод, который будет возвращать Vogels на основе предоставленного пользователем строки.

+0

Имя представляет собой список массивов типа Vogels.java и, следовательно, проверка того, содержит ли он объект String, на который ссылается R, не имеет смысла. Вы можете проверить ответ ΦXoce 웃Pepeúpa, это имеет смысл. –

+0

Я соответственно обновлю свой ответ. – sauumum

1

Имя является ArrayList из Vogels и R является String ..

так что здесь if (!Name.equals(R)){ нет особого смысла, и будет возвращать всегда ложное

вам нужно или необходимо реализовать/определите что-то вроде if(Name.contains(Vogels.resolve(R))) где Vogels.resolve(R) - статический метод, возвращающий Vogel, когда вы указываете параметр a String