编程题
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