7-1 各类字符数 (20 分)

从键盘输入一个字符串,程序输出该字符串中的大写英文字母数,小写英文字母数以及非英文字母数

输入格式:

字符串

输出格式:

大写英文字母数 小写英文字母数 非英文字母数

输入样例:

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

Hello My Dear Friend, I Miss You Very Much!

结尾无空行

输出样例:

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

9
24
10

结尾无空行

import java.util.Scanner;
public class Main {public static void main(String args[]) {Scanner scanner = new Scanner(System.in);String s = scanner.nextLine();int lowerCaseCount = 0;int upperCaseCount = 0;int unCaseCount = 0;for(int i = 0; i < s.length(); i++) {char c = s.charAt(i);if(c >= 'a' && c <= 'z') {lowerCaseCount++;}else if(c >= 'A' && c <= 'Z') {upperCaseCount++;}else {unCaseCount++;}}System.out.println(upperCaseCount);System.out.println(lowerCaseCount);System.out.println(unCaseCount);}
}

7-2 编程题:判断闰年 (10 分)

根据输入的正整数y所代表的年份,计算输出该年份是否为闰年 闰年的判断标准:

能够被4整除且不能被100整除的年份

或者能够被400整除的年份

输入格式:

输入n取值范围是 【1..3000】

输出格式:

是闰年,输出 yes

非闰年,输出 no

输入样例:

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

100

结尾无空行

输出样例:

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

no

结尾无空行

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

7-3 编程题:统计符合条件元素的个数 (8 分)

统计1...n的闭区间中,能够被3整除元素的奇数和偶数的个数

输入格式:

输入值n的范围是 【1..1000】

输出格式:

奇数个数,偶数个数

输入样例:

5

结尾无空行

输出样例:

1,0

结尾无空行

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=0;int sum=0;int number=0;for(int i=1;i<=n;i++) {if (i%3==0) {sum=sum+1;}if (i%3==0&&i%2==0) {count=count+1;}}System.out.println((sum-count)+","+count);}
}

7-4 字母图形 (15 分)

问题描述 利用字母可以组成一些美丽的图形,下面给出了一个例子: ABCDEFG BABCDEF CBABCDE DCBABCD EDCBABC 这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。

输入格式:

输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。数据规模与约定 1 <= n, m <= 26。

输出格式:

输出n行,每个m个字符,为你的图形。

输入样例:

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

5 7

结尾无空行

输出样例:

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

ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC

结尾无空行

import java.util.Scanner;public class Main {public static void main(String args[]) {Scanner sc=new Scanner(System.in);int n=sc.nextInt();int m=sc.nextInt();char ch[][]=new char[50][50];{int i=0;while (i<n) {for(int j=0;j<m;j++) {ch[i][j+i]= (char)('A'+j);}i++;}}{int i=0;while (i<n-1) {int j=1;while (j<n) {ch[j+i][i]=(char)('A'+j);j++;}i++;}}for(int i=0;i<n;i++){int j=0;while (j<m) {System.out.print(ch[i][j]);j++;}System.out.println();}}
}

7-5 分解质因数 (20 分)

求出区间[a,b]中所有整数的质因数分解。

输入格式:

输入两个整数a,b。数据规模和约定  2<=a<=b<=10000

输出格式:

每行输出一个数的分解,形如k=a1a2a3...(a1<=a2<=a3...,k也是从小到大的)(具体可看样例)

输入样例:

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

3 10

结尾无空行

输出样例:

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

3=3
4=2*2
5=5
6=2*3
7=7
8=2*2*2
9=3*3
10=2*5

结尾无空行

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);Integer a = sc.nextInt();Integer b = sc.nextInt();for (int i = a; i <= b; i++) {if (i >= 3) {String m = "";int k = 2;int j = i;while (j != k) {if (j % k == 0) {m = m + k + "*";j = j / k;}else if (j % k != 0) {k++;}}m = m + k;System.out.println(i + "=" + m);} else {System.out.println(i + "=" + i);}}}
}

7-6 统计最大数出现次数 (20 分)

编写程序读取一系列整数,找出它们的最大数,然后计算该数的出现次数,假定输入以0结束。

输入格式:

在一行中输入待统计的整型数,各个数可以以一个或多个空格或回车分隔,以0结束。

输出格式:

以两行输出: 第一行格式:The largest number is 最大数 第二行格式:The occurrence count of the largest number is 出现次数

输入样例:

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

3 5 2 5 5 5 0

结尾无空行

输出样例:

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

The largest number is 5
The occurrence count of the largest number is 4

结尾无空行

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner input=new Scanner(System.in);int a=input.nextInt();int max=a;int count=1;int i=1;while(a!=0){if(max<a){max=a;count=1;}else if(max==a){if(i==1)count=1;elsecount++;}a=input.nextInt();i++;}System.out.println("The largest number is "+max);System.out.println("The occurrence count of the largest number is "+count);}
}

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

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

输入格式:

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

输出格式:

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

输入样例:

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

结尾无空行

输出样例:

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

结尾无空行

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

7-8 sdust-Java-字符串集合求并集 (10 分)

从键盘接收N个英文字符串(其中不同的字符串数量大于10),从头开始取5个不同的字符串放入一个集合S1,然后接着取5个不同的字符串放入另一个集合S2,按照字母顺序输出S1和S2的并集中的每个字符串(字符串区分大小写)

输入格式:

一行以空格分开的英文字符串(不同的字符串数量大于10)。

输出格式:

按照字母顺序(先比较字符串首字母,首字母相同的比较字符串第二个字母,以此类推)输出的S1和S2并集的字符串。

输入样例:

android python java javaee javase database java jsp servlet java algorithm junit

结尾无空行

输出样例:

algorithm
android
database
java
javaee
javase
jsp
python
servlet

结尾无空行

import java.util.*;public class Main {public static void main(String[] args) {Scanner cin = new Scanner(System.in);String str;int n1 = 0, n2 = 0;String[] ans = new String[10];String[] bns = new String[10];while(cin.hasNext()){str = cin.next();if(n1 < 5){int flag = 1;for(int i=0; i<n1; i++){if(str.compareTo(ans[i]) == 0) {flag = 0;break;}}if(flag == 1) {ans[n1++] = str;}} else if(n2 < 5) {int flag = 1;for(int i=0; i<n2; i++){if(str.compareTo(bns[i]) == 0) {flag = 0;break;}}if(flag == 1) {bns[n2++] = str;}}}String[] cns = new String[15];for(int i=0; i<n1; i++){cns[i] = ans[i];}int counts = 5;for(int i=0; i<n2; i++){int flag = 1;for(int j=0; j<n1; j++){if(bns[i].compareTo(ans[j]) == 0) {flag = 0;break;}}if(flag == 1) cns[counts++] = bns[i]; }for(int i=0; i<counts-1; i++){for(int j=i+1; j<counts; j++){if(cns[i].compareTo(cns[j]) > 0){String s = cns[i];cns[i] = cns[j];cns[j] = s;}}}for(int i=0; i<counts; i++){System.out.println(cns[i]);}}
}

7-9 sdust-Java-学生成绩读取与排序 (10 分)

1)从键盘录入多行学生成绩的信息,每行表示一个学生的一门课的成绩,最后一行以“exit”结束。每行文本的格式为:学号,姓名,课程名,成绩。程序能够读取学生及其成绩,将具有相同学号的学生及其成绩读取到一个Student(学生类)类对象的列表(List)stuList中; 2)程序在读取完学生及其成绩的数据后,能够将stuList中的学生按照平均成绩降序排列(如果平均成绩相同,学号数字小的排在前面), 并输出排序后的学生学号、姓名和成绩

输入格式:

多行表示的学生成绩,每一行是一个学生的姓名、学号、课程名、成绩(整数)。不同行可以是同一名学生(学号相同的为同一名学生)不同课程的成绩。

输出格式:

按照学生平均成绩降序排序(平均成绩相同的学号小的在前面)的学生排名(具体输出格式参照样例)。

输入样例:

小明,2001,Java,88
小刚,2002,Java,78
小丁,2003,Java,56
小宏,2004,Java,85
小明,2001,Python,84
小刚,2002,Python,98
小丁,2003,JavaWeb,66
小宏,2004,Algorithm,87
exit

结尾无空行

输出样例:

No1:2002,小刚
No2:2001,小明
No3:2004,小宏
No4:2003,小丁

结尾无空行

import java.util.*;class Student implements Comparable<Student>{private String name,id;private int subject=1;private int score;private double sum=0;Student(){}Student(String name,String id,int score){this.name=name;this.id=id;this.score=score;}public String getid(){return this.id;}public void subjectadd() {this.subject++;}public void scoreadd(int score){this.score=this.score+score;}public String getname() {return this.name;}public void sum() {this.sum=this.score/this.subject;}public int compareTo(Student o1){Student one = (Student) o1;if(this.sum-one.sum!=0)return (int)(one.sum-this.sum);elsereturn this.id.compareTo(one.id);}
}public class Main{public static void main(String[] args) {Scanner sc=new Scanner(System.in);List<Student> list =new ArrayList<Student>();int i,flag=0;String k;String[] and =new String[5];while(sc.hasNext()){k=sc.next();and=k.split(",");if(k.compareTo("exit")==0)break;for(i=0;i<list.size();i++){if(list.get(i).getid().compareTo(and[1])==0){flag=1;break;}}if(flag==1){list.get(i).subjectadd();list.get(i).scoreadd(Integer.parseInt(and[3]));}else{list.add(new Student(and[0],and[1],Integer.parseInt(and[3])));}flag=0;}for(i=0;i<list.size();i++)list.get(i).sum();Collections.sort(list);for(i=0;i<list.size();i++){System.out.println("No"+(i+1)+":"+list.get(i).getid()+","+list.get(i).getname());}}
}

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

前言

前面题目形状中我们看到,为了输出所有形状的周长与面积,需要建立多个数组进行多次循环。这次试验使用继承与多态来改进我们的设计。

本题描述

1.定义抽象类Shape
属性:不可变静态常量double PI,值为3.14
抽象方法:public double getPerimeter(),public double getArea()

2.RectangleCircle类均继承自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() //获得父类型;

注意:处理输入的时候使用混合使用nextIntnextLine需注意行尾回车换行问题。

思考

  1. 你觉得sumAllArea和sumAllPerimeter方法放在哪个类中更合适?
  2. 是否应该声明为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() {return 2 * (wide + len);}@Overridepublic double getArea() {return wide * len;}public String toString(){return "[width=" + wide + ", length=" + len + "]";}
}class Circle extends Shape {int radius;Circle(int _radius) {radius = _radius;}@Overridepublic double getPerimeter() {return radius * 2 * PI;}@Overridepublic double getArea() {return 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();}
}

7-11 jmu-Java-03面向对象-06-继承覆盖综合练习-Person、Student、Employee、Company (15 分)

定义Person抽象类,Student类、Company类,Employee类。

Person类的属性String name, int age, boolean gender
Person类的方法:

public Person(String name, int age, boolean gender);
public String toString();         //返回"name-age-gender"格式的字符串
public boolean equals(Object obj);//比较name、age、gender,都相同返回true,否则返回false

Student类继承自Person,属性:String stuNo, String clazz
Student类的方法:

//建议使用super复用Person类的相关有参构造函数
public Student(String name, int age, boolean gender, String stuNo, String clazz);
public String toString();         //返回 “Student:person的toString-stuNo-clazz”格式的字符串
public boolean equals(Object obj);//首先调用父类的equals方法,如果返回true,则继续比较stuNo与clazz。

Company类属性:String name
Company类方法:

public Company(String name);
public String toString();         //直接返回name
public boolean equals(Object obj);//name相同返回true

Employee类继承自Person,属性:Company company, double salary
Employee类方法:

//建议使用super复用Person类的相关有参构造函数
public Employee(String name, int age, boolean gender, double salary, Company company);
public String toString();         //返回"Employee:person的toString-company-salary"格式的字符串
public boolean equals(Object obj);//首先调用父类的equals方法,如果返回true。再比较company与salary。
//比较salary属性时,使用DecimalFormat df = new DecimalFormat("#.#");保留1位小数

编写equals方法重要说明:

  1. 对Employee的company属性的比较。要考虑传入为null的情况。如果company不为null且传入为null,返回false
  2. 对所有String字符类型比较时,也要考虑null情况。

