用HashMap模拟一个网上购物车。要求:从键盘输入n本书的名称、单价、购买数量,将这些信息存入一个HashMap,然后将该HashMap作为参数调用方法getSum(HashMap books),该方法用于计算书的总价并返回。【说明:键盘输入可使用Scanner类】
package 作业2;
public class Books {
String name;
double price;
int numbers;
public Books(String name, double price, int numbers) {
this.name = name;
this.price = price;
this.numbers = numbers;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + numbers;
long temp;
temp = Double.doubleToLongBits(price);
result = prime * result + (int) (temp ^ (temp >>> 32));
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Books other = (Books) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (numbers != other.numbers)
return false;
if (Double.doubleToLongBits(price) != Double.doubleToLongBits(other.price))
return false;
return true;
}
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 getNumbers() {
return numbers;
}
public void setNumbers(int numbers) {
this.numbers = numbers;
}
}
package 作业2;
import java.util.*;
public class Booknet {
static double getSum(HashMap<Integer, Books> map)
{
double sum = 0;
for(int i = 0;i < map.size();i++)
{
Books t = map.get(i);
sum += (t.getPrice() * t.getNumbers());
}
return sum;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
HashMap<Integer, Books> m=new HashMap<Integer, Books>();
Scanner sc=new Scanner(System.in);
System.out.print("请输入书的数量:");
int n=sc.nextInt();
for(int i=0;i<n;i++)
{
System.out.println("请输入第"+(i+1)+"本书的姓名,价格,数量:");
String nm=sc.next();
double p=sc.nextDouble();
int nb=sc.nextInt();
m.put(i, new Books(nm,p,nb));
}
double s= getSum(m);
System.out.print("书的总价为:"+s);
sc.close();
}
}