7-1 古埃及探秘-金字塔

金字塔是继99乘法表决之后的一个经典图形排列题
要求用户可以自主控制塔身的层数, 完成如下金字体样式;


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

7-2 jmu-Java-01入门-第一个PAT上Java程序

本题目要求读入若干对整数a和b,然后输出它们的和。

输入格式:
在一行中给出一对整数a和b。 以下输入样例只有两对,实际测试数据可能有多对值。

输出格式:
对每一组输入,如果a的绝对值>1000,输出|a|>1000,否则输出a+b的值。

import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner sca = new Scanner(System.in);while(true){int a = sca.nextInt();int b = sca.nextInt();if(Math.abs(a)>1000){System.out.println("|a|>1000");}else{System.out.println(a+b);}}
}
}

3 jmu-Java-01入门-取数字 (2分)

本题目要求读入若干个代表整数的字符串,然后将其转化为整数。

如果该数>=10000且<=20000,则依次输出其对应的二进制字符串、八进制字符串、十六进制字符串。

否则将字符串中的每个数字抽取出来,然后将所有数字加总求和。

提示:参考jdk文档的Integer,

import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner sca = new Scanner(System.in);int a = 0 ;while(sca.hasNext()){int sum = 0 ,num=0;String s =  sca.nextLine();a=Integer.parseInt(s);if(a>=10000 && a<=20000){System.out.print(Integer.toBinaryString(a)+","+Integer.toOctalString(a)+","+Integer.toHexString(a));}else{char [] str = s.toCharArray();if(a<0){for(int i=0;i<str.length;i++){if (s.charAt(i)=='-'){continue;}System.out.print(str[i]+" ");sum+=str[i]-'0';}System.out.print(sum);}else{for(int j=0;j<str.length;j++){System.out.print(str[j]+" ");sum+=str[j]-'0';}System.out.print(sum);}}System.out.println();}
}
}

7-4 jmu-Java-01入门-取数字浮点数 (2分)

本题目要求读入若干以回车结束的字符串表示的整数或者浮点数,然后将每个数中的所有数字全部加总求和。

输入格式:
每行一个整数或者浮点数。保证在浮点数范围内。

输出格式:
整数或者浮点数中的数字之和。题目保证和在整型范围内。

import java.util.Scanner;
public class Main {public static void main(String[] args) {// TODO Auto-generated method stubScanner sca = new Scanner(System.in);while(true){String s =sca.nextLine();char [] ch =s.toCharArray();int sum = 0 ;for(int i = 0 ; i<ch.length;i++){if(ch[i]=='-' || ch[i]=='.'){}else{int temp = Integer.parseInt(String.valueOf(ch[i]));sum += temp;}}System.out.println(sum);}}
}

-5 jmu-Java-01入门-开根号 (20分)

使用逐步逼近法对给定数值x求开根号。

逐步逼近法说明:从0开始逐步累加步长值。

步长=0.0001,epsilon(误差)=0.0001

循环继续的条件:

平方值<x 且 |x-平方值| > epsilon

###说明与参考

  1. 数值输出保留6位小数,使用System.out.printf("%.6f\n")
  2. 求平方,参考Math.pow函数。
  3. 输入值<0时,返回Double.NaN

输入格式:
任意数值

输出格式:
对每一组输入,在一行中输出其开根号。保留6位小数

import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner sca = new Scanner(System.in);double long1=0.0001;double epsilon = 0.0001;double i;double x;while(sca.hasNext()){x=sca.nextDouble();if(x<0){System.out.println("NaN");}else{for(i=0;(i*i <x) && (Math.abs(x-i*i) > epsilon);i+=long1){}System.out.printf("%.6f",i);System.out.println();}}}
}

7-6 校园竞赛-十位评委 (10分)

题目要求:

我们学院经常组织各项技能比赛,例如电脑文化节中Flash作品比赛,台下有10位评委来评判参赛者的作品,评委打分:0-100分的整数,参赛者最终得分是去掉一个最高分,去掉一个最低分,所剩分数的平均分。

要求设计一个软件,可以连续输入10位评委的成绩,并且可以无限次计算参赛者的成绩(提示,不退出即可继续输入下一批成绩)

输入格式:
90 100 80 70 65 86 77 89 91 73

输出格式:
100 65 82

