【Java】实验六

1. 用HashMap模拟一个网上购物车。要求:从键盘输入5本书的名称、单价、购买数量,将这些信息存入一个HashMap,然后将该HashMap作为参数调用方法getSumHashMap books),该方法用于计算书的总价并返回。【说明:键盘输入可以使用Scanner类】

 

Book.java
 1 package com.ly.cart;
 2 
 3 public class Book {
 4     private String name;
 5     private double price;
 6     private int count;
 7     
 8     Book(String name,double price,int count){
 9         this.name = name;
10         this.price = price;
11         this.count = count;
12     }
13     
14     public String toString(){
15         return this.name + "\t\t" + this.price + "\t\t" + this.count + "\n";
16     }
17 }

 

Cart.java
 1 package com.ly.cart;
 2 
 3 import java.util.HashMap;
 4 import java.util.Iterator;
 5 import java.util.Map;
 6 import java.util.Scanner;
 7 
 8 public class Cart {
 9     public static double getSum(HashMap<String,String> book){
10         double sum = 0.0;
11         Iterator mapsite = book.entrySet().iterator();
12         while(mapsite.hasNext()){
13             Map.Entry entry = (Map.Entry)mapsite.next();
14             Object value = entry.getValue();
15             double priceSum = Double.parseDouble(value.toString().trim().split("\t\t")[1]);
16             int countSum = Integer.parseInt(value.toString().trim().split("\t\t")[2]);
17             sum += priceSum*countSum;
18         }
19         return sum;
20     }
21     
22     public static void main(String[] args) {
23         HashMap<String,String> map = new HashMap<String,String>();
24         Scanner in = new Scanner(System.in);
25         String name;
26         double price;
27         int count;
28         
29         for(int i=0;i<5;i++){
30             System.out.println("请输入第"+ (i+1) +"本书的信息:");
31             name = in.nextLine();
32             price = Double.parseDouble(in.nextLine());
33             count = Integer.parseInt(in.nextLine());
34             Book book = new Book(name,price,count);
35             map.put("BOOK:" + (i+1), book.toString());
36         }
37         
38         Iterator mapsite = map.entrySet().iterator();
39         System.out.println("\n" + "书目" + "\t\t" + "书名" + "\t\t" + "单价" + "\t\t" + "数量" +"\n");
40         while(mapsite.hasNext()){
41             Map.Entry entry = (Map.Entry)mapsite.next();
42             Object key = entry.getKey();
43             Object value = entry.getValue();
44             System.out.println(key + "\t" + value);
45         }
46         System.out.println("书的总价为:" + getSum(map));
47     }
48 }

 

2. 使用两个Stack类(JDK容器类库中的Stack类)实现一个队列类MyQueue,提供队列的入队列和出队列操作:enQueuedeQueue

 

MyQueue.java
 1 package com.ly.queue;
 2 
 3 import java.util.Stack;
 4 
 5 public class MyQueue {
 6     private Stack stack1;
 7     private Stack stack2;
 8     private int len;
 9     
10     MyQueue(){
11         stack1 = new Stack();
12         stack2 = new Stack();
13         len = 0;
14     }
15     
16     public void enQueue(Object o){
17         stack1.push(o);
18         len++;
19     }
20     
21     public Object deQueue(){
22         Object o = null;
23         if(stack1.isEmpty()){
24             return null;
25         }
26         while(!stack1.isEmpty()){
27             Object e = stack1.pop();
28             stack2.push(e);
29         }
30         o = stack2.pop();
31         while(!stack2.isEmpty()){
32             Object e = stack2.pop();
33             stack1.push(e);
34         }
35         return o;
36     }
37 }

 

Main.java
 1 package com.ly.queue;
 2 
 3 public class Main {
 4     public static void main(String[] args) {
 5         MyQueue queue = new MyQueue();
 6         int a = 1;
 7         double b = 2.0;
 8         queue.enQueue(a);
 9         queue.enQueue(b);
10         queue.enQueue("string");
11         
12         System.out.println(queue.deQueue());
13         System.out.println(queue.deQueue());
14         System.out.println(queue.deQueue());
15         System.out.println(queue.deQueue());
16     }
17 }

 

3. 写一个彩票程序:307。随机(1~30之间)生成7个随机数,注意不能重复。然后从键盘输入7个数,对比7个数是否与随机数有相同的。最后显示“中了几个号”。同时,如果中了7个号,显示一等奖;如果中了6个号,显示二等奖;如果中了5个号,显示三等奖。要求:首先写出程序的实现思想,特别是程序所使用的数据结构,然后写出Java实现代码。【说明:键盘输入可以使用Scanner类】

 

Lottery.java
 1 package com.ly.lottery;
 2 
 3 import java.util.HashSet;
 4 import java.util.Scanner;
 5 import java.util.Set;
 6 
 7 public class Lottery {
 8     public static void main(String[] args) {
 9         Set<Object> s = new HashSet<Object>();
10         Scanner in = new Scanner(System.in);
11         int[] array = new int[7];
12         int n =0;
13         
14         //产生7个不相同的随机数
15         while(s.size()<7){
16             s.add((int)(Math.random()*30+0.5));
17         }
18         
19         //输入7个数字
20         System.out.print("请输入7个数字:");
21         for(int i=0;i<7;i++){
22             array[i] = in.nextInt();
23         }
24         
25         //判断每个所输入的数字是否在HashSet里面
26         for(int i=0;i<7;i++){
27             if(s.contains(array[i])){
28                 n++;
29             }
30         }
31         
32         //显示结果
33         System.out.println("中了" + n +"个号");
34         if(n==7){
35             System.out.println("一等奖");
36         }
37         if(n==6){
38             System.out.println("二等奖");
39         }
40         if(n==5){
41             System.out.println("三等奖");
42         }
43         
44     }
45 }

 

转载于:https://www.cnblogs.com/lyblanche/archive/2013/01/21/2870622.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值