第一次博客作业

目录

三次作业题目详情

作业中的错误分析

感想与心得

                        题目详情


题目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. IDEA只有Commit没有Push按钮

    问题描述 idea的右上角只有commit按钮,而没有push按钮 问题解决 打开File->Settings->Menus and Toolbars->Navigation Bar ...

  2. PHP使用引用实现无限极分类

    PHP实现无限极分类 引用 <?php /** * 无限极分类实现 * @param $list array 需要处理的数组 * @param $pk string 主id * @param $ ...

  3. tp 创建文件并写入数据

    代码:1.$url = Env::get('root_path').'application/admin/test.txt'; //定义创建路径 $file = fopen($url,"w& ...

  4. FTP文件上传

    一.配置FTP文件服务器 以Ubuntu为例 FTP两种模式简介 PORT(主动模式) 第一步FTP客户端首先随机选择一个大于1024的端口p1,并通过此端口发送请求连接到FTP服务器的21号端口建立 ...

  5. 【BUAA软工】第一次团队作业——团队介绍

    项目 内容 班级:北航2020春软件工程 博客园班级博客 作业:团队介绍与采访往届团队 团队作业-团队介绍和采访 Part I 团队成员介绍 有图有真(jia)相 大名 个人介绍 角色意向 李PX 来 ...

  6. jquery的入口函数 和 js和jq的转化

    先引入jq包 然后<script type="text/javascript"> $(function{ 获取标签:$('#box2') jq转为js:$('#box2 ...

  7. ESLint语法报错问题

    编写javaScript过程中ESLint语法报错问题 ESLint语法要求: 双引号""需要替换成单引号'' 分号不允许出现 ()之前需要一个空格比如 login () (VSC ...

  8. Linux中级之netfilter防火墙(iptables)

    一.什么是防火墙? 防火墙其实就是一个隔离工具:工作于主机或者网络的边缘 对于进出本主机或者网络的报文根据事先定义好的网络规则做匹配检测 对于能够被规则所匹配的报文做出相应处理的组件(这个组件可以是硬 ...

  9. python 中的nonlocal

    python 中nonloal 关键字用来在函数或其他作用域中使用外层变量(非全局),也可使用global需要在函数外部

  10. Jquery的load加载本地文件出现跨域错误的解决方案"Access to XMLHttpRequest at 'file:///android_asset/web/graph.json' from(Day_46)

    博主是通过JS调用本地的一个json文件赋值给变量出现的跨域错误, 网上有大量文章,五花八门的,但总归,一般性此问题基本可通过这三种方法解决: https://blog.csdn.net/qq_418 ...