作业中一些题目的改进

斗地主:

  1. 制牌:A--K一共13个数字,四个花色,4*13,大王,小王
  2. 洗牌:shuffle将集合中的字符串随机置换
  3. 发牌:将一个集合中的元素,分发到4个集合
  4. 问题: 红桃3--0  红桃4--1

import java.util.ArrayList;

import java.util.Collections;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import java.util.Map.Entry;

 

/*斗地主:

1.制牌:A--K一共13个数字,四个花色,4*13,大王,小王

2.洗牌:shuffle将集合中的字符串随机置换

3.发牌:将一个集合中的元素,分发到4个集合

4.问题: 红桃3--0  红桃4--1*/

public class Poker {

 

public static void main(String[] args) {

//制牌开始

String[] colors = {"♠","♥","♣","♦"};

String[] nums = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};

Map<Integer,String> map = new HashMap<Integer,String>();

List<Integer> list = new ArrayList<Integer>();

int count = 0;

for(String color : colors) {

for(String num : nums) {

map.put(count, color+num);

list.add(count);

count++;

}

}

map.put(count,"小王");

list.add(count++);

map.put(count,"大王");

list.add(count);

/*for(Entry<Integer, String> entry:map.entrySet()) {

System.out.println(entry.getValue());

}*/

//制牌结束

 

 

 

//洗牌开始

Collections.shuffle(list);

//洗牌结束

 

 

//发牌开始

ArrayList<Integer> dipai = new ArrayList<Integer>();

ArrayList<Integer> pengpeng = new ArrayList<Integer>();

ArrayList<Integer> meijuan = new ArrayList<Integer>();

ArrayList<Integer> luoluo = new ArrayList<Integer>();

//方法一

for(int n = 0; n < list.size();n++) {

Integer num = list.get(n);

if(n>=51) {

dipai.add(num);

}else if(n % 3 == 0) {

pengpeng.add(num);

}else if(n % 3 == 1) {

meijuan.add(num);

}else if(n % 3 == 2) {

luoluo.add(num);

}

}

 

//方法二

/*for(int n = 1; n <= 3;n++) {

dipai.add(list.remove(0));

}

while(true) {

if(!list.isEmpty()) {

pengpeng.add(list.remove(0));

}

if(!list.isEmpty()) {

meijuan.add(list.remove(0));

}

if(!list.isEmpty()) {

luoluo.add(list.remove(0));

}else {

break;

}

}*/

//发牌结束

 

 

//看牌

kanpai(dipai,map);

kanpai(pengpeng,map);

kanpai(meijuan,map);

kanpai(luoluo,map);

 

}

 

private static void kanpai(ArrayList<Integer> list, Map<Integer, String> map) {

Collections.sort(list);

StringBuilder sb = new StringBuilder();

sb.append("[");

for(Integer n : list) {

sb.append(map.get(n)).append(",");

}

System.out.println(sb.replace(sb.length()-1, sb.length(), "]"));

}

 

}

编写一个类Book,具有name,price,press,author

然后创建5个对象放入ArrayList中,并实现按照price大小排序,

然后遍历ArrayList输出每个Book对象, 使用toString 方法打印。

import java.util.ArrayList;

import java.util.Comparator;

 

/*编写一个类Book,具有name,price,press,author

然后创建5个对象放入ArrayList中,并实现按照price大小排序,

然后遍历ArrayList输出每个Book对象, 使用toString 方法打印。*/

public class TestBook {

 

public static void main(String[] args) {

Book b1 = new Book("活着1",26.00,"作家出版社1","余华1");

Book b2 = new Book("活着2",23.00,"作家出版社2","余华2");

Book b3 = new Book("活着3",29.00,"作家出版社3","余华3");

Book b4 = new Book("活着4",33.00,"作家出版社4","余华4");

Book b5 = new Book("活着5",18.00,"作家出版社5","余华5");

ArrayList<Book> list = new ArrayList<Book>();

list.add(b1);list.add(b2);

list.add(b3);list.add(b4);

list.add(b5);

list.sort(new Comparator<Book>() {

@Override

public int compare(Book o1, Book o2) {

// TODO Auto-generated method stub

return new Double(o1.price).compareTo(new Double(o2.price));

}

 

});

for(Book b : list) {

System.out.println(b);

}

 

}

 

}

 

class Book{

String name;

double price;

String press;

String author;

public Book(String name, double price, String press, String author) {

super();

this.name = name;

this.price = price;

this.press = press;

this.author = author;

}

@Override

public String toString() {

return "Book [name=" + name + ", price=" + price + ", press=" + press + ", author=" + author + "]";

}

 

}

 

HashSet去重:

已知 Student类  属性包括   int id,String name

 

创建 5个Student对象存入 List中

 

Student s1 = new Student(1,"aaa");

Student s2 = new Student(2,"bbb");

Student s3 = new Student(3,"ccc");

Student s4 = new Student(4,"ddd");

Student s5 = new Student(1,"aaa");

 

去掉重复元素:当Student的id和name值都相同时,任务是重复元素

 

