首页 技术 正文
技术 2022年11月21日
0 收藏 798 点赞 2,611 浏览 7196 个字

                          

                          第一次博客作业

目录

三次作业题目详情

作业中的错误分析

感想与心得

                        题目详情


题目1:
第一次作业:

类图:

题目2

类图:

题目3

类图:

题目4

题目5

题目6

类图:

题目7

类图:

题目8

第二次作业:

题目1

题目2

题目3

题目4

题目5

 

第三次作业:

题目1

题目2

类图:

题目3

 

                                        错误分析

                    1.第二次作业的第三题

判断闰年及星期几

    代码如下:

import java.util.Scanner;
public class Main{
public static void main(String[] args) {

@SuppressWarnings(“resource”)
Scanner input = new Scanner(System.in);
int year;
int month;
int day;
int days;
year = input.nextInt();
month = input.nextInt();
day = input.nextInt();
if(year >= 1820 && year <= 2020 && month >=1 && month <= 12 && day >= 1 && day <= 31) {
days = numOfDays(year, month, day);
if(isLeapYear(year)) {
System.out.println(year+” “+”is a leap year.”);
}
else {
System.out.println(year+” “+”is not a leap year.”);
}
System.out.println(year+”-“+month+”-“+day+” “+”is”+” “+getWhatDay(days)+”.”);
}
else {
System.out.println(“Wrong Format”);
}
}

//判断year是否为闰年,返回boolean类型;
public static boolean isLeapYear(int year) {
if(year >= 1820 && year <= 2020 && (year%400 == 0)||(year%4 == 0&&year%400 != 0)) {
return true;
}
else {
return false;
}

}

//求出year-month-day到0001-1-1的距离天数,返回整型数;
public static int numOfDays(int year,int month ,int day) {
int[] a=new int[13];
a[1]=31;a[2]=28;a[3]=31;a[4]=30;a[5]=31;a[6]=30;a[7]=31;a[8]=31;a[9]=30;a[10]=31;a[11]=30;a[12]=31;
int sum = 0;
for(int i=1;i<year;i++)
{
if(isLeapYear(i))
{
sum = sum + 366;
}
else
{
sum = sum + 365;
}
}
for(int i=1;i<month;i++)
{
if(isLeapYear(i)){
a[2] = 29;
}
else {
a[2] = 28;
}
sum = sum + a[i];
}
sum = sum + day – 1;
return sum;

}

//根据天数返回星期几,其中参数days为天数,整型数,返回星期几的英文单词。
public static String getWhatDay(int days) {
int flag;
String ch = null;
flag = days % 7;
switch(flag) {
case 0:
ch = “Sunday”;break;
case 1:
ch = “Monday”;break;
case 2:
ch = “Tuesday”;break;
case 3:
ch = “Wednesday”;break;
case 4:
ch = “Thursday”;break;
case 5:
ch = “Friday”;break;
case 6:
ch = “Saturday”;break;
}
return ch;

}

}

错误原因:一开始没有把月份与年份之间的关系搞清楚,导致闰年与每个月的天数之间的关系判断有误,结果导致了星期的判断错误。

但是后来当我发现这些错误之后我的代码各个部分之间的关系都以及非常紧凑,导致我没有办法进行修改了,但是我依旧进行了几次修

改,虽然结果没有成功,但是也让我得到了经验,下次再写代码的时候就会注意这方面的问题了。

                      2.第二次作业的第四题

求下一天

    代码如下:

import java.util.Scanner;
public class Main{
public static void main(String[] args) {

@SuppressWarnings(“resource”)
Scanner input = new Scanner(System.in);
int year;
int month;
int day;
year = input.nextInt();
month = input.nextInt();
day = input.nextInt();
nextDate( year, month, day);
}

public static boolean isLeapYear(int year) {
if(year >= 1820 && year <= 2020 && (year%400 == 0)||(year%4 == 0&&year%400 != 0)) {
return true;
}
else {
return false;
}

}

public static boolean checkInputValidity(int year,int month,int day){
if(year >= 1820 && year <= 2020 && month >=1 && month <= 12 && day >= 1 && day <= 31){
return true;
}else {
return false;
}

}

public static void nextDate(int year,int month,int day){
int[] days=new int[]{0,31,28,31,30,31,30,31,31,30,31,30,31};
if(isLeapYear(year))
days[2] = 29;
int a = 0,b = 0,c = 0;
if(checkInputValidity(year,month,day)) {
if(month==12) {
if(day==days[month])
{
a = year+1;
b = 1;
c = 1;
}
if(day>0&&day<days[month])
{
a = year;
b = month;
c =day +1;
}
}
if(month<12) {
if(day==days[month])
{
a = year;
b = month + 1;
c = 1;
}
if(day>0&&day<days[month])
{
a = year;
b = month;
c = day+1;
}
}
System.out.println(“Next date is:”+a+”-“+b+”-“+c);
}
else {
System.out.println(“Wrong Format”);
}
}
}

错误原因:

    

这个题目我也是经历了好几次修改之后才达到这个完成度,这个题目就是我吸取了上一个题目的教训之后完成的,这一次我把闰年月份天

数以及星期之间的关系搞清楚了,但是我却忽略了平年2月29日的判断,导致我的最后一个测试点没有通过。

                      3.第二次作业的第五题

求下N天

    代码如下:

import java.util.Scanner;
public class Main{
public static void main(String[] args) {

@SuppressWarnings(“resource”)
Scanner input = new Scanner(System.in);
int year;
int month;
int day;
int n;
year = input.nextInt();
month = input.nextInt();
day = input.nextInt();
n = input.nextInt();
nextDate( year, month, day, n);
}

public static boolean isLeapYear(int year) {
if(year >= 1820 && year <= 2020 && (year%400 == 0)||(year%4 == 0&&year%400 != 0)) {
return true;
}
else {
return false;
}

}

public static boolean checkInputValidity(int year,int month,int day){
if(year >= 1820 && year <= 2020 && month >=1 && month <= 12 && day >= 1 && day <= 31){
return true;
}else {
return false;
}

}

public static void nextDate(int year,int month,int day,int n){
int[] days=new int[]{0,31,28,31,30,31,30,31,31,30,31,30,31};
if(isLeapYear(year))
days[2] = 29;
int a = 0,b = 0,c = 0;
if(checkInputValidity(year,month,day)) {
//求n天后的日期
if(n < 0){
if(month==12) {
if(day>0&&days[month] – day < (-n)) //这个月剩下的天数
{
a = year+1;
b = 1;
c = (days[month] – day) + n;
}
if(day>0&&days[month] – day > n)
{
a = year;
b = month;
c =day – n;
}
}
if(month<12) {
if(day>0&&days[month] – day < (-n))
{
a = year;
b = month + 1;
c = (days[month] – day) + n;
}
if(day>0&&days[month] – day > n)
{
a = year;
b = month;
c = day – n;
}
}
}
else if(n == 0){
a = year;
b = month;
c = day;
}
//求n天前的日期
else {
if(month==1) {
if(day>0 && day < n)
{
a = year-1;
b = 12;
c = 31 – (n – day);
}
if(day>0&&day > n)
{
a = year;
b = month;
c =day – n;
}
}
if(month>1) {
if(day>0 && day < n)
{
a = year;
b = month – 1;
c = days[month-1] – (n – day);
}
if(day>0 && day > n)
{
a = year;
b = month;
c = day – n;
}
}
}
System.out.println(n+” “+”days ago is:”+a+”-“+b+”-“+c);
}
else {
System.out.println(“Wrong Format”);
}
}
}

错误原因:

总结这几个题目的错误,都是因为平年2月份的这个特殊情况没有加以重视而导致的一连串的错误。

                      4.第三次作业第二题

定义日期类

    代码如下:

import java.util.Scanner;