提示

  1. 排序可使用Collections.sort
  2. equals方法要考虑周全

main方法说明

  1. 创建若干Student对象、Employee对象。
    输入s,然后依次输入name age gender stuNo clazz创建Student对象
    输入e,然后依次输入name age gender salary company创建Employee对象
    然后将创建好的对象放入List<Person> personList。输入其他字符,则结束创建。

创建说明: 对于String类型,如果为null则不创建对象,而赋值为null。对于company属性,如果为null则赋值为null,否则创建相应的Company对象。

  1. 对personList中的元素实现先按照姓名升序排序,姓名相同再按照年龄升序排序。提示:可使用Comparable<Person>Comparator<Person>

  2. 接受输入,如果输入为exitreturn退出程序,否则继续下面步骤。

  3. 将personList中的元素按照类型分别放到stuList与empList。注意:不要将两个内容相同的对象放入列表(是否相同是根据equals返回结果进行判定)。

  4. 输出字符串stuList,然后输出stuList中的每个对象。

  5. 输出字符串empList,然后输出empList中的每个对象。

1-3为一个测试点 4-6为一个测试点

输入样例:

s zhang 23 false 001 net15
e wang 18 true 3000.51 IBM
s zhang 23 false 001 net15
e bo 25 true 5000.51 IBM
e bo 25 true 5000.52 IBM
e bo 18 true 5000.54 IBM
e tan 25 true 5000.56 IBM
e tan 25 true 5000.51 IBM
s wang 17 false 002 null
s wang 17 false 002 null
e hua 16 false 1000 null
s wang 17 false 002 net16
e hua 16 false 1000 null
e hua 18 false 1234 MicroSoft
!
continue

输出样例:

Employee:bo-18-true-IBM-5000.54
Employee:bo-25-true-IBM-5000.51
Employee:bo-25-true-IBM-5000.52
Employee:hua-16-false-null-1000.0
Employee:hua-16-false-null-1000.0
Employee:hua-18-false-MicroSoft-1234.0
Employee:tan-25-true-IBM-5000.56
Employee:tan-25-true-IBM-5000.51
Student:wang-17-false-002-null
Student:wang-17-false-002-null
Student:wang-17-false-002-net16
Employee:wang-18-true-IBM-3000.51
Student:zhang-23-false-001-net15
Student:zhang-23-false-001-net15
stuList
Student:wang-17-false-002-null
Student:wang-17-false-002-net16
Student:zhang-23-false-001-net15
empList
Employee:bo-18-true-IBM-5000.54
Employee:bo-25-true-IBM-5000.51
Employee:hua-16-false-null-1000.0
Employee:hua-18-false-MicroSoft-1234.0
Employee:tan-25-true-IBM-5000.56
Employee:tan-25-true-IBM-5000.51
Employee:wang-18-true-IBM-3000.51
import java.text.DecimalFormat;
import java.util.*;abstract class Person{private String name, c;private int age;private boolean gender;public String getName() {return name;}public String getC() {return c;}public int getAge() {return age;}public boolean isGender() {return gender;}public Person(String c, String name, int age, boolean gender) {this.c = c;this.name = name;this.age = age;this.gender = gender;}@Overridepublic String toString() {return name + "-" + age + "-" + gender;}@Overridepublic boolean equals(Object obj) {Person per = (Person) obj;if(per.name == null || this.name == null) {return false;}return (per.name.compareTo(this.name) == 0 && per.age == this.age && per.gender == this.gender );}
}class Student extends Person{private String stuNo;private String clazz;public Student(String c, String name, int age, boolean gender, String stuNo, String clazz) {super(c, name, age, gender);this.stuNo = stuNo;this.clazz = clazz;}@Overridepublic String toString(){return super.toString() + "-" + stuNo + "-" + clazz;}@Overridepublic boolean equals(Object obj) {Student per = (Student)obj;if(super.equals(obj)) {if(per.stuNo == null || per.clazz == null || this.stuNo == null || this.clazz == null) {return false;}return (per.stuNo.compareTo(this.stuNo) == 0 && per.clazz.compareTo(this.clazz) == 0);}return false;}
}class Company{private String name;public Company(String name) {this.name = name;}@Overridepublic String toString() {return name;}@Overridepublic boolean equals(Object obj) {if (this == obj){return true;}if (obj == null){return false;}if (getClass() != obj.getClass()){return false;}Company other = (Company) obj;if (name == null) {if (other.name != null) {return false;}} else if (!name.equals(other.name)) {return false;}return true;}
}class Employee extends Person{private Company company;private double salary;public Employee(String c, String name, int age, boolean gender, double salary, Company company) {super(c, name, age, gender);this.salary = salary;this.company = company;}@Overridepublic String toString() {return super.toString() + "-" + company.toString() + "-" + salary;}@Overridepublic boolean equals(Object obj) {if(super.equals(obj)) {Employee per = (Employee)obj;if(this.company.toString() == null || per.company.toString() == null) {return false;}String newpersalary = new DecimalFormat("#.#").format(per.salary);String newthissalary = new DecimalFormat("#.#").format(this.salary);return (per.company.toString().compareTo(this.company.toString()) == 0 && newpersalary.compareTo(newthissalary) == 0);}return false;}}public class Main {public static void main(String[] args) {// TODO Auto-generated method stubScanner input = new Scanner(System.in);String c, name, stuNo, clazz, companyname, str;int age;boolean gender;double salary;ArrayList<Person> personList = new ArrayList<Person>();ArrayList<Student> studentList = new ArrayList<Student>();ArrayList<Employee> employeeList = new ArrayList<Employee>();while(true) {c = input.next();if(c.compareTo("s") == 0) {name = input.next();age = input.nextInt();gender = input.nextBoolean();stuNo = input.next();clazz = input.next();Student student = new Student(c, name, age, gender, stuNo, clazz);personList.add(student);}else if(c.compareTo("e") == 0) {name = input.next();age = input.nextInt();gender = input.nextBoolean();salary = input.nextDouble();companyname = input.next();Company company = new Company(companyname);Employee employee = new Employee(c, name, age, gender, salary, company);personList.add(employee);}else {personList.sort(Comparator.comparing(Person::getName).thenComparingInt(Person::getAge));for(int i = 0; i < personList.size(); ++i) {if(personList.get(i).getC().compareTo("s") == 0) {System.out.println("Student:" + personList.get(i).toString());int flag = 0;for(int j = 0; j < studentList.size(); ++j) {if(studentList.get(j).equals(personList.get(i))) {flag = 1;break;}}if(flag == 0) {studentList.add((Student)personList.get(i));}}else if(personList.get(i).getC().compareTo("e") == 0){System.out.println("Employee:" + personList.get(i).toString());int flag = 0;for(int j = 0; j < employeeList.size(); ++j) {if(employeeList.get(j).equals(personList.get(i))) {flag = 1;break;}}if(flag == 0) {employeeList.add((Employee)personList.get(i));}}}str = input.next();if(str.compareTo("exit") == 0 || str.compareTo("return") == 0) {return;}System.out.println("stuList");for(int i = 0; i < studentList.size(); ++i) {System.out.println("Student:" + studentList.get(i).toString());}System.out.println("empList");for(int i = 0; i < employeeList.size(); ++i) {System.out.println("Employee:" + employeeList.get(i).toString());}}}}
}

7-12 程序改错题2 (5 分)

程序改错题。以下代码存在错误,请修改后提交。

public class Main {public static void main(String[] args) {Animal animal = new Dog();animal.shout();animal.run();}
}class Animal {void shout() {System.out.println("animal shout!");}
}class Dog extends Animal {void shout() {super.shout();System.out.println("wangwang……");}void run() {System.out.println("Dog is running");}
}

输入格式:

输出格式:

输入样例:

结尾无空行

输出样例:

animal shout!
wangwang……
Dog is running

结尾无空行

public class Main {public static void main(String[] args) {Animal animal = new Dog();animal.shout();((Dog) animal).run();}
}class Animal {void shout() {System.out.println("animal shout!");}
}class Dog extends Animal {@Overridevoid shout() {super.shout();System.out.println("wangwang……");}void run() {System.out.println("Dog is running");}
}

7-13 程序填空题3 (5 分)

参照输出样例补全以下程序,使程序输出结果与输出样例一致。

  public class Main {public static void main(String[] args) {Son son = new Son();son.method();}
}class Parent {Parent() {System.out.println("Parent's Constructor without parameter");}Parent(boolean b) {System.out.println("Parent's Constructor with a boolean parameter");}public void method() {System.out.println("Parent's method()");}
}class Son extends Parent {//补全本类定义
}

输入格式:

输出格式:

输入样例:


结尾无空行

输出样例:

Parent's Constructor with a boolean parameter
Son's Constructor without parameter
Son's method()
Parent's method()

结尾无空行

public class Main {public static void main(String[] args) {Son son = new Son();son.method();}}
class Parent {Parent() {System.out.println("Parent's Constructor without parameter");}Parent(boolean b) {System.out.println("Parent's Constructor with a boolean parameter");}public void method() {System.out.println("Parent's method()");}
}class Son extends Parent {private static boolean b;Son() {super(b);System.out.println("Son's Constructor without parameter");}public void method() {System.out.println("Son's method()");System.out.println("Parent's method()");}
}

7-14 设计一个Shape及其子类Oval (20 分)

编写一个完整的Java Application 程序。包含类Shape、类Oval、类ShapeTest,具体要求如下:
(1)编写一个抽象类Shape表示形状对象,包含以下成员
①属性:
PI:double型常数,值为3.1415926;
②方法:

  1. double area(), 抽象方法;
  2. double perimeter(),抽象方法;
    (2)编写一个Shape类的子类Oval,表示椭圆对象,包含以下成员
    ①属性:
  3. a:私有,double型,长轴半径;
  4. b:私有,double型,短轴半径;
    ②方法:
  5. Oval(double a,double b), 构造方法,用参数设置椭圆的长轴半径和短轴半径
  6. Oval(),构造方法,将椭圆的长轴半径和短轴半径都初始化为0。
  7. double area(),重写Shape类中的area方法,返回椭圆的面积( )
  8. double perimeter(),重写Shape类中的perimeter方法,返回椭圆的周长( )
  9. public String toString( ),将把当前椭圆对象的转换成字符串形式,例如长轴半径为10.0,短轴半径为5,返回字符串"Oval(a:10.0,b:5.0)"。
    (3)编写公共类Main,实现如下功能
  10. 输入长轴半径和短轴半径,并创建一个椭圆对象;
  11. 分别用area和perimeter方法,求出以上椭圆的面积和宽度并输出,输出过程中要求使用到toString方法,输出格式如下:

输入格式:

输入长轴半径和短轴半径

输出格式:

输出椭圆的面积和周长。

输入样例:

8 6

输出样例:

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

The area of Oval(a:8.0,b:6.0) is 150.79644480000002
The perimeterof Oval(a:8.0,b:6.0) is 44.42882862370954
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);double m = sc.nextDouble();double n = sc.nextDouble();Oval oval = new Oval(m, n);System.out.println("The area of " + oval + " is " + oval.area());System.out.println("The perimeterof " + oval + " is " + oval.perimeter());}
}abstract class Shape {protected static final double PI = 3.1415926;abstract double area();abstract double perimeter();
}class Oval extends Shape {private double a;private double b;public Oval(double a, double b) {this.a = a;this.b = b;}public Oval() {a = 0;b = 0;}@Overridepublic double area() {return PI * a * b;}@Overridepublic double perimeter() {return 2 * PI * Math.sqrt((a * a + b * b) / 2);}@Overridepublic String toString() {return "Oval(a:" + a + ",b:" + b + ")";}
}