import java.util.Scanner;
public class Main {public static void main(String[] args) {// TODO Auto-generated method stubScanner sca = new Scanner(System.in);while(true){int[] score = new int[10];for(int i=0;i<score.length;i++){score[i] = sca.nextInt();}int min=score[0],max = score[0];for(int i = 1;i<score.length;i++){if(score[i]>max){max=score[i];}if(score[i]<min){min=score[i];}}System.out.println(max+" "+min);for(int i=1;i<score.length;i++){if(score[i]==max){score[i]=0;}if(score[i]==min){score[i]=0;}}int sum=0;for(int a:score){sum+=a;}System.out.println(sum/8);}}
}

7-2 jmu-Java-02基本语法-01-综合小测验 (10分)

运行程序后可以输入4个选项,分别为:fib,sort,search,getBirthDate

**fib:**根据输入n,打印斐波那契数列。比如输入:3,输出:1 1 2

sort:**输入一串数字,然后进行排序并输出,注意数组元素输出的格式为使用[ ]包括。提示:**可直接使用函数Arrays相关方法处理输出。

search:**如果找到返回所找到的位置,如果没找到,返回-1。提示:**可以先对数组排序,然后使用Arrays相关函数进行查找。

getBirthDate:输入n个身份证,然后把输入的n个身份号的年月日抽取出来,按年-月-日格式输出。

当输入不是这几个字符串(fib,sort,search,getBirthDate)的时候,显示exit并退出程序。

注意:在处理输入的时候,尽量全部使用Scanner的**nextLine()**方法接收输入,不要将nextLine()与其它next方法混用,否则可能会出现行尾回车换行未处理影响下次输入的情况。

参考:jdk文档的Arrays,String

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Scanner;
public class Main {public static int count=0;public static void fib(int n){int a=1;int b=1;if (n==1){System.out.println("1");return;}else if (n==2){System.out.println("1 1");return;}else if (n==0){return;} else {System.out.print("1 1 ");}int tem;for (int i=2;i<n-1;i++){tem=a+b;System.out.print(tem+" ");a=b;b=tem;}System.out.println(a+b);return;}public static void main(String[] args) {Scanner sc=new Scanner(System.in);int a[]=new int[1];while (true){String str=sc.nextLine();if (str.equals("fib")){count=0;int b=Integer.valueOf(sc.nextLine());fib(b);}else if (str.equals("sort")){String s[]=sc.nextLine().split(" ");a=new int[s.length];for (int i=0;i<s.length;i++){a[i]=Integer.valueOf(s[i]);}Arrays.sort(a);System.out.println(Arrays.toString(a));}else if (str.equals("search")){int  b=Integer.valueOf(sc.nextLine());int flag=0;for (int i =0;i<a.length;i++){if (a[i]==b){flag=1;System.out.println(i);break;}}if (flag==0){System.out.println(-1);}}else if (str.equals("getBirthDate")){int time=Integer.valueOf(sc.nextLine());for (int i=0;i<time;i++){String bir=sc.nextLine();String bem=bir.substring(6,14);System.out.println(bir.substring(6,10)+"-"+bir.substring(10,12)+"-"+bir.substring(12,14));}}else {System.out.println("exit");}}}
}

7-8 jmu-Java-02基本语法-02-StringBuilder (10分)

输入3个整数n、begin、end。 首先,使用如下代码:

for(int i=0;i<n;i++)
将从0到n-1的数字拼接为字符串str。如,n=12,则拼接出来的字符串为01234567891011

最后截取字符串str从begin到end(包括begin,但不包括end)之间的字符串,并输出。

import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner sca=  new Scanner(System.in);while(sca.hasNext()){int n ;int begin;int end;n=sca.nextInt();begin =sca.nextInt();end = sca.nextInt();StringBuilder str = new StringBuilder("");for(int i = 0 ; i<n;i++){str.append(i);}System.out.println(str.subSequence(begin, end));}}
}

7-4 jmu-Java-02基本语法-03-身份证排序 (10分)

输入n,然后连续输入n个身份证号。
然后根据输入的是sort1还是sort2,执行不同的功能。输入的不是sort1或sort2,则输出exit并退出。
输入sort1,将每个身份证的年月日抽取出来,按年-月-日格式组装,然后对组装后的年-月-日升序输出。
输入sort2,将所有身份证按照里面的年月日升序输出。
注意:处理输入的时候,全部使用Scanner的**nextLine()**方法,以免出错。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Scanner;
public class Main {public static void main(String[] args) throws ParseException {Scanner sc = new Scanner(System.in);int n = sc.nextInt();sc.nextLine();String[] str = new String[n];List list = new ArrayList();for (int i = 0; i < str.length; i++) {str[i] = sc.nextLine();list.add(str[i].substring(6, 14));}Sort sort = new Sort();while (sc.hasNext("sort[12]")) {switch (sc.nextLine()) {case "sort1":Date[] dates = sort.sortShort(list, n);for (int i = 0; i < n; i++) {System.out.println(String.format("%tF", dates[i]));}break;case "sort2":sort.sortShort(list, n);sort.sortShort(str);break;}}sc.close();System.out.println("exit");}
}
class Sort {Date[] date;SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");Date[] sortShort(List list, int n) throws ParseException {date = new Date[n];for (int i = 0; i < n; i++) {date[i] = sdf.parse(list.get(i).toString());}for (int i = 0; i < n - 1; i++) {for (int j = 0; j < n - 1 - i; j++) {if (date[j].getTime() > date[j + 1].getTime()) {Date a = date[j + 1];date[j + 1] = date[j];date[j] = a;}}}return date;}void sortShort(String[] s) {for (int i = 0; i < s.length; i++) {for (int j = 0; j < s.length; j++) {if (s[j].substring(6, 14).equals(sdf.format(date[i]))) {System.out.println(s[j]);}}}}
}

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

