题目集1的题目都是比较基础的题,不需要用到其他的类,而且所有的题代码行数都不超过40行。知识点集中在分支选择和浮点数的处理上,题量适中,难度也较小。比较适合初学Java的学生来熟悉java,了解java与之前所学的c的区别。
7-1成绩计算-1-类、数组的基本运用
创建学生类,包含
属性:学号(String)、姓名(String)、语文成绩(int)、数学成绩(int)、物理成绩(int)
方法:计算总分、计算平均分
输入5个学生的信息,将每个学生的信息封装在一个学生对象中。
按输入顺序依次输出5个学生的总分、平均分(精确到小数点后两位,舍去部分按四舍五入规则计入最后一位)。
注意:未用学生类对象封装数据的,本题计0分
输入格式:
5个学生信息,每个学生信息格式:
学号+英文空格+姓名+英文空格+语文成绩+英文空格+数学成绩+英文空格+物理成绩
例如:
22201311 张琳 80 80 80
22201312 黄昊 66 82 81
22201313 李少辰 77 76 80
22201314 袁婷 62 79 90
22201315 朱哲一 74 98 94
输出格式:
5个学生信息,每个学生信息格式:
学号+英文空格+姓名+英文空格+总成绩+英文空格+平均分
例如:
22201311 张琳 240 80.00
22201312 黄昊 229 76.33
22201313 李少辰 233 77.67
22201314 袁婷 231 77.00
22201315 朱哲一 266 88.67
输入样例:
在这里给出一组输入。例如:
22201311 张琳 80 80 80
22201312 黄昊 66 82 81
22201313 李少辰 77 76 80
22201314 袁婷 62 79 90
22201315 朱哲一 74 98 94
输出样例:
在这里给出相应的输出。例如:
22201311 张琳 240 80.00
22201312 黄昊 229 76.33
22201313 李少辰 233 77.67
22201314 袁婷 231 77.00
22201315 朱哲一 266 88.67
package blog; import java.util.Scanner; public class Main { String num; String name; int chinese; int English; int physics; public Main() { num = "01"; name = "某某"; chinese = 01; English = 01; physics = 01; } public static void Getscore(int chinese,int English,int physics) { int sum = chinese+ English+physics; double av =sum/3.0; System.out.print(sum+" "+String.format("%.2f",av)+"\n"); } public static void main(String[] args) { Main[] arr = new Main[5]; for(int i =0;i<5;i++) { arr[0] = new Main(); arr[1] = new Main(); arr[2] = new Main(); arr[3] = new Main(); arr[4] = new Main(); } Scanner input = new Scanner(System.in); for(int i=0;i<arr.length;i++){ arr[i].num = input.next(); arr[i].name = input.next(); arr[i].chinese= input.nextInt(); arr[i].English= input.nextInt(); arr[i].physics= input.nextInt(); } for(int j=0;j<arr.length;j++){ System.out.print(arr[j].num+" "+arr[j].name+" "); Getscore(arr[j].chinese,arr[j].English,arr[j].physics); } input.close(); } }
生成类图