7-15 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(){System.out.println("我点点点");}public void stop(){System.out.println("我不能点了");}
}
class UPan implements USB{public void work(){System.out.println("我存存存");}public void stop(){System.out.println("我走了");}
}

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

定义一个有关人的Person类,内含属性:
String nameint ageboolean genderint 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;public class Main {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int n = sc.nextInt();Person[] p=new Person[n];for (int i = 0; i < n; i++) {String a = sc.next();int b= sc.nextInt();boolean c = sc.nextBoolean();p[i]=new Person(a,b,c);}for (int i = n-1; i >=0 ; i--) {System.out.println(p[i].toString());}Person p1=new Person();System.out.println(p1.toString());}}class Person {private String name;private int age;private boolean gender;private int id;public void setName(String name) {this.name = name;}public void setAge(int age) {this.age = age;}public void setGender(boolean gender) {this.gender = gender;}public void setId(int id) {this.id = id;}public String getName() {return name;}public int getAge() {return age;}public boolean isGender() {return gender;}public int getId() {return id;}public Person(){System.out.println("This is constructor");System.out.println(name+","+age+","+gender+","+id);}public Person(String name, int age, boolean gender) {this.name = name;this.age = age;this.gender = gender;}@Overridepublic String toString(){return "Person [name="+name+", age="+age+", gender="+gender+", id="+id+"]";}
}