定义一个有关人的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对象,并直接打印该对象。

import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner sca = new Scanner(System.in);int n = sca.nextInt();Person[] per = new Person[n];for(int i = 0 ; i < per.length ; i++){String name = sca.next();int age = sca.nextInt();boolean gender = sca.nextBoolean();per[i]=new Person(name,age,gender);}for(int j = per.length-1;j>=0;j--){System.out.println(per[j].toString());}Person person = new Person();}
}
class Person{private String name;private int age;private boolean gender;private int id;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 name, int age, boolean gender) {super();this.name = name;this.age = age;this.gender = gender;}@Overridepublic String toString() {return "Person [name=" + name + ", age=" + age + ", gender=" + gender + ", id=" + id + "]";}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public boolean isGender() {return gender;}public void setGender(boolean gender) {this.gender = gender;}public int getId() {return id;}public void setId(int id) {this.id = id;}
}

7-11 jmu-Java-03面向对象基础-02-构造函数与初始化块 (5分)

##1.定义一个Person类 属性:name(String)、gender(boolean)、age(int)、id(int) ,所有的变量必须为私有(private)。
无参构造函数:Person(), 功能:打印This is constructor 。
有参构造函数:Person(name, gender, age) ,功能:给属性赋值。
建议:使用Eclipse自动生成toString方法

##2.定义类的初始化块 为Person类加入初始化块,在初始化块中对id属性赋值,并且要保证每次的值比上次创建的对象的值+1。然后在下一行打印This is initialization block, id is … 其中…是id的值。
提示:可为Person类定义一个static属性来记录所创建的对象个数。

##3.编写静态初始化块 打印This is static initialization block

##4.编写main方法

首先输入n,代表要创建的对象数量。
然后从控制台分别读取n行的name, gender, age, 并调用有参构造函数Person(name, age, gender)新建对象 。
将创建好的n个对象逆序输出(即输出toString()方法)。
使用无参构造函数新建一个Person对象,然后直接打印该对象。
##思考 初始化类与对象有几种方法,构造函数、初始化块、静态初始化块。这三种方法执行的先后顺序是什么?各执行几次。

import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner sca = new Scanner(System.in);int n = sca.nextInt();Person [] per = new Person[n];for(int i=0;i<per.length;i++){String name = sca.next();int age = sca.nextInt();boolean gender = sca.nextBoolean();per[i]= new Person (name,age,gender);}for(int j = per.length-1;j>=0;j--){System.out.println(per[j].toString());}Person per1 = new Person();}
}
class Person
{private String name;private boolean gender ;private int age;private int id;static int num=0;static{System.out.println("This is static initialization block");}{id = num;num++;System.out.println("This is initialization block, id is "+id);}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 name, int age,boolean gender) {super();this.name = name;this.gender = gender;this.age = age;}@Overridepublic String toString() {return "Person [name=" + name + ", age=" + age + ", gender=" + gender + ", id=" + id + "]";}
}

7-12 jmu-Java-03面向对象基础-03-形状 (3分)

  1. 定义长方形类与圆形类Circle 长方形类-类名:Rectangle,private属性:int width,length
    圆形类-类名:Circle,private属性:int radius

编写构造函数:
带参构造函数:Rectangle(width, length),Circle(radius)

编写方法:
public int getPerimeter(),求周长。
public int getArea(),求面积。
toString方法,使用Eclipse自动生成。

注意:

计算圆形的面积与周长,使用Math.PI。
求周长和面积时,应先计算出其值(带小数位),然后强制转换为int再返回。
##2. main方法

输入2行长与宽,创建两个Rectangle对象放入相应的数组。
输入2行半径,创建两个Circle对象放入相应的数组。
输出1:上面2个数组中的所有对象的周长加总。
输出2:上面2个数组中的所有对象的面积加总。
最后需使用Arrays.deepToString分别输出上面建立的Rectangle数组与Circle数组
思考:如果初次做该题会发现代码冗余严重。使用继承、多态思想可以大幅简化上述代码。

import java.util.Arrays;
import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner sca = new Scanner(System.in);int width;int length;int radius;Rectangle [] rec = new Rectangle[2];Circle [] cir = new Circle[2];for(int i = 0;i<2;i++){width =sca.nextInt();length = sca.nextInt();rec[i] = new Rectangle(width,length);}for(int i = 0;i<2;i++){radius = sca.nextInt();cir[i] = new Circle(radius);}int PerimeterSum = 0;int AreaSum = 0;for(int i = 0;i<2;i++){PerimeterSum += rec[i].getPerimeter()+cir[i].getPerimeter();AreaSum += rec[i].getArea() + cir[i].getArea();}System.out.println(PerimeterSum);System.out.println(AreaSum);System.out.println(Arrays.deepToString(rec));System.out.println(Arrays.deepToString(cir));}
}
class Rectangle
{private int width;private int length;public Rectangle(int width, int length) {super();this.width = width;this.length = length;}public int getPerimeter(){return 2*(width+length);}public int getArea(){return width*length;}@Overridepublic String toString() {return "Rectangle [width=" + width + ", length=" + length + "]";}
}
class Circle
{private int radius;public Circle(int radius) {super();this.radius = radius;}public int getPerimeter(){return (int)(2*(Math.PI)*radius);}public int getArea(){return (int)(Math.PI*radius*radius);}@Overridepublic String toString() {return "Circle [radius=" + radius + "]";}
}