感悟心得:
题目集1的题目都是比较基础的题,不需要用到其他的类,而且所有的题代码行数都不超过40行。知识点集中在分支选择和浮点数的处理上,题量适中,难度也较小。比较适合初学Java的学生来熟悉java,了解java与之前所学的c的区别。
7-1 jmu-java-日期类的基本使用
- 给定一个日期,判定是否为合法日期。如果合法,判断该年是否闰年,该日期是当年第几天、当月第几天、当周第几天、。
- 给定起始日期与结束日期,判定日期是否合法且结束日期是否早于起始日期。如果均合法,输出结束日期与起始日期之间的相差的天数、月数、念书。
输入格式:
第一行输入一个日期字符串,格式为"YYYY-MM-dd"
第二行输入两个日期字符串,中间使用空格隔开。分别代表开始日期与结束日期。
输出格式:
如果第一行日期字符串非法,输出自定义的错误信息。
如果第一行日期有效,输出相关信息,如果是闰年要输出是闰年。
如果第二行两个日期,只要有一个无效。就输出相关错误信息。
如果第二行两个日期有效且结束日期不早于开始日期,输出相关信息。
输入样例1:
第一行日期非法、第二行有日期非法
2020-02-30
2020-02-30 2020-01-02
输出样例1:
2020-02-30无效!
2020-02-30或2020-01-02中有不合法的日期.
输入样例2:
均有效且合法
2021-02-28
2019-08-01 2020-01-02
输出样例2:
2021-02-28是当年第59天,当月第28天,当周第7天.
2020-01-02与2019-08-01之间相差154天,所在月份相差-7,所在年份相差1.
输入样例3:
日期均有效,但结束日期早于开始日期
2020-02-28
2020-02-02 2020-02-01
输出样例3:
2020-02-28是闰年.
2020-02-28是当年第59天,当月第28天,当周第5天.
2020-02-01早于2020-02-02,不合法!
import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; import java.util.Calendar; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); String s1 = input.next(); String s2 = input.next(); String s3 = input.next(); LocalDate date1 = LocalDate.parse(s1,DateTimeFormatter.ofPattern("yyyy-MM-dd")); LocalDate date2 = LocalDate.parse(s2,DateTimeFormatter.ofPattern("yyyy-MM-dd")); LocalDate date3= LocalDate.parse(s3,DateTimeFormatter.ofPattern("yyyy-MM-dd")); boolean isdate1 = isValidDate(s1); boolean isdate2= isValidDate(s2); boolean isdate3 = isValidDate(s3); long daysbetween = ChronoUnit.DAYS.between(date2, date3); long yearsbetween = ChronoUnit.YEARS.between(date2.withDayOfYear(1), date3.withDayOfYear(1)); String[] arr = s1.split("-"); // 以/为分隔符,提取年月日 int year = Integer.parseInt(arr[0]); int mouth = Integer.parseInt(arr[1]); int day = Integer.parseInt(arr[2]); String data3 = s3.substring(5,7); String data2 = s2.substring(5,7); int weekand = Integer.parseInt(data3)-Integer.parseInt(data2); Calendar c = Calendar.getInstance(); c.set(year, mouth-1, day); // 设置年月日,时分秒将默认采用当前值 int weekDay = c.get(Calendar.DAY_OF_WEEK); if (weekDay == 1) { weekDay = 7; } else { weekDay = weekDay - 1; } if(!isdate1) { System.out.println(s1+"无效!"); System.exit(0); } else { if(date1.isLeapYear()==true) { System.out.println(s1+"是闰年."); System.out.println(s1+"是当年第"+ date1.getDayOfYear()+"天,当月第"+date1.getDayOfMonth() +"天,当周第"+weekDay +"天."); } else { System.out.println(s1+"是当年第"+ date1.getDayOfYear()+"天,当月第"+date1.getDayOfMonth() +"天,当周第"+weekDay+"天."); } } if(date3.isBefore(date2)) { System.out.println(s3+"早于"+s2+",不合法!"); System.exit(0); } else { if(isdate2&&isdate3) { System.out.println(s3+"与"+s2+"之间相差"+daysbetween+"天,所在月份相差"+weekand+",所在年份相差"+yearsbetween+"."); } else { System.out.println(s2+"或"+s3+"中有不合法的日期."); } } input.close(); } static boolean isValidDate(String dateStr) { DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); sdf.setLenient(false); try { sdf.parse(dateStr); } catch (ParseException e) { return false; } return true; } }
生成类图

