王艳 201771010127《面向对象程序设计(java)》第十一周学习总结
阅读原文时间:2023年07月10日阅读:2

一:理论部分。

1.数据结构:分为a.线性数据结构,如线性表、栈、队列、串、数组和文件。

b.非线性数据结构,如树和图。

1)所有数据元素在同一个线性表中必须是相同的数据类型。

线性表按其存储结构可分为顺序表和链表。

2)栈:也是一种特殊的线性表,是一种后进先出(LIFO)的结构。

栈是限定仅在表尾进行插入和删除运算的线性表,表尾称为栈顶,表头称为栈底。

3)队列:限定所有的插入只能在表的一端进行,而所有的删除都在表的另一端进行的线性表。是一种先进先出(FIFO)的结构。

表中允许插入的一端称为队尾,允许删除的一端称为队头。

2.集合:(容器)是一种包含多个元素并提供对所包含元素操作方法的类,其包含的元素可以由同一类型的对象组成,也可以由不同类型的对象组成。

1)集合框架:JAVA集合类库的统一架构。

2)集合类的作用(包含在java.util包中):提供一些基本数据结构的支持,如Vector、Hashtable、Stack等。

3)集合类的特点:a.只容纳对象;

b.集合类容纳的对象都是Object类的实例(一旦把一个对象置入集合类中,它的类信息将丢失)

4)Vector类:类似长度可变的数组。它只能存放对象,其元素通过下标进行访问。

5)Stack类(Vector的子类):它描述堆栈数据结构。(所有对象都有一个散列码,可以通过Object类的hashCode方法获得。)

3.集合框架中的基本接口:a.Collection(构造类集框架的基础):集合层次中的根接口,JDK未提供这个接口的直接实现类。

b.Set:不能包含重复的元素,即元素必须唯一。对象可能不是按存放的次序存放。(实 现 Set 接口的类有HashSet,TreeSet)

c.List:有序的集合,可以包含重复的元素。提供了按索引访问的方式。实现它的类有ArrayList和LinkedLis(如ArrayList:能够自动增长容量的数组)

d.Map:Map接口映射唯一关键字到值。包含了key-value对。Map不能包含重复的key。SortedMap是一个按照升序排列key的Map。

二:实验部分。

1、实验目的与要求

(1) 掌握Vetor、Stack、Hashtable三个类的用途及常用API;

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

(3) 掌握ArrayList、LinkList两个类的用途及常用API。

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

(5)了解HashMap、TreeMap两个类的用途及常用API;

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

2、实验内容和步骤

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

测试程序1:

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

l 掌握Vetor、Stack、Hashtable三个类的用途及常用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 = ; i < ; i++)
cats.addElement(new Cat(i));
cats.addElement(new Dog());
for (int i = ; i < cats.size(); i++)
((Cat) cats.elementAt(i)).print();//进行强制类型转化
}
}

程序运行结果如下:

由程序运行结果可知,程序在强制转换类型时出现异常,更改后程序如下:

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 = ; i < ; i++)
cats.addElement(new Cat(i));
cats.addElement(new Dog());
for (int i = ; 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 = { "", "", "", "" };

public static void main(String\[\] args) {  
    Stack stk = new Stack();  
    for (int i = ; i < months.length; i++)  
        stk.push(months\[i\]);//进栈  
    System.out.println(stk);  
    System.out.println("element 2=" + stk.elementAt());  
    while (!stk.empty())  
        System.out.println(stk.pop());//输出出栈元素  
}  

}

程序运行结果如下:

示例程序3:

import java.util.*;

class Counter {
int i = ;//不加权限修饰符:friendly型

public String toString() //把其他类型的数据转为字符串类型的数据  
{  
    return Integer.toString(i);  
}  

}

public class Statistics {
public static void main(String[] args) {
Hashtable ht = new Hashtable();
for (int i = ; i < ; i++) {
Integer r = new Integer((int) (Math.random() * ));//生成0到20(不包括20)的整型随机数
if (ht.containsKey(r))//判断r是否是哈希表中一个元素的键值
((Counter) ht.get(r)).i++;//通过get方法获得其值
else
ht.put(r, new Counter());//ht不存在
}
System.out.println(ht);
}
}

程序运行结果如下:

测试程序2:

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

ArrayListDemo:

import java.util.*;

public class ArrayListDemo//ArrayList使用了数组的实现
{
public static void main(String[] argv) {
ArrayList al = new ArrayList();
//在ArrayList中添加大量元素
al.add(new Integer());
al.add(new Integer());
al.add(new Integer());
al.add(new String("hello"));//下标从0开始,添加4个元素
// First print them out using a for loop.
System.out.println("Retrieving by index:");
for (int i = ; i < al.size(); i++) {
System.out.println("Element " + i + " = " + al.get(i));
}
}
}