7-13 jmu-Java-03面向对象基础-05-覆盖 (3分)

Java每个对象都继承自Object,都有equals、toString等方法。
现在需要定义PersonOverride类并覆盖其toString与equals方法。

###1. 新建PersonOverride类

a. 属性:String name、int age、boolean gender,所有的变量必须为私有(private)。

b. 有参构造函数,参数为name, age, gender

c. 无参构造函数,使用this(name, age,gender)调用有参构造函数。参数值分别为"default",1,true

d.toString()方法返回格式为:name-age-gender

e. equals方法需比较name、age、gender,这三者内容都相同,才返回true.

###2. main方法 2.1 输入n1,使用无参构造函数创建n1个对象,放入数组persons1。
2.2 输入n2,然后指定name age gender。每创建一个对象都使用equals方法比较该对象是否已经在数组中存在,如果不存在,才将该对象放入数组persons2。
2.3 输出persons1数组中的所有对象
2.4 输出persons2数组中的所有对象
2.5 输出persons2中实际包含的对象的数量
2.5 使用System.out.println(Arrays.toString(PersonOverride.class.getConstructors()));输出PersonOverride的所有构造函数。

提示:使用ArrayList代替数组大幅复简化代码,请尝试重构你的代码。

import java.util.ArrayList;
import java.util.Scanner;
import java.util.Arrays;
public class Main {public static void main(String[] args) {Scanner sca = new Scanner(System.in);int n1 = sca.nextInt();PersonOverride[] person1 = new PersonOverride[n1];for(int i = 0 ; i<n1;i++){person1[i] = new PersonOverride();System.out.println(person1[i].toString());}int n2= sca.nextInt();ArrayList<PersonOverride> person2 = new ArrayList<PersonOverride>();for(int i = 0 ; i < n2 ; i++){PersonOverride a = new PersonOverride(sca.next(),sca.nextInt(),sca.nextBoolean());if(!person2.contains(a)){person2.add(a);System.out.println(a.toString());}}System.out.println(person2.size());System.out.println(Arrays.toString(PersonOverride.class.getConstructors()));}
}
class PersonOverride{private String name;private int age;private boolean gender;public PersonOverride() {name="default";age =1;gender = true;}public PersonOverride(String name, int age, boolean gender) {super();this.name = name;this.age = age;this.gender = gender;}@Overridepublic String toString() {return name+"-"+age+"-"+gender;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;PersonOverride other = (PersonOverride) obj;if (age != other.age)return false;if (gender != other.gender)return false;if (name == null) {if (other.name != null)return false;} else if (!name.equals(other.name))return false;return true;}
}

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




