从零开始的java生活(刷题篇9)

编程题

        1.HashMap的应用

【问题描述】

(Map HashMap)已知某学校的教学课程内容安排如下:

Teacher

Course

ZhangMing

Java

ZhaoYing

JSP

LiuHeng

JSP

WangWei

Oracle

完成下列要求:

 1) 使用一个Map,以老师的名字作为键,以老师教授的课程名作为值,表示上述课程安排。

 2) 增加了一位新老师“GuanXin”教JDBC

 3) “WangWei” 改为教JSP

 4) 把Map的key取出放入到Set中,对Set进行遍历,输出所有的老师及老师教授的课程

 5) 利用Map,输出所有教JSP 的老师。


【输入形式】无
【输出形式】

ZhaoYing  JSP

......

JSP Teacher:ZhaoYing

......


【样例输入】无
【样例输出】

LiuHeng  JSP

GuanXin  JDBC

WangWei  JSP

ZhangMing  Java

ZhaoYing  JSP

JSP Teacher:LiuHeng

JSP Teacher:WangWei

JSP Teacher:ZhaoYing


【样例说明】
【评分标准】

代码如下

import java.util.*;

public class Homework_1 {
    public static void main(String[] args) {
        Map<String, String> Map = new HashMap<>();
        Map.put("ZhangMing", "Java");
        Map.put("ZhaoYing", "JSP");
        Map.put("LiuHeng", "JSP");
        Map.put("WangWei", "Oracle");
        Map.put("GuanXin", "JDBC");
        Map.replace("WangWei", "JSP");
        Set<String> keySet = Map.keySet();
        for (String key : keySet) {
            System.out.println(key +"  "+ Map.get(key));
        }
        for (String key : keySet) {
            if ("JSP".equals(Map.get(key)))
                System.out.println("JSP Teacher:" + key);
        }

    }
}

        2.ArrayList存储课程信息

【问题描述】

1. (ArrayList)已知某学校的课程信息如下:

课程号

课程名

001

Java

002

Web

003

C++

完成下列要求:

1) 编写课程类Course,包含id和name两个私有属性,带参的构造方法和两个属性的get方法

2) 创建ArrayList对象list,添加如上表所示的三个课程对象

3) 对list进行遍历,输出课程号和课程名

4) 查找是否存在“001”的课程,如果存在,删除

5)对list进行遍历,输出课程号和课程名


【输入形式】无
【输出形式】

001 java

.....
【样例输入】无
【样例输出】

001 Java

002 Web

003 C++

002 Web

003 C++


【样例说明】
【评分标准】

代码如下:

import java.util.ArrayList;
import java.util.Collections;

public class Course {
    private String id;
    private String name;

    public String getName() {
        return name;
    }

    public String getId() {
        return id;
    }

    public Course(String id, String name) {
        this.id = id;
        this.name = name;
    }

    @Override
    public String toString() {
        return getId() + " " + getName();
    }

    public static void main(String[] args) {
        ArrayList<Course> list = new ArrayList<>();
        Collections.addAll(list, new Course("001", "Java"), new Course("002", "Web"), new Course("003", "C++"));
        for (Course course : list) {
            System.out.println(course);
        }
        list.removeIf(course -> "001".equals(course.getId()));
        for (Course course : list) {
            System.out.println(course);
        }

    }
}

        3.HashMap管理运动场地

【问题描述】

1. (Map HashMap set)已知某学校的运动场地如下:

场地类型

场地名称

football

 football1 ,  football2 ,football3,football4,football5

tennis

tennis1 , tennis2 , tennis3, tennis4

basketball

basketball1 ,  basketball2 ,  basketball3 

完成下列要求:

1)使用一个Map<String, String[]> map,存放上表中的场地。

2)编写newStadiumfieldList()方法初始化map,并作为返回值返回。

3)编写getStadiumfield(Map<String, String[]> map)输出map的大小,并遍历map,把键和值都输出。

4)在main方法中调用两个方法


【输入形式】无
【输出形式】

【样例输入】
【样例输出】

The number of field is 3

basketball : the number is 3

basketball1basketball2basketball3

football : the number is 5

football1football2football3football4football5

tennis : the number is 4

tennis1tennis2tennis3tennis4


【样例说明】
【评分标准】

代码如下:

import java.util.HashMap;
import java.util.Map;

public class Homework_3 {
    static Map<String, String[]> map = new HashMap<>();

    public static Map<String, String[]> newStadiumFieldList() {
        map.put("football", new String[]{"football1", "football2", "football3", "football4", "football5"});
        map.put("tennis", new String[]{"tennis1", "tennis2", "tennis3", "tennis4"});
        map.put("basketball", new String[]{"basketball1", "basketball2", "basketball3"});
        return map;
    }

