2016-03-13 3 views
0

ссылки для моего кода ошибки enter image description hereНесовместимого тип ошибка компиляции

несовместимого типа найдена java.util.Vector требуется HighRights. К сожалению я новичок в Java, и я просто не понимаю, как сделать этот вопрос

Примечание: в этом упражнения мы не будем использовать Generics

В следующей программе, код в методе CountHighs пропал, отсутствует. Написать код этого метода, который принимает в качестве аргумента вектора М и возвращает количество объектов в векторе, которые являются экземплярами HighRights

Метод должен также: - проверить, что элементы, извлеченные из вектора действительно экземпляры классов HighRights или LowRights. Если элемент не является экземпляром таких классов, то тогда метод должен возвращать -1.

  • обрабатывать NullPointerException в случае, если вектор недействителен. Используйте следующий код при ловле возникающего исключения:

    System.out.println("Error"); 
    System.exit(0); 
    return 0; 
    

(Подсказка:

  1. использование m.size(), чтобы получить количество элементов в векторе м
  2. использовать ключевое слово instanceof для проверьте, является ли объект экземпляром класса)

Например,

  • , если вектор т содержит только два HighRights объекты и объекты один LowRights затем CountHighs(m) будет возвращать 2
  • , если вектор т содержит только два HighRights объекты и объекты один String затем CountHighs(m) возвращает -1
  • , если вектор т содержит только пять LowRights объектов нет HighRights объектов, то CountHighs(m) возвратит 0

Любая помощь/советы будут оценены. Большое спасибо.

+0

Это нечитаемый извините. Не могли бы вы отправить сообщение [MCVE] (http://stackoverflow.com/help/mcve) –

ответ

1

Вы должны опубликовать полный код (не как изображение) и трассировку стека ошибок, но я думаю, что знаю проблему. У вас есть метод public static int CountHighs(Vector m), и внутри него вы проверяете условие m instanceof HighRights/LowRights - это никогда не так, Вектор - это вектор, а не HighRights. Вам нужно проверить, сохранены ли в объекте объекты - HighRights или LowRights. Для этого вы должны использовать петлю:

for(Object obj : m){ //it will iterate over the vector `m`, with each iteration `obj` will be the next element 
    if(obj instanceof HighRights){ 
     ++countHighRights; 
    } 
    else if(obj instanceof LowRights){ 
     //do nothing - you should only count HighRights 
    } 
    else{ //obj is neither HighRight nor LowRight 
     return -1; 
    } 
} 
Смежные вопросы