import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
class Person{         private String name = null;private int age = 0;private boolean gender = false; public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public boolean isGender() {return gender;}public void setGender(boolean gender) {this.gender = gender;}public Person(String n, int a, boolean g) {   this.name = n;this.age = a;this.gender = g;}@Overridepublic String toString() {return  name+"-"+age+"-"+gender ;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;Person other = (Person) obj;if (age != other.age)return false;if (gender != other.gender)return false;if (name == null) {if (other.name != null)return false;} else if (!name.equals(other.name))return false;return true;}
}
class Student extends Person{String stuNo; String clazz;public Student(String n, int a, boolean g,String stuNo, String clazz) {super(n, a, g);this.stuNo=stuNo;this.clazz=clazz;// TODO Auto-generated constructor stub}@Overridepublic String toString() {return super.toString()+"-"+stuNo+"-"+clazz ;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (!super.equals(obj))return false;if (getClass() != obj.getClass())return false;Student other = (Student) obj;if (clazz == null) {if (other.clazz != null)return false;} else if (!clazz.equals(other.clazz))return false;if (stuNo == null) {if (other.stuNo != null)return false;} else if (!stuNo.equals(other.stuNo))return false;return true;}}class Company{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{int age; boolean gender; double salary; Company company;public Employee(String n, int age, boolean gender, double salary, Company company) {super(n, age, gender);this.age = age;this.gender = gender;this.salary = salary;this.company = company;}@Overridepublic String toString() {return super.toString()+"-"+company+"-"+salary;}DecimalFormat df = new DecimalFormat("#.#");@Overridepublic boolean equals(Object obj) {if(super.equals(obj)==true) {Employee other = (Employee)obj;if(this.company.toString()==null||other.company.toString()==null) {return false;}String df1 = new DecimalFormat("#.#").format(this.salary);String df2 = new DecimalFormat("#.#").format(other.salary);if(this.company.toString().compareTo(other.company.toString())==0&&df1.compareTo(df2)==0) {return true;}}return false;}}public class Main{public static void main(String[] args) {String name;int age;boolean gender;String stuNo;String clazz;double salary; String company;Scanner sc=new Scanner(System.in);List<Person> personList=new ArrayList <>();ArrayList<Student> students = new ArrayList<Student>();ArrayList<Employee> employees = new ArrayList<Employee>();while(true) {String c =sc.next();if(c.compareTo("s")==0) {name=sc.next();age=sc.nextInt();gender=sc.nextBoolean();stuNo=sc.next();clazz=sc.next();Person stu=new Student(name ,age ,gender ,stuNo ,clazz);personList.add(stu);}else if(c.compareTo("e")==0) {name=sc.next();age=sc.nextInt();gender=sc.nextBoolean();salary = sc.nextDouble();company = sc.next();Company company2 = new Company(company);Person emp=new Employee(name, age, gender, salary, company2);personList.add(emp);}else {personList.sort(Comparator.comparing(Person::getName).thenComparing(Person::getAge));    for (int i=0;i<personList.size();i++) {if (personList.get(i) instanceof Student) {System.out.println("Student:"+personList.get(i).toString());int flag = 0;for(int j=0;j<students.size();j++) {if(students.get(j).equals(personList.get(i))) {flag=1;break;}}if(flag == 0) {students.add((Student) personList.get(i));}}else {System.out.println("Employee:"+personList.get(i).toString());int flag = 0;for(int j=0;j<employees.size();j++) {if(employees.get(j).equals(personList.get(i))) {flag = 1;break;}}if(flag == 0) {employees.add((Employee)personList.get(i));}}}String tempString = sc.next();if(tempString.compareTo("exit")==0||tempString.compareTo("return")==0) {return;}System.out.println("stuList");for(int i=0;i<students.size();i++) {System.out.println("Student:"+students.get(i).toString());}System.out.println("empList");for(int i=0;i<employees.size();i++) {System.out.println("Employee:"+employees.get(i).toString());}}}}}

7-15 消失的车 (10分)
飞驰而过的车,它的车牌是由一个四位数构成的,只有3个路人看到它

甲说:它的前两位是一样的

乙说:它的后两位是一样的,但是和它的前两位不一样

丙说:它是一个数的平方

请你根据路人甲乙丙的叙述,写一个程序,算出该车牌号

public class Main{public static void main(String[] args) {int r1,r2,r3,r4,r5;for(int i=1000;i<=9999;i++){r1 = i/1000;r2 = i/100%10;r3 = i/10%10;r4 = i%10; r5 = (int)Math.sqrt(i);if(r2!=r3 && r1==r2 && r3==r4 && r5==Math.sqrt(i) ){System.out.println("车牌号码是"+i);break;}  }}}

7-16 判断回文 (10分)

输入一个以回车符为结束标志的字符串(少于80个字符),判断该字符串是否为回文。 回文就是字符串中心对称,如“abcba”、“abccba”是回文,“abcdba”不是回文。

输入格式:
输入一个以回车符为结束标志的字符串(少于80个字符)

输出格式:
为回文,输出yes; 非回文,输出no,注意输出的结果后面有回车符

import java.util.Scanner;
public class Main{public static void main(String[] args) {Scanner sca = new Scanner(System.in);String str1 = sca.nextLine();String str2 = new StringBuilder(str1).reverse().toString();if(str1.equals(str2)){System.out.println("yes");}else{System.out.println("no");}}}

7-17 我是升旗手 (10分)

一年一度的升旗手选拔又要到了,学校要求每个班级选出一位同学做升旗手的候选人。因 为升旗手对身高有严格的要求,所以班主任决定选班级里个子最高的同学(如果两位同学 一样高,则选任意一位)。你能很快地给老师答案么?

输入格式:
输入包括两行。 第一行:包括一个整数n,表示班级里共有n位同学。 第二行:包含n个三位数,表示每一位同学的身高。

输出格式:
输出身高最高的同学的身高。

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

7-18 jmu-Java-04面向对象进阶-01-接口-Comparable (5分)

编写实现Comparable接口的PersonSortable类,使其按name以及age排序

#1.编写PersonSortable类 属性:private name(String)、private age(int)
有参构造函数:参数为name,age
toString函数:返回格式为:name-age
实现Comparable接口:实现先对name升序排序,如果name相同则对age进行升序排序

#2.main方法中

首先输入n
输入n行name age,并创建n个对象放入数组
对数组进行排序后输出。
最后一行使用System.out.println(Arrays.toString(PersonSortable.class.getInterfaces()));输出PersonSortable所实现的所有接口

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner sca = new Scanner(System.in);int n = sca.nextInt();List<PersonSortable> lists = new ArrayList<PersonSortable>();for(int i = 0;i<n;i++){String s = sca.next();int j = sca.nextInt();PersonSortable personSortable=new PersonSortable(s, j);lists.add(personSortable);}Collections.sort(lists);for(PersonSortable personSortable : lists){System.out.println(personSortable.toString());}System.out.println(Arrays.toString(PersonSortable.class.getInterfaces()));}
}
class PersonSortable implements Comparable<PersonSortable>
{private String name;private int age;public PersonSortable(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return name + "-" + age ;}@Overridepublic int compareTo(PersonSortable o) {int i = this.name.compareTo(o.name);if(i==0){i=this.age-o.age;}return i;}
}