感悟心得:对于日期类函数的运用不是很熟练,需要多加学习,对用过的函数谨记在心。
题目集2的题目开始要求学生接触Java的核心——类。部分题的代码行数也超过100行。知识点集中在类的使用、字符的判断上,题量适中,难度有些许上升。
Student类具体要求如下:
私有成员变量:学号(sid,String类型),姓名(name,String类型),年龄(age,int类型),专业(major,String类型) 。
提供无参构造和有参构造方法。(注意:有参构造方法中需要对年龄大小进行判定)
普通成员方法:print(),输出格式为“学号:6020203100,姓名:王宝强,年龄:21,专业:计算机科学与技术”。
普通成员方法:提供setXxx和getXxx方法。(注意:setAge()方法中需要对年龄进行判定)
注意:
年龄age不大于0,则不进行赋值。
print()中的“:”和“,”为均为中文冒号和逗号。
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//调用无参构造方法,并通过setter方法进行设值
String sid1 = sc.next();
String name1 = sc.next();
int age1 = sc.nextInt();
String major1 = sc.next();
Student student1 = new Student();
student1.setSid(sid1);
student1.setName(name1);
student1.setAge(age1);
student1.setMajor(major1);
//调用有参构造方法
String sid2 = sc.next();
String name2 = sc.next();
int age2 = sc.nextInt();
String major2 = sc.next();
Student student2 = new Student(sid2, name2, age2, major2);
//对学生student1和学生student2进行输出
student1.print();
student2.print();
}
}
/* 请在这里填写答案 */
输入格式:
无
输出格式:
学号:6020203110,姓名:王宝强,年龄:21,专业:计算机科学与技术
学号:6020203119,姓名:张三丰,年龄:23,专业:软件工程
输入样例:
在这里给出一组输入。例如:
6020203110 王宝强 21 计算机科学与技术
6020203119 张三丰 23 软件工程
输出样例:
在这里给出相应的输出。例如:
学号:6020203110,姓名:王宝强,年龄:21,专业:计算机科学与技术
学号:6020203119,姓名:张三丰,年龄:23,专业:软件工程
代码
import java.util.Scanner;
public class Main{
private String sid;
private String name;
private int age;
private String major;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//调用无参构造方法,并通过setter方法进行设值
String sid1 = sc.next();
String name1 = sc.next();
int age1 = sc.nextInt();
String major1 = sc.next();
Main student1 = new Main();
student1.setSid(sid1);
student1.setName(name1);
student1.setAge(age1);
student1.setMajor(major1);
//调用有参构造方法
String sid2 = sc.next();
String name2 = sc.next();
int age2 = sc.nextInt();
String major2 = sc.next();
Main student2 = new Main(sid2, name2, age2, major2);
//对学生student1和学生student2进行输出
student1.print();
student2.print();
}
public Main() {
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
if(age>0)this.age = age;
else return;
}
public void setSid(String sid) {
this.sid = sid;
}
public void setMajor(String major) {
this.major = major;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getSid() {
return sid;
}
public String getMajor() {
return major;
}
public Main(String sid,String name, int age,String major) {
this.sid = sid;
this.name = name;
this.age = age;
this.major = major;
}
public void print() {
System.out.println("学号:"+getSid()+",姓名:"+getName()+",年龄:"+getAge()+",专业:"+getMajor());
}
}
1、数据类型JAVA是一种强类型语言,各种类型不会自动转换,使用前必须先定义。2、方法方法相当于定义一个“宏”、一个"函数”,方法的定义格式为: “说明符修饰符返回值方法名(参数){方法体}。” 在学习方法的时候要注意”说明符、“修饰符”、“返回值”这三样东西。 我们在调用JAVA的自带的“类”里面的”方法”的时候,我们只要知道,使用了这个方法后,”返回值“的"类型“说明 3、类在JAVA中最经常听到词,也是最麻烦的东西,类的定义格式为: 说明符class类名extends超类名implements 接口名{主体} 4、变量常量JAVA的常量名一般用全大写字母表示,并为了节省内存,一般定义为静态(JAVA 程序中的名字我们经常有个默认的规则,类名所有单词第一个字母大写,方法名第二个单词开始第一个 字母大写,变量名小写,这样我们一看程序就非常清楚了),变量的定 义格式为: “修饰符数据类型变量名”变量在类中定义(不在方法体中的部分称为域)和在方法体中定义是不同的(在方法体中定义不 要修饰符)。学习变量的时候要注意两个特殊的东西"this"和"super"。同时我们要学习什么叫"覆 盖”、“重载”。 5、控制流 所有的编程语言的控制语句无非就是几个if else for while do switch。 6、接口:一个抽象的东西,接口可以多继承,解决了类只能单继承的问题。接口的定义格式为: 说明符interface 接口名{主体}, 接口内的方法都是没有主体的,只有常量或变量。当类使用接口的时候,一定要"覆盖”接口的方 法。 到这里为止,JAVA的基本概念我们有一定的了解了,我们就开始研究JAVA的类了。JAVA的API有很多,SUN公司已经为我们写好的类,我们多看多运用。