import java.util.ArrayList;

import java.util.HashSet;

import java.util.List;

import java.util.Objects;

import java.util.Set;

 

/*已知 Student类  属性包括   int id,String name

 

创建 5个Student对象存入 List中

 

Student s1 = new Student(1,"aaa");

Student s2 = new Student(2,"bbb");

Student s3 = new Student(3,"ccc");

Student s4 = new Student(4,"ddd");

Student s5 = new Student(1,"aaa");

 

去掉重复元素:当Student的id和name值都相同时,任务是重复元素 */

public class TestStudent {

 

public static void main(String[] args) {

List<Student> list = new ArrayList<Student>();

Set<Student> set = new HashSet<Student>();

Student s1 = new Student(1,"aaa");

Student s2 = new Student(2,"bbb");

Student s3 = new Student(3,"ccc");

Student s4 = new Student(4,"ddd");

Student s5 = new Student(1,"aaa");

 

set.add(s1);set.add(s2);

set.add(s3);set.add(s4);

set.add(s5);

list.addAll(set);

for(Student s : list) {

System.out.println(s);

}

}

 

}

 

class Student{

int id;

String name;

public Student(int id, String name) {

super();

this.id = id;

this.name = name;

}

@Override

public String toString() {

return "Student [id=" + id + ", name=" + name + "]";

}

public int hashCode() {

return Objects.hash(id,name);

}

@Override

public boolean equals(Object obj) {

Student stu = (Student)obj;

return stu.name.equals(name)&&stu.id==id;

}

}

/*案例2:已知 List<String> list = new ArrayList<String>();

list.add("张三丰,北京");

list.add("李四丰,上海");

list.add("王二小,北京");

list.add("小明,河北");

list.add("小毛,北京");

list.add("王五,北京");   

要求:求出每个地区有多少人,都是谁?

 

例如: 北京 4人   张三丰 王二小 小毛 王五*/

 

import java.util.ArrayList;

import java.util.LinkedHashMap;

import java.util.List;

import java.util.Map;

import java.util.Map.Entry;

 

/*案例2:已知 List<String> list = new ArrayList<String>();

list.add("张三丰,北京");

list.add("李四丰,上海");

list.add("王二小,北京");

list.add("小明,河北");

list.add("小毛,北京");

list.add("王五,北京");   

要求:求出每个地区有多少人,都是谁?

 

例如: 北京 4人   张三丰 王二小 小毛 王五*/

public class TestArea {

 

public static void main(String[] args) {

List<String> list = new ArrayList<String>();

Map<String,String> map = new LinkedHashMap<String,String>();

list.add("张三丰,北京");

list.add("李四丰,上海");

list.add("王二小,北京");

list.add("小明,河北");

list.add("小毛,北京");

list.add("王五,北京");  

for(String s : list) {

String[] split = s.split(",");

String key = split[1];//地区

String value = split[0];//姓名

if(map.containsKey(key)) {//如果这个地区名出现过

map.put(key,map.get(key)+" "+value);//之前统计的名字,加上现在的这个名字

}else {

map.put(key, value);//没出现过,就存进去

}

 

}

 

for(Entry<String, String> entry : map.entrySet()) {

System.out.println(entry.getKey()+entry.getValue().split(" ").length+"人 " + entry.getValue());

}

 

}

 

}

键盘录入一个文件夹路径,作为源文件夹;键盘录入一个文件夹路径,作为目标文件夹

写代码将源文件夹拷贝到目标文件夹中

 

a

b

b/a

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.util.Scanner;

 

/*键盘录入一个文件夹路径,作为源文件夹;键盘录入一个文件夹路径,作为目标文件夹

写代码将源文件夹拷贝到目标文件夹中

 

a

b

b/a*/

public class TestCopy {

 

public static void main(String[] args) throws Exception {

File srcDir = inputDir();

File dir = inputDir();

File destDir = new File(dir,srcDir.getName());

destDir.mkdir();

copyDir(srcDir,destDir);

System.out.println("复制成功!");

 

}

 

private static void copyDir(File srcDir, File destDir) throws Exception {

File[] files = srcDir.listFiles();

for(File f : files) {

File srcFile = f;

File destFile = new File(destDir,f.getName());

if(f.isFile()) {

copyFile(srcFile,destFile);

}else {

destFile.mkdir();//一定要记得创建文件夹!!!

copyDir(srcFile,destFile);

}

}

 

}

 

private static void copyFile(File srcFile, File destFile) throws Exception {

BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile));

BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destFile));

byte[] b = new byte[1024];

int len = 0;

while((len=bis.read(b))!=-1) {

bos.write(b, 0, len);

}

bis.close();

bos.close();

}

 

private static File inputDir() {

File file;

boolean flag;

Scanner sc = new Scanner(System.in);

do {

flag = false;

System.out.println("请输入一个文件夹路径:");

String dir = sc.nextLine();

file = new File(dir);

if(!file.isDirectory()) {

System.out.println("您的录入有误,请重新录入!");

flag = true;

}

 

}while(flag);

return file;

}

 

}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值