收费看电影网站建设,优化电池充电是关闭还是打开好,沈阳专业网站建设公司,开发网站公司收入这里要用到一些面向对象的基本知识
目录
7-1 伪随机数
输入格式:
输出格式:
输入样例:
输出样例:
7-2 jmu-Java-03面向对象基础-01-构造方法与toString
1.编写无参构造函数#xff1a;
2.编写有参构造函数
3.覆盖toString函数#xff1a;
4.对每个属性生成setter…这里要用到一些面向对象的基本知识
目录
7-1 伪随机数
输入格式:
输出格式:
输入样例:
输出样例:
7-2 jmu-Java-03面向对象基础-01-构造方法与toString
1.编写无参构造函数
2.编写有参构造函数
3.覆盖toString函数
4.对每个属性生成setter/getter方法
5.main方法中
输入样例:
输出样例:
7-3 jmu-Java-03面向对象基础-02-构造方法与初始化块
1.定义一个Person类
2.定义类的初始化块
3.编写静态初始化块
4.编写main方法
思考
输入样例:
输出样例:
7-4 复数类的定义
输入格式:
输出格式:
输入样例:
输出样例:
7-5 jmu-Java-01入门-开根号
输入格式:
输出格式:
输入样例:
输出样例:
7-6 jmu-Java-01入门-取数字浮点数
输入格式:
输出格式:
输入样例:
输出样例:
7-7 日期类设计
输入格式:
输出格式:
输入样例1:
输出样例1:
输入样例2:
输出样例2:
输入样例3:
输出样例3:
输入样例4:
输出样例4:
7-8 jmu-Java-03面向对象基础-03-形状
1. 定义长方形类与圆形类Circle
2. main方法
输入样例:
输出样例:
7-9 jmu-Java-02基本语法-01-综合小测验
输入格式:
输出格式:
7-10 jmu-Java-02基本语法-04-动态数组
输出格式说明
输入样例:
输出样例:
7-11 jmu-Java-02基本语法-07-大整数相加
输入格式
输入样例:
输出样例:
7-12 jmu-Java-03面向对象基础-05-覆盖
1. 新建PersonOverride类
2. main方法
输入样例:
输出样例: 7-1 伪随机数
在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.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
import java.lang.*;public class Main {static PrintWriter out new PrintWriter(System.out);static StreamTokenizer in new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));static Scanner cin new Scanner(System.in);static Random rnd new Random();static void solve() throws IOException{int n,m,k;n cin.nextInt();m cin.nextInt();k cin.nextInt();rnd.setSeed(k);int res 0;for(int i0;in;i){res rnd.nextInt(m); }out.println(res);}public static void main(String [] args) throws IOException{solve();out.flush();}
}7-2 jmu-Java-03面向对象基础-01-构造方法与toString 定义一个有关人的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 [namec, age10, genderfalse, id0]
Person [nameb, age12, gendertrue, id0]
Person [namea, age11, genderfalse, id0]
This is constructor
null,0,false,0
Person [namenull, age0, genderfalse, id0]import java.util.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
import java.lang.*;class Person{private String name null;private int age 0;private boolean gender false;private int id 0; Person(){System.out.println(This is constructor);System.out.printf(%s,%d,%b,%d%n,name,age,gender,id);}Person(String _name,int _age,boolean _gender){this.name _name;this.age _age;this.gender _gender;}public String toString(){System.out.println(Person [namethis.name, agethis.age, genderthis.gender, idthis.id]);return love jyy three thousand times;}
}public class Main {static PrintWriter out new PrintWriter(System.out);static Scanner in new Scanner(System.in);static void solve() throws IOException{int n in.nextInt();Person ps[] new Person[n];for(int i0;in;i){String name in.next();int age in.nextInt();boolean gender in.nextBoolean();ps[i] new Person(name,age,gender);}for(int in-1;i0;i--){ps[i].toString();}Person a new Person();a.toString();}public static void main(String [] args) throws IOException{solve();}
}7-3 jmu-Java-03面向对象基础-02-构造方法与初始化块 1.定义一个Person类
属性String name, boolean gender, int age, int id ,所有的变量必须为私有(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 age gender, 并调用有参构造函数Person(name, age, gender)新建对象 。将创建好的n个对象逆序输出(即输出toString()方法)。使用无参构造函数新建一个Person对象然后直接打印该对象。
思考
初始化类与对象有几种方法构造函数、初始化块、静态初始化块。这三种方法执行的先后顺序是什么各执行几次。
输入样例:
3
a 11 false
b 12 true
c 10 false
输出样例:
This is static initialization block
This is initialization block, id is 0
This is initialization block, id is 1
This is initialization block, id is 2
Person [namec, age10, genderfalse, id2]
Person [nameb, age12, gendertrue, id1]
Person [namea, age11, genderfalse, id0]
This is initialization block, id is 3
This is constructor
null,0,false,3
Person [namenull, age0, genderfalse, id3]import java.util.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
import java.lang.*;class Person{private String name null;private int age 0;private boolean gender false;private int id 0; private static int flag 0;Person(){System.out.println(This is constructor);System.out.printf(%s,%d,%b,%d%n,name,age,gender,id);}Person(String _name,int _age,boolean _gender){this.name _name;this.age _age;this.gender _gender;}public String toString(){System.out.println(Person [namethis.name, agethis.age, genderthis.gender, idthis.id]);return love jyy three thousand times;}{id flag;System.out.println(This is initialization block, id is id);}static{System.out.println(This is static initialization block);}
}public class Main {static Scanner in new Scanner(System.in);static void solve() throws IOException{int n in.nextInt();Person ps[] new Person[n];for(int i0;in;i){String name in.next();int age in.nextInt();boolean gender in.nextBoolean();ps[i] new Person(name,age,gender);}for(int in-1;i0;i--){ps[i].toString();}Person a new Person();a.toString();}public static void main(String [] args) throws IOException{solve();}
}7-4 复数类的定义 编写一个复数类可以进行复数加法和减法运算。编写一个包含main方法的类测试该复数类。要求该复数类至少包含一个无参的构造方法和一个带参的构造方法数据成员包括复数的实部和虚部为double类型包括两个方法分别实现复数的加法和减法运算。测试代码如下 public static void main(String [] args){Complex anew Complex();Complex bnew Complex();Scanner innew Scanner(System.in);a.setRealPart(in.nextDouble());a.setImaginaryPart(in.nextDouble());b.setRealPart(in.nextDouble());b.setImaginaryPart(in.nextDouble());System.out.println(a);System.out.println(b);System.out.println(a.add(b));System.out.println(a.sub(b));
}输入格式:
输入两个复数。输入为两行每一行为一个复数的实部和虚部用空格隔开。
输出格式:
输出复数加法和减法结果。输出为4行第一行和第二行输出两个复数第三行为两个复数的加法运算结果第四行为减法运算结果。
输入样例:
在这里给出两组输入。例如
1 2
3 4
-1 2
1 2
输出样例:
在这里给出相应的输出。例如
1.02.0i
3.04.0i
4.06.0i
-2.0-2.0i
-1.02.0i
1.02.0i
4.0i
-2.0
import java.util.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
import java.lang.*;class Complex{private double real 0;private double imag 0;public void setRealPart(double _real){this.real _real;}public void setImaginaryPart(double _imag){this.imag _imag;}public Complex add(Complex a){Complex tmp new Complex();tmp.real this.real a.real;tmp.imag this.imag a.imag; return tmp;}public Complex sub(Complex a){Complex tmp new Complex();tmp.real this.real - a.real;tmp.imag this.imag - a.imag; return tmp;}public String toString(){if(this.real 0 this.imag 0){return 0;}else if(this.real 0 ){return this.imag i;}else if(this.imag 0){return this.real;}else if(this.imag 0){return this.real this.imag i;}else{return this.real this.imag i;}}
} public class Main {static Scanner in new Scanner(System.in);static void solve() throws IOException{Complex anew Complex();Complex bnew Complex();Scanner innew Scanner(System.in);a.setRealPart(in.nextDouble());a.setImaginaryPart(in.nextDouble());b.setRealPart(in.nextDouble());b.setImaginaryPart(in.nextDouble());System.out.println(a);System.out.println(b);System.out.println(a.add(b));System.out.println(a.sub(b));}public static void main(String [] args) throws IOException{solve();}
}7-5 jmu-Java-01入门-开根号 使用逐步逼近法对给定数值x求开根号。
逐步逼近法说明从0开始逐步累加步长值。
步长0.0001epsilon(误差)0.0001
循环继续的条件
平方值x 且 |x-平方值| epsilon
###说明与参考
数值输出保留6位小数使用System.out.printf(%.6f\n)求平方参考Math.pow函数。输入值0时返回Double.NaN
输入格式:
任意数值
输出格式:
对每一组输入在一行中输出其开根号。保留6位小数
输入样例:
-1
0
0.5
0.36
1
6
100
131输出样例:
NaN
0.000000
0.707100
0.600000
1.000000
2.449500
10.000000
11.445600
import java.util.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
import java.lang.*;class sqrt{private double pre;public void setPre(double _pre){this.pre _pre;}public double cal(){double res 0;if(this.pre 0){return -1;}while(true){if(res * res this.pre || Math.abs(this.pre - res*res) 0.0001){break;}res 0.0001;} return res;}} public class Main {static Scanner in new Scanner(System.in);static void solve() throws IOException{while(true){double num in.nextDouble();sqrt t new sqrt();t.setPre(num);Double res t.cal();if(res -1){System.out.println(NaN);}else{System.out.printf(%.6f\n,res);}}}public static void main(String [] args) throws IOException{solve();}
}7-6 jmu-Java-01入门-取数字浮点数 本题目要求读入若干以回车结束的字符串表示的整数或者浮点数然后将每个数中的所有数字全部加总求和。
输入格式:
每行一个整数或者浮点数。保证在浮点数范围内。
输出格式:
整数或者浮点数中的数字之和。题目保证和在整型范围内。
输入样例:
-123.01
234输出样例:
7
9
import java.util.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
import java.lang.*;public class Main {static Scanner in new Scanner(System.in);static void solve() throws IOException{while(true){String s in.nextLine();int res 0;for(int i0;is.length();i){if(s.charAt(i)0 s.charAt(i)9){res (int)(s.charAt(i) - 0);}}System.out.println(res);}}public static void main(String [] args) throws IOException{solve();}
}7-7 日期类设计 参考题目3和日期相关的程序设计一个类DateUtil该类有三个私有属性year、month、day均为整型数其中year∈[1820,2020] ,month∈[1,12] ,day∈[1,31] , 除了创建该类的构造方法、属性的getter及setter方法外需要编写如下方法
public boolean checkInputValidity();//检测输入的年、月、日是否合法
public boolean isLeapYear(int year);//判断year是否为闰年
public DateUtil getNextNDays(int n);//取得year-month-day的下n天日期
public DateUtil getPreviousNDays(int n);//取得year-month-day的前n天日期
public boolean compareDates(DateUtil date);//比较当前日期与date的大小先后
public boolean equalTwoDates(DateUtil date);//判断两个日期是否相等
public int getDaysofDates(DateUtil date);//求当前日期与date之间相差的天数
public String showDate();//以“year-month-day”格式返回日期值应用程序共测试三个功能
求下n天求前n天求两个日期相差的天数
注意严禁使用Java中提供的任何与日期相关的类与方法并提交完整源码包括主类及方法已提供不需修改
程序主方法如下
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner input new Scanner(System.in);int year 0;int month 0;int day 0;int choice input.nextInt();if (choice 1) { // test getNextNDays methodint m 0;year Integer.parseInt(input.next());month Integer.parseInt(input.next());day Integer.parseInt(input.next());DateUtil date new DateUtil(year, month, day);if (!date.checkInputValidity()) {System.out.println(Wrong Format);System.exit(0);}m input.nextInt();if (m 0) {System.out.println(Wrong Format);System.exit(0);}System.out.print(date.getYear() - date.getMonth() - date.getDay() next m days is:);System.out.println(date.getNextNDays(m).showDate());} else if (choice 2) { // test getPreviousNDays methodint n 0;year Integer.parseInt(input.next());month Integer.parseInt(input.next());day Integer.parseInt(input.next());DateUtil date new DateUtil(year, month, day);if (!date.checkInputValidity()) {System.out.println(Wrong Format);System.exit(0);}n input.nextInt();if (n 0) {System.out.println(Wrong Format);System.exit(0);}System.out.print(date.getYear() - date.getMonth() - date.getDay() previous n days is:);System.out.println(date.getPreviousNDays(n).showDate());} else if (choice 3) { //test getDaysofDates methodyear Integer.parseInt(input.next());month Integer.parseInt(input.next());day Integer.parseInt(input.next());int anotherYear Integer.parseInt(input.next());int anotherMonth Integer.parseInt(input.next());int anotherDay Integer.parseInt(input.next());DateUtil fromDate new DateUtil(year, month, day);DateUtil toDate new DateUtil(anotherYear, anotherMonth, anotherDay);if (fromDate.checkInputValidity() toDate.checkInputValidity()) {System.out.println(The days between fromDate.showDate() and toDate.showDate() are: fromDate.getDaysofDates(toDate));} else {System.out.println(Wrong Format);System.exit(0);}}else{System.out.println(Wrong Format);System.exit(0);} }
}
输入格式:
有三种输入方式以输入的第一个数字划分[1,3]
1 year month day n //测试输入日期的下n天2 year month day n //测试输入日期的前n天3 year1 month1 day1 year2 month2 day2 //测试两个日期之间相差的天数
输出格式:
当输入有误时输出格式如下Wrong Format当第一个数字为1且输入均有效输出格式如下 year1-month1-day1 next n days is:year2-month2-day2当第一个数字为2且输入均有效输出格式如下 year1-month1-day1 previous n days is:year2-month2-day2当第一个数字为3且输入均有效输出格式如下 The days between year1-month1-day1 and year2-month2-day2 are:值输入样例1:
在这里给出一组输入。例如
3 2014 2 14 2020 6 14输出样例1:
在这里给出相应的输出。例如
The days between 2014-2-14 and 2020-6-14 are:2312输入样例2:
在这里给出一组输入。例如
2 1834 2 17 7821输出样例2:
在这里给出相应的输出。例如
1834-2-17 previous 7821 days is:1812-9-19输入样例3:
在这里给出一组输入。例如
1 1999 3 28 6543输出样例3:
在这里给出相应的输出。例如
1999-3-28 next 6543 days is:2017-2-24输入样例4:
在这里给出一组输入。例如
0 2000 5 12 30输出样例4:
在这里给出相应的输出。例如
Wrong Format
import java.util.Scanner;class DateUtil{private int year;private int month;private int day;public DateUtil(){}public DateUtil(int _year,int _month,int _day){this.year _year;this.month _month;this.day _day;}public int getDay(){return this.day;}public int getYear(){return this.year;}public int getMonth(){return this.month;}public boolean checkInputValidity(){if(year 2020 year 1820 month 1 month 12 day 1 day 31){if(day daysInMonth(year,month)){return true;}}return false;}public boolean isLeapYear(int _year){if(_year % 4 0 _year % 100 ! 0 || _year % 400 0){return true;}return false;}public DateUtil getNextNDays(int n){int _day day;int _month month;int _year year;int[] daysInMonth {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};if (isLeapYear(_year)) {daysInMonth[2] 29;}for (int i 0; i n; i) {_day;if (_day daysInMonth[_month]) {_day 1;_month;if (_month 12) {_month 1;_year;daysInMonth[2] isLeapYear(_year) ? 29 : 28;}}}// _day n;// while (_day daysInMonth[_month]) {// _day - daysInMonth[_month];// _month;// if (_month 12) {// _month 1;// _year;// daysInMonth[2] isLeapYear(_year) ? 29 : 28;// }// }DateUtil res new DateUtil(_year,_month,_day);return res;}public DateUtil getPreviousNDays(int n){int _day day;int _month month;int _year year;int[] daysInMonth {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};if (isLeapYear(_year)) {daysInMonth[2] 29;}for (int i 0; i n; i) {_day--;if (_day 0) {_month--;if (_month 0) {_month 12;_year--;daysInMonth[2] isLeapYear(_year) ? 29 : 28;}_day daysInMonth[_month];}}// _day - n;// while (_day 1) {// _month --;// if (_month 1) {// _month 12;// _year--;// daysInMonth[2] isLeapYear(_year) ? 29 : 28;// }// _day daysInMonth[_month];// }DateUtil res new DateUtil(_year,_month,_day);return res;}public int daysInMonth(int _year, int _month) {int[] daysInMonth {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};if (isLeapYear(_year) _month 2) {return 29;}return daysInMonth[_month]; }public int getDaysofDates(DateUtil date){int year1 this.year;int year2 date.year;int day1 this.day;int day2 date.day;int month1 this.month;int month2 date.month;if (year1 year2 || (year1 year2 month1 month2) || (year1 year2 month1 month2 day1 day2)) {int tempYear year1;int tempMonth month1;int tempDay day1;year1 year2;month1 month2;day1 day2;year2 tempYear;month2 tempMonth;day2 tempDay;}int daysDifference 0;for (int year year1; year year2; year) {daysDifference isLeapYear(year) ? 366 : 365;}daysDifference dayOfYear(year2, month2, day2);daysDifference - dayOfYear(year1, month1, day1);return daysDifference;}public int dayOfYear(int _year, int _month, int _day) {int[] daysInMonth {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};if (isLeapYear(_year)) {daysInMonth[2] 29;}int dayOfYear 0;for (int i 1; i _month; i) {dayOfYear daysInMonth[i];}dayOfYear _day;return dayOfYear;}public String showDate(){return year - month - day;}}public class Main {public static void main(String[] args) {Scanner input new Scanner(System.in);int year 0;int month 0;int day 0;int choice input.nextInt();if (choice 1) { // test getNextNDays methodint m 0;year Integer.parseInt(input.next());month Integer.parseInt(input.next());day Integer.parseInt(input.next());DateUtil date new DateUtil(year, month, day);if (!date.checkInputValidity()) {System.out.println(Wrong Format);System.exit(0);}m input.nextInt();if (m 0) {System.out.println(Wrong Format);System.exit(0);}System.out.print(date.getYear() - date.getMonth() - date.getDay() next m days is:);System.out.println(date.getNextNDays(m).showDate());} else if (choice 2) { // test getPreviousNDays methodint n 0;year Integer.parseInt(input.next());month Integer.parseInt(input.next());day Integer.parseInt(input.next());DateUtil date new DateUtil(year, month, day);if (!date.checkInputValidity()) {System.out.println(Wrong Format);System.exit(0);}n input.nextInt();if (n 0) {System.out.println(Wrong Format);System.exit(0);}System.out.print(date.getYear() - date.getMonth() - date.getDay() previous n days is:);System.out.println(date.getPreviousNDays(n).showDate());} else if (choice 3) { //test getDaysofDates methodyear Integer.parseInt(input.next());month Integer.parseInt(input.next());day Integer.parseInt(input.next());int anotherYear Integer.parseInt(input.next());int anotherMonth Integer.parseInt(input.next());int anotherDay Integer.parseInt(input.next());DateUtil fromDate new DateUtil(year, month, day);DateUtil toDate new DateUtil(anotherYear, anotherMonth, anotherDay);if (fromDate.checkInputValidity() toDate.checkInputValidity()) {System.out.println(The days between fromDate.showDate() and toDate.showDate() are: fromDate.getDaysofDates(toDate));} else {System.out.println(Wrong Format);System.exit(0);}}else{System.out.println(Wrong Format);System.exit(0);} }
}7-8 jmu-Java-03面向对象基础-03-形状 1. 定义长方形类与圆形类Circle
长方形类-类名Rectangleprivate属性int width,length 圆形类-类名Circleprivate属性: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数组
思考如果初次做该题会发现代码冗余严重。使用继承、多态思想可以大幅简化上述代码。
输入样例:
1 2
3 4
7
1
输出样例:
69
170
[Rectangle [width1, length2], Rectangle [width3, length4]]
[Circle [radius7], Circle [radius1]]
import java.util.*;class Rectangle{private int width;private int length;public Rectangle(){}public Rectangle(int _width,int _length){this.length _length;this.width _width;}public int getPerimeter(){return (length width)*2;}public int getArea(){return length * width;}public String toString(){return Rectangle [width this.width , length this.length ]; }
}class Circle{private int radius;public Circle(){}public Circle(int _radius){this.radius _radius;}public int getPerimeter(){double res radius * 2 * Math.PI; return (int) res;}public int getArea(){double res radius * radius * Math.PI;return (int) res;}public String toString(){return Circle [radius this.radius ]; }
}public class Main {public static void main(String[] args) {Scanner in new Scanner(System.in);int a,b;Rectangle r[] new Rectangle[2];a in.nextInt();b in.nextInt();r[0] new Rectangle(a,b);a in.nextInt();b in.nextInt();r[1] new Rectangle(a,b);Circle c[] new Circle[2];int radius in.nextInt();c[0] new Circle(radius);radius in.nextInt();c[1] new Circle(radius);int peri r[0].getPerimeter() r[1].getPerimeter() c[0].getPerimeter() c[1].getPerimeter();int area r[0].getArea() r[1].getArea() c[0].getArea() c[1].getArea();System.out.println(peri); System.out.println(area); System.out.println(Arrays.deepToString(r));System.out.println(Arrays.deepToString(c));}
}7-9 jmu-Java-02基本语法-01-综合小测验 运行程序后可以输入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文档的ArraysString
输入格式:
fib
3
sort
-1 10 3 2 5
search
-1
search
0
getBirthDate
1
330226196605054190
e
输出格式:
1 1 2
[-1, 2, 3, 5, 10]
0
-1
1966-05-05
exit
import java.util.*;public class Main {static Scanner in new Scanner(System.in);static int num[] new int[1];public static void sort(){String numString[] in.nextLine().split( );num new int[numString.length];for(int i0; inumString.length;i){num[i] Integer.valueOf(numString[i]);}Arrays.sort(num);System.out.println(Arrays.toString(num));}public static void fib(){int n in.nextInt();in.nextLine();int pre 0;int now 1;for(int i0;in-1;i){System.out.print(now );int tmp now;now pre;pre tmp;}System.out.println(now);}public static void getBirthDate(){int n in.nextInt();in.nextLine();String s[] new String[n];for(int i0;in;i){s[i] in.nextLine();}for(int i0;in;i){System.out.println(s[i].substring(6,10) - s[i].substring(10,12) - s[i].substring(12,14));}}public static void search(){int n in.nextInt();in.nextLine();int flag 0;for (int i 0; i num.length; i) {//System.out.println(num[i]);if (num[i] n) {System.out.println(i);flag 1;break;}}if (flag 0){System.out.println(-1);}}public static void main(String[] args) {while(true){String op in.nextLine();if(op.equals(sort)){sort();}else if(op.equals(search)){search();}else if(op.equals(fib)){fib();}else if(op.equals(getBirthDate)){getBirthDate();}else{System.out.println(exit);break;}}}
}7-10 jmu-Java-02基本语法-04-动态数组 根据输入的n打印n行乘法口诀表。 需要使用二维字符串数组存储乘法口诀表的每一项比如存放1*11. 为了保证程序中使用了二维数组需在打印完乘法口诀表后使用Arrays.deepToString打印二维数组中的内容。
提醒格式化输出可使用String.format或者System.out.printf。
输出格式说明
每行末尾无空格。每一项表达式之间(从第1个表达式的第1个字符算起到下一个表达式的首字符之间)共有包含7个字符。如2*12 2*24从第1个2开始到第二项2*24首字母之间总共有7个字符(包含空格此例中包含2个空格)。
输入样例:
2
5
输出样例:
1*11
2*12 2*24
[[1*11], [2*12, 2*24]]
1*11
2*12 2*24
3*13 3*26 3*39
4*14 4*28 4*312 4*416
5*15 5*210 5*315 5*420 5*525
[[1*11], [2*12, 2*24], [3*13, 3*26, 3*39], [4*14, 4*28, 4*312, 4*416], [5*15, 5*210, 5*315, 5*420, 5*525]]import java.util.*;public class Main {static Scanner in new Scanner(System.in);public static void main(String[] args) {while(in.hasNextInt()) {int n in.nextInt();String[][] arr new String[n][];for(int i0;in;i) {arr[i] new String[i1];for(int j 0;j i1;j) {arr[i][j] (i1)*(j1)(i1)*(j1);if(ji){System.out.printf(%-7s,arr[i][j]);}else if(ji){System.out.printf(%s,arr[i][j]);}}System.out.println();}System.out.println(Arrays.deepToString(arr));}}
}7-11 jmu-Java-02基本语法-07-大整数相加 有若干大整数需要对其进行求和操作。
输入格式
每行输入一个字符串代表一个大整数连续输入若干行当某行字符为e或E时退出。
输入样例:
42846280183517070527831839425882145521227251250327
55121603546981200581762165212827652751691296897789
e输出样例:
97967883730498271109594004638709798272918548148116
import java.math.*;
import java.util.*;public class Main {static Scanner in new Scanner(System.in);public static void main(String[] args) {BigInteger res new BigInteger(0);while(in.hasNext()) {String s in.next();if(s.equals(e) || s.equals(E)){break;}BigInteger tmp new BigInteger(s);resres.add(tmp);}System.out.println(res);}
}7-12 jmu-Java-03面向对象基础-05-覆盖 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代替数组大幅复简化代码请尝试重构你的代码。
输入样例:
1
3
zhang 10 true
zhang 10 true
zhang 10 false
输出样例:
default-1-true
zhang-10-true
zhang-10-false
2
[public PersonOverride(), public PersonOverride(java.lang.String,int,boolean)]import java.math.*;
import java.util.*;class PersonOverride{private int age;private String name;private boolean gender;public PersonOverride(){this(default,1,true);}public PersonOverride(String _name,int _age,boolean _gender){this.name _name;this.age _age;this.gender _gender;}public String toString(){return this.name - this.age - this.gender;}public boolean equals(PersonOverride a){return this.name.equals(a.name) this.age a.age this.gender a.gender;}}
public class Main {static Scanner in new Scanner(System.in);static int num[] new int[1];public static void main(String[] args) {int n1 in.nextInt();ArrayListPersonOverride person1 new ArrayListPersonOverride();for(int i0;in1;i){person1.add(new PersonOverride());}int n2 in.nextInt();ArrayListPersonOverride person2 new ArrayListPersonOverride();String name in.next();int age in.nextInt();boolean gender in.nextBoolean();PersonOverride tmp new PersonOverride(name,age,gender);person2.add(tmp);for(int i1;in2;i){name in.next();age in.nextInt();gender in.nextBoolean();tmp new PersonOverride(name,age,gender);int flag 1;for(int j0;jperson2.size();j){if(tmp.equals(person2.get(j))){flag 0;}}if(flag 1){person2.add(tmp);}}for(int i0;in1;i){System.out.println(person1.get(i).toString());}for(int i0;iperson2.size();i){System.out.println(person2.get(i).toString());}System.out.println(person2.size());System.out.println(Arrays.toString(PersonOverride.class.getConstructors()));}
}