致谢:感谢@WalkingWithTheWind~帮我寻找PTA中的CSS选择器

1. 编程题:判断闰年 (10 分)

根据输入的正整数y所代表的年份,计算输出该年份是否为闰年 闰年的判断标准:
能够被4整除且不能被100整除的年份
或者能够被400整除的年份
输入格式:
输入n取值范围是 【1…3000】
输出格式:
是闰年,输出 yes
非闰年,输出 no
输入样例:
在这里给出一组输入。例如:
100
结尾无空行
输出样例:
在这里给出相应的输出。例如:
no
结尾无空行
答案:

import java.util.*;public class Main{public static void main(String[] args){Scanner scanner = new Scanner(System.in);int year;year = scanner.nextInt();if(year%4==0&&year%100!=0||year%400==0){System.out.println("yes");}else{System.out.println("no");}}
}

2. 学投资 (10 分)

小白学习了一些复利投资知识,想比较一下复利能多赚多少钱(所谓复利投资,是指每年投资的本金是上一年的本金加收益。而非复利投资是指每年投资金额不包含上一年的收益,即固定投资额)。假设他每年固定投资M元(整数),每年的年收益达到P(0<P<1,double),那么经过N(整数)年后,复利投资比非复利投资多收入多赚多少钱呢?计算过程使用双精度浮点数,最后结果四舍五入输出整数(Math的round函数)。
输入格式:
M P N
输出格式:
复利收入(含本金),非复利收入(含本金),复利比非复利收入多的部分(全部取整,四舍五入)
输入样例:
10000 0.2 3
结尾无空行
输出样例:
17280 16000 1280
结尾无空行
答案:

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner in=new Scanner(System.in);long M=in.nextLong();double P=in.nextDouble(),sum1,sum2,c;int N=in.nextInt();sum1=M*(1+N*P);sum2=M*(Math.pow((1+P),(double)N));if(sum1>sum2) c=sum1-sum2;else c=sum2-sum1;System.out.print(Math.round(sum2)+" ");System.out.print(Math.round(sum1)+" ");System.out.print(Math.round(c));}
}

3. 点是否在圆内? (10 分)

编写程序,提示用户输入一个点(x,y),然后检查这个点是否在以原点(0,0)为圆心、半径为10的圆内。
输入格式:
输入任意一个点的x轴和y轴坐标值,且两个值之间空格分隔。
输出格式:
若点在圆内,输出1,否则输出0。
输入样例:
4 5
结尾无空行
输出样例:
1
结尾无空行
答案:

import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n1 = sc.nextInt();int n2 = sc.nextInt();System.out.println(Math.sqrt(n1*n1+n2*n2)<=10?1:0);}
}

4. 给出一个月的总天数 (10 分)

编写程序,提示用户输入月份和年份,然后显示这个月的天数。
输入格式:
输入任意符合范围(1月12月)的月份和(1900年9999年)年份,且两个值之间空格分隔。
输出格式:
输出给定年份和月份的天数。
输入样例:
2 2000
结尾无空行
输出样例:
29
结尾无空行
答案:

import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n1 = sc.nextInt();int n2 = sc.nextInt();int n3;switch(n1){case 2:if(n2%4==0&&n2%100!=0||n2%400==0)n3=29;elsen3=28;break;case 1:case 3:case 5:case 7:case 8:case 10:case 12:n3=31;break;default:n3=30;}System.out.println(n3);}
}

5. 成绩分级管理 (10 分)

学校进行成绩分级管理,取消分数制,改为成绩分级评定。具体办法是:小于60分为E类;60分至70分(不含70分)为D类;70分至80分(不含)为C类;80分至90分(不含)为B类;90分以上为A类。设计一个程序,对输入的成绩进行等价划分
输入格式:
输入一个整数表示成绩。
输出格式:
根据输入的成绩,输出对应的等级(大写字母)
输入样例:
在这里给出一组输入。例如:
72
结尾无空行
输出样例:
在这里给出相应的输出。例如:
C
结尾无空行
答案:

import java.util.*;
public class Main{public static void main(String[] args){Scanner scanner = new Scanner(System.in);int score;score = scanner.nextInt();switch(score/10){case 9:case 10:System.out.println("A");break;case 8:System.out.println("B");break;case 7:System.out.println("C");break;case 6:System.out.println("D");break;default:System.out.println("E");break;}}
}

6. Java中二进制位运算 (10 分)

本题目要求读入2个整数和一个字符,然后根据这个字符值,对两个整数进行相应的二进制位的运算。要求必须使用switch选择结构。
(1)如果字符是&,则两个整数进行二进制位的与运算;
(2)如果字符是 |,则两个整数进行二进制位的或运算;
(3)如果字符是^,则两个整数进行二进制位异或运算;
(4)如果是其他字符,则固定输出信息:ERROR
输入格式:
在一行中依次输入整数1,字符,整数2。
输出格式:
类似3 & 4 = 0
其中,运算符号&的前后都有一个空格,等号的前后也都有一个空格。 上面表示3和4做二进制的与运算,结果是0。
输入样例:
3的二进制是0011,4的二进制是0100,二者与运算的结果是0。
3 & 4
结尾无空行
输出样例:
注意&和=的前后,都是有且仅有一个空格。
3 & 4 = 0
结尾无空行
输入样例:
7 X 3
结尾无空行
输出样例:
ERROR
结尾无空行
答案:

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String str = scanner.nextLine();String [] arr = str.split("\\s+");int num1 = Integer.parseInt(arr[0]);int num2 = Integer.parseInt(arr[2]);switch (arr[1]){case "&":System.out.println(num1 + " & " + num2 + " = " + (num1&num2));break;case "|":System.out.println(num1 + " | " + num2 + " = " + (num1|num2));break;case "^":System.out.println(num1 + " ^ " + num2 + " = " + (num1^num2));break;default:System.out.println("ERROR");break;}}
}

7. JAVA-求整数序列中出现次数最多的数 (10 分)

要求统计一个整型序列中出现次数最多的整数及其出现次数。
输入格式:
在一行中给出序列中整数个数N(0<N≤1000),依次给出N个整数,每个整数占一行。
输出格式:
在一行中输出出现次数最多的整数及其出现次数,数字间以空格分隔。题目保证这样的数字是唯一的。
输入样例:
在这里给出一组输入。例如:
10
3
2
-1
5
3
4
3
0
3
2
结尾无空行
输出样例:
在这里给出相应的输出。例如:
3 4
结尾无空行
答案:

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
//使用HashMap键值的形式对存放输入的数和次数
public class Main {public static void main(String[] args) {Scanner cin = new Scanner(System.in);HashMap<Integer,Integer> mapCount = new HashMap<>();int n = cin.nextInt();for(int i = 0;i < n;i++){int x = cin.nextInt();if(mapCount.containsKey(x)){mapCount.put(x,mapCount.get(x)+1);}else{mapCount.put(x,1);}}int k = 0,sum = 0;//Map.Entry类提供getKey/getValue方法for(Map.Entry<Integer,Integer> entry: mapCount.entrySet()){int x = entry.getKey();int y = entry.getValue();if(y > sum){k = x;sum = y;}}System.out.println(k+" "+sum);}
}

8. 统计正数和负数的个数然后计算这些数的平均值 (10 分)

编写程序,输入未指定个数的整数,判断读入的正数有多少个,读入的负数有多少个,然后计算这些输入值得总和及平均值(不对0计数)。当输入为0时,表明程序结束。将平均值以double型数据显示。
输入格式:
输入在一行中给出一系列整数,其间以空格分隔。当读到0时,表示输入结束,该数字不要处
输出格式:
在第一行中输出正整数的个数; 在第二行中输出负整数的个数; 在第三行中输出这些输入值的总和(不对0计数); 在第四行中输出这些输入值的平均值(double型数据)。
输入样例:
1 2 -1 3 0
结尾无空行
输出样例:
3
1
5
1.25
结尾无空行
答案:

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner input = new Scanner(System.in);int positiveNum = 0;int negativeNum = 0;int sum = 0;while (true) {int x = input.nextInt();if (x == 0)break;if (x > 0)positiveNum++;elsenegativeNum++;sum += x;}if (positiveNum + negativeNum != 0) {System.out.println(positiveNum);System.out.println(negativeNum);System.out.println(sum);double average = 0.0;average = (double)sum/ (positiveNum + negativeNum);System.out.println(average);}}
}

