1、制造 3个骰子,各自打乱顺序,摇三次,然后显示各自骰子的大小。
骰子类:
import java.util.ArrayList; import java.util.Collections; import java.util.List; public class ShaiZiThread extends Thread { private int num; @Override public void run() { // TODO Auto-generated method stub List list = new ArrayList(); for (int i = 1; i < 7; i++) { list.add(i); } Collections.shuffle(list); Collections.shuffle(list); Collections.shuffle(list); num =(int) list.get(0); } public int getNum() { return num; } public void setNum(int num) { this.num = num; } }测试类:
public class Test01 { public static void main(String[] args) throws Exception { // TODO Auto-generated method stub ShaiZiThread szt = new ShaiZiThread(); ShaiZiThread szt1 = new ShaiZiThread(); ShaiZiThread szt2 = new ShaiZiThread(); szt.start(); szt1.start(); szt2.start(); Thread.sleep(1000);//为了将3个骰子都摇完结束后再出结果。 int num = szt.getNum(); int num1 = szt1.getNum(); int num2 = szt2.getNum(); System.out.println("三个骰子 的 结果是: "+num+" , "+num1+" , "+num2); } }2、全国身份证号归属地查询。
要求:(提前将全国身份证号归属地查询文件下好。) 1.读出文件一行 2.判断 身份证前6位 保存 归属地 生成一个javabean 3.存入容器 4.键盘输入身份证号 截取前6位 容器中找 对应的归属地
身份证类:
public class ID { private String num; private String addr; public ID(String num, String addr) { super(); this.num = num; this.addr = addr; } public ID() { super(); } public String getNum() { return num; } public void setNum(String num) { this.num = num; } public String getAddr() { return addr; } public void setAddr(String addr) { this.addr = addr; } @Override public String toString() { return "ID [num=" + num + ", addr=" + addr + "]"; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((addr == null) ? 0 : addr.hashCode()); result = prime * result + ((num == null) ? 0 : num.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; ID other = (ID) obj; if (addr == null) { if (other.addr != null) return false; } else if (!addr.equals(other.addr)) return false; if (num == null) { if (other.num != null) return false; } else if (!num.equals(other.num)) return false; return true; } }测试类:
import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.util.HashSet; import java.util.Iterator; import java.util.Scanner; import java.util.Set; public class IDTest { public static void main(String[] args) throws Exception { // TODO Auto-generated method stub File file = new File("G:/yunke/全国身份证号归属地查询.txt"); FileReader fr= new FileReader(file); BufferedReader br = new BufferedReader(fr); String str = ""; String s1 = ""; String s2 = ""; Set<ID> s = new HashSet<>(); while((str=br.readLine())!=null) { // String [] sss=str.trim().split(" "); s1=str.substring(0, str.indexOf(" ")); s2=str.substring(str.indexOf(" ")+1); // if(sss[01].length()==6) // { // // ID i = new ID(sss[0], sss[1]); // s.add(i); // // } if(s1.length()==6) { ID i = new ID(s1, s2); s.add(i); } } br.close(); fr.close(); Scanner sc = new Scanner(System.in); System.out.println("输入省份证前6位"); String ss=sc.next(); String pre6=ss.substring(0, 6); for(Iterator<ID> it=s.iterator();it.hasNext();) { ID id = it.next(); if(pre6.equals(id.getNum())) { System.out.println("您的归属地是: "+id.getAddr()); break; } } // for(ID i :s) // { // if(ss.substring(0,6).equals(i.getNum())) // { // System.out.println("您的归属地是: "+i.getAddr()); // break; // } // } } }用//表示的是另外一种方法。
运行结果:
3、将上一道身份证题用Map集合来做,将身份证号做key,归属地做value。
import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.util.HashMap; import java.util.Scanner; import java.util.Set; public class MapID { public static void main(String[] args) throws Exception { // TODO Auto-generated method stub File file = new File("g:/yunke/全国身份证号归属地查询.txt"); BufferedReader br = new BufferedReader(new FileReader(file)); String str = ""; HashMap<String, String> hm = new HashMap<>(); while ((str = br.readLine()) != null) { String s[] = str.split(" "); String key = s[0].trim(); String value = s[1].trim(); if (key.length() == 6) hm.put(key, value); } Scanner sc = new Scanner(System.in); System.out.println("输入你的身份证:"); String ss = sc.next(); String pre6 = ss.substring(0, 6); if(hm.containsKey(pre6)) { System.out.println("您的归属地在: " + hm.get(pre6)); } // Set<String> set = hm.keySet(); // for (String key : set) { // // if (pre6.equals(key)) { // System.out.println("您的归属地在: " + hm.get(key)); // } // } } }4、遍历方式,代码演示一下:
import java.util.ArrayList; import java.util.Iterator; public class Bianli { public static void main(String[] args) { // TODO Auto-generated method stub ArrayList al = new ArrayList(); for (int i = 0; i < 10; i++) { al.add(i+""); } /* * 遍历 */ //1、get方法 // for (int i = 0; i < al.size(); i++) { // String str = (String) al.get(i); // System.out.println(str); // } //2、转换为数组 // Object o[] = al.toArray(); // for (int i = 0; i < o.length; i++) { // // String str= (String) o[i]; // System.out.println(str); // } //3、for-each for(Object o : al) { String str = (String) o; System.out.println(str); } //4、游标法 Iterator for(Iterator it = al.iterator();it.hasNext();) { Object o = it.next();//自动向下移动 String str = (String) o; System.out.println(str); } } }5、有10人,分别有: 名字、 性别、 年龄、 家庭住址。
年龄在 10~100 ,要求随机产生的10个数字
放入TreeSet
1.找出30~50之间的人的信息
2.找出 70以上的人的信息
人-类:
public class Person implements Comparable<Person>{ private String name; private String sex; private Integer age; private String addr; public Person(String name, String sex, int age, String addr) { super(); this.name = name; this.sex = sex; this.age = age; this.addr = addr; } public Person() { super(); } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getAddr() { return addr; } public void setAddr(String addr) { this.addr = addr; } @Override public String toString() { return "Person [name=" + name + ", sex=" + sex + ", age=" + age + ", addr=" + addr + "]"; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((addr == null) ? 0 : addr.hashCode()); result = prime * result + age; result = prime * result + ((name == null) ? 0 : name.hashCode()); result = prime * result + ((sex == null) ? 0 : sex.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Person other = (Person) obj; if (addr == null) { if (other.addr != null) return false; } else if (!addr.equals(other.addr)) return false; if (age != other.age) return false; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; if (sex == null) { if (other.sex != null) return false; } else if (!sex.equals(other.sex)) return false; return true; } @Override public int compareTo(Person p) { // TODO Auto-generated method stub return this.age.compareTo(p.age); } }测试类:
import java.util.Iterator; import java.util.Random; import java.util.TreeSet; public class PersonTest { public static void main(String[] args) { // TODO Auto-generated method stub Random r = new Random(); TreeSet<Person> ts = new TreeSet(); for (int i = 0; i < 10; i++) { int age=r.nextInt(89)+11; String name = "小明"+i; String sex = "男"; String addr="家属楼"+i+"号楼"; Person p = new Person(name, sex, age, addr); ts.add(p); } System.out.println(ts); TreeSet t = (TreeSet) ts.subSet(new Person("asd", "asd", 30, "asds"), true, new Person("asd", "asd", 50, "asds"), true); TreeSet t1 = (TreeSet) ts.tailSet(new Person("asd", "asd", 70, "asds"), true); System.out.println("30-50的人:"); for(Iterator it =t.iterator();it.hasNext();) { Person p = (Person) it.next(); System.out.println(p); } System.out.println("70以上的人:"); for(Iterator it =t1.iterator();it.hasNext();) { Person p = (Person) it.next(); System.out.println(p); } } }6、自定义一个类,例如Dog类,有狗的名字,类别,要求放入TreeSet当中,按照狗的名字排序,显示出来。
Dog类:
public class Dog implements Comparable<Dog>{ private String name; private String leibie; @Override public String toString() { return "Dog [name=" + name + ", leibie=" + leibie + "]"; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((leibie == null) ? 0 : leibie.hashCode()); result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Dog other = (Dog) obj; if (leibie == null) { if (other.leibie != null) return false; } else if (!leibie.equals(other.leibie)) return false; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; return true; } public Dog(String name, String leibie) { super(); this.name = name; this.leibie = leibie; } @Override public int compareTo(Dog o) { // TODO Auto-generated method stub return (this.name).compareTo(o.name); } }实现Comparable接口的同时,重写CompareTo方法来规定按照什么方式排序。
测试类:
import java.util.TreeSet; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub TreeSet al = new TreeSet(); Dog dog = new Dog("s", "阿拉斯加"); Dog dog1 = new Dog("a", "宾利"); Dog dog2 = new Dog("d", "牧羊犬"); Dog dog3 = new Dog("b", "藏獒"); Dog dog4 = new Dog("q", "狼狗"); al.add(dog); al.add(dog1); al.add(dog2); al.add(dog3); al.add(dog4); /* * 利用hashcode和equals方法来共同判断是不是同一个元素(不是同一个对象), * 没有写hashcode和equals方法的类将不能视为同一元素。系统类都有其方法。 */ System.out.println(al); } }运行结果:
7、5000个随机整数 ,存入 整数.txt , 取出来, 找到 最大值、 最小值、 升序排列。 之后 写入 排序.txt。
测试类:
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.util.Iterator; import java.util.Random; import java.util.TreeSet; public class ZhengShu { /* * 5000个整数 * */ public static void main(String[] args) throws Exception { // TODO Auto-generated method stub Random r = new Random(); File file = new File("G:/yunke/整数.txt"); BufferedWriter bw= new BufferedWriter(new FileWriter(file)); // int a[] = new int[5000]; for (int i = 0; i < 5000; i++) { // a[i]=r.nextInt(9999)+1; int temp = r.nextInt(9999)+1; bw.write(temp+""); bw.newLine(); bw.flush(); } BufferedReader br = new BufferedReader(new FileReader(new File("G:/yunke/整数.txt"))); String str = ""; TreeSet<Integer> ts = new TreeSet<>(); while((str=br.readLine())!=null) { int temp1 =Integer.valueOf(str.trim()); ts.add(temp1); } br.close(); // for (int i = 0; i < 5000; i++) { // bw.write(a[i]+" "); // ts.add(a[i]); // } // int min=(int) ts.first(); int max=(int) ts.last(); System.out.println(ts); System.out.println("最大值:"+max); System.out.println("最小值:"+min); File file1=new File("G:/yunke/排序.txt"); BufferedWriter bw1= new BufferedWriter(new FileWriter(file1)); for (Iterator it = ts.iterator(); it.hasNext();) { int i = (int) it.next(); bw1.write(i+" "); bw1.flush(); } bw.close(); bw1.close(); } }8、两个人吃火锅,要求锅内放入的菜不能多于10个,多了会溢出,但是吃的时候不能少于0个。菜就按数字1100代替。
吃类:
import java.util.LinkedList; public class ChiThread extends Thread { private LinkedList<Integer> ll; @Override public void run() { synchronized (ll) { while(true) { if(ll.size()<=0) { try { ll.wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } }else { ll.removeLast(); System.out.println(Thread.currentThread().getName()+" 我吃了一个菜"); ll.notify(); } } } } public ChiThread(LinkedList<Integer> ll) { super(); this.ll = ll; } }放类:
import java.util.LinkedList; public class FangThread extends Thread{ private LinkedList<Integer> ll; @Override public void run() { synchronized (ll) { while(true) { if(ll.size()>=10) { try { ll.wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } }else{ ll.addFirst(1100); System.out.println(Thread.currentThread().getName()+" 我加了个菜"); ll.notify(); } } } } public FangThread(LinkedList<Integer> ll) { super(); this.ll = ll; } }放满十个后将线程等待,所有权给另一个线程吃,吃完剩0后将线程再唤醒,开始添加。设置死循环测试。
测试类:
import java.util.LinkedList; public class HuoGuo { public static void main(String[] args) { // TODO Auto-generated method stub LinkedList<Integer> ll = new LinkedList<>(); FangThread ft = new FangThread(ll); ChiThread ct = new ChiThread(ll); ft.start(); ct.start(); } }