2022-2023面向对象程序复习题PTA
Posted 金石不渝
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2022-2023面向对象程序复习题PTA相关的知识,希望对你有一定的参考价值。
2022-2023面向对象程序复习题PTA
7-1 jmu-Java-01入门-第一个PTA上Java程序
分数 10
作者 郑如滨
单位 集美大学
本题目要求读入若干对整数a和b,然后输出它们的和。
输入格式:
在一行中给出一对整数a和b。
以下输入样例只有两对,实际测试数据可能有多对值。
输出格式:
对每一组输入,如果a的绝对值>1000,输出|a|>1000,否则输出a+b的值。
输入样例:
18 -299
1001 -9
-1001 8
输出样例:
-281
|a|>1000
|a|>1000
代码长度限制
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);
while(in.hasNextInt())
int a = in.nextInt();
int b = in.nextInt();
if (Math.abs(a)>1000)
System.out.println("|a|>1000");
else
System.out.println(a+b);
7-2 jmu-Java-05集合-01-ListIntegerStack
7-2 jmu-Java-05集合-01-ListIntegerStack
分数 10
作者 郑如滨
单位 集美大学
定义IntegerStack接口,该接口描述了一个存放Integer的栈的常见方法:
public Integer push(Integer item); //如item为null,则不入栈直接返回null。否则直接入栈,然后返回item。
public Integer pop(); //出栈,如栈为空,则返回null。
public Integer peek(); //获得栈顶元素,如栈顶为空,则返回null。注意:不要出栈
public boolean empty(); //如过栈为空返回true
public int size(); //返回栈中元素数量
定义IntegerStack的实现类ArrayListIntegerStack,内部使用ArrayList存储。该类中包含:
构造方法:
在无参构造方法中新建ArrayList或者LinkedList,作为栈的内部存储。
思考:查询JDK文档,尝试说明本题到底使用哪个List实现类最好。
方法:
public String toString() //用于输出List中的内容,可直接调用List的toString()方法。可用System.out.println(list)进行输出。
提示:
不建议使用top指针。最好直接复用List实现类中已有的方法。
pop时应将相应的元素从列表中移除。
main方法说明
建立ArrayIntegerStack对象
输入m个值,均入栈。每次入栈均打印入栈返回结果。
输出: 栈顶元素,输出是否为空,然后输出size.
输出栈中所有元素(调用其toString()方法)
输入x,然后出栈x次,每次均打印出栈的对象。
输出:栈顶元素,输出是否为空,输出size。注意:这里的输出栈顶元素,仅输出、不出栈。
输出栈中所有元素(调用其toString()方法)。注意:返回null,也要输出。
思考:
如果使用LinkedList来实现IntegerStack,怎么实现?测试代码需要进行什么修改?
输入样例
5
1 3 5 7 -1
2
输出样例
1
3
5
7
-1
-1,false,5
[1, 3, 5, 7, -1]
-1
7
5,false,3
[1, 3, 5]
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
import java.util.LinkedList;
import java.util.Scanner;
interface IntegerStack
public Integer push(Integer item);
public Integer pop();
public Integer peek();
public boolean empty();
public int size();
class ArrayListIntegerStack implements IntegerStack
LinkedList linkedList=new LinkedList();
public Integer push(Integer item)
if (item==null)
return null;
linkedList.push(item);
return item;
public Integer pop()
if (linkedList.size()==0)
return null;
return (int)linkedList.pop();
public Integer peek()
if (linkedList.size()==0)
return null;
return (int)linkedList.peek();
public boolean empty()
return linkedList.isEmpty();
public int size()
return linkedList.size();
public String toString()
String s="";
s+="[";
int i=linkedList.size();
if (i!=0)
i--;
for (;i>0;i--)
s+=linkedList.get(i)+", ";
s+=linkedList.get(i)+"]";
else
s+="]";
return s;
public class Main
public static void main(String[] args)
Scanner sc=new Scanner(System.in);
int num=sc.nextInt();
ArrayListIntegerStack arrayListIntegerStack = new ArrayListIntegerStack();
for (int i=0;i<num;i++)
int number=sc.nextInt();
System.out.println(arrayListIntegerStack.push(number));
System.out.println(arrayListIntegerStack.peek()+","+arrayListIntegerStack.empty()+","+arrayListIntegerStack.size());
System.out.println(arrayListIntegerStack.toString());
int pop_num=sc.nextInt();
for (int i=0;i<pop_num;i++)
System.out.println(arrayListIntegerStack.pop());
System.out.println(arrayListIntegerStack.peek()+","+arrayListIntegerStack.empty()+","+arrayListIntegerStack.size());
System.out.println(arrayListIntegerStack.toString());
7-8 设计圆和圆柱体
分数 10
作者 殷伟凤
单位 浙江传媒学院
编写一个完整的Java Application 程序。包含类Circle、Cylinder、Main,具体要求如下。
(1)编写类Circle,表示圆形对象,包含以下成员
①属性:
- radius:私有,double型,圆形半径;
②方法: - Circle(double radius), 构造方法,用参数设置圆的半径
- Circle(),构造方法,将圆形初始化为半径为0。
- void setRadius(double r):用参数r设置radius的值
- double getRadius():返回radius的值
- double getArea(),返回圆形的面积
- double getPerimeter(),返回圆形的周长
- public String toString( ),将把当前圆对象的转换成字符串形式,例如圆半径为10.0,返回字符串"Circle(r:10.0)"。
(2)编写一个类Cylinder,表示圆柱形对象,包含以下成员
①属性: - height:私有,double型,圆柱体高度;
- circle:私有,Circle类型,圆柱体底面的圆形;
②方法: - Cylinder(double height,Circle circle), 构造方法,用参数设置圆柱体的高度和底面的圆形
- Cylinder(),构造方法,将圆柱体的高度初始化为0,底面圆形初始化为一个半径为0的圆形。
- void setHeight(double height):用参数height设置圆柱体的高度
- double getHeight():返回圆柱体的高度
- void setCircle(Circle circle):用参数circle设置圆柱体底面的圆形
- Circle getCircle():返回圆柱体底面的圆形
- double getArea(),重写Circle类中的area方法,返回圆柱体的表面积
- double getVolume(),返回圆柱体的体积
- public String toString( ),将把当前圆柱体对象的转换成字符串形式,例如半径为10.0,高为5.0,返回字符串"Cylinder(h:5.0,Circle(r:10.0))"。
(3)编写公共类Main,在main()方法中实现如下功能
输入一个整数n,表示有n个几何图形。
对于每一个几何图形,先输入一个字符串,“Circle”表示圆形,“Cylinder”表示圆柱体。
如果是圆形,输入一个浮点数表示其半径。要求计算其面积和周长并输出。
如果是圆柱体,输入两个浮点数分别表示其半径和高度。要求计算其面积和体积并输出。
将以下代码附在自己的代码后面:
public class Main
public static void main(String args[])
Scanner input = new Scanner(System.in);
int n = input.nextInt();
for(int i = 0; i < n; i++)
String str = input.next();
if(str.equals(“Circle”))
Circle c = new Circle(input.nextDouble());
System.out.println(“The area of " + c.toString() + " is " + String.format(”%.2f",c.getArea()));
System.out.println(“The perimeterof " + c.toString() + " is “+ String.format(”%.2f”,c.getPerimeter()));
else if(str.equals(“Cylinder”))
Cylinder r = new Cylinder(input.nextDouble(), new Circle(input.nextDouble()));
System.out.println(“The area of " + r.toString() + " is " + String.format(”%.2f",r.getArea()));
System.out.println(“The volume of " + r.toString() + " is " + String.format(”%.2f",r.getVolume()));
输入格式:
第一行输入一个整数n,表示有n个几何图形。
以下有n行,每行输入一个几何图形的数据。
每行先输入一个字符串表示几何图形的类型,“Circle”表示圆形,“Cylinder”表示圆柱体。
如果是圆形,输入一个浮点数表示其半径。
如果是圆柱体,输入两个浮点数分别表示其半径和高度。
输出格式:
如果是圆形,要求计算其面积和周长并输出。
如果是圆柱体,要求计算其面积和体积并输出。
注意,圆周率用Math.PI
输入样例:
在这里给出一组输入。例如:
4
Circle 10.0
Cylinder 10.0 10.0
Circle 1.1
Cylinder 1.1 3.4
输出样例:
在这里给出相应的输出。例如:
The area of Circle(r:10.0) is 314.16
The perimeterof Circle(r:10.0) is 62.83
The area of Cylinder(h:10.0,Circle(r:10.0)) is 1256.64
The volume of Cylinder(h:10.0,Circle(r:10.0)) is 3141.59
The area of Circle(r:1.1) is 3.80
The perimeterof Circle(r:1.1) is 6.91
The area of Cylinder(h:1.1,Circle(r:3.4)) is 96.13
The volume of Cylinder(h:1.1,Circle(r:3.4)) is 39.95
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
import java.util.Scanner;
class Circle
private double radius;
public Circle()radius=0;//构造方法:将圆的半径初始化为0
public Circle(double radius)
this.radius = radius;//构造方法:用参数设置圆的半径
public void setRadius(double radius)
this.radius = radius;
public double getRadius()
return radius;
public double getArea()
return Math.pow(radius,2)*3.1415926f;//返回圆形的面积
public double getPerimeter()
return 2*radius*3.1415926f; //返回圆形的周长
public String toString( )
return "Circle(r:"+this.radius+")";
class Cylinder extends Circle
private double height;
private Circle circle;
public Cylinder(double height, Circle circle)
this.height = height;
this.circle = circle;//构造方法:用参数设置高度及圆形
public Cylinder()this.height=0;//构造方法初始化高度为0
public void setHeight(double height)
this.height = height;
public void setCircle(Circle circle)
this.circle = circle;
public double getHeight()
return height;
public Circle getCircle()
return circle;
public double getArea()
return height*circle.getPerimeter()+circle.getArea()*2;//重写Circle类中的area方法,返回圆柱体的表面积
public double getVolume()
return circle.getArea()*height;
public String toString( )
return "Cylinder(h:"+this.height+","+this.circle.toString()+")";//当前对象转换为字符串模式
public class Main
public static void main(String args[])
Scanner input = new Scanner(System.in);
int n = input.nextInt();
for(int i = 0; i < n; i++)
String str = input.next();
if(str.equals("Circle"))
Circle c = new Circle(input.nextDouble());
System.out.println("The area of " + c.toString() + " is " + String.format("%.2f",c.getArea()));
System.out.println("The perimeterof " + c.toString() + " is "+ String.format("%.2f",c.getPerimeter()));
else if(str.equals("Cylinder"))
Cylinder r = new Cylinder(input.nextDouble(), new Circle(input.nextDouble()));
System.out.println("The area of " + r.toString() + " is " + String.format("%.2f",r.getArea()));
System.out.println("The volume of " + r.toString() + " is " + String.format("%.2f",r.getVolume()));
input.close();
7-9 jmu-Java-06异常-02-使用异常机制处理异常输入
7-9 jmu-Java-06异常-02-使用异常机制处理异常输入
分数 10
作者 郑如滨
单位 集美大学
使用异常处理输入机制,让程序变得更健壮。
main方法:
输入n,创建大小为n的int数组。
输入n个整数,放入数组。输入时,有可能输入的是非整型字符串,这时候需要输出异常信息,然后重新输入。
使用Arrays.toString输出数组中的内容。
输入样例:
5
1
2
a
b
4
5
3
输出样例:
java.lang.NumberFormatException: For input string: “a”
java.lang.NumberFormatException: For input string: “b”
[1, 2, 4, 5, 3]
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
import java.util.Arrays;
import java.util.Scanner;
public class Main
public static void main(String[] args)
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int []nums = new int[n];
int len = 0;
String input;
while(len<n)
input = in.next();
try
int lateNum = Integer.parseInt(input);
nums[len++]= lateNum;
catch (Exception e)
// TODO: handle exception
System.out.println(e);
System.out.println(Arrays.toString(nums));
7-10 较为复杂情况下的求和
分数 10
作者 abc618382
单位 河北科技大学
计算一个给定序列的整数和,序列中可能会混入无关的字母,求和的时候需要忽略。
输入格式:
输入为一行,元素直接使用空格分割。
输出格式:
输出为序列整数部分的和。
输入样例:
在这里给出一组输入。例如:
1 2 3 a 4 5
输出样例:
在这里给出相应的输出。例如:
15
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
import java.util.Scanner;
public class Main
public static void main(String[] args)
int sum = 0;
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
String[] split = s.split(" ");
for (int i = 0; i < split.length; i++)
try
sum += Integer.parseInt(split[i]);
catch (Exception e)
continue;
System.out.println(sum);
7-11 编程题:判断闰年
分数 10
作者 abc618382
单位 河北科技大学
根据输入的正整数y所代表的年份,计算输出该年份是否为闰年
闰年的判断标准:
能够被4整除且不能被100整除的年份
或者能够被400整除的年份
输入格式:
输入n取值范围是 【1…3000】
输出格式:
是闰年,输出 yes
非闰年,输出 no
输入样例:
在这里给出一组输入。例如:
100
输出样例:
在这里给出相应的输出。例如:
no
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
import java.util.Scanner;
public class Main
public static void main(String[] args)
int n;
Scanner input=new Scanner(System.in);
n=input.nextInt();
if(n%4==0&&n%100!=0||n%400==0)
System.out.println("yes");
else
System.out.println(JAVA面向对象程序设计_PTA题目集04-06总结分析