    public static void getStadiumField(Map<String, String[]> map) {
        System.out.println("The number of field is " + map.size());
        for (Map.Entry<String, String[]> entry : map.entrySet()) {
            String[] value = entry.getValue();
            System.out.println(entry.getKey() + " : the number is " + value.length);
            for (String Value : value) {
                System.out.print(Value);
            }
            System.out.println();
        }
    }

    public static void main(String[] args) {
        getStadiumField(newStadiumFieldList());
    }
}

        4.Employee集合

【问题描述】

编写程序,完成下列要求:

1) 编写员工类Employee,包含id和name两个私有属性,带参的构造方法和两个属性的get,set方法

2) 按顺序输入三位员工信息,将它们存放到TreeSet中并按照id值降序输出

【样例输入】

103 zhangsan

999 lisi

101 wangwu
【样例输出】

999 : lisi

103 : zhangsan

101 : wangwu

代码如下:

import java.util.Comparator;
import java.util.Iterator;
import java.util.Scanner;
import java.util.TreeSet;

public class Homework_4 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        TreeSet<Employee> employees = new TreeSet<>(new myComparator());
        employees.add(new Employee(sc.next(), sc.nextLine()));
        employees.add(new Employee(sc.next(), sc.nextLine()));
        employees.add(new Employee(sc.next(), sc.nextLine()));
        Iterator<Employee> it = employees.iterator();
        while (it.hasNext()) {
            System.out.println(it.next().toString());
        }
    }
}

class Employee {
    private String id;
    private String name;

    public String getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public void setId(String id) {
        this.id = id;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Employee(String id, String name) {
        this.id = id;
        this.name = name;
    }

    @Override
    public String toString() {
        return getId() + " :" +getName();
    }
}

class myComparator implements Comparator<Employee> {
    public int compare(Employee o1, Employee o2) {
        int num = Integer.parseInt(o2.getId()) - Integer.parseInt(o1.getId());
        if (num == 0) {
            num = o2.getId().hashCode() - o1.getId().hashCode();
        }
        return num;
    }

}

        5.对称矩阵乘法运算2

问题描述】

对称矩阵有性质a[i][j] = a[j][i]。为了节省空间,可以只存储对称矩阵的上三角元素。如下面左边的对称矩阵可以以"行"为序存储成右边的一维形式。

1 2 3 4
2 5 7 9                 1 2 3 4 5 7 9 8 -1 0
3 7 8 -1
4 9 -1 0

编写程序,实现以一维形式输入的对称矩阵的乘法,对称矩阵最大为9*9。

【输入形式】

先从控制台输入对称矩阵的阶数和一维形式的数据个数(以一个空格分隔),然后以一维形式分行输入两个对称矩阵的数据,数据之间以一个空格分隔。

【输出形式】

在标准输出上分行输出两对称矩阵的乘积,每行上的数据以一个空格分隔,每行最后一个数据后要有一个空格

【输入样例】

4 10
1 2 3 4 5 7 9 8 -1 0
0 1 2 3 4 5 6 7 8 9

【输出样例】

20 48 65 75 
46 111 150 173 
20 65 89 106 
7 35 46 58

【样例说明】

输入的对称矩阵阶数为4,其一维形式表示的数据个数为10。第一个一维形式表示的对称矩阵如下:

1 2 3 4
2 5 7 9
3 7 8 -1
4 9 -1 0

第二个一维形式表示的对称矩阵如下:

0 1 2 3
1 4 5 6
2 5 7 8
3 6 8 9

两矩阵相乘的结果为:

20 48 65 75 
46 111 150 173 
20 65 89 106 
7 35 46 58

【评分标准】

该题要求输出两对称矩阵的乘积。

代码如下:

import java.util.Scanner;

public class Homework_5 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int J;
        int N;
        J = sc.nextInt();
        N = sc.nextInt();
        int[] arr1 = new int[N];
        int[] arr2 = new int[N];
        for (int i = 0; i < N; ++i) {
            arr1[i] = sc.nextInt();
        }
        for (int i = 0; i < N; ++i) {
            arr2[i] = sc.nextInt();
        }

        for (int i = 0; i < J; ++i) {
            int ans = 0;
            for (int j = 0; j < J; ++j) {
                for (int p = 0; p < J; ++p) {
                    int value1, value2;
                    if (p >= i) value1 = arr1[J * i + p - ((i + 1) * i) / 2];
                    else value1 = arr1[(2 * J - p - 1) * p / 2 + i];
                    if (j >= p) value2 = arr2[J * p + j - ((p + 1) * p) / 2];
                    else value2 = arr2[(2 * J - j - 1) * j / 2 + p];
                    ans += value1 * value2;
                }
                System.out.print(ans + " ");
                ans = 0;
            }
            System.out.println();
        }


    }
}

博主java萌新,有问题可评论区共同交流学习,欢迎大家交流awa

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值