7-19 jmu-Java-04面向对象进阶–02-接口-Comparator (5分)

Arrays.sort可以对所有实现Comparable的对象进行排序。但如果有多种排序需求,如有时候需对name进行降序排序,有时候只需要对年龄进行排序。使用Comparable无法满足这样的需求。可以编写不同的Comparator来满足多样的排序需求。

#1.编写PersonSortable2类 属性:private name(String)、private age(int)
有参构造函数:参数为name,age
toString方法:返回格式name-age

#2 编写Comparator类

编写NameComparator类,实现对name进行升序排序
编写AgeComparator类,对age进行升序排序
#3.main方法中

输入n
输入n行name age,并创建n个对象放入数组
对数组按照name进行升序排序后输出。
在3的基础上对数组按照age进行升序排序后输出。
最后最后两行使用如下代码输出NameComparator与AgeComparator所实现的所有接口。
System.out.println(Arrays.toString(NameComparator.class.getInterfaces()));
System.out.println(Arrays.toString(AgeComparator.class.getInterfaces()));

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner sca = new Scanner(System.in);int n = sca.nextInt();List<PersonSortable2> lists=new ArrayList<PersonSortable2>();for (int i = 0 ; i< n ; i ++){String name = sca.next();int age = sca.nextInt();PersonSortable2 personSortable2 = new PersonSortable2(name, age);lists.add(personSortable2);}Collections.sort(lists,new NameComparator());System.out.println("NameComparator:sort");for(PersonSortable2 personSortable2 : lists){System.out.println(personSortable2.toString());}Collections.sort(lists,new AgeComparator());System.out.println("AgeComparator:sort");for(PersonSortable2 personSortable2 : lists){System.out.println(personSortable2.toString());}System.out.println(Arrays.toString(NameComparator.class.getInterfaces()));System.out.println(Arrays.toString(AgeComparator.class.getInterfaces()));}
}
class PersonSortable2
{private String name;private int age;public PersonSortable2(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return  name + "-" + age ;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}
class NameComparator implements Comparator<PersonSortable2>
{@Overridepublic int compare(PersonSortable2 o1, PersonSortable2 o2) {int i = o1.getName().compareTo(o2.getName());return i;}
}
class AgeComparator implements Comparator<PersonSortable2>
{@Overridepublic int compare(PersonSortable2 o1, PersonSortable2 o2) {int i = o1.getAge()-o2.getAge();return i;}
}

7-3 jmu-Java-06异常-01-常见异常 (5分)

自己编码以产生常见异常。

###main方法:

事先定义好一个大小为5的数组。

根据屏幕输入产生相应异常

提示:可以使用System.out.println(e)打印异常对象的信息,其中e为捕获到的异常对象。

**输入说明: **

arr 代表产生访问数组是产生的异常。然后输入下标,如果抛出ArrayIndexOutOfBoundsException异常则显示,如果不抛出异常则不显示。
null,产生NullPointerException
cast,尝试将String对象强制转化为Integer对象,产生ClassCastException。
num,然后输入字符,转化为Integer,如果抛出NumberFormatException异常则显示。
其他,结束程序。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner sca = new Scanner(System.in);int [] arr = new int[5];while(true){String str = sca.next();if(str.equals("arr")){try{int i = arr[sca.nextInt()];}catch(Exception e){System.out.println(e);}}else if (str.equals("null")){String str2 = null;try{str2.equals(str);}catch(Exception e){System.out.println(e);}}else if(str.equals("cast")){Object obj = "a";try{Integer integer =(Integer)obj;}catch(Exception e){System.out.println(e);}}else if (str.equals("num")){String c = sca.next();try{Integer integer = Integer.valueOf(c);}catch(Exception e){System.out.println(e);}}else {break;}}}
}

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

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

###main方法:

输入n,创建大小为n的int数组。
输入n个整数,放入数组。输入时,有可能输入的是非整型字符串,这时候需要输出异常信息,然后重新输入。
使用Arrays.toString输出数组中的内容。