程序运行结果如下:

LinkedListDemo:

程序运行结果如下:

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

l 掌握ArrayList、LinkList两个类的用途及常用API。

程序如下:

import java.util.*;

/**
* This program demonstrates operations on linked lists.
* @version 1.11 2012-01-26
* @author Cay Horstmann
*/
public class LinkedListTest
{
public static void main(String[] args)
{
//创建a和b两个链表
List a = new LinkedList<>();//泛型
a.add("Amy");
a.add("Carl");
a.add("Erica");

  List<String> b = new LinkedList<>();//泛型  
  b.add("Bob");  
  b.add("Doug");  
  b.add("Frances");  
  b.add("Gloria");

  //合并a和b中的词

  ListIterator<String> aIter = a.listIterator();  
  Iterator<String> bIter = b.iterator();

  while (bIter.hasNext())  
  {  
     if (aIter.hasNext()) aIter.next();  
     aIter.add(bIter.next());  
  }

  System.out.println(a);

  //从第二个链表中每隔一个元素删除一个元素

  bIter = b.iterator();  
  while (bIter.hasNext())  
  {  
     bIter.next(); // skip one element  
     if (bIter.hasNext())  
     {  
        bIter.next(); // skip next element  
        bIter.remove(); // remove that element  
     }  
  }

  System.out.println(b);

  // bulk operation: remove all words in b from a

  a.removeAll(b);

  System.out.println(a);//通过AbstractCollection类中的toString方法打印出链表a中的所有元素  

}
}

程序运行结果如下:

测试程序3:

l 运行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"); // 复制
h.add("Three");
Iterator it = h.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}
}

程序运行结果如下:

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

9—3:

import java.util.*;

/**
* An item with a description and a part number.
*/
public class Item implements Comparable//接口(泛型)
{
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 != ? diff : description.compareTo(other.description);
}
}

程序运行结果如下:

9—4:

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 parts = new TreeSet<>();
parts.add(new Item("Toaster", ));
parts.add(new Item("Widget", ));
parts.add(new Item("Modem", ));
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 //基于哈希表的 Map接口的实现,提供所有可选的映射操作
{
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 = "Adobe";
String resultString = (String)h.get(queryString);
System.out.println("They are located in: " + resultString);
}
}

程序运行结果:

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

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

程序如下:

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//Map在有映射关系时,可以优先考虑
{
public static void main(String[] args)
{
Map 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");

  // 替换一个条目

  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.Collections;
import java.util.Scanner;

public class Test{

  private static ArrayList<Person> Personlist1;  
   public static void main(String\[\] args) {

      Personlist1 = new ArrayList<>();

      Scanner scanner = new Scanner(System.in);  
      File file = new File("C:\\\\Users\\\\lenovo\\\\Documents\\\\身份证");

            try {  
                 FileInputStream F = new FileInputStream(file);  
                 BufferedReader in = new BufferedReader(new InputStreamReader(F));  
                 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 place =linescanner.nextLine();  
                    Person Person = new Person();  
                    Person.setname(name);  
                    Person.setid(id);  
                    Person.setsex(sex);  
                    int a = Integer.parseInt(age);  
                    Person.setage(a);  
                    Person.setbirthplace(place);  
                    Personlist1.add(Person);

                }  
            } 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.输入你的年龄,查询身份证号.txt中年龄与你最近人的姓名、身份证号、年龄、性别和出生地");  
                System.out.println("4:按省份找你的同乡;");  
                System.out.println("5:退出");  
                int type = scanner.nextInt();  
                switch (type) {  
                case :  
                    Collections.sort(Personlist1);  
                    System.out.println(Personlist1.toString());  
                    break;  
                case :

                    int max=,min=;int j,k1 = ,k2=;  
                    for(int i=;i<Personlist1.size();i++)  
                    {  
                        j=Personlist1.get(i).getage();  
                       if(j>max)  
                       {  
                           max=j;  
                           k1=i;  
                       }  
                       if(j<min)  
                       {  
                           min=j;  
                           k2=i;  
                       }

                    }  
                    System.out.println("年龄最大:"+Personlist1.get(k1));  
                    System.out.println("年龄最小:"+Personlist1.get(k2));  
                    break;  
                case :  
                    System.out.println("place?");  
                    String find = scanner.next();  
                    String place=find.substring(,);  
                    String place2=find.substring(,);  
                    for (int i = ; i <Personlist1.size(); i++)  
                    {  
                        if(Personlist1.get(i).getbirthplace().substring(,).equals(place))  
                        {  
                            System.out.println("你的同乡:"+Personlist1.get(i));  
                        }  
                    } 

                    break;  
                case :  
                    System.out.println("年龄:");  
                    int yourage = scanner.nextInt();  
                    int close=ageclose(yourage);  
                    int d\_value=yourage-Personlist1.get(close).getage();  
                    System.out.println(""+Personlist1.get(close));

                    break;  
                case :  
               isTrue = false;  
               System.out.println("再见!");  
                    break;  
                default:  
                    System.out.println("输入有误");  
                }  
            }  
        }  
        public static int ageclose(int age) {  
               int m=;  
            int    max=;  
            int d\_value=;  
            int k=;  
            for (int i = ; i < Personlist1.size(); i++)  
            {  
                d\_value=Personlist1.get(i).getage()-age;  
                if(d\_value<) d\_value=-d\_value;  
                if (d\_value<max)  
                {  
                   max=d\_value;  
                   k=i;  
                }

             }    return k;

         }  

}

