#java
#java
Вопрос:
- Напишите Java-программу для вычисления общей цены каждой книги, где название книги // уникально. Базовый код приведен ниже.
ОЖИДАЕМЫЙ РЕЗУЛЬТАТ
Общая цена продажи для программирования на Java составляет 3640
Общая цена продажи для Learn PH составляет 640,50
Общая цена продажи для ReactJS для чайников составляет 4800
Общая цена продажи для ANSI C составляет 1110
import java.io.*;
import java.util.*;
class javaQ {
public static void main (String[] args) {
Book prod1 = new Book ("Java Programming",520, 2);
Book prod2 = new Book ("Learn PHP",213.50, 3);
Book prod3 = new Book ("ReactJS for Dummies",320, 8);
Book prod4 = new Book ("Java Programming",520, 5);
Book prod5 = new Book ("ReactJS for Dummies",320, 7);
Book prod6 = new Book ("ANSI C",222, 5);
List<Book > myList = new ArrayList<Book >();
myList.add(prod1);
myList.add(prod2);
myList.add(prod3);
myList.add(prod4);
myList.add(prod5);
myList.add(prod6);
int i=0,totalprice=0,totalqantity=0;
for(i=0;i<=myList.size();i )
{
String bookname=myList.getName();
System.out.println(bookname);
String price=myList.getPrice();
String quantity=myList.getInt();
if(bookname.equal.("Java Programing"))
{
totalprice=totalprice
}
}
Комментарии:
1. Вот синтаксическая ошибка: totalprice=totalprice . Сначала попробуйте это исправить.
2. Здравствуйте, фрагмент кода неполный и не компилируется. Вам нужно сгруппировать по названию книги и рассчитать общее количество и стоимость для каждой книги, и вы можете использовать
Map/HashMap
, где вы храните новые книжные проекты с накопленным количеством и значением,
Ответ №1:
Вы можете написать красивое решение, используя карты
public static void main (строка [] аргументы) {
Book prod1 = new Book ("Java Programming",520, 2);
Book prod2 = new Book ("Learn PHP",213.50, 3);
Book prod3 = new Book ("ReactJS for Dummies",320, 8);
Book prod4 = new Book ("Java Programming",520, 5);
Book prod5 = new Book ("ReactJS for Dummies",320, 7);
Book prod6 = new Book ("ANSI C",222, 5);
List<Book > myList = new ArrayList<Book >();
myList.add(prod1);
myList.add(prod2);
myList.add(prod3);
myList.add(prod4);
myList.add(prod5);
myList.add(prod6);
Map<Book,Double> bookMap = new HashMap<>();
for (Book book : myList) {
bookMap.putIfAbsent(book, 0.0);
bookMap.compute(book, (currentBook, price) -> price currentBook.getPrice() * currentBook.getQuantity());
}
for(Entry<Book, Double> bookEntry : bookMap.entrySet()) {
System.out.println(bookEntry.getKey().getName() " : " bookEntry.getValue());
}
}
Вы также должны реализовать метод equals и hashcode в классе Book .
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result ((name == null) ? 0 : name.hashCode());
return resu<
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Book other = (Book) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
Ответ №2:
- Создайте a
Map<String, Book>
для доступа к информации о книге с накопленными данными по названию книги. Вы можете использовать aTreeMap
, тогда ключи будут отсортированы в алфавитном порядке. - Для каждой книги проверьте, существует ли книга с заданным именем на карте, если нет, создайте новый экземпляр
Book
- Добавьте количество и цену в книгу на карте.
- Распечатайте записи карты.
Map<String, Book> totals = new TreeMap<>();
for (Book book : myList) {
Book total = totals.getOrDefault(book.getName(), new Book(book.getName(), 0, 0));
total.setInt(total.getInt() book.getInt());
total.setPrice(total.getPrice() book.getPrice() * book.getInt());
totals.putIfAbsent(book.getName(), total);
}
for (Map.Entry<String, Book> entry : totals.entrySet()) {
Book total = entry.getValue();
System.out.printf("Total Selling Price for %s is %.2f%n",
total.getName(), total.getPrice());
}
В предыдущем фрагменте кода предполагается, что класс Book
имеет следующие параметры для цены и количества:
public class Book {
private String name;
private double price;
private int quantity;
public Book(String name, double price, int quantity) {
this.name = name;
this.price = price;
this.quantity = quantity;
}
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public double getPrice() { return price; }
public void setPrice(double price) { this.price = price; }
public int getInt() { return quantity; }
public void setInt(int quantity) { this.quantity = quantity; }
}