import java.util.Arrays;
import java.util.Scanner;public class Main {public static void main(String[] args) {// TODO Auto-generated method stubScanner input=new Scanner(System.in);int n=input.nextInt();int[] arr=new int[n];for (int i = 0; i < n; ) {try {arr[i] = Integer.valueOf(input.next());i++;} catch (Exception e) {// TODO: handle exceptionSystem.out.println(e);}}System.out.println(Arrays.toString(arr));}
}

7-22 jmu-Java-06异常-03-throw与throws (10分)

前言
C语言中一般通过返回错误代码来表示一个函数执行是否有误。然而有的时候错误返回值可能与正常值相混淆。
Java中使用异常来表示程序运行中发生的错误。本实验的主要目的为了演示使用异常机制替代错误返回值。

import java.util.Scanner;
public class Main {public static void main(String[] args) {// TODO Auto-generated method stubScanner sca = new Scanner(System.in);int n = sca.nextInt();double [] arr = new double[n];for(int i = 0 ;i<n;i++){arr[i]=sca.nextInt();}while(true){int begin,end;int m =0;ArrayUtils a[] =new ArrayUtils[100];a[m++]=new ArrayUtils();try{begin = Integer.parseInt(sca.next());end = Integer.parseInt(sca.next());}catch(NumberFormatException e){break;}try{System.out.println(a[m].findMax(arr, begin, end));}catch(IllegalArgumentException e){System.out.println(e.toString());}}try {System.out.println(ArrayUtils.class.getDeclaredMethod("findMax", double[].class,int.class,int.class));} catch (Exception e1) {} }
}
class ArrayUtils
{public static double findMax(double[] arr,int begin, int end) throws IllegalArgumentException{if(begin>=end)   {throw new IllegalArgumentException("begin:"+begin+" >= end:"+end);}else if(begin<0){throw new IllegalArgumentException("begin:"+begin+" < 0");}else if(end>arr.length){throw new IllegalArgumentException("end:"+end+" > arr.length");}double max =0.0;for(int i = begin;i<=end-1 ;i++){if(arr[i]>max){max = arr[i];}}return max;}
}

7-23 jmu-Java-06异常-04-自定义异常(综合) (15分)

定义IllegalScoreException异常类,代表分数相加后超出合理范围的异常。该异常是checked exception,即希望该异常一定要被捕获处理。

定义IllegalNameException异常类,代表名字设置不合理的异常。该异常是unchecked exception

定义Student类。

属性:

private String name;
private int score;
方法:

toString //自动生成
setter/getter //自动生成
改造setName //如果姓名首字母为数字则抛出IllegalNameException
public int addScore(int score) //如果加分后分数<0 或>100,则抛出IllegalScoreException,加分不成功。
###main方法:

输入new则新建学生对象。然后输入一行学生数据,格式为姓名 年龄,接着调用setName,addScore。否则跳出循环。
setName不成功则抛出异常,并打印异常信息,然后继续下一行的处理。
addScore不成功则抛出异常,并打印异常信息,然后继续下一行的处理。如果2、3都成功,则打印学生信息(toString)
如果在解析学生数据行的时候发生其他异常,则打印异常信息,然后继续下一行的处理。
Scanner也是一种资源,希望程序中不管有没有抛出异常,都要关闭。关闭后,使用System.out.println(“scanner closed”)打印关闭信息
注意:使用System.out.println(e);打印异常信息,e为所产生的异常。

import java.util.Scanner;
public class Main {public static void main(String[] args) {// TODO Auto-generated method stubScanner sca = new Scanner(System.in);while(true){String str = sca.nextLine();if(str.equals("new")){String s = sca.nextLine();String [] s1 = s.split(" ");if(s1.length == 2){String name = s1[0];int score = Integer.valueOf(s1[1]);Student student = new Student();student.setName(name);student.setScore(score);if(student.getFlag()==0){System.out.println(student);}}else{System.out.println("java.util.NoSuchElementException");}}else{break;}}sca.close();System.out.println("scanner closed");}
}
class IllegalScoreException extends Exception{public IllegalScoreException(){}public IllegalScoreException(String message){super(message);}public IllegalScoreException(String message,Throwable cause){super(message,cause);}public IllegalScoreException(Throwable cause){super(cause);}
}
class IllegalNameException extends Exception{public IllegalNameException() {}public IllegalNameException(String message) {super(message);}public IllegalNameException(String message, Throwable cause) {super(message, cause);}public IllegalNameException(Throwable cause) {super(cause);}
}
class Student
{private String name;private int score;private int flag=0;@Overridepublic String toString() {return "Student [name=" + name + ", score=" + score + "]";}public String getName() {return name;}public void setName(String name) {char c=name.charAt(0);if (c>='0'&&c<='9'){try {flag=1;throw new IllegalNameException();} catch (IllegalNameException e) {System.out.println("IllegalNameException: the first char of name must not be digit, name="+name);}return;}this.name = name;}public int getScore() {return score;}public void setScore(int score) {if (flag==1){return;}if (score<0||score>100){try {flag=1;throw new IllegalScoreException();} catch (IllegalScoreException e) {System.out.println("IllegalScoreException: score out of range, score="+score);}}this.score = score;}public int addScore(int score) {return 0;}public int getFlag() {return flag;}public void setFlag(int flag) {this.flag = flag;}
}

**

仅供参考,欢迎评论

**

厦理Java期末训练题【附带每题答案,非标准但可通过PTA】相关推荐

  1. php java 私钥 转换格式,php公钥私钥 3 ---非标准格式转换为标准格式

    PHP RSA 报错 openssl_sign(): supplied key param cannot be coerced into a private key 私钥 private functi ...

  2. java期末考试复习题_java期末考试复习题库 试题题库.doc

    java期末考试复习题库 试题题库 1 Java中对数据库查询结果集进行操作的对象是() ( A:Connection对象 B:Statement对象 C:DriverManager对象 D:Resu ...

  3. java程序设计试题_《Java语言程序设计》期末考试模拟试题——填空题和编程题...

    一.根据题意,填写出空格中的内容 Java平台包括三个技术方向,其中J2ME代表____________.J2SE代表___________.J2EE代表____________.2.面向对象的四大概 ...

  4. java期末判断题题库_(java期末考试选择题题库.doc

    (java期末考试选择题题库 1.分析以下程序: 1)public class x{ 2)public static void main(String[]args){ 3)String ol=new ...

  5. java期末考试B卷题及答案,《JAVA程序设计》期末试题B卷

    <JAVA程序设计>期末试题B卷 班级:_________________ 学号:_________________ 姓名:_________________任课教师:__________ ...

  6. 大一java期末考试模拟题,java期末考试模拟试题-final

    java期末考试模拟试题-final <JAVA 语言程序设计>期末考试模拟试题 1 一.选择题( 每小题 1 分,共 10 分,注:选择答案可能不止一个正确) 1.编译 Java App ...

  7. java期末一般考什么内容_java期末考的大题都在这

    <java期末考的大题都在这>由会员分享,可在线阅读,更多相关<java期末考的大题都在这(14页珍藏版)>请在人人文库网上搜索. 1.1按要求编写一个Java应用程序:(1) ...

  8. JAVA习题大全之java期末考试复习预测题一

    JAVA习题大全 目录 JAVA习题大全 java期末考试复习预测题A java期末考试复习预测题B java期末考试复习预测题C java期末考试复习预测题D java期末考试复习预测题E java ...

  9. 福州大学java期末试卷,Java Web认证题.doc

    Java Web认证题.doc 福州大学工程技术学院福州大学工程技术学院 04 级级 Web 应用程序设计应用程序设计Java 扬帆把舵,奋勇拼搏,看我扬帆把舵,奋勇拼搏,看我Java,英姿焕爽,英姿 ...

最新文章

  1. (Mark)操作系统原理
  2. 牛客16662 津津的储蓄计划
  3. torch tensor去掉1维_南昌清污机新价格表1_海腾水工
  4. 怎么把pdf转换为html,如何将PDF转换成HTML网页格式呢?
  5. Python库大全,建议收藏留用!
  6. 幅相曲线matlab,matlab开环幅相曲线
  7. 后端根据百度地图真实路径距离_百度地图开放平台介绍--路线规划
  8. 记录如何深度拷贝一个属性存在循环引用的对象
  9. 《绝地求生》外挂源代码被公布,或迎神仙大战时代?
  10. python smooth函数_利用Python程序完成ABAQUS中的一些重复性操作
  11. v​n​c​服​务​​安​装​与配置
  12. NBA30只球队2020年各队数据分析
  13. 为啥yum源repolist为0?自己经常出错和常用的解决办法
  14. 1.1版走迷宫小游戏(C++)
  15. 经典例题:编写一个程序,从键盘输入一串字符,统计这串字符中英文字母、数字、其他字符号的字符数。
  16. 本地生活O2O行业已经逐渐渗透到日常生活中
  17. Fiddler原理+雷电模拟器进行APP抓包
  18. c#获取公网的ip,本机ip 以及当前城市以及运营商
  19. Anaconda安装教程(超详细)
  20. C语言软件分层的方法,单片机程序分层设计思想

热门文章

  1. python学习 day49之CSS网页布局
  2. 摄像头视频推流python_python中用FFmpeg向rtmp服务器推流,实现摄像头直播
  3. .vdat文件怎么打开
  4. 【论文笔记】EMBEDDING ENTITIES AND RELATIONS FOR LEARN-ING AND INFERENCE IN KNOWLEDGE BASES
  5. CentOS 6.5下安装Confluence 5.4
  6. c++win32项目 如何显示后再删除一个绘图_iMATLAB 绘图扩展函数系列 | 让你绘图更自由(进阶专辑开篇)!...
  7. 统计100以内能被7整除的自然数c语言,编写程序,计算1到100中既能被3整除又能被7整除的所有数,并计算这些数的个数...
  8. Java日志框架 -- 日志框架介绍、日志门面技术、JUL日志(JUL架构、JUL入门示例、JUL日志级别、JUL日志的配置文件)
  9. 递归实现对多层嵌套的对象数组依照某属性进行排序
  10. android动画送礼物,Android开发仿映客送礼物效果