9. 分队列 (10 分)

班级第一次列队,通常老师会让同学按身高排成一列,然后1、2报数,喊到1的同学向前一步,就这样,队伍就变成两列了。假设现在一个班级有n个同学,并且他们已经按身高排成了一列,同学按身高从1到n编号,你能告诉我最后哪些编号的同学站在了第一列么?
输入格式:
输入一个正整数n,表示班级的人数。
输出格式:
按顺序输出所有在第一列的同学对应的编号,每两个编号之间用一个空格隔开。
输入样例:
11
输出样例:
1 3 5 7 9 11
答案:

import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner in=new Scanner(System.in);int n=in.nextInt();int count=1;while(count<=n-2){System.out.print(count+" ");count+=2;}System.out.print(count);}}

10. 累加器 (10 分)

请你实现一个累加器。输入n个非负整数,输出他们的和。 1<n<1000,而每个数则<10000。
输入格式:
输入包括两行。 第一行:包括一个整数n,表示总共有n个数。 第二行:包含n个整数。
输出格式:
输出n个数的和。
输入样例:
4
3 2 1 4
结尾无空行
输出样例:
10
结尾无空行
答案:

import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner in=new Scanner(System.in);int n=in.nextInt();int sum=0;for(int i=0;i<n;i++){int x=in.nextInt();sum+=x;}System.out.print(sum);}}

11. 我是升旗手 (10 分)

一年一度的升旗手选拔又要到了,学校要求每个班级选出一位同学做升旗手的候选人。因 为升旗手对身高有严格的要求,所以班主任决定选班级里个子最高的同学(如果两位同学 一样高,则选任意一位)。你能很快地给老师答案么?
输入格式:
输入包括两行。 第一行:包括一个整数n,表示班级里共有n位同学。 第二行:包含n个三位数,表示每一位同学的身高。
输出格式:
输出身高最高的同学的身高。
输入样例:
4
130 125 129 140
结尾无空行
输出样例:
140
结尾无空行
答案:

import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner in=new Scanner(System.in);int n=in.nextInt();int max=0;for(int i=0;i<n;i++){int x=in.nextInt();if(x>max) max=x;}System.out.print(max);}}

12. 666 (10 分)

中国人非常喜欢6这个数字,因为大家总爱说66大顺啊。数学狂人李某人喜欢把什么都数字化,于是她把顺利这个词也定义了数量级,6代表1级顺利,66代表2级顺利,666代表3级顺利,以此类推。你看,数学狂人的世界总是让人无法理解。今天,李某人决定将数学进行到底,现在她设前n级顺利的和是sn。
sn=6+66+666+…+66…66(n个6)。
假设你已经知道了数字n,那么,你能帮李某人求出sn么?
输入格式:
输入一个正整数n,n的范围是[0,10)。
输出格式:
输出Sn的值。
输入样例:
2
结尾无空行
输出样例:
72
结尾无空行
答案:

import java.util.Scanner;
public class Main {public static void main(String[] args){Scanner in = new Scanner(System.in);int n;n = in.nextInt();int sum=0,num=0;int x=1;for(int i=1;i<=n;i++){num += 6*x;sum += num;x *= 10;}System.out.println(sum);}}

13. 倒顺数字串 (10 分)

输入正整数n,输出它的倒顺数字串。如n=6时,输出
1 2 3 4 5 6 5 4 3 2 1
输入格式:
输入一个正整数n,n的范围是[1,50]。
输出格式:
n的倒顺数字串,每两个数字之间只用一个空格隔开。
输入样例:
6
结尾无空行
输出样例:
1 2 3 4 5 6 5 4 3 2 1
结尾无空行
答案:

import java.util.Scanner;
public class Main {public static void main(String[] args){Scanner in = new Scanner(System.in);int n = in.nextInt();if(n!=1){for(int i=1;i<=n;i++){System.out.print(i+" ");}for (int i=n-1;i>1;i--){System.out.print(i+" ");}}System.out.print(1);}}

14. 上三角数字三角形 (10 分)

输入一个正整数n,输出具有n层的上三角数字三角形。
输入格式:
只有一个正整数n,1<=n<=100。
输出格式:
一个上三角数字三角形,每个数字占四个字符位置。
输入样例:
5
结尾无空行
输出样例:
1 2 3 4 5
6 7 8 9
10 11 12
13 14
15
结尾无空行
答案:

import java.util.Scanner;
public class Main {public static void main(String[] args){Scanner in = new Scanner(System.in);int n = in.nextInt();int count=1;for(int i=1;i<=n;i++){for (int j=1;j<=n-i+1;j++){System.out.printf("%4d",count);count++;}System.out.println();}}
}

15. 求质数 (10 分)

本题目要求输入一个大于等于2的正整数,求所有不大于该正整数的质数。
输入格式:
输入一个不小于2的正整数。
输出格式:
对输入的正整数,输出不大于该正整数的质数。
输入样例:
30
结尾无空行
输出样例:
2 3 5 7 11 13 17 19 23 29
结尾无空行
答案:

import java.util.Scanner;
public class Main {public static void main(String[] args){Scanner in = new Scanner(System.in);int num = in.nextInt();for(int i=2;i<=num;i++){int j;for(j=2;j<i;j++){if(i%j==0)break;}if (i==j)System.out.print(i+" ");}}}

16. jmu-Java-03面向对象基础-01-构造函数与toString (10 分)

定义一个有关人的Person类,内含属性:
String name、int age、boolean gender、int id,所有的变量必须为私有(private)。 注意:属性顺序请严格按照上述顺序依次出现。
1.编写无参构造函数:
打印"This is constructor"。
将name,age,gender,id按照name,age,gender,id格式输出
2.编写有参构造函数
依次对name,age,gender赋值。
3.覆盖toString函数:
按照格式:类名 [name=, age=, gender=, id=]输出。建议使用Eclipse自动生成.
4.对每个属性生成setter/getter方法
5.main方法中
首先从屏幕读取n,代表要创建的对象个数。
然后输入n行name age gender , 调用上面2编写的有参构造函数新建对象。
然后将刚才创建的所有对象逆序输出。
接下来使用无参构造函数新建一个Person对象,并直接打印该对象。
输入样例:
3
a 11 false
b 12 true
c 10 false
输出样例:
Person [name=c, age=10, gender=false, id=0]
Person [name=b, age=12, gender=true, id=0]
Person [name=a, age=11, gender=false, id=0]
This is constructor
null,0,false,0
Person [name=null, age=0, gender=false, id=0]
答案:

import java.util.Scanner;class Person{private String name = null;private int age = 0;private boolean gender = false;private int id = 0;public Person() {System.out.println("This is constructor");System.out.println(name+","+age+","+gender+","+id);System.out.println("Person [name="+name+", age="+age+", gender="+gender+", id="+id+"]");}public Person(String n, int a, boolean g) {this.name = n;this.age = a;this.gender = g;}public String toString() {System.out.println("Person [name="+this.name+", age="+this.age+", gender="+this.gender+", id="+0+"]");return name;}
}public class Main {public static void main(String[] args) {Scanner reader = new Scanner(System.in);int number = reader.nextInt();Person[] per = new Person[number];for(int i=0; i<per.length; i++) {String name = reader.next();int age = reader.nextInt();boolean genter = reader.nextBoolean();per[i] = new Person(name,age,genter);}for(int x=per.length-1; x>=0;x--){per[x].toString();}per.toString();Person s = new Person();}}

17. 学生类-构造函数 (10 分)

定义一个有关学生的Student类,内含类成员变量: String name、String sex、int age,所有的变量必须为私有(private)。
1.编写有参构造函数: 能对name,sex,age赋值。
2.覆盖toString函数:
按照格式:类名 [name=, sex=, age=]输出。使用idea自动生成,然后在修改成该输出格式
3.对每个属性生成setter/getter方法
4.main方法中
•输入1行name age sex , 调用上面的有参构造函数新建对象。
输入样例:
tom 15 male
结尾无空行
输出样例:
Student [name=‘tom’, sex=‘male’, age=15]
结尾无空行
答案:

import java.util.Scanner;class Student{private String name;private String sex;private int age;public Student(String name, String sex, int age) {this.name = name;this.sex = sex;this.age = age;}@Overridepublic String toString() {return "Student [name='" + name + "', sex='" + sex + "', age=" + age + "]";}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}public class Main{public static void main(String[] args) {Scanner sc = new Scanner(System.in);String name=sc.next();int age=sc.nextInt();String sex=sc.next();Student s1=new Student(name,sex,age);System.out.println(s1.toString());}}

18. 定义类 (10 分)

请补充以下代码,完成输出要求。(注意:需要提交完整代码)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int a,b,c,d,e;
a = in.nextInt();
b = in.nextInt();
c = in.nextInt();
d = in.nextInt();
e = in.nextInt();
RR rr = new RR();
double dd = rr.fun(a,b,c,d,e);
System.out.printf("%.2f",dd);
}
}
class RR{

}
输入格式:
在一行中给出5个不超过1000的正整数。
输出格式:
输出5个整数的平均值,保留小数点后两位。
输入样例:
1 2 3 4 5
结尾无空行
输出样例:
3.00
结尾无空行
答案:


import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);int a,b,c,d,e;a = in.nextInt();b = in.nextInt();c = in.nextInt();d = in.nextInt();e = in.nextInt();RR rr = new RR();double dd = rr.fun(a,b,c,d,e);System.out.printf("%.2f",dd);}
}class RR{public double fun(int a, int b, int c, int d, int e){return (a+b+c+d+e)/5;}
}

19. 计算年龄 (10 分)

定义一个Birthday类,其成员变量有3个整形变量(出生的年月日):year,month,day;提供构造方法对这3个成员变量进行初始化;提供成员变量的get、set方法;成员函数有getAge(),功能是实现计算到2017年12月25日时该Birthday对象的年龄。编写程序测试这个类。
输入格式:
输入出生的年、月、日(注:输入的年月日以换行隔开)
输出格式:
计算得到年龄
输入样例:
在这里给出一组输入。例如:
1995
12
23
结尾无空行
输出样例:
在这里给出相应的输出。例如:
age=22
结尾无空行
答案:

import java.util.Scanner;
class Birthday{private int year;private int month;private int day;    public Birthday(int year, int month, int day) {this.year = year;this.month = month;this.day = day;}public int getYear() {return year;}public void setYear(int year) {this.year = year;}public int getMonth() {return month;}public void setMonth(int month) {this.month = month;}public int getDay() {return day;}public void setDay(int day) {this.day = day;}public static void getAge(int year,int month,int day){int age=0;age = 2017-year;if(month==12 && day>=25){age--;}System.out.println("age="+age);}
}
public class Main {public static void main(String[] args) {Scanner scan =new Scanner(System.in);int year=scan.nextInt();int month=scan.nextInt();int day=scan.nextInt();Birthday.getAge(year,month,day);}}

20. 定义类与创建对象 (10 分)

定义一个类Person,定义name和age属性,定义有参的构造方法对name和age进行初始化。在测试类中创建该类的2个对象,姓名、年龄分别为lili、19和lucy、20,在屏幕打印出2个对象的姓名和年龄。
输入格式:
本题目无输入
输出格式:
在一行中输出一个人的姓名和年龄
输入样例:
在这里给出一组输入。例如:
结尾无空行
输出样例:
在这里给出相应的输出。例如:
this person is lili,her age is 19
this person is lucy,her age is 20
结尾无空行
答案:

class Person{String name;int age;Person(String n,int a){name = n;age=a;
}
}
public class Main{public static void main(String args[]){Person p1 = new Person("lili",19);Person p2 = new Person("lucy",20);System.out.println("this person is "+p1.name+",her age is "+p1.age);System.out.print("this person is "+p2.name+",her age is "+p2.age);
}
}

21. 设计一个BankAccount类 (10 分)

设计一个BankAccount类,这个类包括:
(1)一个int型的balance表时账户余额。
(2)一个无参构造方法,将账户余额初始化为0。
(3)一个带一个参数的构造方法,将账户余额初始化为该输入的参数。
(4)一个getBlance()方法,返回账户余额。
(5)一个withdraw()方法:带一个amount参数,并从账户余额中提取amount指定的款额。
(6)一个deposit()方法:带一个amount参数,并将amount指定的款额存储到该银行账户上。
设计一个Main类进行测试,分别输入账户余额、提取额度以及存款额度,并分别输出账户余额。
输入格式:
依次输入账户余额、提取额度、存款额度
输出格式:
依次输出初始账户余额、提取amount额度后的账户余额、存入amount后的账户余额
输入样例:
在这里给出一组输入。例如:
700
70
7
输出样例:
在这里给出相应的输出。例如:
700
630
637
答案:

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner in=new Scanner(System.in);int a,b,c;a=in.nextInt();b=in.nextInt();c=in.nextInt();BankAccount m=new BankAccount(a);System.out.println(m.getBalance());System.out.println(m.withdraw(b));System.out.println(m.withdraw(b)+m.deposit(c));}}
class BankAccount{int balance;BankAccount(){this.balance=0;}BankAccount(int balance){this.balance=balance;}public int getBalance() {return balance;}public int withdraw(int amount) {return balance-amount;}public int deposit(int amount) {return amount;}
}

22. 评委打分 (10 分)

班级里要搞智力竞赛啦!同学们都踊跃参加。进入最后决赛的是10个同学,随着一道道题目的出示,有时是1号选手得分,有时是5号选手得分,每次答对者得10分,最后结果如何呢?
输入格式:
第一行有十个整数,表示十位同学的初始分。第二行一个整数n,表示有n道题竞赛。 接下去有n行,每行有一个数字x,x表示本次可以加分的选手序号(每次答对者得10分)。
输出格式:
10个同学最终的得分值,每两位同学之间有一个空格。
输入样例:
10 0 0 0 10 10 0 0 0 10
3
1
10
1
结尾无空行
输出样例:
30 0 0 0 10 10 0 0 0 20
结尾无空行
答案:

import java.util.Scanner;public class Main{public static void main(String []args){Scanner s = new Scanner(System.in);int a[]=new int [10];for(int i=0;i<10;i++){a[i]=s.nextInt();}int n = s.nextInt();                        //代表接下来输入n个数int j;for(int i=0;i<n;i++){j=s.nextInt();j--;a[j]+=10;}for(int i=0;i<10;i++){System.out.print(a[i]);if(i!=9)System.out.print(" ");}}
}

23. 结伴同行去秋游 (10 分)

可以去秋游啦!同学们别提多高兴了!老师说,单独行动有点危险,那么我们还是结伴同行吧。结伴的规则是这样的:排在最前的一个人和排在最后的那个人结成同伴,排在第2个的与排在倒数第2个的结成同伴…依次类推,2个一组成同伴。好,请马上排出来吧!老师语音一落,同学们“唰唰唰”很快结伴好了,准备出发喽!
输入格式:
第一行是一个整数n,表明n个同学。(2<=n<=50,n为偶数) 。 第二行n个整数表明n个同学的学号,学号之间有一个空格。
输出格式:
共n/2行,每行二个整数,表明结伴同学的学号,两个学号之间有一个空格。
输入样例:
6
5 6 4 12 3 2
结尾无空行
输出样例:
5 2
6 3
4 12
结尾无空行
答案:

import java.util.Scanner;public class Main{public static void main(String[] args) {Scanner input = new Scanner(System.in);int n=input.nextInt();int a[]=new int[n];for(int i=0;i<n;++i) {a[i]=input.nextInt();}for(int i=0,j=n-1;i<j;++i,--j) {System.out.println(a[i]+" "+a[j]);}}
}

24. 数组元素的删除 (10 分)

完成数组元素的移动功能:假设数组有n个元素,输入一个数x,把数组的第x个位置的元素删除了,后面的元素依次前进一个位置。 重复若干次这样的删除,得到最后的结果。
输入格式:
第一行包括一个整数n(1<=n<=100),表示数组元素的个数。 第二行输入n个数组元素,均为整数,用空格隔开。 第三行输入一个数k(1<=k<=100),表示要进行k次删除。 接下来k行,每行一个数x,表示要删除第x个元素。
输出格式:
输出经过k次删除后的数组,每两个元素之间用空格隔开。
输入样例:
10
1 2 3 4 5 6 7 8 9 10
4
3
2
4
6
结尾无空行
输出样例:
1 4 5 7 8 10
结尾无空行
答案:

import java.util.Scanner;
import java.util.LinkedList;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);LinkedList<Integer> list = new LinkedList<Integer>();int n = sc.nextInt();for(int i=0;i<n;i++) {list.add(sc.nextInt());}int k = sc.nextInt();for(int i=0;i<k;i++) {int index = sc.nextInt();list.remove(index-1);}sc.close();for(int i=0;i<list.size();i++) {System.out.print(list.get(i));if(i<list.size()-1) {System.out.print(" ");}} }
}

25. 定义商品类,封装成员变量,输出对象 (10 分)

定义一个商品类。创建对象并按指定格式输出它。 商品类要求:
(1)成员变量:商品编号(String) 、商品名称(String)、商品单价(double)
(2)成员变量封装,定义为私有属性,并为每个成员变量定义getXXXX,setXXXX方法
(3)定义构造方法,要求带三个参数,参数值用于给成员变量赋值。
(4)重写toString()方法,将对象转换为字符串,格式:商品编号,商品名称,商品单价
测试类要求:
按指定的格式 输入商品信息,调用构造方法生成对象,并输出它。
例:输入:WJ002 记事本 5.5
输出:WJ002,记事本,5.5
输入商品的信息,每个属性值之间用1个空格分隔。 输出 格式,商品的每个属性值之间用逗号分隔。
输入样例:
WJ002 记事本 5.5
结尾无空行
输出样例:
WJ002,记事本,5.5
结尾无空行
答案:

import java.util.Scanner;
class stuff{private String number;private String name;private double price;public String getNumber() {return number;}public void setNumber(String number) {this.number = number;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}stuff(String number, String name,double price ) {//带参的构造方法this.name = name;this.number = number;this.price = price;}public String toString(){return getNumber()+","+getName()+","+getPrice();}}
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String number = sc.next();String name = sc.next();double price = sc.nextDouble();stuff a = new stuff(number, name, price);System.out.println(a.toString());}}

26. 图形继承 (10 分)

编写程序,实现图形类的继承,并定义相应类对象并进行测试。
类Shape,无属性,有一个返回0.0的求图形面积的公有方法public double getArea();//求图形面积
类Circle,继承自Shape,有一个私有实型的属性radius(半径),重写父类继承来的求面积方法,求圆的面积
类Rectangle,继承自Shape,有两个私有实型属性width和length,重写父类继承来的求面积方法,求矩形的面积
类Ball,继承自Circle,其属性从父类继承,重写父类求面积方法,求球表面积,此外,定义一求球体积的方法public double getVolume();//求球体积
类Box,继承自Rectangle,除从父类继承的属性外,再定义一个属性height,重写父类继承来的求面积方法,求立方体表面积,此外,定义一求立方体体积的方法public double getVolume();//求立方体体积
注意:
每个类均有构造方法,且构造方法内必须输出如下内容:Constructing 类名
每个类属性均为私有,且必须有getter和setter方法(可用Eclipse自动生成)
输出的数值均保留两位小数
主方法内,主要实现四个功能(1-4): 从键盘输入1,则定义圆类,从键盘输入圆的半径后,主要输出圆的面积; 从键盘输入2,则定义矩形类,从键盘输入矩形的宽和长后,主要输出矩形的面积; 从键盘输入3,则定义球类,从键盘输入球的半径后,主要输出球的表面积和体积; 从键盘输入4,则定义立方体类,从键盘输入立方体的宽、长和高度后,主要输出立方体的表面积和体积;
假如数据输入非法(包括圆、矩形、球及立方体对象的属性不大于0和输入选择值非1-4),系统输出Wrong Format
输入格式:
共四种合法输入
1 圆半径
2 矩形宽、长
3 球半径
4 立方体宽、长、高
输出格式:
按照以上需求提示依次输出
输入样例1:
在这里给出一组输入。例如:
1 1.0
结尾无空行
输出样例1:
在这里给出相应的输出。例如:
Constructing Shape
Constructing Circle
Circle’s area:3.14
结尾无空行
输入样例2:
在这里给出一组输入。例如:
4 3.6 2.1 0.01211
结尾无空行
输出样例2:
在这里给出相应的输出。例如:
Constructing Shape
Constructing Rectangle
Constructing Box
Box’s surface area:15.26
Box’s volume:0.09
结尾无空行
输入样例3:
在这里给出一组输入。例如:
2 -2.3 5.110
结尾无空行
输出样例2:
在这里给出相应的输出。例如:
Wrong Format
结尾无空行
答案:

import java.util.Scanner;class Shape{Shape(){System.out.println("Constructing Shape");}public double getArea() {return 0.0;}
}class Circle extends Shape{private double radius;Circle() {System.out.println("Constructing Circle");}@Overridepublic double getArea() {return radius*radius*Math.PI ;}public void setRadius(double radius) {this.radius = radius;}public double getRadius() {return radius;}}class Rectangle extends Shape{private double width,length;Rectangle() {System.out.println("Constructing Rectangle");}@Overridepublic double getArea() {return width*length;}public void setWidth(double width) {this.width = width;}public void setLength(double length) {this.length = length;}public double getWidth() {return width;}public double getLength() {return length;}}class Ball extends Circle{Ball(){System.out.println("Constructing Ball");}@Overridepublic double getArea() {return super.getArea()*4;}public double getVolume() {return getArea()/3*getRadius();}
}class Box extends Rectangle{private double height;Box(){System.out.println("Constructing Box");}@Overridepublic double getArea() {return 2*(getWidth()*getLength()+getWidth()*getHeight()+getLength()*getHeight());}public double getVolume() {return super.getArea()*height;}public void setHeight(double height) {this.height = height;}public double getHeight() {return height;}}public class Main {private static Scanner type;public static void main(String[] args) {type = new Scanner(System.in);int a=type.nextInt();if(a>4||a<1) {System.out.println("Wrong Format");return;}if(a==1) {double b=type.nextDouble();if(b<0) {System.out.println("Wrong Format");return;}Circle c=new Circle();c.setRadius(b);System.out.println("Circle's area:"+String.format("%.2f",c.getArea()));}if(a==2) {double b=type.nextDouble();double c=type.nextDouble();if(b<0||c<0) {System.out.println("Wrong Format");return;}Rectangle d=new Rectangle();d.setWidth(b);d.setLength(c);System.out.println("Rectangle's area:"+String.format("%.2f",d.getArea()));}if(a==3) {double b=type.nextDouble();if(b<0) {System.out.println("Wrong Format");return;}Ball c=new Ball();c.setRadius(b);System.out.println("Ball's surface area:"+String.format("%.2f",c.getArea()));System.out.println("Ball's volume:"+String.format("%.2f",c.getVolume()));}if(a==4) {double b=type.nextDouble();double c=type.nextDouble();double d=type.nextDouble();if(b<0||c<0||d<0) {System.out.println("Wrong Format");return;}Box e=new Box();e.setHeight(b);e.setLength(c);e.setWidth(d);System.out.println("Box's surface area:"+String.format("%.2f",e.getArea()));System.out.println("Box's volume:"+String.format("%.2f",e.getVolume()));}}
}

27. 设计圆和圆柱体 (10 分)

编写一个完整的Java Application 程序。包含类Circle、Cylinder、Main,具体要求如下。
(1)编写类Circle,表示圆形对象,包含以下成员
①属性:

  1. radius:私有,double型,圆形半径;
    ②方法:
  2. Circle(double radius), 构造方法,用参数设置圆的半径
  3. Circle(),构造方法,将圆形初始化为半径为0。
  4. void setRadius(double r):用参数r设置radius的值
  5. double getRadius():返回radius的值
  6. double getArea(),返回圆形的面积
  7. double getPerimeter(),返回圆形的周长
  8. public String toString( ),将把当前圆对象的转换成字符串形式,例如圆半径为10.0,返回字符串"Circle(r:10.0)"。
    (2)编写一个类Cylinder,表示圆柱形对象,包含以下成员
    ①属性:
  9. height:私有,double型,圆柱体高度;
  10. circle:私有,Circle类型,圆柱体底面的圆形;
    ②方法:
  11. Cylinder(double height,Circle circle), 构造方法,用参数设置圆柱体的高度和底面的圆形
  12. Cylinder(),构造方法,将圆柱体的高度初始化为0,底面圆形初始化为一个半径为0的圆形。
  13. void setHeight(double height):用参数height设置圆柱体的高度
  14. double getHeight():返回圆柱体的高度
  15. void setCircle(Circle circle):用参数circle设置圆柱体底面的圆形
  16. Circle getCircle():返回圆柱体底面的圆形
  17. double getArea(),重写Circle类中的area方法,返回圆柱体的表面积
  18. double getVolume(),返回圆柱体的体积
  19. 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
答案:

import java.util.Scanner;
class Circle {private double radius;public Circle(){radius=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;}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;}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();}
}

28. jmu-Java-01入门-取数字 (10 分)

本题目要求读入若干个代表整数的字符串,然后将其转化为整数。
如果该数>=10000且<=20000,则依次输出其对应的二进制字符串、八进制字符串、十六进制字符串。
否则将字符串中的每个数字抽取出来,然后将所有数字加总求和。
提示:参考jdk文档的Integer,
输入样例:
123
10000
-123
314159265
输出样例:
1 2 3 6
10011100010000,23420,2710
1 2 3 6
3 1 4 1 5 9 2 6 5 36
答案:


import java.util.Scanner;public class Main{public static void main(String[] args) {Scanner sc = new Scanner(System.in);String str;while(true){str = sc.next();Integer data = new Integer(str);if(data.intValue() >= 10000 && data.intValue()<=20000){System.out.print(Integer.toBinaryString(data.intValue()));System.out.print(",");System.out.print(Integer.toOctalString(data.intValue()));System.out.print(",");System.out.print(Integer.toHexString(data.intValue()));System.out.println();}else{boolean flag = true;int add = 0;for(int i=0; i<str.length();++i){if(str.charAt(i) == '-'){continue;}if(flag){flag = false;}else{System.out.print(" ");}System.out.print(str.charAt(i));add += str.charAt(i) - '0';}System.out.print(" ");System.out.println(add);}}//sc.close();}
}

29. jmu-Java-01入门-取数字浮点数 (10 分)

本题目要求读入若干以回车结束的字符串表示的整数或者浮点数,然后将每个数中的所有数字全部加总求和。
输入格式:
每行一个整数或者浮点数。保证在浮点数范围内。
输出格式:
整数或者浮点数中的数字之和。题目保证和在整型范围内。
输入样例:
-123.01
234
结尾无空行
输出样例:
7
9
结尾无空行
答案:

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while (true) {String s = sc.nextLine();char[] ch = s.toCharArray();int sum = 0;for (int i = 0; i < ch.length; i++) {if (ch[i] == '-'|| ch[i] == '.') {} else {//将字符char类型转换成int类型int temp = Integer.parseInt(String.valueOf(ch[i]));sum += temp;}}System.out.println(sum);}}
}

30. 声明图书类,记录图书总册数,利用静态变量赋值。 (10 分)

声明一个图书类,其数据成员为书名、编号(利用静态变量实现自动编号)、书价,并拥有静态数据成员册数,记录图书的总册数;在构造方法中,利用静态变量为对象的编号赋值,在主方法中定义对象数组,并求出总册数。
输出格式:
请输出每本图书对应的书名,书号,书价以及总图书数。
输出样例:
书名:Java程序设计, 书号:1, 书价:34.5
书名:数据结构, 书号:2, 书价:44.8
书名:C++程序设计, 书号:3, 书价:35.0
图书总册数为:3
答案:


public class Main {public static void main(String[] args) {Books b1 = new Books("Java程序设计",34.5);Books b2 = new Books("数据结构",44.8);Books b3 = new Books("C++程序设计",35.0);b1.show();b2.show();b3.show();System.out.println("图书总册数为:"+Books.count);}
}class Books{private String title;private static int id;private double price;static int count;public Books() {}public Books(String title,double price) {this.title = title;this.price = price;count++;  }public void show() {id++;System.out.println("书名:"+title+", 书号:"+Books.id+", 书价:"+price);}
}

31. 定义类2 (10 分)

请补充以下代码,完成输出要求。(注意:需要提交完整代码)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
double dd = RR.fun();
System.out.printf("%.2f",dd);
}
}
class RR{

}
输入格式:
在一行中给出5个不超过1000的实数。
输出格式:
输出排在中间的那个数,保留小数点后两位。
输入样例:
1 2 5 4 3
结尾无空行
输出样例:
5.00
结尾无空行
答案:

import java.util.Arrays;
import java.util.Scanner;public class Main {public static void main(String[] args) {double dd = RR.fun();System.out.printf("%.2f", dd);}
}class RR {public static double fun() {Scanner se=new Scanner(System.in);double a[]=new double[5];for(int i=0;i<a.length;i++) {a[i]=se.nextDouble();}return a[2];}}

32. jmu-Java-03面向对象基础-04-形状-继承 (10 分)

前言
前面题目形状中我们看到,为了输出所有形状的周长与面积,需要建立多个数组进行多次循环。这次试验使用继承与多态来改进我们的设计。
本题描述
1.定义抽象类Shape
属性:不可变静态常量double PI,值为3.14,
抽象方法:public double getPerimeter(),public double getArea()
2.Rectangle与Circle类均继承自Shape类。
Rectangle类(属性:int width,length)、Circle类(属性:int radius)。
带参构造方法为Rectangle(int width,int length),Circle(int radius)。
toString方法(Eclipse自动生成)
3.编写double sumAllArea方法计算并返回传入的形状数组中所有对象的面积和与
double sumAllPerimeter方法计算并返回传入的形状数组中所有对象的周长和。
4.main方法
4.1 输入整型值n,然后建立n个不同的形状。如果输入rect,则依次输入宽、长。如果输入cir,则输入半径。
4.2 然后输出所有的形状的周长之和,面积之和。并将所有的形状信息以样例的格式输出。 提示:使用Arrays.toString。
4.3 最后输出每个形状的类型与父类型.使用类似shape.getClass() //获得类型, shape.getClass().getSuperclass() //获得父类型;
注意:处理输入的时候使用混合使用nextInt与nextLine需注意行尾回车换行问题。
思考
你觉得sumAllArea和sumAllPerimeter方法放在哪个类中更合适?
是否应该声明为static?
输入样例:
4
rect
3 1
rect
1 5
cir
1
cir
2
输出样例:
38.84
23.700000000000003
[Rectangle [width=3, length=1], Rectangle [width=1, length=5], Circle [radius=1], Circle [radius=2]]
class Rectangle,class Shape
class Rectangle,class Shape
class Circle,class Shape
class Circle,class Shape
答案:


import java.util.Scanner;abstract class Shape {double PI = 3.14;public abstract double getPerimeter();public abstract double getArea();
}class Rectangle extends Shape {int wide, len;Rectangle(int a, int b) {wide = a;len = b;}@Overridepublic double getPerimeter() {// TODO Auto-generated method stubreturn 2 * (wide + len);}@Overridepublic double getArea() {// TODO Auto-generated method stubreturn wide * len;}public String toString(){return "[width=" + wide + ", length=" + len + "]";}
}class Circle extends Shape {int radius;Circle(int _radius) {radius = _radius;}@Overridepublic double getPerimeter() {// TODO Auto-generated method stubreturn radius * 2 * PI;}@Overridepublic double getArea() {// TODO Auto-generated method stubreturn radius * radius * PI;}public String toString(){return "[radius=" + radius + "]";}}public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);int n = in.nextInt();in.nextLine();Shape A[] = new Shape[n];int k = 0, j = 0;double sumAllArea = 0, sumAllPerimeter = 0;for (int i = 0; i < n; i++) {String S = in.next();if (S.equals("rect")) {int wide = in.nextInt(), len = in.nextInt();in.nextLine();A[i] = new Rectangle(wide, len);} else if (S.equals("cir")) {int radius = in.nextInt();in.nextLine();A[i] = new Circle(radius);}sumAllArea += A[i].getArea();sumAllPerimeter += A[i].getPerimeter();}System.out.println(sumAllPerimeter);System.out.println(sumAllArea);System.out.print("[");for (int i = 0; i < n; i++) {if(i != 0)System.out.print(", ");if (A[i] instanceof Rectangle) {System.out.print("Rectangle ");System.out.print(A[i].toString());}else {System.out.print("Circle ");System.out.print(A[i].toString());   }}System.out.println("]");for(int i = 0;i < n;i++) {if(A[i] instanceof Rectangle) {System.out.println("class Rectangle,class Shape");}else {System.out.println("class Circle,class Shape");}}in.close();}
}

33. 定义ClassName接口,设计类Company,实现获取类名称的功能 (10 分)

定义一个ClassName接口,接口中只有一个抽象方法getClassName();设计一个类Company,该类实现接口ClassName中的方法getClassName(),功能是获取该类的类名称;编写应用程序使用Company类
输出格式:
输出类名称。
输出样例:
Company
答案:

interface ClassName {public String getClassName();}class Company implements ClassName {public String getClassName(){return "Company";}
}public class Main {public static void main(String []args){ClassName name=new Company();System.out.println(name.getClassName());}
}

34. 接口–四则计算器 (10 分)

利用接口做参数,写个计算器,能完成加减乘除运算。
定义一个接口ICompute含有一个方法int computer(int n, int m)。
定义Add类实现接口ICompute,实现computer方法,求m,n之和
定义Sub类实现接口ICompute,实现computer方法,求n-m之差
定义Main类,在里面输入两个整数a, b,利用Add类和Sub类的computer方法,求第一个数a和第二个数b之和,输出和,第一个数a和第二个数b之差,输出差。
输入格式:
输入在一行中给出2个整数
输出格式:
输出两个数的和、差
输入样例:
在这里给出一组输入。例如:
6 7
结尾无空行
输出样例:
在这里给出相应的输出。例如:
13
-1
结尾无空行
答案:

import java.util.Scanner;public class Main{public static void main(String[] args) {Scanner in=new Scanner(System.in);int n=in.nextInt();int m=in.nextInt();Add l=new Add();Sub j=new Sub();System.out.println(l.computer(n, m));System.out.println(j.computer(n, m));in.close();}
}
interface IComputer{abstract public int computer(int n ,int m);
}
class Add implements IComputer
{int m,n;public int computer(int n ,int m) {return n+m;}
}
class Sub implements IComputer
{int m,n;public int computer(int n ,int m) {return n-m;}
}

35. USB接口的定义 (10 分)

定义一个USB接口,并通过Mouse和U盘类实现它,具体要求是:
1.接口名字为USB,里面包括两个抽象方法:
void work();描述可以工作
void stop(); 描述停止工作
2.完成类Mouse,实现接口USB,实现两个方法:
work方法输出“我点点点”;
stop方法输出 “我不能点了”;
3.完成类UPan,实现接口USB,实现两个方法:
work方法输出“我存存存”;
stop方法输出 “我走了”;

4测试类Main中,main方法中
定义接口变量usb1 ,存放鼠标对象,然后调用work和stop方法
定义接口数组usbs,包含两个元素,第0个元素存放一个Upan对象,第1个元素存放Mouse对象,循环数组,对每一个元素都调用work和stop方法。
输入格式:
输出格式:
输出方法调用的结果
输入样例:
在这里给出一组输入。例如:
结尾无空行
输出样例:
在这里给出相应的输出。例如:
我点点点
我不能点了
我存存存
我走了
我点点点
我不能点了
结尾无空行
答案:

public class Main {public static void main(String[] args) {Mouse usb1=new Mouse();usb1.work();usb1.stop();USB usbs[]=new USB[2];usbs[0]=new UPan();usbs[0].work();usbs[0].stop();usbs[1]=new Mouse();usbs[1].work();usbs[1].stop();}}
interface USB{void work();void stop();
}
class Mouse implements USB{public void work(){//要写publicSystem.out.println("我点点点");}public void stop(){System.out.println("我不能点了");}
}
class UPan implements USB{public void work(){System.out.println("我存存存");}public void stop(){System.out.println("我走了");}
}

36. 单词替换 (10 分)

设计一个对字符串中的单词查找替换方法,实现对英文字符串中所有待替换单词的查找与替换。
输入格式:
首行输入母字符串,第二行输入查询的单词,第三行输入替换后的单词。
输出格式:
完成查找替换后的完整字符串
输入样例:
在这里给出一组输入。例如:
Although I am without you, I will always be ou you
ou
with
结尾无空行
输出样例:
在这里给出相应的输出。例如:
Although I am without you, I will always be with you
结尾无空行
答案:

import java.util.Scanner;public class Main {public static void main(String[] args) {String statement;Scanner sc =new Scanner(System.in);statement=sc.nextLine();String word1=sc.next();String word2=sc.next();//用word2替换word1String words[]=statement.split(" ");/* for(int i=0;i<words.length;i++)System.out.print(words[i]+"\t");*/for(int i=0;i<words.length;i++) {//将句子分割成单词if(word1.equals(words[i])) {words[i]=word2;}}StringBuffer stb=new StringBuffer();String sta=null;for(int i=0;i<words.length;i++) {//数组转换为句子if(i==words.length-1)stb.append(words[i]);else   stb.append(words[i]+" ");}sta=stb.toString();System.out.println(sta);sc.close();}}

37. 图书价格汇总 (10 分)

图书价格汇总
输入格式:
假设某图书馆中图书记录的格式为“Java程序设计: 34;Web程序设计: 56;JSP程序设计:20”(每本书的价格是整数,每本书的价格与下一本书的名字之间有一个中文;)。
输出格式:
编写一个类的方法,能够接受键盘录入的符合上述格式的图书内容字符串,输出图书记录中所有书目的总价格。
输入样例:
Java程序设计:34 ;Web程序设计: 56;JSP程序设计:20
结尾无空行
输出样例:
Java程序设计:34
Web程序设计: 56
JSP程序设计:20
总价格为110
结尾无空行
答案:

import java.util.Scanner;public class Main {public static void main(String args[]) {Scanner sc=new Scanner(System.in);String str=sc.nextLine();String bookInfo[]=str.split(";");Main main=new Main();int sum=0;for(int i=0;i<bookInfo.length;i++)            //输出分割后的书本信息System.out.println(bookInfo[i]);for(int i=0;i<bookInfo.length;i++) {String bn= (bookInfo[i].split(":"))[0];//以:分割Integer pr=Integer.parseInt((bookInfo[i].split(":"))[1].trim());sum+=pr.intValue();}System.out.println("总价格为"+sum);}}

38. 通过键盘输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 (10 分)

统计一行字符串中的英文字母个数、空格个数、数字个数、其他字符个数
输入格式:
通过键盘输入一行字符(任意字符)
输出格式:
统计一行字符串中的中英文字母个数、空格个数、数字个数、其他字符个数
输入样例:
rwrwewre2345asdJSJQI%^&(& *&sdf YY( 2342-k’
结尾无空行
输出样例:
字母个数:22
数字个数:8
空格个数:5
其他字符个数:10
结尾无空行
答案:

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String str = sc.nextLine();sc.close();char[] chars = str.toCharArray();int letter=0,num=0,blank=0,other=0;for(int i=0;i<chars.length;i++) {if((chars[i]>='A' && chars[i]<='Z') || (chars[i]>='a' && chars[i]<='z')){letter++;}else if(chars[i]>=47 && chars[i]<=57) {num++;}else if(chars[i]==32) {blank++;}else {other++;}}System.out.println("字母个数:"+letter);System.out.println("数字个数:"+num);System.out.println("空格个数:"+blank);System.out.println("其他字符个数:"+other);}
}

39. 判断登录信息–Java字符串比较 (10 分)

从键盘接收用户输入的两个字符串,第一个代表用户名,第二个代表密码。
(1)如果用户名是SwpuIot,并且密码是123456,则输出:Welcome
(2)如果用户名正确,密码不正确,输出:Mismatch
(3)其他情况下,输出:NotExist
要输出的信息,建议从题目中复制,确保精确匹配。
输入格式:
用空格分隔开的两个字符串。
输出格式:
首字母大写的一个单词或词组。
输入样例:
SwpuIot 123456
结尾无空行
输出样例:
Welcome
结尾无空行
答案:

import java.util.Scanner;
public class Main {public static void main(String[] args) {String str = "SwpuIot 123456";String[] strs = str.split(" ");Scanner sc = new Scanner(System.in);String s1 = sc.next();String s2 = sc.next();sc.close();if(strs[0].equals(s1) && strs[1].equals(s2)) {System.out.println("Welcome");}else if(strs[0].equals(s1) && !strs[1].equals(s2)) {System.out.println("Mismatch");}else {System.out.println("NotExist");}}
}

40. 伪随机数 (10 分)

在java.util这个包里面提供了一个Random的类,我们可以新建一个Random的对象来产生随机数,他可以产生随机整数、随机float、随机double,随机long。Random的对象有两种构建方式:带种子和不带种子。不带种子的方式将会返回随机的数字,每次运行结果不一样。无论程序运行多少次,带种子方式构建的Random对象会返回一样的结果。
请编写程序,使用第一种方式构建Random对象,并完成下面输入输出要求。
输入格式:
在一行中输入3个不超过10000的正整数n,m,k。
输出格式:
在一行中输出以k为种子建立的Random对象产生的第n个0到m-1之间的伪随机数。
输入样例:
10 100 1000
结尾无空行
输出样例:
50
结尾无空行
答案:


import java.util.*;
public class Main {public static void main(String[] args) {// TODO Auto-generated method stubScanner sc = new Scanner(System.in);int n = sc.nextInt();int m = sc.nextInt();int k = sc.nextInt();List<Integer> ss = new ArrayList<Integer>();//Set<Integer> ss = new HashSet<Integer>();Random rand = new Random(k);for(int i = 0;i < n;i++){ss.add(rand.nextInt(m));if(i==n-1)System.out.println(ss.get(i));}}}

41. 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]
答案:

import java.util.*;
public class Main{public static void main(String[] args) {Scanner scan = new Scanner(System.in);int n=scan.nextInt();int a[]=new int[n];int count=0;while(count<n) {try {String temp=scan.next();int i=Integer.parseInt(temp);a[count++]=i;}catch(Exception e) {System.out.println(e);}}System.out.println(Arrays.toString(a));scan.close();}
}

42. 天不假年 (10 分)

程序填空题。根据题目要求完善下面的代码。请提交完整代码。 “今年50,明年18”是一个美好的愿望。人的年龄只能不断增长。 Person类的setAge方法用于更新年龄。 如果新的年龄比原来的年龄小,则输出B表示发现异常,否则输出A表示正常。
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int age;
age = in.nextInt();
Person p = new Person(age);
age = in.nextInt();
try{
p.setAge(age);
}catch(AgeException e){
}
}
}
class Person{
int age;
public Person(int age){
this.age = age;
}
public void setAge(int age) throws AgeException {
if(this.age <=age){
this.age = age;
}else{
throw new AgeException();
}
}
}
class AgeException extends Exception{
}
输入格式:
输入在一行中给出2个绝对值不超过100的正整数A和B。
输出格式:
在一行中输出一个字符A或者B。
输入样例:
50 18
结尾无空行
输出样例:
B
结尾无空行
答案:


import java.util.Scanner;
public class Main{public static void main(String[] args){Scanner in = new Scanner(System.in);int age;age = in.nextInt();Person p = new Person(age);age = in.nextInt();try{p.setAge(age);System.out.println("A");}catch(AgeException e){System.out.println("B");}}
}
class Person{int age;public Person(int age){this.age = age;}public void setAge(int age) throws AgeException {if(this.age <=age){this.age = age;}else{throw new AgeException();}}
}
class AgeException extends Exception{}

43. 成绩录入时的及格与不及格人数统计 (10 分)

编写一个程序进行一个班某门课程成绩的录入,能够控制录入成绩总人数,对录入成绩统计其及格人数和不及格人数。设计一个异常类,当输入的成绩小0分或大于100分时,抛出该异常类对象,程序将捕捉这个异常对象,并调用执行该异常类对象的toString()方法,该方法获取当前无效分数值,并返回一个此分数无效的字符串。
输入格式:
从键盘中输入学生人数n
从键盘中输入第1个学生的成绩
从键盘中输入第2个学生的成绩

从键盘中输入第n个学生的成绩
(注:当输入的成绩无效时(即分数为小于0或大于100)可重新输入,且输出端会输出此分数无效的提醒。)
输出格式:
显示及格总人数
显示不及格总人数
输入样例:
在这里给出一组输入。例如:
3
100
30
60
结尾无空行
输出样例:
在这里给出相应的输出。例如:
2
1
结尾无空行
输入样例:
在这里给出一组输入。例如:
2
200
69
30
结尾无空行
输出样例:
在这里给出相应的输出。例如:
200invalid!
1
1
结尾无空行
答案:

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int count=sc.nextInt();int pass=0;for (int i=0;i<count;i++){int grade=sc.nextInt();if (grade<0||grade>100){System.out.println(grade+"invalid!");i--;}else if (grade>=60){pass++;}}System.out.println(pass);System.out.println(count-pass);}
}

44. 计算正五边形的面积和周长 (10 分)

从键盘输入一个数作为正五边形的边长,计算并输出该正五边形的周长和面积。
计算正五边形的面积公式为: S=a
2
×
25+10×
5
/4
输入格式:
输入正五边形的边长。例如:
5
输出格式:
输出正五边形的面积和周长。第一行输出面积,第二行输出周长。例如:
43.0119
25
输入样例:
16.8
结尾无空行
输出样例:
485.5875
84
结尾无空行
答案:

import java.lang.Math;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.Scanner;
public class Main {public static void main(String[] args){Scanner in=new Scanner(System.in);double a=in.nextDouble();Bian b1=new Bian(a);DecimalFormat df1 = new DecimalFormat("#.####"); System.out.println(df1.format(b1.getArea()));System.out.println(df1.format(b1.getPerimeter()));}
}
abstract class shape{// 抽象类public abstract double getArea();public abstract double getPerimeter();
}
class Bian extends shape{private double a;public Bian(double a){this.a=a;}public double getArea(){double s=a*a/4*(Math.sqrt(25+10*Math.sqrt(5.0)));return s;}public double getPerimeter(){return a*5;}
}

共计44

进程已结束,退出代码为 0

沈师PTA2021Java编程题复习题库相关推荐

  1. c语言编程题库this is a c program,C语言末复习题编程题部.doc

    C语言末复习题编程题部.doc 编程题目 1.在考生目录下,要求程序 PROG1.C 的功能是 按下面公式的前 1000 项,求的近似值 2 2 4 4 6 6 8 8 2n 2n * * * * * ...

  2. csharp高级练习题:ASCII85编解码【难度:3级】--景越C#经典编程题库,不同难度C#练习题,适合自学C#的新手进阶训练

    csharp高级练习题:ASCII85编解码[难度:3级]: ASCII85是公司的PDF和Postscript内使用的二进制到ASCII编码方案,并在基地64.你的任务是两个新的方法来扩展Strin ...

  3. python 判断中文标点符号_Python入门编程题库27--生成随机密码

    一.题目 请编写程序,生成随机密码.具体要求如下: (1)使用 random 库,采用 0x1010 作为随机数种子. (2)密码 有s中的字符组成. (3)每个密码长度固定为 10 个字符. (4) ...

  4. 二级c语言编程题只要得出答案,计算机二级C语言考试编程题题库答案.docx

    计算机二级C语言考试编程题题库答案 1.求100之内自然数中最大的能被17整除的数.void main(){ int i;for(i=100;i>0;i--)if(i%17==0)break;p ...

  5. 计算机二级c语言作弊的东西,计算机二级C全部考试题库[作弊必备]编程题.txt

    计算机二级C全部考试题库[作弊必备]编程题.txt *funhpC 磬A*BC*DEF*GABCDEFGC prog.c mainfun void funchar *a,char *h,char *p ...

  6. c语言二级编程题库,二级C语言题库-编程题.doc

    二级C语言题库-编程题 第 PAGE \* Arabic \* MERGEFORMAT 27 页第 PAGE \* Arabic \* MERGEFORMAT 27 页 1.请编写函数fun,其功能是 ...

  7. python编程题-python编程题库

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 上期题目连接:1000道python题库系列分享十一(9道)上期题目答案:? 本期 ...

  8. c语言常考的编程题,C语言操作题常考编程题库

    <C语言操作题常考编程题库>由会员分享,可在线阅读,更多相关<C语言操作题常考编程题库(32页珍藏版)>请在人人文库网上搜索. 1.C语言编程题覆盖到的算法:1.个人所得税计算 ...

  9. C语言题库青岛理工大学,青岛理工大学C语言期末复习题库.doc

    青岛理工大学C语言期末复习题库.doc (19页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.9 积分 .第1章 程序设计及C语言概述一.单选题1 ...

最新文章

  1. 吴恩达神经网络和深度学习——第四周笔记
  2. 鸟哥学习笔记---网络安全基础
  3. mysql行锁和表锁
  4. VC++文件监控(一) ReadDirectoryChangesW
  5. 消息队列面试 - 如何保证消息的顺序性?
  6. VIJOS 1512SuperBrother打鼹鼠(二维BIT)
  7. python中sklearn库更新_python库之sklearn
  8. elasticsearch6.0单机配置+centos7.0J+dk1.8
  9. jsp中page指令用法详解
  10. win10恢复出厂设置_手机如何恢复出厂设置
  11. 汇编实验五 编写、调试具有多个段的程序
  12. 『Others』WPS广告关闭
  13. 弱监督学习综述-周志华(ML论文阅读笔记1)
  14. 网络安全——端口对应服务大全(白帽必备万字快查表)
  15. php open_basedir绕过,PHP绕过open_basedir列目录的研究
  16. 分布式子系统之间通讯
  17. 你为你的机会准备了什么
  18. C语言编程 | 转义字符
  19. linux查询日志grep,linux grep日志查询
  20. node内存溢出:JavaScript heap out of memory

热门文章

  1. linux下modprobe命令参数及用法详解--linux加载模块命令
  2. html用title属性实现鼠标悬停显示文字
  3. CE_tutorial_game
  4. tdengine和mysql区别_TDEngine Game Framework
  5. swap函数中的交换 【指针】 学习笔记
  6. 非常好的视频类软件下载与安装教程,非常棒
  7. duet二重奏hp_《二重奏》Duet
  8. DUET and updated DUET(2016 and 2019)
  9. 打开vivado的.xpr工程文件报错Cannot locate target loader
  10. uniapp上高德(百度)地图API的使用(APP安卓)