zoukankan      html  css  js  c++  java
  • 狄慧201771010104《面向对象程序设计(java)》第十一周学习总结

    实验十一   集合

    实验时间 2018-11-8

    1、实验目的与要求

    (1) 掌握VetorStackHashtable三个类的用途及常用API

    (2) 了解java集合框架体系组成;

    (3) 掌握ArrayListLinkList两个类的用途及常用API

    (4) 了解HashSet类、TreeSet类的用途及常用API

    (5)了解HashMapTreeMap两个类的用途及常用API

    (6) 结对编程(Pair programming练习,体验程序开发中的两人合作

    2、实验内容和步骤

    实验1 导入第9示例程序,测试程序并进行代码注释。

    测试程序1:

    使用JDK命令运行编辑、运行以下三个示例程序,结合运行结果理解程序;

    掌握VetorStackHashtable三个类的用途及常用API 

    //示例程序1

    import java.util.Vector;

    class Cat {

    private int catNumber;

    Cat(int i) {

    catNumber = i;

    }

    void print() {

    System.out.println("Cat #" + catNumber);

    }

    }

    class Dog {

    private int dogNumber;

    Dog(int i) {

    dogNumber = i;

    }

    void print() {

    System.out.println("Dog #" + dogNumber);

    }

    }

    public class CatsAndDogs {

    public static void main(String[] args) {

    Vector cats = new Vector();

    for (int i = 0; i < 7; i++)

    cats.addElement(new Cat(i));

    cats.addElement(new Dog(7));

    for (int i = 0; i < cats.size(); i++)

    ((Cat) cats.elementAt(i)).print();

    }

    }

    //示例程序2

    import java.util.*;

    public class Stacks {

    static String[] months = { "1", "2", "3", "4" };

    public static void main(String[] args) {

    Stack stk = new Stack();

    for (int i = 0; i < months.length; i++)

    stk.push(months[i]);

    System.out.println(stk);

    System.out.println("element 2=" + stk.elementAt(2));

    while (!stk.empty())

    System.out.println(stk.pop());

    }

    }

    //示例程序3

    import java.util.*;

    class Counter {

    int i = 1;

    public String toString() {

    return Integer.toString(i);

    }

    }

    public class Statistics {

    public static void main(String[] args) {

    Hashtable ht = new Hashtable();

    for (int i = 0; i < 10000; i++) {

    Integer r = new Integer((int) (Math.random() * 20));

    if (ht.containsKey(r))

    ((Counter) ht.get(r)).i++;

    else

    ht.put(r, new Counter());

    }

    System.out.println(ht);

    }

    }

    import java.util.Vector;//实现自动增长的对象数组

    class Cat {
        private int catNumber;

        Cat(int i) {
            catNumber = i;
        }

        void print() {
            System.out.println("Cat #" + catNumber);
        }
    }

    class Dog {
        private int dogNumber;

        Dog(int i) {
            dogNumber = i;
        }

        void print() {
            System.out.println("Dog #" + dogNumber);
        }
    }

    public class CatsAndDogs {
        public static void main(String[] args) {
            Vector cats = new Vector();
            for (int i = 0; i < 7; i++)
                cats.addElement(new Cat(i));
            cats.addElement(new Dog(7));
            for (int i = 0; i < cats.size(); i++)
                if (cats.elementAt(i) instanceof Cat) //判断是否能进行强制类型转换
                {
                    ((Cat) cats.elementAt(i)).print();//能进行强制类型转换,输出为Cat型
                } else {
                    ((Dog) cats.elementAt(i)).print();//不能进行强制类型转化,输出为Dog型
                }
        }
    }

    //示例程序2
    import java.util.*;
     
    public class Stacks {
        static String[] months = { "1", "2", "3", "4" };
     
        public static void main(String[] args) {
            Stack stk = new Stack();
            for (int i = 0; i < months.length; i++)
                stk.push(months[i]);//入栈
            System.out.println(stk);
            System.out.println("element 2=" + stk.elementAt(2));//因为class Stack<E> extends Vector<E>所以可以使用elementAt来定位
            while (!stk.empty())
                System.out.println(stk.pop());//判断如果栈不空,进行出栈操作(先进后出)
        }
    }

    //示例程序3
    import java.util.*;
     
    class Counter {
        int i = 1;
     
        public String toString() {
            return Integer.toString(i);
        }
    }
     
    public class Statistics {
        public static void main(String[] args) {
            Hashtable ht = new Hashtable();
            for (int i = 0; i < 10000; i++) {
                Integer r = new Integer((int) (Math.random() * 20));//r此时为键值范围(0~19)
                if (ht.containsKey(r))
                    ((Counter) ht.get(r)).i++;//得到相应的value
                else
                    ht.put(r, new Counter());//如果键值不同则重新创建
            }
            System.out.println(ht);
        }
    }

    测试程序2

    使用JDK命令编辑运行ArrayListDemoLinkedListDemo两个程序,结合程序运行结果理解程序;

    import java.util.*;

    public class ArrayListDemo {

    public static void main(String[] argv) {

    ArrayList al = new ArrayList();

    // Add lots of elements to the ArrayList...

    al.add(new Integer(11));

    al.add(new Integer(12));

    al.add(new Integer(13));

    al.add(new String("hello"));

    // First print them out using a for loop.

    System.out.println("Retrieving by index:");

    for (int i = 0; i < al.size(); i++) {

    System.out.println("Element " + i + " = " + al.get(i));

    }

    }

    }

    import java.util.*;

    public class LinkedListDemo {

        public static void main(String[] argv) {

            LinkedList l = new LinkedList();

            l.add(new Object());

            l.add("Hello");

            l.add("zhangsan");

            ListIterator li = l.listIterator(0);

            while (li.hasNext())

                System.out.println(li.next());

            if (l.indexOf("Hello") < 0)   

                System.err.println("Lookup does not work");

            else

                System.err.println("Lookup works");

       }

    }

    Elipse环境下编辑运行调试教材360页程序9-1,结合程序运行结果理解程序;

    掌握ArrayListLinkList两个类的用途及常用API

    import java.util.*;
     
    public class ArrayListDemo {
        public static void main(String[] argv) {
            ArrayList al = new ArrayList();
             
            al.add(new Integer(11));
            al.add(new Integer(12));
            al.add(new Integer(13));
            al.add(new String("hello"));
            //包装类即使把基本类型变成对象类型  像ArrayList这样的集合是不能储存基本类型的只能储存对象 为了方便这些集合的使用所以才有了把基本类型包装成对象类型
            System.out.println("Retrieving by index:");
            for (int i = 0; i < al.size(); i++)
            {
                System.out.println("Element " + i + " = " + al.get(i));
            }
        }
    }
    import java.util.*;
    public class LinkedListDemo {
        public static void main(String[] argv) {
            LinkedList l = new LinkedList();
            l.add(new Object());
            l.add("Hello");
            l.add("zhangsan");
            ListIterator li = l.listIterator(0);//ListIterator<E> extends Iterator<E>迭代器
            while (li.hasNext())
                System.out.println(li.next());
            if (l.indexOf("Hello") < 0)   
                System.err.println("Lookup does not work");
            else
                System.err.println("Lookup works");
       }
    }

    测试程序3

    运行SetDemo程序,结合运行结果理解程序;

    import java.util.*;

    public class SetDemo {

        public static void main(String[] argv) {

            HashSet h = new HashSet(); //也可以 Set h=new HashSet()

            h.add("One");

            h.add("Two");

            h.add("One"); // DUPLICATE

            h.add("Three");

            Iterator it = h.iterator();

            while (it.hasNext()) {

                 System.out.println(it.next());

            }

        }

    }

    Elipse环境下调试教材365页程序9-2,结合运行结果理解程序;了解HashSet类的用途及常用API

    Elipse环境下调试教材367-368程序9-39-4,结合程序运行结果理解程序;了解TreeSet类的用途及常用API

    import java.util.HashSet;
    import java.util.Iterator;
    public class SetDemo {
        public static void main(String[] argv) {
            HashSet h = new HashSet(); //也可以 Set h=new HashSet(),Hashset实现了Set接口
            h.add("One");
            h.add("Two");
            h.add("Four"); 
            h.add("Three");
            Iterator it = h.iterator();
            while (it.hasNext()) //hasnext检查是否还有元素进行遍历
            {
                 System.out.println(it.next());
            }
        }
    }

    package treeSet;
     
    import java.util.*;
     
    /**
     * An item with a description and a part number.
     */
    public class Item implements Comparable<Item>//实现比较接口
    {
       private String description;
       private int partNumber;
     
       /**
        * Constructs an item.
        * 
        * @param aDescription
        *           the item's description
        * @param aPartNumber
        *           the item's part number
        */
       public Item(String aDescription, int aPartNumber)
       {
          description = aDescription;
          partNumber = aPartNumber;
       }
     
       /**
        * Gets the description of this item.
        * 
        * @return the description
        */
       public String getDescription()
       {
          return description;
       }
     
       public String toString()
       {
          return "[description=" + description + ", partNumber=" + partNumber + "]";
       }
     
       public boolean equals(Object otherObject)
       {
          if (this == otherObject) return true;
          if (otherObject == null) return false;
          if (getClass() != otherObject.getClass()) return false;
          Item other = (Item) otherObject;
          return Objects.equals(description, other.description) && partNumber == other.partNumber;
       }
     
       public int hashCode()
       {
          return Objects.hash(description, partNumber);
       }
     
       public int compareTo(Item other)
       {
          int diff = Integer.compare(partNumber, other.partNumber);
          return diff != 0 ? diff : description.compareTo(other.description);
       }
    }
    package treeSet;
     
    import java.util.*;
     
    /**
     * This program sorts a set of item by comparing their descriptions.
     * @version 1.12 2015-06-21
     * @author Cay Horstmann
     */
    public class TreeSetTest
    {
       public static void main(String[] args)
       {
          SortedSet<Item> parts = new TreeSet<>();
          parts.add(new Item("Toaster", 1234));
          parts.add(new Item("Widget", 4562));
          parts.add(new Item("Modem", 9912));
          System.out.println(parts);
     
          NavigableSet<Item> sortByDescription = new TreeSet<>(
                Comparator.comparing(Item::getDescription));//吧自定义类对象放到Treeset排序
     
          sortByDescription.addAll(parts);
          System.out.println(sortByDescription);
       }
    }

    测试程序4

    使用JDK命令运行HashMapDemo程序,结合程序运行结果理解程序;

    import java.util.*;

    public class HashMapDemo {

       public static void main(String[] argv) {

          HashMap h = new HashMap();

          // The hash maps from company name to address.

          h.put("Adobe", "Mountain View, CA");

          h.put("IBM", "White Plains, NY");

          h.put("Sun", "Mountain View, CA");

          String queryString = "Adobe";

          String resultString = (String)h.get(queryString);

          System.out.println("They are located in: " +  resultString);

      }

    }

    import java.util.*;
    public class HashMapDemo {
       public static void main(String[] argv) {
          HashMap h = new HashMap();
          
          h.put("Adobe", "Mountain View, CA");
          h.put("IBM", "White Plains, NY");
          h.put("Sun", "Mountain View, CA");
          String queryString = "IBM";
          String resultString = (String) h.get(queryString);//get用来获得value值(以键值为参数)
          System.out.println("They are located in: " +  resultString);
       }
    }

    Elipse环境下调试教材373页程序9-6,结合程序运行结果理解程序;

    了解HashMapTreeMap两个类的用途及常用API

    package map;
     
    import java.util.*;
     
    /**
     * This program demonstrates the use of a map with key type String and value type Employee.
     * @version 1.12 2015-06-21
     * @author Cay Horstmann
     */
    public class MapTest
    {
       public static void main(String[] args)
       {
          Map<String, Employee> staff = new HashMap<>();
          staff.put("144-25-5464", new Employee("Amy Lee"));
          staff.put("567-24-2546", new Employee("Harry Hacker"));
          staff.put("157-62-7935", new Employee("Gary Cooper"));
          staff.put("456-62-5527", new Employee("Francesca Cruz"));
     
          // 打印所有条目
          System.out.println(staff);
     
          // 删除一个项目
     
          staff.remove("567-24-2546");
     
          // replace an entry
     
          staff.put("456-62-5527", new Employee("Francesca Miller"));
     
          // 浏览一个值
     
          System.out.println(staff.get("157-62-7935"));
     
          // 迭代遍历
     
          staff.forEach((k, v) -> 
             System.out.println("key=" + k + ", value=" + v));
       }
    }

    实验2:结对编程练习:

    关于结对编程:以下图片是一个结对编程场景:两位学习伙伴坐在一起,面对着同一台显示器,使用着同一键盘,同一个鼠标,他们一起思考问题,一起分析问题,一起编写程序。

     

    关于结对编程的阐述可参见以下链接:

    http://www.cnblogs.com/xinz/archive/2011/08/07/2130332.html

    http://en.wikipedia.org/wiki/Pair_programming

    对于结对编程中代码设计规范的要求参考

    http://www.cnblogs.com/xinz/archive/2011/11/20/2255971.html

     

    以下实验,就让我们来体验一下结对编程的魅力。

    确定本次实验结对编程合作伙伴;李瑞红

    各自运行合作伙伴实验九编程练习1,结合使用体验对所运行程序提出完善建议;

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Scanner;
    import java.util.Collections;//对集合进行排序、查找、修改等;
    
    public class Test {
        private static ArrayList<Citizen> citizenlist;
    
        public static void main(String[] args) {
            citizenlist = new ArrayList<>();
            Scanner scanner = new Scanner(System.in);
            File file = new File("E:/java/身份证号.txt");
            //异常捕获
            try {
                FileInputStream fis = new FileInputStream(file);
                BufferedReader in = new BufferedReader(new InputStreamReader(fis));
                String temp = null;
                while ((temp = in.readLine()) != null) {
    
                    Scanner linescanner = new Scanner(temp);
    
                    linescanner.useDelimiter(" ");
                    String name = linescanner.next();
                    String id = linescanner.next();
                    String sex = linescanner.next();
                    String age = linescanner.next();
                    String birthplace = linescanner.nextLine();
                    Citizen citizen = new Citizen();
                    citizen.setName(name);
                    citizen.setId(id);
                    citizen.setSex(sex);
                    // 将字符串转换成10进制数
                    int ag = Integer.parseInt(age);
                    citizen.setage(ag);
                    citizen.setBirthplace(birthplace);
                    citizenlist.add(citizen);
    
                }
            } catch (FileNotFoundException e) {
                System.out.println("信息文件找不到");
                e.printStackTrace();
            } catch (IOException e) {
                System.out.println("信息文件读取错误");
                e.printStackTrace();
            }
            boolean isTrue = true;
            while (isTrue) {
    
                System.out.println("1.按姓名字典序输出人员信息");
                System.out.println("2.查询最大年龄的人员信息、查询最小年龄人员信息");
                System.out.println("3.查询人员中是否查询人员中是否有你的同乡");
                System.out.println("4.输入你的年龄,查询文件中年龄与你最近人的姓名、身份证号、年龄、性别和出生地");
                System.out.println("5.退出");
                int nextInt = scanner.nextInt();
                switch (nextInt) {
                case 1:
                    Collections.sort(citizenlist);
                    System.out.println(citizenlist.toString());
                    break;
                case 2:
                    int max = 0, min = 100;
                    int m, k1 = 0, k2 = 0;
                    for (int i = 1; i < citizenlist.size(); i++) {
                        m = citizenlist.get(i).getage();
                        if (m > max) {
                            max = m;
                            k1 = i;
                        }
                        if (m < min) {
                            min = m;
                            k2 = i;
                        }
                    }
                    System.out.println("年龄最大:" + citizenlist.get(k1));
                    System.out.println("年龄最小:" + citizenlist.get(k2));
                    break;
                case 3:
                    System.out.println("出生地:");
                    String find = scanner.next();
                    String place = find.substring(0, 3);
                    for (int i = 0; i < citizenlist.size(); i++) {
                        if (citizenlist.get(i).getBirthplace().substring(1, 4).equals(place))
                            System.out.println("出生地" + citizenlist.get(i));
                    }
                    break;
                case 4:
                    System.out.println("年龄:");
                    int yourage = scanner.nextInt();
                    int near = peer(yourage);
                    int j = yourage - citizenlist.get(near).getage();
                    System.out.println("" + citizenlist.get(near));
                    break;
                case 5:
                    isTrue = false;
                    System.out.println("程序已退出!");
                    break;
                default:
                    System.out.println("输入有误");
                }
            }
        }
    
        public static int peer(int age) {
            int flag = 0;
            int min = 53, j = 0;
            for (int i = 0; i < citizenlist.size(); i++) {
                j = citizenlist.get(i).getage() - age;
                if (j < 0)
                    j = -j;
                if (j < min) {
                    min = j;
                    flag = i;
                }
            }
            return flag;
        }
    }
    public class Citizen implements Comparable<Citizen> {
    
        private String name;
        private String id;
        private String sex;
        private int age;
        private String birthplace;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
        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 getBirthplace() {
            return birthplace;
        }
    
        public void setBirthplace(String birthplace) {
            this.birthplace = birthplace;
        }
    
        public int compareTo(Citizen other) {
            return this.name.compareTo(other.getName());
        }
    
        public String toString() {
            return name + "	" + sex + "	" + age + "	" + id + "	" + birthplace + "
    ";
        }
    }

    各自运行合作伙伴实验十编程练习2,结合使用体验对所运行程序提出完善建议;

    import java.io.FileNotFoundException;
    import java.io.PrintWriter;
    import java.util.Scanner;
    
    /*
     * 该程序用来随机生成0到100以内的加减乘除题
     */
    public class Demo {
        public static void main(String[] args) {
            // 用户的答案要从键盘输入,因此需要一个键盘输入流
            Scanner in = new Scanner(System.in);
            Counter counter = new Counter();
            PrintWriter out = null;
            try {
                out = new PrintWriter("text.txt");
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            // 定义一个变量用来统计得分
            int sum = 0;
            int k = 0;
            // 通过循环生成10道题
            for (int i = 0; i < 10; i++) {
    
                // 随机生成两个100以内的随机数作加减乘除
                int a = (int) Math.round(Math.random() * 100);
                int b = (int) Math.round(Math.random() * 100);
                int d = (int) Math.round(Math.random() * 3);
    
                switch (d) {
    
                case 0:
                    if (a % b == 0) {
                        System.out.println(a + "/" + b + "=");
                        break;
                    }
                     int c = in.nextInt();
                     out.println(a + "/" + b + "="+c);
                case 1:
                    System.out.println(a + "*" + b + "=");
                     int c1 = in.nextInt();
                     out.println(a + "*" + b + "="+c1);
                    break;
                case 2:
                    System.out.println(a + "+" + b + "=");
                     int c2 = in.nextInt();
                     out.println(a + "+" + b + "="+c2);
                    break;
                case 3:
                    if (a > b) {
                        System.out.println(a + "-" + b + "=");
                        break;
                    }
                     int c3 = in.nextInt();
                   out.println(a + "-" + b + "="+c3);
    
                }
    
                // 定义一个整数用来接收用户输入的答案
                double c = in.nextDouble();
    
                // 判断用户输入的答案是否正确,正确给10分,错误不给分
                if (c == a / b | c == a * b | c == a + b | c == a - b) {
                    sum += 10;
                    System.out.println("恭喜答案正确");
                } else {
                    System.out.println("抱歉,答案错误");
    
                }
                out.println(a + "/" + b + "=" + c);
                out.println(a + "*" + b + "=" + c);
                out.println(a + "+" + b + "=" + c);
                out.println(a + "-" + b + "=" + c);
    
            }
            // 输出用户的成绩
            System.out.println("你的得分为" + sum);
    
            out.println("成绩:" + sum);
            out.close();
        }
    }
    public class Counter {
        private int a;
        private int b;
    
        public int add(int a, int b) {
            return a + b;
        }
    
        public int reduce(int a, int b) {
            return a - b;
        }
    
        public int multiplication(int a, int b) {
            return a * b;
        }
    
        public int division(int a, int b) {
            if (b != 0)
                return a / b;
            else
                return 0;
        }
    
    }

     

    采用结对编程方式,与学习伙伴合作完成实验九编程练习1;

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Collections;
    import java.util.Scanner;
    
    
    public class A{
        private static ArrayList<Test> studentlist;
        public static void main(String[] args) {
            studentlist = new ArrayList<>();
            Scanner scanner = new Scanner(System.in);
            File file = new File("D:\身份证号.txt");
            try {
                FileInputStream fis = new FileInputStream(file);
                BufferedReader in = new BufferedReader(new InputStreamReader(fis));
                String temp = null;
                while ((temp = in.readLine()) != null) {
                    
                    Scanner linescanner = new Scanner(temp);
                    
                    linescanner.useDelimiter(" ");    
                    String name = linescanner.next();
                    String number = linescanner.next();
                    String sex = linescanner.next();
                    String age = linescanner.next();
                    String province =linescanner.nextLine();
                    Test student = new Test();
                    student.setName(name);
                    student.setnumber(number);
                    student.setsex(sex);
                    int a = Integer.parseInt(age);
                    student.setage(a);
                    student.setprovince(province);
                    studentlist.add(student);
    
                }
            } catch (FileNotFoundException e) {
                System.out.println("学生信息文件找不到");
                e.printStackTrace();
            } catch (IOException e) {
                System.out.println("学生信息文件读取错误");
                e.printStackTrace();
            }
            boolean isTrue = true;
            while (isTrue) {
               
                System.out.println("1:字典排序");
                System.out.println("2:输出年龄最大和年龄最小的人");
                System.out.println("3:寻找老乡");
                System.out.println("4:寻找年龄相近的人");
                System.out.println("5:退出");
                String m = scanner.next();
                switch (m) {
                case "1":
                    Collections.sort(studentlist);              
                    System.out.println(studentlist.toString());
                    break;
                case "2":
                     int max=0,min=100;
                     int j,k1 = 0,k2=0;
                     for(int i=1;i<studentlist.size();i++)
                     {
                         j=studentlist.get(i).getage();
                     if(j>max)
                     {
                         max=j; 
                         k1=i;
                     }
                     if(j<min)
                     {
                       min=j; 
                       k2=i;
                     }
                     
                     }  
                     System.out.println("年龄最大:"+studentlist.get(k1));
                     System.out.println("年龄最小:"+studentlist.get(k2));
                    break;
                case "3":
                     System.out.println("province?");
                     String find = scanner.next();        
                     String place=find.substring(0,3);
                     for (int i = 0; i <studentlist.size(); i++) 
                     {
                         if(studentlist.get(i).getprovince().substring(1,4).equals(place)) 
                             System.out.println("province"+studentlist.get(i));
                     }             
                     break;
                     
                case "4":
                    System.out.println("年龄:");
                    int yourage = scanner.nextInt();
                    int near=agematched(yourage);
                    int value=yourage-studentlist.get(near).getage();
                    System.out.println(""+studentlist.get(near));
                    break;
                case "5":
                    isTrue = false;
                    System.out.println("退出程序!");
                    break;
                    default:
                    System.out.println("输入有误");
    
                }
            }
        }
            public static int agematched(int age) {      
            int j=0,min=53,value=0,k=0;
             for (int i = 0; i < studentlist.size(); i++)
             {
                 value=studentlist.get(i).getage()-age;
                 if(value<0) value=-value; 
                 if (value<min) 
                 {
                    min=value;
                    k=i;
                 } 
              }    
             return k;         
          }
    
    }
    public  class Test implements Comparable<Test> {
    
        private String name;
        private String number ;
        private String sex ;
        private int age;
        private String province;
       
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getnumber() {
            return number;
        }
        public void setnumber(String number) {
            this.number = number;
        }
        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 getprovince() {
            return province;
        }
        public void setprovince(String province) {
            this.province=province ;
        }
    
        public int compareTo(Test o) {
           return this.name.compareTo(o.getName());
        }
    
        public String toString() {
            return  name+"	"+sex+"	"+age+"	"+number+"	"+province+"
    ";
        }
        
    }

    采用结对编程方式,与学习伙伴合作完成实验十编程练习2。

    package fghjg;
    import java.util.Random;
    import java.util.Scanner;
    
    import java.io.FileNotFoundException;
    
    import java.io.PrintWriter;
    
    public class Main{
        public static void main(String[] args)
        {
            
            yunsuan counter=new yunsuan();//与其它类建立联系
        PrintWriter out=null;
        try {
            out=new PrintWriter("D:/text.txt");//将文件里的内容读入到D盘名叫text的文件中
             
        }catch(FileNotFoundException e) {
            System.out.println("文件找不到");
            e.printStackTrace();
        }
        
        
        int sum=0;
    
        for(int i=0;i<10;i++)
        {
        int a=new Random().nextInt(100);
        int b=new Random().nextInt(100);
        Scanner in=new Scanner(System.in);
        //in.close();
        
        switch((int)(Math.random()*4))
        
        {
        
        case 0:
            System.out.println( ""+a+"+"+b+"=");
            
            int c1 = in.nextInt();
            out.println(a+"+"+b+"="+c1);
            if (c1 == counter.plus(a, b)) {
                sum += 10;
                System.out.println("答案正确");
            }
            else {
                System.out.println("答案错误");
            }
            
            break ;
        case 1:
            if(a<b)
                            {
                                     int temp=a;
                                     a=b;
                                     b=temp;
                                 }//为避免减数比被减数大的情况
    
             System.out.println(""+a+"-"+b+"=");
             /*while((a-b)<0)
             {  
                 b = (int) Math.round(Math.random() * 100);
                 
             }*/
            int c2 = in.nextInt();
            
            out.println(a+"-"+b+"="+c2);
            if (c2 == counter.minus(a, b)) {
                sum += 10;
                System.out.println("答案正确");
            }
            else {
                System.out.println("答案错误");
            }
             
            break ;
        
          
    
        
        case 2:
            
             System.out.println(""+a+"*"+b+"=");
            int c = in.nextInt();
            out.println(a+"*"+b+"="+c);
            if (c == counter.multiply(a, b)) {
                sum += 10;
                System.out.println("答案正确");
            }
            else {
                System.out.println("答案错误");
            }
            break;
        case 3:
            
            
             
            while(b==0)
            {  b = (int) Math.round(Math.random() * 100);//满足分母不为0
            }
            while(a%b!=0)
            {
                  a = (int) Math.round(Math.random() * 100);
                  b = (int) Math.round(Math.random() * 100);
            }
            System.out.println(""+a+"/"+b+"=");
         int c0= in.nextInt();
        
         out.println(a+"/"+b+"="+c0);
         if (c0 == counter.divide(a, b)) {
             sum += 10;
             System.out.println("答案正确");
         }
         else {
             System.out.println("答案错误");
         }
        
         break;
         
    
        }
        }
        System.out.println("totlescore:"+sum);
        out.println(sum);
        
        out.close();
        }
        }
    package fghjg;
    public class yunsuan <T>{
        private T a;
        private T b;
        public void yunsaun()
        {
            a=null;
            b=null;
        }
        public void yunsuan(T a,T b)
        {
            this.a=a;
            this.b=b;
        }
       public int plus(int a,int b)
       {
           return a+b;
           
       }
       public int minus(int a,int b)
       {
        return a-b;
           
       }
       public int multiply(int a,int b)
       {
           return a*b;
       }
       public int divide(int a,int b)
       {
           if(b!=0  && a%b==0)
           return a/b;
           else
               return 0;
       }
       }

    实验总结:

           通过本周学习,我复习了一些有关数据结构的知识,另外初步了解了java集合类,也了解了Vector类,Stack类以及Hashtable类。除此以外,本次实验第一次采用结对编程的方法,我通过和合作伙伴互相运行程序,相互讨论交流,从中学到了很多东西。也希望以后多采取这种方法,在合作中互相学习进步。

  • 相关阅读:
    RE
    【LeetCode】198. House Robber
    【LeetCode】053. Maximum Subarray
    【LeetCode】152. Maximum Product Subarray
    【LeetCode】238.Product of Array Except Self
    【LeetCode】042 Trapping Rain Water
    【LeetCode】011 Container With Most Water
    【LeetCode】004. Median of Two Sorted Arrays
    【LeetCode】454 4Sum II
    【LeetCode】259 3Sum Smaller
  • 原文地址:https://www.cnblogs.com/dhlll/p/9942459.html
Copyright © 2011-2022 走看看