怀德学院
Java面向对象程序设计 实验报告
第 二 次实验
实验名称 Java开发环境配置及简单程序编写
专业和班级 计算机184
同实验者 记录
实验时间 2020.4.16
成 绩 审阅教师 刁小敏
一、实验目的
1.理解程序的结构(选择、循环、顺序)的含义
2.掌握if…else,switch…case, for, while, do…while语句的应用。
3、掌握数组结构的使用。
4、掌握数组的排序等方法,并应用于实际问题中。
二、实验内容
1.编写程序提示用户从键盘输入一个年份(如2021)和该年第一天是星期几(如5),星期用数字表示,0表示星期日,1表示星期一等。程序打印该年的每月的月历。如下所示。
2.编写程序,利用for循环嵌套打印输出前10行杨辉三角形。
3、编写程序,提示用户输入学生个数(人数大于6),学生姓名,学生成绩,然后按照学生成绩的降序打印输出学生的姓名和成绩。运行结果如下。
三、实验过程
1、编写程序提示用户从键盘输入一个年份(如2021)和该年第一天是星期几(如5),星期用数字表示,0表示星期日,1表示星期一等。程序打印该年的每月的月历。
(1)代码设计
package com.cad.task;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;
public class TestCalender {
public static void main(String[] args) throws ParseException {
Scanner scan = new Scanner(System.in);
System.out.println("请输入年份:");
int year = scan.nextInt(); //这里可输入所要查询的年份
Calendar date = Calendar.getInstance();
year = date.get(Calendar.YEAR); //获得当前年
int m = 1;//月份计数
while (m < 13) {
int month = m;
Calendar cal = Calendar.getInstance();//获得当前日期对象
cal.clear();//清除信息
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month - 1);//1月从0开始
int count = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
int week = cal.get(Calendar.DAY_OF_WEEK);
System.out.printf("\t\t\t%d年%d月\n\n", year, month);
System.out.print("日\t一\t二\t三\t四\t五\t六\n");
int i;
for (i = 0; i < week - 1; i++) {
System.out.print("\t");
}
for (int j = 1; j <= count; j++) {
System.out.print(j + "\t");
if ((i + j) % 7 == 0) {
System.out.println();
}
}
System.out.println();
m++;
}
}
}
(2)运行结果
2、编写程序,利用for循环嵌套打印输出前10行杨辉三角形。。
- 代码设计
package com.cad.task;
import java.util.Scanner;
public class TestTriangle {
public static void main(String[] args) {
int n = 10;
int mat[][] = new int[10][];
int i, j;
for (i = 0; i < n; i++) {
mat[i] = new int[i + 1];
//mat[i][0] = 1;//是否显示0
mat[i][i] = 1;
for (j = 1; j < i; j++) {
mat[i][j] = mat[i - 1][j - 1] + mat[i - 1][j];//中间的数字等于上方的2个数字之和
}
}
for (i = 0; i < mat.length; i++) {
for (j = 0; j < mat[i].length; j++)
System.out.print(" " + mat[i][j]);
System.out.println();
}
}
}
- 运行结果
3、编写程序,提示用户输入学生个数(人数大于6),学生姓名,学生成绩,然后按照学生成绩的降序打印输出学生的姓名和成绩。
(1) 代码设计
package com.cad.task;
import java.util.Scanner;
public class TestStudent {
private String name;
private long grade;
public long getGrade() {
return grade;
}
public void setGrade(long grade) {
this.grade = grade;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String toString(){
return this.name;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入学生数");
int stuNumT = sc.nextInt();
TestStudent objArr[] = new TestStudent[stuNumT];
for(int i = 0; i < objArr.length; i++){
objArr[i] = new TestStudent();
System.out.println("请输入第" + (i+1) + "个学生的姓名");
String name = sc.next();
objArr[i].setName(name);
System.out.println("请输入第" + (i+1) + "个学生的成绩");
long grade = sc.nextLong();
objArr[i].setGrade(grade);
}
System.out.println("打印开始:");
for(int i = 0; i < objArr.length; i++){
for(int j = i+1; j < objArr.length; j++){
if(objArr[i].getGrade() < objArr[j].getGrade()){
TestStudent s = new TestStudent();
s = objArr[i];
objArr[i] = objArr[j];
objArr[j] = s;
}
}
}
for(int i=0; i < objArr.length; i++){
System.out.println("第"+(i+1)+"名"+objArr[i].getName()+"的成绩是:"+objArr[i].getGrade());
}
}
}
(2)运行结果
四、实验小结
本次实验理解了程序的结构(选择、循环、顺序)的含义,掌握if…else,switch…case, for, while, do…while语句的应用,掌握数组结构的使用,掌握数组的排序等方法,并应用于实际问题中。