【Java】Java学习笔记(5)Java泛型作业函数题

学校小学期Java课程的练习题,留个档便于以后需要时候有例子可以回忆,写的烂的地方请多多包含

1、计算圆锥、方锥的体积

  • 描述:声明一个泛型类,包含计算体积的方法,只关心它的底是否能计算面积,并不关心底的类型。声明圆类和矩形类,分别包含计算面积的方法。用户输入圆锥的半径和高,打印输出圆锥的体积。输入方锥的长、宽、高,计算方锥的体积并输出。
  • 代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import java.util.Scanner;
class Cone<E> {
double height;
E bottom; //用泛型类E声明对象bottom
public Cone (E b) {
bottom=b;
}
public void setHeight(double h) {
height=h;
}
/*
TODO:计算体积
功能描述:调用对象bottom的toString方法,返回字符串格式的圆面积,然后转为double类型,再根据公式计算锥形体积
参数说明:无
返回值说明:锥形体积 公式:1/3*底面积*高
*/
public double computerVolume() {
double area=Double.valueOf(bottom.toString());
return 1.0/3*area*height;
}
}
class Circle {
double area,radius;
Circle(double r) {
radius=r;
}
/*
TODO:计算面积
功能描述:重写Object类的toString()方法,计算圆的面积
参数说明:无
返回值说明:圆的面积
*/
public String toString() {
double a=Math.PI*radius*radius;
String area=String.valueOf(a);
return area;
}
}
class Rect {
double sideA,sideB,area;
Rect(double a,double b) {
sideA=a;
sideB=b;
}
/*
TODO:计算面积
功能描述:重写Object类的toString()方法,计算矩形的面积
参数说明:无
返回值说明:矩形的面积
*/
public String toString() {
double x=sideA*sideB;
String area=String.valueOf(x);
return area;
}
}
public class Example15_1 {
public static void main(String args[]) {
System.out.println("请输入圆锥的半径、高:");
Scanner scanner = new Scanner(System.in);
Circle circle=new Circle(scanner.nextDouble());
Cone<Circle> coneOne=new Cone<Circle>(circle);//创建一个(圆)锥对象
coneOne.setHeight(scanner.nextDouble());
System.out.println("圆锥的体积:"+coneOne.computerVolume());
System.out.println("请输入方锥的长、宽、高:");
Rect rect=new Rect(scanner.nextDouble(),scanner.nextDouble());
Cone<Rect> coneTwo=new Cone<Rect>(rect);//创建一个(方)锥对象
coneTwo.setHeight(scanner.nextDouble());
System.out.println("方锥的体积:"+coneTwo.computerVolume());
}
}

2、遍历链表中的数据

  • 描述:定义一个链表集合,用户输入链表中两个节点中的数据,然后分别用集合中get方法遍历和iterator遍历,转化为字符串并输出。
  • 代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.util.*;
public class Test_1{
public static void main(String args[]){
LinkedList mylist=new LinkedList();
System.out.println("请输入链表2个节点中的数据:");
Scanner scanner = new Scanner(System.in);
mylist.add(scanner.next()); //链表中的第一个节点
mylist.add(scanner.next()); //链表中的第二个节点
//TODO:获取链表的长度
int number=mylist.size();
for(int i=0;i<number;i++){
/*
TODO:把mylist中的数据强转换为String
输出强转换后的数据及下标
输出语句提示:System.out.println("get:第"+i+"节点中的数据:"+ 数据内容 );
*/
System.out.println("get:第"+i+"节点中的数据:"+mylist.get(i));
}
Iterator iter=mylist.iterator();
while(iter.hasNext()) {
/*
TODO:把mylist中的数据强转换为String,并打印输出
打印语句提示:System.out.println("iterator:"+ 数据内容 );
*/
System.out.println("iterator:"+iter.next());
}
}
}

3、对3个学生身高进行排序升序输出,然后查找与这3个学生身高相同的学生

  • 描述:定义一个学生类,自定义一个比较方法,比较身高属性值的大小。定义一个集合,用户输入3个学生的姓名和身高,添加到集合中,并输出集合的数据。然后对集合进行排序,并输出排序后的内容。然后输入一个学生的姓名和身高,查找与这3个同学身高是否相同,相同则输出结果,否则不输出。
  • 代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import java.util.*;
class Student implements Comparable {
int height=0;
String name;
Student(String n,int h) {
name=n;
height = h;
}
/*
TODO:比较方法
功能描述:比较当前对象与参数对象的身高大小
参数说明:b为需要比较的对象
返回值说明:如当前对象比b对象身高值大,返回1;如相等返回0,如小于返回-1
*/
public int compareTo(Object b) {
if(height>((Student)b).height){
return 1;
}
else if(height==((Student)b).height){
return 0;
}
else{
return -1;
}
}
}
public class Test_1 {
public static void main(String args[ ]) {
List<Student> list = new LinkedList<Student>();
System.out.println("请输入3个学生姓名和身高:");
Scanner scanner = new Scanner(System.in);
list.add(new Student(scanner.next(),scanner.nextInt()));
list.add(new Student(scanner.next(),scanner.nextInt()));
list.add(new Student(scanner.next(),scanner.nextInt()));
Iterator<Student> iter=list.iterator();
System.out.println("排序前,链表中的数据");
for(Student s:list){
System.out.println(s.name+"身高:"+s.height);
}
Collections.sort(list);
System.out.println("排序后,链表中的数据");
iter=list.iterator();
/*
TODO:循环遍历迭代器iter,将学生姓名、身高输出
输出语句提示:System.out.println( 姓名 + "身高:"+ 身高 );
*/
for(Student s:list){
System.out.println(s.name+"身高:"+s.height);
}
System.out.println("请输入要比较身高同学的姓名和身高:");
Student zhaoLin = new Student(scanner.next(),scanner.nextInt());
int index = Collections.binarySearch(list,zhaoLin,null);
/*
TODO:如果index大于等于0,则输出: System.out.println( 输入的名字 +"和链表中"+ 学生姓名 +"身高相同");
*/
if(index>=0){
System.out.println(zhaoLin.name+"和链表中"+list.get(index).name+"身高相同");
}
}
}
-------- 本文结束 感谢阅读 --------