public class Main{

public static void main(String[] args){
Scanner s = new Scanner(System.in);
int year = s.nextInt();
int month = s.nextInt();
int day = s.nextInt();
Date ysh = new Date(year , month , day);
ysh.getNextDate();

}

}
class Date {

private int year;
private int month;
private int day;

public Date () {
super();

}

public Date(int year, int month, int day) {
super();
this.year = year;
this.month = month;
this.day = day;
}

public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
this.month = month;
}
public int getDay() {
return day;
}
public void setDay(int day) {
this.day = day;
}

public boolean isLeapYear(int year) {
if((year%400 == 0)||(year%4 == 0&&year%400 != 0)) {
return true;
}
else {
return false;
}
}

public boolean checkInputValidity() {
if(this.year >= 1900 && this.year <= 2000 && this.month >=1 && this.month <= 12 && this.day >= 1 && this.day <= 31){
return true;
}else {
return false;
}
}

public void getNextDate() {
int[] days=new int[]{0,31,28,31,30,31,30,31,31,30,31,30,31};
if(isLeapYear(this.year))
days[2] = 29;
int a = 0,b = 0,c = 0;
if(checkInputValidity()) {
if(this.month==12) {
if(this.day==days[month])
{
a = this.year+1;
b = 1;
c = 1;
}
if(this.day>0&&this.day<days[month])
{
a = this.year;
b = this.month;
c =this.day +1;
}
}
if(this.month<12) {
if(this.day==days[month])
{
a = this.year;
b = this.month + 1;
c = 1;
}
if(this.day>0&&this.day<days[month])
{
a = this.year;
b = this.month;
c = this.day+1;
}
}
System.out.println(“Next day is:”+a+”-“+b+”-“+c);
}
else {
System.out.println(“Date Format is Wrong”);
}
}
}

错误原因:

又是平年2月29日这个测试点没有通过,这次我是真的感觉我的代码没有什么毛病了,找了很久也改了很久,但是这个测试点就是一直不通过,实在是没办法了。

                    5.第三次作业第三题

一元多项式求导(类设计)

        代码如下:

import java.util.Scanner;
import java.util.regex.*;
import java.util.regex.Pattern;
public class Main {

public static void main(String[] args) {

Scanner s = new Scanner(System.in);
String n = s.nextLine();
if(n == “0”)
System.out.println(“Wrong Format”);
Pattern p = Pattern.compile(“\\w*\\d+\\wx\\w\\w*\\d+”);
Matcher m = p.matcher(n);
if(m.find() == true){
Pattern p1 = Pattern.compile(“(\\w*)(\\d+)(\\w)(x)(\\w)(\\w*)(\\d+)”);
Matcher m1 = p1.matcher(m.group());
int y = Integer.parseInt(m1.group(2));
int x = Integer.parseInt(m1.group(7));
if(x == 0 || y == 0) {
System.out.println(“Wrong Format”);
}
int z = x*y;
x = x – 1;
System.out.println(z + “* x ^” + x);
}
}
}错误原因:这个题目就基本上没有得到分,在很大一部分上是因为我的原因吧,正则表达式我没有提前太多时间去学习,后来去学的时候也没有怎么学懂,总的来说就是因为我的原因吧,没有在这道题目上投入太多的时间,导致了我最后的这个结果。

                         感想与心得

通过这一个月的三次题目集,让我明白了Java是一门非常具有挑战性的计算机语言,也为我日后的Java学习敲响了一个警钟,时时刻刻提醒着自己要投入大量的时间以及精力去努力学习这门Java语言,同时,从这几次作业的错误当中我也发现了自己的不足之处,也经常犯一些小错误和老毛病,这也意味着在我以后的作业当中我需要更加的细心。我也明白了Java这门语言对以后的工作的重要性,以及对我们的日常生活的重要性,这也会时时刻刻都提醒着我去认真和努力的学习这门Java语言。最后,我想对自己说一声:加油,少年!

 

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,000
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,512
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,358
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,141
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,771
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,849