《Java程序设计》实验3 面向对象基础2

6-1 奖学金资格审查系统

分数 15

全屏浏览题目

作者 大数据2021

单位 山东科技大学

由于奖学金评选工作需要,现需要设计一套系统对学生是否具有评选资格进行筛选,目前已给出一个学生类Student,其包含学号(String id)、综合测评成绩(double ca)两个私有属性,以及具有能够初始化学号和综合测评成绩两个参数的构造方法和判断是否具有参评奖学金资格的方法(boolean isReq()),需要您完成以下内容:

1、定义本科生类Undergraduate继承Student,并重写isReq()ca>=80时返回true,否则返回false;

2、定义研究生类Graduate继承Student,增加导师确认(boolean supervisor)属性,并重写isReq()ca>=85supervisortrue时返回true,否则返回false;

注意:除题目已给出的属性,所有类不得添加新的属性,但可以适当添加方法。

裁判测试程序样例:

 
 

import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); //通过键盘输入确定Student数组的长度 Student[] stu = new Student[Integer.parseInt(sc.nextLine())]; for (int i = 0; i < stu.length; i++) { //截取输入的字符 String[] str = sc.nextLine().split("\\s+"); //三个字符串表示为Graduate,否则为Undergraduate if (str.length > 2) { stu[i] = new Graduate(str[0], Double.parseDouble(str[1]), Boolean.parseBoolean(str[2])); } else { stu[i] = new Undergraduate(str[0], Double.parseDouble(str[1])); } } //循环输出结果 for (int i = 0; i < stu.length; i++) { if(stu[i].isReq()) System.out.println(stu[i].getId() + " pass" ); else System.out.println(stu[i].getId() + " fail" ); } sc.close(); } } class Student { private String id; private double ca; public Student(String id, double ca) { this.id = id; this.ca = ca; } public boolean isReq() { return false; } public String getId() { return id; } public double getCA() { return ca; } } /* 请在这里填写答案 */

输入样例:

7
001 56
002 80
003 81
004 12 false
005 80 false
006 85 false
007 85 true

输入样例解释:

第1行表示需要输入n行数据;

第2至n+1行表示待输入的学生信息,格式为学号+分数+导师确认(有此项表示为研究生,本科生没有),每个数据间用空格隔开。

输出样例:

001 fail
002 pass
003 pass
004 fail
005 fail
006 fail
007 pass

输出样例解释:

n行结果,格式为学号+结果,每个数据间空格隔开。

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

class Undergraduate extends Student
{
	Undergraduate(String id,double ca)
	{
		super(id,ca);
	}
	public boolean isReq() 
	{
        if(super.getCA()>=80)
        	return true;
        else
        	return false;
    }
}

class Graduate extends Student
{
	private boolean supervisor;
	Graduate(String id,double ca,boolean s)
	{
		super(id,ca);
		supervisor = s;
	}
	public boolean isReq() 
	{
        if(super.getCA()>=80&&supervisor==true)
        	return true;
        else
        	return false;
    }
}

6-3 面积求和

分数 15

全屏浏览题目

作者 yl

单位 西南石油大学

由于各种图形 求面积的方式不一样,为了使编写的程序能够适应求不同形状的面积和,当新增加一个图形的时候,不需要修改其他类,采用面向接口的编程,其类图如下图所示:

根据以上类图,你需要设计和编写如下类:
######1.IGeometry接口类 ,里面有double getArea()接口方法
2.Rect类实现接口,有属性 a,b,有参构造方法及对接口方法的实现
######3.Circle类实现接口,有属性r,有参构造方法及对接口方法的实现,其中PI=3.14
4.TotalArea类完成对不同形状图形面积求和,有属性IGeometry[] tuxing 数组用来存储 不同形状图形对象,SetTuxing(IGeometry[] t) 给属性tuxing赋值,double computeTotalArea()方法用来计算tuxing数组中存放的图形的面积和,并返回面积和。

主类已经给出,请结合主类完成上面类的编写

裁判测试程序主类:

 
 