public class Person implements Comparable {
private String name;
private String id;
private int age;
private String sex;
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 int getage() {

    return age;  
}  
public void setage(int age) {  
    // int a = Integer.parseInt(age);  
    this.age= age;  
}  
public String getsex() {  
    return sex;  
}  
public void setsex(String sex) {  
    this.sex= sex;  
}  
public String getbirthplace() {  
    return birthplace;  
}  
public void setbirthplace(String birthplace) {  
    this.birthplace= birthplace;  

}

public int compareTo(Person o) {  
    return this.name.compareTo(o.getname());

}

public String toString() {  
    return  name+"\\t"+sex+"\\t"+age+"\\t"+id+"\\t";

}
}

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

package Demo;

import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Random;
import java.util.Scanner;

public class Demo {
public static void main(String[] args) {

    Scanner in = new Scanner(System.in);  
    Number counter = new Number();  
    PrintWriter out = null;  
    try {  
        out = new PrintWriter("test.txt");  
    } catch (FileNotFoundException e) {  
        System.out.println("Error!");  
        e.printStackTrace();  
    }

    int sum = ;

    for (int i = ; i <= ; i++) {  
        int a = (int) Math.round(Math.random() \* );  
        int b = (int) Math.round(Math.random() \* );  
        int m;  
        Random rand = new Random();  
        m = (int) rand.nextInt() + ;

        switch (m) {  
        case :  
            a = b + (int) Math.round(Math.random() \* );  
            while(b == ){  
                b = (int) Math.round(Math.random() \* );  
            }  
            while(a % b != ){  
                a = (int) Math.round(Math.random() \* );

            }  
            //a大于b,a%b为0(保证能整除)  
            System.out.println(i + ": " + a + "/" + b + "=");

            int c0 = in.nextInt();  
            out.println(a + "/" + b + "=" + c0);  
            if (c0 == counter.division(a, b)) {  
                sum += ;  
                System.out.println("恭喜答案正确!");  
            } else {  
                System.out.println("抱歉答案错误!");  
            }

            break;

        case :  
            System.out.println(i + ": " + a + "\*" + b + "=");  
            int c = in.nextInt();  
            out.println(a + "\*" + b + "=" + c);  
            if (c == counter.multiplication(a, b)) {  
                sum += ;  
                System.out.println("恭喜答案正确!");  
            } else {  
                System.out.println("抱歉答案错误!");  
            }  
            break;  
        case :  
            System.out.println(i + ": " + a + "+" + b + "=");  
            int c1 = in.nextInt();  
            out.println(a + "+" + b + "=" + c1);  
            if (c1 == counter.add(a, b)) {  
                sum += ;  
                System.out.println("恭喜答案正确!");  
            } else {  
                System.out.println("抱歉答案错误!");  
            }  
            break;  
        case :  
            while (a < b) {  
                b = (int) Math.round(Math.random() \* );  
            }  
             //若a<b,则重新生成b(避免出现负数)  
            System.out.println(i + ": " + a + "-" + b + "=");  
            int c2 = in.nextInt();  
            out.println(a + "-" + b + "=" + c2);  
            if (c2 == counter.reduce(a, b)) {  
                sum += ;  
                System.out.println("恭喜答案正确!");  
            } else {  
                System.out.println("抱歉答案错误!");  
            }  
            break;  
        }  
    }  
    System.out.println("成绩" + sum);  
    out.println("成绩:" + sum);  
    out.close();  
}  

}

package Demo;

public class Number {
private T a;
private T b;

public Number() {  
    a = null;  
    b = null;  
}  
public Number(T a, T b) {  
    this.a = a;  
    this.b = 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 !=  && a%b==)  
        return a / b;  
    else  
        return ;  
}  

}

在运行对方的程序时,大部分代码差不多,但在她的程序中有部分代码比我的要简洁,值得我在以后的实验中学习。

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

package xinxi;

public class Student implements Comparable {

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(Student o) {  
   return this.name.compareTo(o.getName());  
}

public String toString() {  
    return  name+"\\t"+sex+"\\t"+age+"\\t"+number+"\\t"+province+"\\n";  
}  

}