7-17 定义商品类,封装成员变量,输出对象 (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 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.print(a.getNumber()+","+a.getName()+","+a.getPrice());}
}

7-18 定义类与创建对象 (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.println("this person is " +p2.name+ ",her age is " +p2.age);}
}

7-19 jmu-Java-06异常-02-使用异常机制处理异常输入 (5 分)

使用异常处理输入机制,让程序变得更健壮。

main方法:

  1. 输入n,创建大小为n的int数组。
  2. 输入n个整数,放入数组。输入时,有可能输入的是非整型字符串,这时候需要输出异常信息,然后重新输入。
  3. 使用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();}
}

7-20 好玩的图形 (20 分)

给定图形接口定义如下: interface Shape{
float getArea();//求面积
float getPerimeter();//求周长
}
请实现以上接口,定义圆形类(用数字1表示)、矩形类(用数字2表示)。
从键盘输入图形类别(1代表圆,2代表矩形)和相应的参数,计算并输出相应图形的面积和周长,结果保留小数点后2位数据。

输入格式:

输入数据包含多行,第一行一个整数n,表示接下来共有n个图形对象需要生成。
每个图形数据占2行,第一行为数字1或2,表示图形类别,第二行为生成图形的参数。

输出格式:

每个图形对应的面积和周长。

输入样例:

2
1
1.0
2
1.0 2.0

结尾无空行

输出样例:

3.14 6.28
2.00 6.00

结尾无空行

import java.util.*;interface Shape {public float getArea();public float getPerimeter();
}class Circle implements Shape {float radius;public Circle(float radius) {this.radius = radius;}public float getArea() {float ans = (float) (Math.PI * radius * radius);return (float) ans;}public float getPerimeter() {float ans = (float) (2 * Math.PI * radius);return (float) ans;}
}class Rectangle implements Shape {float length, width;public Rectangle(float length, float width) {this.length = length;this.width = width;}public float getArea() {float ans = length * width;return (float) ans;}public float getPerimeter() {float ans = 2 * (length + width);return (float) ans;}
}public class Main {static public void main(String[] args) {Scanner input = new Scanner(System.in);int n = input.nextInt();for (int i = 0; i < n; i++) {int flag = input.nextInt();if (flag == 1) {float radius = input.nextFloat();Circle c = new Circle(radius);String ans1 = String.format("%.2f", c.getArea());String ans2 = String.format("%.2f", c.getPerimeter());System.out.println(ans1 + " " + ans2);} else {float length = input.nextFloat();float width = input.nextFloat();Rectangle m = new Rectangle(length, width);String ans1 = String.format("%.2f", m.getArea());String ans2 = String.format("%.2f", m.getPerimeter());System.out.println(ans1 + " " + ans2);}}input.close();}
}