public class Main { public static void main(String[] args) { IGeometry [] tuxing=new IGeometry[29]; //有29个Geometry对象 for(int i=0;i<tuxing.length;i++) { //29个Geometry对象分成两类 if(i%2==0) tuxing[i]=new Rect(16+i,68); else if(i%2==1) tuxing[i]=new Circle(10+i); } TotalArea computer=new TotalArea(); computer.setTuxing(tuxing); System.out.printf("各种图形的面积之和:\n%.2f",computer.computerTotalArea()); } } /* 请在这里填写答案 请结合主类代码,在代码框完成IGeometry接口类,Rect类,Circle类和TotalArea类*/

输入样例:

在这里给出一组输入。例如:

输出样例:

在这里给出相应的输出。例如:

各种图形的面积之和:
58778.36

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

interface IGeometry
{
	double getArea();
}
class Rect implements IGeometry
{
	private double a;
	private double b;
	Rect(double a,double b)
	{
		this.a = a;
		this.b = b;
	}
	public double getArea()
	{
		return a*b;
	}
}
class Circle implements IGeometry
{
	private double r;
	Circle(double r)
	{
		this.r = r;
	}
	public double getArea()
	{
		return 3.14*r*r;
	}
}
class TotalArea
{
	private IGeometry[] tuxing;
	public void setTuxing(IGeometry[] t)
	{
		this.tuxing = t;
	}
	public double computerTotalArea()
	{
		double sum = 0;
		for(int i=0;i<tuxing.length;i++)
		{
			if(tuxing[i] instanceof Rect)
			{
				Rect rect = (Rect) tuxing[i];
				sum += rect.getArea();
			}
			else
			{
				Circle c = (Circle) tuxing[i];
				sum += c.getArea();
			}
		}
		return sum;
	}
}

 

6-4 微信名片类

分数 15

全屏浏览题目

作者 张峰

单位 山东科技大学

编码实现微信名片类WeChat,其中有属性number(微信号,String类型)和nickname(昵称,String类型),重写Object类的equals和toString方法,要求:1)两个微信名片对象的微信号相同则equals方法返回true,否则返回false;2)toString返回字符串“WeChat: xx, nicename: yy”,xx和yy分别表示微信名片的微信号和昵称。

函数接口定义:

 
 

Object类中的equals和toString方法定义

裁判测试程序样例:

 
 

import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); WeChat weChat1 = new WeChat(scanner.next(), scanner.next()); WeChat weChat2 = new WeChat(scanner.next(), scanner.next()); System.out.println(weChat1); System.out.println(weChat2); System.out.println(weChat1.equals(weChat2)); scanner.close(); } } /* 请在这里填写答案 */

输入样例:

15153206666 Tom
15153206666 Peter

输出样例:

WeChat: 15153206666, nicename: Tom
WeChat: 15153206666, nicename: Peter
true

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

class WeChat
{
	private String number;
	private String nickname;
	WeChat(String n,String nickname)
	{
		number = n;
		this.nickname = nickname;
	}
	public boolean equals(Object obj)
	{
		if(obj==null)
			return false;
		if(obj instanceof WeChat)
		{
			WeChat other = (WeChat)obj;
			if(this.number.equals(other.number))
			    return true;
			else
				return false;
		}
		else
			return false;
	}
	public String toString()
	{
		return "WeChat: "+number+", nicename: "+nickname;
	}
}

7-1 通过键盘输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

分数 10

全屏浏览题目

切换布局

作者 仇丽青

单位 山东科技大学

统计一行字符串中的英文字母个数、空格个数、数字个数、其他字符个数

输入格式:

通过键盘输入一行字符(任意字符)

输出格式:

统计一行字符串中的英文字母个数、空格个数、数字个数、其他字符个数

输入样例:

rwrwewre2345asdJSJQI%^&(&   *&sdf YY( 2342-k'

输出样例:

字母个数:22
数字个数:8
空格个数:5
其他字符个数:10

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

import java.util.Scanner;

public class Main
{
	public static void main(String[] args)
	{
		Scanner in = new Scanner(System.in);
		String s = in.nextLine();
		int e=0;
		int k=0;
		int num=0;
		int other=0;
		for(int i=0;i<s.length();i++)
		{
			if(Character.isLetter(s.charAt(i)))
				e+=1;
			else if(Character.isDigit(s.charAt(i)))
				num+=1;
			else if(Character.isSpaceChar(s.charAt(i)))
				k+=1;
			else
				other+=1;
		}
		System.out.print("字母个数: "+e+"\n数字个数: "+num+"\n空格个数: "+k+"\n其它字符个数: "+other);
	}
}

7-2 排序

分数 10

全屏浏览题目

作者 吴光生

单位 新余学院

对10个整数进行排序。(使用Scanner类从键盘输入数据。)

请注意:含有main方法的类(class)的名字必须命名为Main,否则调试不成功。

输入格式:

在一行中输入10个整数,中间以空格隔开。

输出格式:

按从小到大的顺序输出这10个整数,中间以一个空格隔开(最末尾不要空格)。

输入样例:

在这里给出一组输入。例如:

5 20 34 6 -13 26 72 10 39 -9

输出样例:

在这里给出相应的输出。例如:

-13 -9 5 6 10 20 26 34 39 72

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

import java.util.Scanner;
import java.util.Arrays;

public class Main
{
	public static void main(String[] args)
	{
		Scanner in = new Scanner(System.in);
		int[] a = new int[10];
		for(int i=0;i<10;i++)
		{
			a[i] = in.nextInt();
		}
		Arrays.sort(a);
		for(int i=0;i<10;i++)
		{
			if(i==0)
				System.out.print(a[i]);
			else
				System.out.print(" "+a[i]);
		}
	}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值