Java第一次博客作业
第一次博客作业
目录
三次作业题目详情
作业中的错误分析
感想与心得
题目详情
题目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第一次博客作业的更多相关文章
- oo 第一次博客作业
oo 第一次博客作业 早在大一就听说了oo的各种传奇故事,大二下学期终于也开始了我的oo之旅. 基于度量来分析自己的程序结构 第一次作业 类图分析 耦合度分析 可以看出在第一次作业中,我的耦合度非常高 ...
- OO第一次博客作业
OO第一次博客作业 一.三次作业的bug反省 1.自己发现别人的问题 (1)输入处理的问题,比如第一次作业,主要就是处理输入的字符串,然后有同学的正则表达式有问题,则对于一些错误输入就不能正确判断. ...
- [BUAA软工]第一次博客作业---阅读《构建之法》
[BUAA软工]第一次博客作业 项目 内容 这个作业属于哪个课程 北航软工 这个作业的要求在哪里 第1次个人作业 我在这个课程的目标是 学习如何以团队的形式开发软件,提升个人软件开发能力 这个作业在哪 ...
- 第一次博客作业 <西北师范大学| 周安伟>
1.助教博客链接:https://home.cnblogs.com/u/zaw-315/ 2.本周点评的作业数:3份,有留言互动. 3.本周点评有困难的地方: https://www.cnblogs ...
- C语言第一次博客作业——输入输出格式
一.PTA实验作业 注意:本次PTA实验共有8个题目,在博客上只要贴:4个题目就可以,分别为: 题目1:7-3 温度转换 (1分) 题目2:7-4 将x的平方赋值给y (2分) 题目3:7-6 是不是 ...
- C语言第一次博客作业—输入输出
一.PTA实验作业 题目1:7-3 温度转换 本题要求编写程序,计算华氏温度150°F对应的摄氏温度.计算公式:C=5×(F−32)/9,式中:C表示摄氏温度,F表示华氏温度,输出数据要求为整型. 1 ...
- OO第一次博客作业总结反思
使用了masteruml插件来生成类图和metrics插件分析代码 第一次作业 1.UML类图 >在第一次作业中,使用了两个类,代码中有没有使用的变量与函数,为平衡两个类的内容,我将输出函数放在 ...
- OOP第一次博客作业
一.关于Java&&面向对象 本学期刚开始进行Java的学习,也是刚开始了解面向对象,目前也就学习了三四周的样子,期间进行了三次作业,我感觉到Java的语法和c语言中的有许多相似之处, ...
- 皓远的第一次博客作业(pta题目集——1-3)
题目集总结: 前言: 一. 知识点运用: ① Java入门的基础语法(循环,判断,字符串,数组等等),Java的基础类运用,类与对象关系调用,类间关系(聚合). ② 引(类与对象): 对象 ...
随机推荐
- Java安全之FastJson JdbcRowSetImpl 链分析
Java安全之FastJson JdbcRowSetImpl 链分析 0x00 前言 续上文的Fastjson TemplatesImpl链分析,接着来学习JdbcRowSetImpl 利用链,Jdb ...
- Blazor实现未登录重定向到登录页的方法
今天研究了一下blazor,发现他默认启动就是类似于后台管理系统的界面,看到这个页面我就想给他写个登录,有登录就涉及到未登录重定向的问题,但是我没有找到blazor全局路由的设置,知道的老哥可以告诉我 ...
- OO课程仓库部署使用GitLab CI
转自我的个人博客http://mistariano.com/blog/9 1. 服务器上安装 gitlab-runner 参考博客https://blog.csdn.net/qq_40699305/a ...
- String相关介绍
String 字符串是常量,创建后不可改变. 字符串字面值存储在字符串池中,可以共享. String s1 = "Runoob"; // String 直接创建 String s2 ...
- mac 安装jmeter
1.打开jemeter网址 http://jmeter.apache.org/download_jmeter.cgi 2.下载Binaries中的 apache-jmeter-5.0.tgz 3.解压 ...
- CSS filter 有哪些神奇用途
背景 基本概念 CSS filter 属性将模糊或颜色偏移等图形效果应用于元素形成滤镜,滤镜通常用于调整图像,背景和边框的渲染.它的值可以为 filter 函数 <filter-function ...
- [刷题] 19 Remove Nth Node From End of List
要求 给定一个链表,删除倒数第n个节点 示例 1->2->3->4->5->NULL , n=2 1->2->3->5 边界 n是从0还是从1计 n不合 ...
- [Python] 爬虫系统与数据处理实战 Part.1 静态网页
爬虫技术基础 HTTP/HTTPS(7层):应用层,浏览器 SSL:加密层,传输层.应用层之间 TCP/IP(4层):传输层 数据在传输过程中是加密的,浏览器显示的是解密后的数据,对爬虫没有影响 中间 ...
- BUUCTF(十)[GXYCTF2019]Ping Ping Ping 1
BUUCTF系列 /?ip=baidu.com /?ip=baidu.com|ls 正常回显,当cat flag.php时,提示不让输入空格,而且后面还不让出现falg字符 IFS IFS (Inte ...
- 国产龙芯3A3000处理器评测:与英特尔差距明显
国产龙芯3A3000处理器评测:与英特尔差距明显 国产龙芯3A3000处理器评测:与英特尔差距明显 新浪财经APP缩小字体放大字体收藏微博微信分享579 新酷产品第一时间免费试玩,还有众多优质达人分享 ...