PTA练习 Java模拟题 编程题相关推荐

  1. 速学堂(java)第十章编程题答案(自写)

    速学堂(java)第十章编程题答案(自写) 1. 实现字节数组和任何基本类型和引用类型执行的相互转换 提示:使用ByteArrayInutStream和ByteArrayOutputStream. p ...

  2. java集合到线程的考试_成都汇智动力-Java SE考试编程题总结

    原标题:成都汇智动力-Java SE考试编程题总结 线程和进程的区别: (1)进程是运行中的程序,拥有自己独立的内存空间和资源; (2)一个进程可以有一个或多个线程组成,且至少有一个线程称为主线程; ...

  3. java常见笔试编程题(一)

    java常见笔试编程题(一) 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串.但是要保证汉字不被截半个,例如"人abc",应该截为"人ab& ...

  4. JAVA基础入门编程题练习(一)

    JAVA基础入门编程题练习(一) 1.设计一个学生类Student和它的一个子类Undergraduate.要求如下: (1) Student类有name和age属性,一个包含两个参数的构造方法,用于 ...

  5. 西安交通大学915计算机软件基础往年真题编程题答案

    06年真题编程题答案 1 编写函数,用冒泡排序法或选择排序法对输入的 100个整数按从小到大的顺序排列: #include <stdio.h> //冒泡排序算法 void bubbleso ...

  6. 滴滴出行2017秋招笔试真题-编程题汇总_Java实现

    滴滴出行2017秋招笔试真题-编程题汇总_Java实现 注:有的题参考别人的思路,用我最容易理解的代码编的程序,所以可以不能最优的解法,后续我会进行更新,只是一个思路,我的笔记而已,所以不喜勿喷~~~ ...

  7. 网易2017春招笔试真题编程题集合

    网易2017春招笔试真题编程题集合 题目来源:牛客网 https://www.nowcoder.com/profile/7952866/test/7811777/83061 1.双核处理 题目描述 一 ...

  8. 电子学会 2020年6月 青少年软件编程Python编程等级考试一级真题解析(选择题+判断题+编程题)

    青少年编程Python编程等级考试一级真题解析(选择题+判断题+编程题) 2020年6月 一.选择题(共25题,共50分) 以下哪种输入结果不可能得到以下反馈: 重要的事情说三遍:安全第一!安全第一! ...

  9. 电子学会 2021年6月 青少年软件编程Python编程等级考试一级真题解析(选择题+判断题+编程题)

    青少年编程Python编程等级考试一级真题解析(选择题+判断题+编程题) 2022年3月 一.选择题(共25题,共50分) 下列程序运行的结果是?( ) s = 'hello' print(s+'wo ...

  10. 电子学会 2021年9月 青少年软件编程Python编程等级考试一级真题解析(选择题+判断题+编程题)

    青少年编程Python编程等级考试一级真题解析(选择题+判断题+编程题) 2021年9月 一.选择题(共25题,共50分) 取整除的运算符是?( ) A. / B. // C. ÷ D. ** 答案选 ...

最新文章

  1. 【力扣网练习题】实现 strStr()
  2. java script 技巧
  3. 中间层体系结构的好处
  4. [Jobdu] 题目1214:丑数
  5. 《巴伦周刊》:纳德拉带领微软中兴
  6. Parsing error: The keyword 'const' is reservedeslint
  7. Groovy里的setProperty和getProperty重载用法
  8. 如何把朋友升级成情侣?| 今日最佳
  9. 发送http和https请求工具类 Json封装数据
  10. FCKeditor 上传图片和浏览服务器时提示请先登陆的解决办法
  11. MSDN上的异步socket 服务端例子
  12. 【TLSR825x】windows下开发环境搭建,固件烧录方法
  13. oracle xdb xquery,XML DB与XDB是同一个东西吗?
  14. python你好代码-AI人工智能Python实现简单人机对话:你好,人类
  15. php qq邮箱群发
  16. 设计模式之装饰者模式
  17. 这是浙江大学郑强教授的经典语录 虽然我不完全赞同但对他的精神佩服的五体投地...
  18. BeagleBone Black– 智能家居控制系统 LAS - ESP8266 UDP 服务
  19. vue大文件上传控件选哪个好?
  20. SLIC 超像素分割详解(三):应用

热门文章

  1. 【51单片机】 ULN2003模块 驱动步进电机(5线)正反转 代码以及接线图(简单教学,一看就会)
  2. 计算机网络实验一、验证性实验
  3. 面向交通流预测的时空融合图神经网络
  4. python自动产品分类_商品分类(一堆多)
  5. python —— 使用sympy模块求解数学方程
  6. 【ospf的三类LSA sum-net】(真假ABR、区域间防环机制、vlink)
  7. 数值分析matlab最小二乘法,数值分析及其MATLAB实验(第2版)
  8. UNIX Time Sharing System - UNIX分时系统翻译
  9. 蛋白质二级结构预测Linux,蛋白质稳定性预测工具-Rosetta ddg_monomer
  10. 07 PCA(主成分分析)之梯度上升法