Пребобразование типов
Есть клас и у него метод:
Код джава
Код:
class Product {
public double calculate(int count) {
...
...
}
}
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;
}
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 ?
Приму любую подсказку даже в виде номера страницы с учебника.
Если делаете по тому моему примеру, то
Product prod = new Product( (String)e.getKey(), e.getValue() );
код джава:
Код:
// создаю коллекцию с 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;
}
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;
}
Ошибку компилятор не выдает но приложение не работает буду пробывать ваш вариант
Вы можете конвертировать Integer, Double и подобные объекты в родственные им int, double. Также можно конвертировать Character в String.
Но Character в Product нельзя.
Ничего личного, но вы вообще не понимаете ничего по теме, в частности в ООП. Потому рекомендовал бы почитать любой заграничный учебник (толщиной не менее 800 страниц).
Цитата: UAS
Ничего личного, но вы вообще не понимаете ничего по теме, в частности в ООП. Потому рекомендовал бы почитать любой заграничный учебник (толщиной не менее 800 страниц).
Как раз этим и занимаюсь и что бы веселее читалось попутно решаю задачи