第一次博客作业

目录

三次作业题目详情

作业中的错误分析

感想与心得

                        题目详情


题目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语言。最后,我想对自己说一声:加油,少年!

 

Java第一次博客作业的更多相关文章

  1. oo 第一次博客作业

    oo 第一次博客作业 早在大一就听说了oo的各种传奇故事,大二下学期终于也开始了我的oo之旅. 基于度量来分析自己的程序结构 第一次作业 类图分析 耦合度分析 可以看出在第一次作业中,我的耦合度非常高 ...

  2. OO第一次博客作业

    OO第一次博客作业 一.三次作业的bug反省 1.自己发现别人的问题 (1)输入处理的问题,比如第一次作业,主要就是处理输入的字符串,然后有同学的正则表达式有问题,则对于一些错误输入就不能正确判断. ...

  3. [BUAA软工]第一次博客作业---阅读《构建之法》

    [BUAA软工]第一次博客作业 项目 内容 这个作业属于哪个课程 北航软工 这个作业的要求在哪里 第1次个人作业 我在这个课程的目标是 学习如何以团队的形式开发软件,提升个人软件开发能力 这个作业在哪 ...

  4. 第一次博客作业 <西北师范大学| 周安伟>

     1.助教博客链接:https://home.cnblogs.com/u/zaw-315/ 2.本周点评的作业数:3份,有留言互动. 3.本周点评有困难的地方: https://www.cnblogs ...

  5. C语言第一次博客作业——输入输出格式

    一.PTA实验作业 注意:本次PTA实验共有8个题目,在博客上只要贴:4个题目就可以,分别为: 题目1:7-3 温度转换 (1分) 题目2:7-4 将x的平方赋值给y (2分) 题目3:7-6 是不是 ...

  6. C语言第一次博客作业—输入输出

    一.PTA实验作业 题目1:7-3 温度转换 本题要求编写程序,计算华氏温度150°F对应的摄氏温度.计算公式:C=5×(F−32)/9,式中:C表示摄氏温度,F表示华氏温度,输出数据要求为整型. 1 ...

  7. OO第一次博客作业总结反思

    使用了masteruml插件来生成类图和metrics插件分析代码 第一次作业 1.UML类图 >在第一次作业中,使用了两个类,代码中有没有使用的变量与函数,为平衡两个类的内容,我将输出函数放在 ...

  8. OOP第一次博客作业

    一.关于Java&&面向对象 本学期刚开始进行Java的学习,也是刚开始了解面向对象,目前也就学习了三四周的样子,期间进行了三次作业,我感觉到Java的语法和c语言中的有许多相似之处, ...

  9. 皓远的第一次博客作业(pta题目集——1-3)

    题目集总结: 前言: 一. 知识点运用: ①    Java入门的基础语法(循环,判断,字符串,数组等等),Java的基础类运用,类与对象关系调用,类间关系(聚合). ②    引(类与对象): 对象 ...

随机推荐

  1. 求曲线y=lnx在区间(2,6)内的一条切线,使得该切线与直线x=2,x=6及曲线y=lnx所围成的图形的面积最小。

    求曲线y=lnx在区间(2,6)内的一条切线,使得该切线与直线x=2,x=6及曲线y=lnx所围成的图形的面积最小. 1.先画图. 2.设切点为(a,lna) (2<a<6) 3.切线方程 ...

  2. PHP 通用格式化调试函数

    /** * 打印调试函数 * @param $content * @param $is_die */function pre($content, $is_die = true){ header('Co ...

  3. PHP基础-PHP中预定义的超全局数组

    预定义数组: 自动全局变量---超全局数组 1. 包含了来自WEB服务器,客户端,运行环境和用户输入的数据 2. 这些数组比较特别 3. 全局范围内自动生效,都可以直接使用这些数组 4. 用户不能自定 ...

  4. Asp.NetCore Web开发之Nlog日志配置

    接着讲基于ASP .net Core 的web开发,这节主要讲一下如何使用和配置Nlog进行日志记录. 日志在开发中的作用是很重要的,使用日志,程序出了错误可以及时捕获并记录下来,开发人员可以通过日志 ...

  5. Asp.NetCore 自定义中间件

    这节演示一下自定义中间件,第一节我们讲到,中间件的处理流程就像一个俄罗斯套娃,那这种俄罗斯套娃型的流程内部是如何实现的呢,下面请看代码​. ​第一种写法是直接写在Configure方法中的,使用app ...

  6. Pytorch系列:(五)CNN

    卷积 Conv2d 2D卷积函数和参数如下 nn.Conv2d( in_channels, out_channels, kernel_size, stride=1, padding=0, dilati ...

  7. 前端必读:Vue响应式系统大PK

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文参考:https://www.sitepoint.com/vue-3-reactivity-system ...

  8. 【大白话 mysql】mysql 事务与日志原理

    在后端面试中,mysql是比不可少的一环,其中对事务和日志的考察更是"重灾区", 大部分同学可能都知道mysql通过redolog.binlog和undolog保证了sql的事务性 ...

  9. [笔记] 《c++ primer》书店程序 Chapter 1

    书店程序是<c++ primer>中重要的实例,涉及大部分重要知识点,但代码分散阅读不便,下面按照章节顺序总结 Sales_item.h #ifndef SALESITEM_H // we ...

  10. Django/Flask的一些实现方法

    一.导出当前项目用到的依赖到requirements.txt文件中 pip freeze > requirements.txt 二.安装当前项目需要的依赖: pip install -r req ...