Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Пребобразование типов

23K
18 ноября 2011 года
rafaelkyrdan
123 / / 03.05.2011
Подскажите как преобразовать тип:
Есть клас и у него метод:
Код джава
 
Код:
class Product {
    public double calculate(int count) {
    ...
    ...
    }
}

И есть код где с коллекции выбираем обьект и пробуем вызвать у него метод
Код джава
Код:
public  double calculateTotal(Map<Character,Integer> order){
               
        double total;
        for (Map.Entry<Character,Integer> e : order.entrySet()){
/*
*Здесь моя логическая ошибка
*Type mismatch: cannot convert from Character to Product
*
*/

            Product prod = e.getKey();
            Integer num = e.getValue();
            total =total + prod.calculate(num);
        }                  
        return total;      
    }


Вопрос как на этапе содания коллекции положить обьект Product если у меня есть Character или как преобразовать Character в Product ?

Приму любую подсказку даже в виде номера страницы с учебника.
244
18 ноября 2011 года
UAS
2.0K / / 19.07.2006
Ну дык. А каким образом вы можете преобразовать? Никак. Это все равно что преобразовать кота в стул.
Если делаете по тому моему примеру, то

Product prod = new Product( (String)e.getKey(), e.getValue() );
23K
18 ноября 2011 года
rafaelkyrdan
123 / / 03.05.2011
Я попытался сделать так

код джава:
Код:
// создаю коллекцию с Object ложу Character вызываю Product

public  Map<Object,Integer> scan(String scanProduct){
        scanProduct.toUpperCase();     
        Map<Object,Integer> list =  new HashMap<Object,Integer>();
               
        for(int i = 0; i <scanProduct.length(); i++) {
            Character prod = scanProduct.charAt(i);
            Integer num = (Integer)list.get(prod);
            list.put(prod, num == null ? 1 : num + 1);
        }
        return list;
       
    }

public  double calculateTotal(Map<Object,Integer> order){
               
        double total = 0;
        for (Map.Entry<Object,Integer> e : order.entrySet()){
            Product prod = (Product)e.getKey();
            Integer num = e.getValue();
            total += prod.calculate(num);  
        }                  
        return total;      
    }
23K
18 ноября 2011 года
rafaelkyrdan
123 / / 03.05.2011
Ошибку компилятор не выдает но приложение не работает буду пробывать ваш вариант
244
18 ноября 2011 года
UAS
2.0K / / 19.07.2006
Ещё раз повторю - вы не можете конвертировать типы, которые не являются родственными.
Вы можете конвертировать Integer, Double и подобные объекты в родственные им int, double. Также можно конвертировать Character в String.
Но Character в Product нельзя.

Ничего личного, но вы вообще не понимаете ничего по теме, в частности в ООП. Потому рекомендовал бы почитать любой заграничный учебник (толщиной не менее 800 страниц).
23K
18 ноября 2011 года
rafaelkyrdan
123 / / 03.05.2011
Цитата: UAS


Ничего личного, но вы вообще не понимаете ничего по теме, в частности в ООП. Потому рекомендовал бы почитать любой заграничный учебник (толщиной не менее 800 страниц).


Как раз этим и занимаюсь и что бы веселее читалось попутно решаю задачи

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог