java第五部分题目集合(pta)

目录

7-1 jmu-java-m05-自定义Judgeable接口

Person类

自定义接口Judgeable

main类

输入格式:

输出格式:

输入样例:

输出样例:

7-2 sdut-String-5 图书价格汇总(II)

输入格式:

输出格式:

输入样例:

输出样例:

7-3 两种异常捕获小程序

输入格式:

输出格式:

输入样例1:

输出样例1:

输入样例2:

输出样例2:

输入样例3:

输出样例3:

7-4 计算长方体和四棱锥的表面积和体积

输入格式:

输出格式:

输入样例:

输出样例:

7-5 设计一个学生类和它的一个子类——本科生类

输入格式:

输出格式:

输入样例:

输出样例:

7-6 定义接口(Biology、Animal)、类(Person)、子类(Pupil)

输入格式:

输出格式:

输入样例:

输出样例:

7-7 利用正则表达式得到一段HTML文本中所有超链接对应的网址

输入格式:

输出格式:

输入样例:

输出样例:

7-8 jmu-Java-02基本语法-07-大整数相加

输入格式

输入样例:

输出样例:


7-1 jmu-java-m05-自定义Judgeable接口

分数 10

全屏浏览题目

切换布局

作者 郑如滨

单位 集美大学

该程序包含

Person类

属性:String name,boolean gender String birthdate。

构造方法:

  • 无参构造方法(初始化名字为空字符串,gender为false)

  • 两个参数的构造方法(name,gender)

  • 三个参数的构造方法(name,gender,birthdate)

方法:getter/setter方法。

自定义接口Judgeable

方法:boolean judge(String)

main类

静态方法:int countPerson(List,Judgeable),功能为调用List集合中所有元素的judge方法,并统计其中返回true的元素个数。

main方法:

定义一个Person类集合,输入个数n,在下面依次输入n行的name,gender,biryhDate值生成person对象并添加进集合。

判断集合中name长度为5的数的个数,并输出,具体格式见输出样例。

判断集合中name长度为7的数的个数,并输出,具体格式见输出样例。

判断集合中name为空的个数,并输出,具体格式见输出样例。

输入格式:

输入一个整数number

根据number,输入number行的name,gender,birthDate

参考代码:

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

class Person{

//在这里按要求定义person类

}

//在这里给出Judgeable接口的定义,入参为String,返回boolean。
 
public class Main {

    public static int countPerson(List<Person> personList, Judgeable judger) {
        int n = 0;
        for (Person person : personList) {
            if (judger.judge(person.getName()))
                n++;
        }
        return n;
    }
 

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        List<Person> personList = new ArrayList<Person>();
        String name;
        boolean gender;
        String  birthDate;

        //在这里输入个数

        //循环创建person对象存入personList最后

            //注意:当name输入为null时,将其置为空

        int nameLength5 = countPerson(personList, new Judgeable() {
            //Judgeable的实现代码

        });

        System.out.println("Number of person with nameLength == 5:"+nameLength5);
        int nameLength7 = countPerson(personList, new Judgeable() {
            //Judgeable的实现代码
        });

        System.out.println("Number of person with nameLength == 7:"+nameLength7);
        int nameisnull = countPerson(personList, new Judgeable() {
            //Judgeable的实现代码
        });

        System.out.println("Number of person with null name:"+nameisnull);
    }
}

输出格式:

name长度为5的名字的个数

name长度为7的名字的个数

name为null的个数

输入样例:

9
Aaron false 1999-12-19
Abigale true 1998-09-01
null false 1992-11-21
Bonnie true 1990-11-11
null false 1994-07-08
Carol false 1982-12-04
Celeste true 1987-03-01
null false 1996-04-01
Chloe true 1993-02-16

注意:输入中的null表示该行所代表的对象的name属性为null。

输出样例:

Number of person with nameLength == 5:3
Number of person with nameLength == 7:2
Number of person with null name:3

**注意:**样例输出不包含检验代码输出,提交时请务必添加检验代码。

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

class Person{
private String name;
   private boolean gender;
    private String birthdate;
Person(){
        gender=false;
    }
    Person(String name,boolean gender){
        this.name=name;
        this.gender=gender;
    }
    Person(String name,boolean gender,String birthdate){
        this.name=name;
        this.gender=gender;
        this.birthdate=birthdate;
    }
    public void settername(String name){
        this.name=name;
    }
     public void settergender(boolean gender){
        this.gender=gender;
    }
     public void setterbirthdate(String birthdate){
        this.birthdate=birthdate;
    }
    public String getName(){
        return this.name;
    }
     public boolean gettergender(){
        return this.gender;
    }
     public String getterbirthdate(){
        return this.birthdate;
    }
}

//在这里给出Judgeable接口的定义,入参为String,返回boolean。
interface Judgeable{
    public abstract boolean judge(String a);
}
 
public class Main {
 public static int countPerson(List<Person> personList, Judgeable judger) {
	        int n = 0;
	        for (Person person : personList) {
	            if (judger.judge(person.getName()))
	                n++;
	        }
	        return n;
	    }
	 

	    public static void main(String[] args) {
	        Scanner sc = new Scanner(System.in);
	        List<Person> personList = new ArrayList<Person>();
	        String name;
	        boolean gender;
	        String  birthDate;

	        int n=sc.nextInt();

	        //循环创建person对象存入personList最后
	        for(int i=0;i<n;i++) {
	        	personList.add(new Person(sc.next(),sc.nextBoolean(),sc.next()));
	        }

	            //注意:当name输入为null时,将其置为空

	        int nameLength5 = countPerson(personList, new Judgeable() {
	            //Judgeable的实现代码
	        	 public boolean judge(String s) {
	                 return s.length() == 5;
	             }

	        });

	        System.out.println("Number of person with nameLength == 5:"+nameLength5);
	        int nameLength7 = countPerson(personList, new Judgeable() {
	        	 public boolean judge(String s) {
	                 return s.length() == 7;
	        	 }
	            //Judgeable的实现代码
	        });

	        System.out.println("Number of person with nameLength == 7:"+nameLength7);
	        int nameisnull = countPerson(personList, new Judgeable() {
	            //Judgeable的实现代码
	        	public boolean judge(String s) {
	                return s.equals("null");
	            }
	        });

	        System.out.println("Number of person with null name:"+nameisnull);
	    }
}

7-2 sdut-String-5 图书价格汇总(II)

分数 10

全屏浏览题目

切换布局

作者 周雪芹

单位 山东理工大学

假设图书馆中图书信息的格式为:

Java程序设计: 34;Web程序设计: 56;JSP程序设计:20

按要求输出每本图书的名称及价格,计算所有图书的总价格并输出。

输入格式:

读入一行图书信息。如:

Java程序设计: 34;Web程序设计: 56;JSP程序设计:20

提示:

(1)每本书的价格是整数,价格与下一本书的名字之间有一个中文;价格前可能有空格,可能没有。

(2)题目中的分号”“和冒号”“为全角字符。

输出格式:

分别输出每本图书的名称及价格,一本书占一行,形式为:书名--价格

最后,输出计算的所有图书的总价格,形式为:总价格--总价格

输入样例:

Java程序设计:34 ;Web程序设计: 56;JSP程序设计:20

输出样例:

Java程序设计--34
Web程序设计--56
JSP程序设计--20
总价格--110
import java.util.*;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main{
  public static void main(String[] args){
		     	Scanner sc = new Scanner(System.in);
		 		String st = sc.nextLine();
		 		String[] str = st.split(";");
		 		int n = str.length;
		 		int sum = 0;
		 		for (int i = 0; i < n; i++) {
		 			String[] str1 = str[i].split(":");
		 			String price = str1[1];
		 			char[] c = price.toCharArray();
		 			price = "";
		 			for (int j = 0; j < c.length; j++) {
		 				if (c[j] != ' ') {
		 					price += c[j];
		 				}
		 				}
		 				System.out.println(str1[0] + "--" + price);
		 				sum += Integer.parseInt(price);
		 			}
		 		System.out.println("总价格--" + sum);
		    }
}

7-3 两种异常捕获小程序

分数 30

全屏浏览题目

切换布局

作者 dainy

单位 湖南工学院

本题目要求读入2个整数a和b,然后输出它们的商 ,即a/b的值,正常输出结果并保留2位小数,如果出现输入非数值型数据,则捕获异常NameError,并输出the input is not numerical,如果输入的除数b为0,则捕获异常ZeroDivisionError,输出zero division error

输入格式:

在2行中输入2个数据。

输出格式:

在一行中输出a/b的值,保留2位小数,若存在异常则捕获输出相应信息。

输入样例1:

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

1
2

输出样例1:

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

0.50

输入样例2:

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

2
b

输出样例2:

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

the input is not numerical

输入样例3:

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

4
0

输出样例3:

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

zero division error
import java.util.*;
public class Main{
   public static void main(String[] args){
        double a;
        double b;
        Scanner sc=new Scanner(System.in);
        try{
            a=sc.nextDouble();
            b=sc.nextDouble();
            if(b==0)
                System.out.println("zero division error");
            else
            	System.out.printf("%.2f\n",a/b);
        }
        catch(InputMismatchException e){
            System.out.println("the input is not numerical");
        }
    }
    
}

7-4 计算长方体和四棱锥的表面积和体积

分数 25

全屏浏览题目

切换布局

作者 刘凤良

单位 天津仁爱学院

计算如下立体图形的表面积和体积。


从图中观察,可抽取长方体和四棱锥两种立体图形的共同属性到父类Rect中:长度:l 宽度:h 高度:z。

编程要求:

(1)在父类Rect中,定义求底面周长的方法length( )和底面积的方法area( )。

(2)定义父类Rect的子类立方体类Cubic,计算立方体的表面积和体积。其中表面积area( )重写父类的方法。

(3)定义父类Rect的子类四棱锥类Pyramid,计算四棱锥的表面积和体积。其中表面积area( )重写父类的方法。

(4)在主程序中,输入立体图形的长(l)、宽(h)、高(z)数据,分别输出长方体的表面积、体积、四棱锥的表面积和体积。

提示:

(1)四棱锥体积公式:V= (1/3)Sh,S——底面积 h——高

(2)在Java中,利用Math.sqrt(a)方法可以求得a的平方根(方法的参数及返回结果均为double数据类型)。

输入格式:

输入正整数n,然后输入n行数值型数据(double);

每行三个数值,分别表示l、h、z,数值之间用空格分隔。

若输入数据中有0或负数,则不表示任何图形,表面积和体积均为0。

输出格式:

行数与输入相对应,数值为长方体表面积 长方体体积 四棱锥表面积 四棱锥体积(中间有一个空格作为间隔,数值保留两位小数)。

输入样例:

4
1 2 3
0 2 3
-1 2 3
3 4 5

输出样例:

22.00 6.00 11.25 2.00
0.00 0.00 0.00 0.00
0.00 0.00 0.00 0.00
94.00 60.00 49.04 20.00
import java.util.*;
class rect{
     double l;
     double h;
     double z;
    rect(double l,double h,double z){
        this.l=l;
        this.z=z;
        this.h=h;
    }
    public double area(){
        return 0;
    }
}
class Cubic extends rect{
    Cubic(double l,double h,double z){
        super(l,h,z);
    }
    public double area(){
        return 2*(l*z+h*z+l*h);
    }
    public double V(){
        return l*h*z;
    }
}
class Pyramid extends rect{
    Pyramid(double l,double h,double z){
        super(l,h,z);
    }
    public double area(){
        return l*h+(h*Math.sqrt((l/2)*(l/2)+z*z))+(l*Math.sqrt((h/2)*(h/2)+z*z));
    }
    public double V(){
        return l*h*z/3;
    }
}
public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        for(int i=0;i<n;i++){
            double l=sc.nextDouble();
            double h=sc.nextDouble();
            double z=sc.nextDouble();
            if(l<=0||h<=0||z<=0){
               System.out.println("0.00 0.00 0.00 0.00") ;
                continue;
            }
            Cubic c=new Cubic(l,h,z);
            Pyramid p=new Pyramid(l,h,z);
            System.out.printf("%.2f %.2f %.2f %.2f\n",c.area(),c.V(),p.area(),p.V());
        }
    }
}

7-5 设计一个学生类和它的一个子类——本科生类

分数 20

全屏浏览题目

切换布局

作者 吴光生

单位 新余学院

设计一个学生类(Student)和它的一个子类——本科生类(Undergraduate)。要求如下:
(1)Student类有姓名(name)和年龄(age)属性,两者的访问权限为protected;一个包含两个参数的构造方法,用于给姓名和年龄属性赋值;一个show( )方法用于输出Student的属性信息,输出格式为Student[name=XXX,age=XX]
(2)Undergraduate类增加一个专业(major)属性,该属性的访问权限为private;有一个包含三个参数的构造方法,前两个参数用于给继承的年龄和姓名属性赋值,第三个参数给专业属性赋值;一个show( )方法用于输出Undergraduate的属性信息,输出格式为Undergraduate[name=XXX,age=XXX,major=XXX]


在测试类Mainmain( )方法中,调用Student类的带参数的构造方法创建对象object1,调用Undergraduate类的带参数的构造方法创建对象object2,然后分别调用它们的show( )方法。

输入格式:

第一行从键盘输入姓名(字符串)、年龄(整数)给Student类的对象object1,中间以空格隔开。
第二行从键盘输入姓名(字符串)、年龄(整数)、专业(字符串)给Undergraduate类的对象object2,中间以空格隔开。

输出格式:

第一行输出object1的姓名、年龄,格式为:Student[name=XXX,age=XX]
第二行输出object2的姓名、年龄、专业,格式为: Undergraduate[name=XXX,age=XXX,major=XXX]

输入样例:

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

张三 12
李四 19 计算机科学与技术

输出样例:

在这里给出相应的输出,其中的标点符号为英文格式。例如:

Student[name=张三,age=12]
Undergraduate[name=李四,age=19,major=计算机科学与技术]
import java.util.*;
class Student{
    String name;
    int age;
    Student(String name,int age){
        this.name=name;
        this.age=age;
    }
    public void show(){
        System.out.println("Student[name="+this.name+",age="+this.age+"]");
    }
}
class Undergraduate extends Student{
    private String major;
    Undergraduate(String name,int age,String major){
        super(name,age);
        this.major=major;
    }
    public void show(){
        System.out.println("Undergraduate[name="+this.name+",age="+this.age+",major="+this.major+"]");
    }
}
public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        Student s1=new Student(sc.next(),sc.nextInt());
        Undergraduate s2=new Undergraduate(sc.next(),sc.nextInt(),sc.next());
      s1.show();
        s2.show();
    }
}

7-6 定义接口(Biology、Animal)、类(Person)、子类(Pupil)

分数 30

全屏浏览题目

切换布局

作者 吴光生

单位 新余学院

(1)定义Biology(生物)、Animal(动物)2个接口,其中Biology声明了抽象方法breathe( ),Animal声明了抽象方法eat( )sleep( )
(2)定义一个类Person(人)实现上述2个接口,实现了所有的抽象方法,同时自己还有一个方法think( )。breathe()、eat()、sleep()、think()四个方法分别输出:
我喜欢呼吸新鲜空气
我会按时吃饭
早睡早起身体好
我喜欢思考
(3)定义Person类的子类Pupil(小学生),有私有的成员变量school(学校),公有的成员方法setSchool( )getSchool( )分别用于设置、获取学校信息。
(4)在测试类Main中,用Pupil类创建一个对象zhangsan。尝试从键盘输入学校信息给zhangsan,获取到该信息后输出该学校信息,格式为“我的学校是XXX”;依次调用zhangsan的breathe()、eat()、sleep()、think()方法。

输入格式:

从键盘输入一个学校名称(字符串格式)

输出格式:

第一行输出:我的学校是XXX(XXX为输入的学校名称)
第二行是breathe()方法的输出
第三行是eat()方法的输出
第四行是sleep()方法的输出
第五行是think()方法的输出

输入样例:

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

新余市逸夫小学

输出样例:

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

我的学校是新余市逸夫小学
我喜欢呼吸新鲜空气
我会按时吃饭
早睡早起身体好
我喜欢思考
import java.util.*;
interface Biology{
    public abstract void breathe();
}
interface Animal{
    public abstract void eat();
    public abstract void sleep();
}
class person implements Biology,Animal{
    public void breathe(){
        System.out.println("我喜欢呼吸新鲜空气");
    }
    public void eat(){
        System.out.println("我会按时吃饭");
    }
    public void sleep(){
        System.out.println("早睡早起身体好");
    }
    public void think(){
        System.out.println("我喜欢思考");
    }
}
class Pupil extends person{
    private String school;
    Pupil(String school){
        super();
        this.school=school;
    }
    public void setschool(String school){
        this.school=school;
    }
    public String getschool(){
        return this.school;
    }
}
public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        String str=sc.next();
        Pupil zhangsan=new Pupil(str);
        System.out.println("我的学校是"+zhangsan.getschool());
        zhangsan.breathe();
        zhangsan.eat();
        zhangsan.sleep();
        zhangsan.think();
    }
}

7-7 利用正则表达式得到一段HTML文本中所有超链接对应的网址

分数 20

全屏浏览题目

切换布局

作者 lsr

单位 枣庄学院

编写程序实现以下功能:利用正则表达式得到一段HTML文本中所有超链接对应的网址,并将网址输出到屏幕上(每行输出一个网址)。

输入格式:

从键盘输入 一段HTML文本,多行输入,空行输入 结束。

输出格式:

输出从HTML文本中提取到的超链接所对应的网址,一行一个网址。

输入样例:

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

<h3 class="c-title">
 <a href="https://baijiahao.baidu.com/s?id=1633289774665320636&amp;wfr=spider&amp;for=pc" data-click="{
      'f0':'77A717EA',
      'f1':'9F63F1E4',
      'f2':'4CA6DE6E',
      'f3':'54E5243F',
      't':'1557660267'
      }" target="_blank">
      影片《周恩来回延安》在<em>南开大学</em>点映开启全国路演
    </a>
</h3>
<a href="https://baijiahao.baidu.com/s?id=1632116753423885280&amp;wfr=spider&amp;for=pc" data-click="{
      'f0':'77A717EA',
      'f1':'9F73F1E4',
      'f2':'4CA6DE6E',
      'f3':'54E5243F',
      't':'1557660267'
      }" target="_blank">
      天津“<em>南开大学</em>”——莘莘学子的梦想之地
    </a>
		

输出样例:

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

https://baijiahao.baidu.com/s?id=1633289774665320636&amp;wfr=spider&amp;for=pc
https://baijiahao.baidu.com/s?id=1632116753423885280&amp;wfr=spider&amp;for=pc
import java.util.*;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Main{
public static void main(String[] args){
	       Scanner sc=new Scanner(System.in);
	        String []s=new String[101];
	        int i=0;
	        String r="href=['|\"](.*?)['|\"]";
	       Pattern p=Pattern.compile(r);
	        while(sc.hasNext()){
	            s[i]=sc.nextLine();
	            i++;
	            Matcher m=p.matcher(s[i-1]);
	            while(m.find()){
	                System.out.println(m.group().substring(6,m.group().length()-1));
	            }
            }
	    }
}

7-8 jmu-Java-02基本语法-07-大整数相加

分数 4

全屏浏览题目

切换布局

作者 郑如滨

单位 集美大学

有若干大整数,需要对其进行求和操作。

输入格式

每行输入一个字符串代表一个大整数,连续输入若干行,当某行字符为eE时退出。

输入样例:

42846280183517070527831839425882145521227251250327
55121603546981200581762165212827652751691296897789
e

输出样例:

97967883730498271109594004638709798272918548148116
import java.util.*;
import java.math.BigInteger;
public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        BigInteger a=new BigInteger("0");
        String str;
        while(sc.hasNext()){
            str=sc.next();
            if(str.equals("e")||str.equals("E"))
                break;
            a=a.add(new BigInteger(str));
        }
        System.out.println(a);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值