package xinxi;

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 xinxi{
private static ArrayList studentlist;
public static void main(String[] args) {
studentlist = new ArrayList<>();
@SuppressWarnings("resource")
Scanner scanner = new Scanner(System.in);
File file = new File("F:\\身份证号.txt");
try {
FileInputStream fis = new FileInputStream(file);
@SuppressWarnings("resource")
BufferedReader in = new BufferedReader(new InputStreamReader(fis));
String temp = null;
while ((temp = in.readLine()) != null) {

            @SuppressWarnings("resource")  
            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();  
            Student student = new Student();  
            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("输入序号进行相应的操作");  
        System.out.println("1.字典排序");  
        System.out.println("2.输出年龄最大和年龄最小的人");  
        System.out.println("3.查找与你年龄相近的人");  
        System.out.println("4.查找你的同乡");  
        String n = scanner.next();  
        switch (n) {  
        case "":  
            Collections.sort(studentlist);  
            System.out.println(studentlist.toString());  
            break;  
        case "":  
             int max=,min=;  
             int j,k1 = ,k2=;  
             for(int i=;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 "":  
            System.out.println("年龄:");  
            int yourage = scanner.nextInt();  
            int near=agenear(yourage);  
            @SuppressWarnings("unused") int value=yourage-studentlist.get(near).getage();  
            System.out.println("和你年龄相近的是"+studentlist.get(near));  
            break;

        case "":  
             System.out.println("输入你的家乡");  
             String find = scanner.next();  
             String place=find.substring(,);  
             for (int i = ; i <studentlist.size(); i++)  
             {  
                 if(studentlist.get(i).getprovince().substring(,).equals(place))  
                     System.out.println("你的同乡是  "+studentlist.get(i));  
             }  
             break;

        }  
    }  
}  
    public static int agenear(int age) {  
    @SuppressWarnings("unused")  
    int j=,min=,value=,k=;  
     for (int i = ; i < studentlist.size(); i++)  
     {  
         value=studentlist.get(i).getage()-age;  
         if(value<) value=-value;  
         if (value<min)  
         {  
            min=value;  
            k=i;  
         }  
      }  
     return k;         

}

}

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

package jisuan;

import java.io.*;
import java.io.PrintWriter;
import java.util.Scanner;

public class Jisuan {
public static void main(String[] args) {

    Scanner in = new Scanner(System.in);

    PrintWriter output = null;  
    try {  
        output = new PrintWriter("text.txt");  
    } catch (FileNotFoundException e) {  
        // TODO Auto-generated catch block  
        e.printStackTrace();  
    }  
    int sum = ;  
    for (int i = ; i <= ; i++) {  
        int a = (int) Math.round(Math.random() \* );  
        int b = (int) Math.round(Math.random() \* );  
        int m = (int) Math.round(Math.random() \* );  
        switch (m) {  
        case :  
            while (b == ) {  
                b = (int) Math.round(Math.random() \* );  
            }  
            while (a % b != ) {  
                a = (int) Math.round(Math.random() \* );  
            }  
            System.out.println(a + "/" + b + "=");  
            int c1 = in.nextInt();  
            output.println(a + "/" + b + "=" + c1);  
            if (c1 == a / b) {  
                System.out.println("恭喜答案正确");  
                sum += ;  
            } else {  
                System.out.println("抱歉,答案错误");  
            }

            break;

        case :  
            System.out.println( a + "\*" + b + "=");  
            int c2 = in.nextInt();  
            output.println(a + "\*" + b + "=" + c2);  
            if (c2 == a \* b) {  
                System.out.println("恭喜答案正确");  
                sum += ;  
            } else {  
                System.out.println("抱歉,答案错误");  
            }  
            break;  
        case :  
            System.out.println( a + "+" + b + "=");  
            int c3 = in.nextInt();  
            output.println(a + "+" + b + "=" + c3);  
            if (c3 == a + b) {  
                System.out.println("恭喜答案正确");  
                sum += ;  
            } else {  
                System.out.println("抱歉,答案错误");  
            }

            break;  
        case :  
            while (a < b) {  
                a = (int) Math.round(Math.random() \* );  
            }  
            System.out.println( a + "-" + b + "=");  
            int c4 = in.nextInt();  
            output.println(a + "-" + b + "=" + c4);  
            if (c4 == a - b) {  
                System.out.println("恭喜答案正确");  
                sum += ;  
            } else {  
                System.out.println("抱歉,答案错误");  
            }  
            break;

        }

    }  
    System.out.println("成绩" + sum);  
    output.println("成绩" + sum);  
    output.close();  
}  

}

package jisuan;
public class math {
private T a;
private T 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 !=  && a % b == )  
        return a / b;  
    else  
        return ;  
}  

}

实验总结:

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

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章