目录

前言

设计与分析

踩坑心得

改进建议

总结

前言

这三次作业的知识点覆盖的很全面,从最开始的int赋值变量,循环,到Boolean值,sort等一些函数,到后来的对象,类的创建和声明,getter,setter的方法运用,正则表达式的使用,知识点涉及的比较广。题量和难度比较契合,题目难的时候,题量也会适当下调,题量也没有超过十道题,对于一个星期的期限来说还是很合理。对我来说也能及时完成,总之还是很合理。

题目集1

输入三角形三条边,判断该三角形为什么类型的三角形。

题量:8道

难度:适中

题目集2

题量:5道

输入年月日的值(均为整型数),输出该日期的下一天。 其中:年份的合法取值范围为[1820,2020] ,月份合法取值范围为[1,12] ,日期合法取值范围为[1,31] 。 注意:不允许使用Java中和日期相关的类和方法。

要求:Main类中必须含有如下方法,签名如下:

public static void main(String[] args);//主方法
public static boolean isLeapYear(int year) ;//判断year是否为闰年,返回boolean类型
public static boolean checkInputValidity(int year,int month,int day);//判断输入日期是否合法,返回布尔值
public static void nextDate(int year,int month,int day) ; //求输入日期的下一天

输入年月日的值(均为整型数),同时输入一个取值范围在[-10,10] 之间的整型数n,输出该日期的前n天(当n > 0时)、该日期的后n天(当n<0时)。
其中年份取值范围为 [1820,2020] ,月份取值范围为[1,12] ,日期取值范围为[1,31] 。
注意:不允许使用Java中任何与日期有关的类或方法。

难度:适中

题目集3

题量:3道

定义一个类Date,包含三个私有属性年(year)、月(month)、日(day),均为整型数,其中:年份的合法取值范围为[1900,2000] ,月份合法取值范围为[1,12] ,日期合法取值范围为[1,31] 。 注意:不允许使用Java中和日期相关的类和方法,否则按0分处理。

编写程序性,实现对简单多项式的导函数进行求解

要求:Date类结构如下图所示:

  1. 如果输入表达式不符合上述表达式基本规则,则输出“Wrong Format”。
  2. 如果输入合法,则在一行内正常输出该表达式的导函数,注意以下几点: 结果不需要排序,也不需要化简;
  • 当某一项为“0”时,则该项不需要显示,但如果整个导函数结果为“0”时,则显示为“0”;
  • 当输出结果第一项系数符号为“+”时,不输出“+”;
  • 当指数符号为“+”时,不输出“+”;
  • 当指数值为“0”时,则不需要输出“x^0”,只需要输出其系数即可。

难度:较难

设计与分析

 

 import java.util.Scanner;

 public class Main {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
double a = input.nextDouble();
double b = input.nextDouble();
double c = input.nextDouble(); if(a >200 || b > 200 || c >200 || a < 1 || b < 1 || c < 1) System.out.println("Wrong Format"); else{ if(a >= b + c || b >= a + c || c >= a + b)
System.out.println("Not a triangle"); else if((a*a + b*b == c*c|| b*b + c*c == a*a|| a*a + c*c == b*b)&&a!=b&&b!=c&&a!=c)
System.out.println("Right-angled triangle"); else if(a == b || b == c || a == c)
{if(a*a + b*b - c*c<0.000001|| b*b + c*c -a*a<0.000001|| a*a + c*c- b*b<0.000001) System.out.println("Isosceles right-angled triangle");
else if(a == b && b == c)System.out.println("Equilateral triangle");
else System.out.println("Isosceles triangle");
}
else System.out.println("General triangle"); } }
}
import java.util.Scanner;

public class Main {

    public static boolean isLeapYear(int year) {
if(year % 4 == 0 && year % 100 !=0 ||year % 400 == 0)
{
return true;
}
else
{
return false;
}
} public static boolean checkInputValidity(int year,int month,int day) {
int[] arr=new int[]{0,31,28,31,30,31,30,31,31,30,31,30,31};
if(isLeapYear(year)==true)
arr[2] = 29;
if(year>=1820&&year<=2020&&month>0&&month<=12&&day<=arr[month]&&day>0)
return true;
else
return false;
} public static void nextDate(int year,int month,int day) { int[] arr=new int[]{0,31,28,31,30,31,30,31,31,30,31,30,31};
if(isLeapYear(year)==true)
arr[2] = 29;
int a = 0,b = 0,c = 0;
if(checkInputValidity(year,month,day)==true) {
if(month==12) {
if(day==arr[month]) {
a = year+1;
b = 1;
c = 1;}
if(day>0&&day<arr[month])
{a = year;
b = month;
c =day +1;
}
}
if(month<12) {
if(day==arr[month]) {
a = year;
b = month + 1;
c = 1;}
if(day>0&&day<arr[month])
{a = year;
b = month;
c = day+1;
}
}
System.out.println("Next date is:"+a+"-"+b+"-"+c);
}
else System.out.println("Wrong Format");
} public static void main(String[] args) {
Scanner in = new Scanner(System.in);
Main x = new Main();
int year = in.nextInt();
int month = in.nextInt();
int day = in.nextInt();
x.nextDate(year,month,day); } }
import java.util.Scanner;
public class Main{
public static boolean checkInputValidity(int year,int month,int day,boolean r){
boolean p;
p = true;
if(year < 1820 || year > 2020 || month < 1 || month > 12 || day < 1 || day > 31 ){
p = false;
}
if(!r && day > 28){
p = false;
}
return p;
}
public static void nextDate(int year,int month,int day,boolean r,int n){
int i = month,x = day;
day = x + n; if(!r&&i==2){
if(x + n>28){
day = x + n-28;
month++;
}
} if(r&&i==2){
if(x + n>29){ day = x + n-29; month++;
}
} if(r&&i==3){
if(x + n<=0){
day =29+x+n;
month--;
}
}
if(!r&&i==3){
if(x + n<=0){
day = x + n + 28;
month--;
}
}
if(n + x <=0){
if(i == 1 ){
year--;
day = 31 + (n + x);
month = 12;
}
if(i == 2 || i == 4 || i == 6 || i == 9 || i == 8 || i == 11){
day = 31 + (n + x);
month--;
}
if(i == 5 || i == 7 || i == 10 || i == 12 ){
year--;
day = 30 + (n + x);
month = 12;
}
}
if(n + x >30){
if(i == 12){
if(n+x > 31){
day =(n+x)-31;
year++;
month=1;
}
else
day = 31;
}
if(i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10){
if(n+x > 31){
day =(n+x)-31;
month++;
}
else
day = 31;
}
if(i == 4 || i==6 || i==9 || i==11){
day =(n+x)-30;
month++;
}
}
System.out.printf("%d days ago is:%d-%d-%d",-n,year,month,day);
}
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int year = input.nextInt();
int month = input.nextInt();
int day = input.nextInt();
int n = input.nextInt();
boolean r = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
if(checkInputValidity(year,month,day,r))
nextDate(year,month,day,r,-n); else System.out.println("Wrong Format"); }
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Date date = new Date();
Scanner in = new Scanner(System.in);
int year = in.nextInt();
int month = in.nextInt();
int day = in.nextInt();
date.setyear(year);
date.setmonth(month);
date.setday(day);
date.nextDate(year,month,day);
}
} class Date{
private int year;
private int month;
private int day;
private int[] arr = {0,31,28,31,30,31,30,31,31,30,31,30,31};
public int getyear() {
return year;
}
public int getmonth() {
return month;
}
public int getday() {
return day;
}
public void setyear(int year) {
this.year=year;
}
public void setmonth(int month) {
this.month=month;
}
public void setday(int day) {
this.day=day;
}
public static boolean isLeapYear(int year) {
if(year % 4 == 0 && year % 100 !=0 ||year % 400 == 0)
return true;
else
return false;
}
public static boolean checkInputValidity(int year,int month,int day) {
int[] arr=new int[]{0,31,28,31,30,31,30,31,31,30,31,30,31};
if(isLeapYear(year)==true)
arr[2] = 29;
if(year>=1900&&year<=2000&&month>0&&month<=12&&day<=arr[month]&&day>0)
return true;
else
return false;
}
public static void nextDate(int year,int month,int day) { int[] arr=new int[]{0,31,28,31,30,31,30,31,31,30,31,30,31};
if(isLeapYear(year)==true)
arr[2] = 29;
int a = 0,b = 0,c = 0;
if(checkInputValidity(year,month,day)==true) {
if(month==12) {
if(day==arr[month]) {
a = year+1;
b = 1;
c = 1;}
if(day>0&&day<arr[month])
{a = year;
b = month;
c =day +1;
}
}
if(month<12) {
if(day==arr[month]) {
a = year;
b = month + 1;
c = 1;}
if(day>0&&day<arr[month])
{a = year;
b = month;
c = day+1;
}
}
System.out.println("Next day is:"+a+"-"+b+"-"+c);
}
else System.out.println("Date Format is Wrong");
} }
import java.util.Scanner;

import java.util.regex.Pattern;

public class Main{
public static void main(String[] args) {
Scanner p = new Scanner(System.in);
String totalRegex = "([-+]?([1-9]+[0-9]*(\\*)?)?x?(\\^[+-]?[1-9]+[0-9]*)?)+";
String sbuRegex = "[-+]?([1-9]+[0-9]*(\\*)?)?x?(\\^[+-]?[1-9]+[0-9]*)?";
String in = p.nextLine();
boolean bl=Pattern.matches(totalRegex, in);
if(bl==true)
{
int i;
int y=p.nextInt();
int x=p.nextInt();
int year = p.nextInt();
int month = p.nextInt();
int day = p.nextInt();
System.out.printf(" days ago is:%d-%d-%d",year,month,day);
String a;
String arr[]=new String[4];
a=p.nextLine();
if(a.length()!=32||a.length()==0)
{
System.out.print("Wrong Format");
return;
}
for(i=0;i<a.length();i++)
{
char s=a.charAt(i);
if(s!='0'&&s!='1')
{
System.out.print("Wrong Format");
return;
}
}
}
else
System.out.println("Wrong Format");
} }

踩坑心得

作业集1

7-8:最开始不知道如何判断直角三角形,最后用

a*a + b*b - c*c<0.000001||  b*b + c*c -a*a<0.000001|| a*a + c*c- b*b<0.000001
a*a + b*b == c*c||  b*b + c*c == a*a|| a*a + c*c == b*b)&&a!=b&&b!=c&&a!=c

判断是否为等腰或者直角三角形
作业集2
7-4
刚刚开始做的时候不知道如何把闰年作为返回值传送到主函数。后来在网上查到了Boolean值,然后使用
isLeapYear(int year)这个函数来判断是否为闰年在分情况讨论闰年2月,31天的月份,30天的月份等等情况,最后完成该题
7-5
第一次写这个题,原本最开始是没有什么别的想法的,就觉得只要多讨论几个情况就行,最后if else语句用的太多了,就把自己搞糊涂了,后来用
boolean checkInputValidity(int year,int month,int day,boolean r)这个函数,把Boolean放在函数里面,来判断是不是错误数据
下面就讨论六个情况就可以,直接就可以求出下一天是星期几
作业集3
7-2
这个题就可以直接照着那个题里面的图去做,什么时候用getter 什么时候用setter,题目里面都有涉及,再结合作业集2的7-4。
最开始我是这么做的,很想当然,连题目的那个年份限制变化了我都没看见,就导致了我连续提交了好几次都显示部分错误,看来以后还是要读好题
7-3
最开始和大家一样无从下手,但是学习了正则表达式还有参考了老师发的代码就能写出来,然后在网上差一些关于正则表达式的资料,知道了最基本的规则
改进建议
pta的作业的每一题希望可以多弄些样例,就是输出的例子,可以让做题者更好的理解题的意思,能更快的,更精准的做题

这三次作业的知识跨度比较大,如果能在题目上说明本题所用的知识点会更好

另外可以支持多种方法解决问题,不单单局限于一种方法
对齐下括号.
良好的编码格式和命名。
从语法和算法上精简代码,永远永远不要把同一个变量用于多个不同的目的。
使用自描述的变量名和方法名

方法名应该小写字母开头,其后用字母大写的单词连接(veryLongVariableName)

类名应该都使用首字母大写的单词连接而成常量名应该全部大写,

用下划线连接左大括号应该跟 if 语句在同一行



总结
第一单元作业花费时间:花费时间较短 
第二单元作业花费时间:花费时间较长
 最后一部分作业:花费时间较长。
通过这三次作业,我还是收获了很多知识的。
第一次作业:最基本的赋值,声明变量,for循环,while循环,
if语句,数组的声明,使及其创建。
第二次作业:学会了Boolean语句,知道了如何返回ture和false
以及如何把Boolean放在函数里使用;
判断闰年的方法,
第三次作业:学习了解了对象和类,对象,类的创建和声明,getter,setter的方法运用,正则表达式的使用
每次作业花费的时间较长,需要查阅大量的资料才能解决问题,作业的成功率不高,得到的分数不高。解决方法:遇到不懂的知识点上网查阅资料,请教他人,多看书记住一些基本的知识点。
作为Java的思维来说,
当你拿到一个问题时,你分析这个问题不再是第一步先做什么,
第二步再做什么,这是面向过程的思维,你应该分析这个问题里面有哪些类和对象,这是第一点,然后再分析这些类和对象应该具有哪些属性和方法。这是第二点。最后分析类和类之间具体有什么关系,
这是第三点。这些都是面向过程思想所不具备的,在解决一些问题的时候,运用面向对象的思想来编写程序解决问题才是最好的解决方式
作业量可以适当增多,多多给我们练习的机会,适当放慢一些课堂进度,给我们足够的时间去看书,去思考,实验课可以改成三周俩节,适当要宽恕留给我们写报告的时间。
对教师的意见:多多培养我们的动手能力,在课堂上,给我们多一些时间去写自己的代码,老师

Blog作业01的更多相关文章

  1. 课程作业01:模仿JavaAppArguments.java示例,编写一个程序,此程序从命令行接收多个数字,求和之后输出结果。

    1.设计思想: 首先是从JavaAppArguments.java示例开始,此示例已打印参数,定义数字 之和和作为存储单位的整型,然后将输入参数的字符串转化为整型,之后求和即可. 2.程序流程图: 3 ...

  2. JAVA自学作业01

    JAVA自学作业01 1.Hello World 程序 class HelloWorld{ public static void main(String args[]){ System.out.pri ...

  3. 2017《Java技术》预备作业01

    2017<Java技术>预备作业 1.学习使用MarkDown 本学期的随笔都将使用MarkDown格式,要求熟练掌握MarkDown语法,学会如何使用标题,插入超链接,列表,插入图片,插 ...

  4. C语言I博客作业01

    C语言I博客作业01 作业1 这个作业属于哪个课程? C语言程序设计I 这个作业要求在哪里? https://edu.cnblogs.com/campus/zswxy/CST2019-2/homewo ...

  5. | C语言I作业01

    C语言I作业01 标签:18软件 李煦亮 1.1 你对软件工程专业了解是怎样? 对软件工程的了解是从人工智能频繁地出现在各大新闻,新闻报道了许多高校针对人工智能开设了相关课程或者专业,软件工程是开设的 ...

  6. C博客作业01——分支,顺序结构

    C博客作业01--分支,顺序结构 0.展示PTA总分 1本章学习内容 1.1学习内容总结 1)格式化输出函数printf(),scanf(). 它是什么? 对于初学者而言,一开始了解接触它们,只是被硬 ...

  7. DS博客作业01—日期抽象数据类型设计与实现

    1.本章学习总结 1.1 思维导图 1.2学习体会 开学就来了个大作业,还要求用的是c++语法,作为一个只听过没学过的未知语法,靠着CSDN和寝室大佬的帮助下渐渐地了解了一些c++的使用,现在也可以使 ...

  8. C博客作业01——分支、顺序结构

    1.本章学习总结 1.1思维导图 本章学习体会及代码量学习体会 1.2.1学习体会 在暑假的时候就有加入新生学习群,对C语言有一定的基础,所以这周的学习相对轻松,但一些细节方面的知识并不是很了解.在这 ...

  9. 《Scrum实战》读书会作业01 - 用知行视角总结现在或者过去的一个项目

    下面是<Scrum实战>读书会的第1个作业,主要是用知行视角来总结回顾现在或者过去的一个项目. 项目背景 2011年初,我做的项目是一个搜索引擎相关的项目,这个项目为公司在全球范围内的金融 ...

  10. c语言博客作业01—分支、顺序结构

    1.本章学习总结  1.1 思维导图  1.2本章学习体会及代码量学习体会  1.2.1学习体会 这周 对c语言的学习 明显与其他同学相比较有些滞后,觉得很大原因是暑假没有看教学视频,课前没有预习课本 ...

随机推荐

  1. java基于ssm开发的宠物商城宠物店源码

    简介 关于宠物的商店,首页,搜索商品,详情页,可选择尺寸,衣服颜色,根据不同规格显示不同的商品价格,加入购物车,立即购买,评价列表展示,商品详情展示,商品评分,分类商品,标签查询,更多分类查询 演示视 ...

  2. 根据XML生成实体类

    因为对接系统的XML所需映射的实体类有几十个,自己来处理不太现实,于是一直找寻找这样的工具,终于让我发现了jaxb2-maven-plugin: http://www.mojohaus.org/jax ...

  3. Chrome(谷歌浏览器)安装Vue插件vue-devtools

    安装步骤如下:1.首先给大家提供一个git地址,虽然官网也有地址(https://github.com/vuejs/vue-devtools.git),我认为不太好用给大家提供另一个git地址: ht ...

  4. MySQL skip_name_resolve参数的设置

    Skip_name_resolve Dynamic No Default Value OFF 默认值是off,也就是在检查客户端连接时在第一次要解析主机名(如果有开启DNS服务器,则做 " ...

  5. VS2010运行opencv的程序,出现“应用程序无法正常启动0xc000007b”的解决方法

    问题描述 当我们在用vs2010对工程进行编译结束后,并且生成了可执行文件时,但是运用时却出现了"应用程序无法正常启动0xc000007b" 解决方法 这个通常是有一些动态链接库没 ...

  6. Text文件颜色渐变

    using UnityEngine;using System.Collections;using System.Collections.Generic;using UnityEngine.UI;usi ...

  7. ES6 - 参数默认值

    1.形参初始值, 具有默认值的参数,一般位置要靠后(潜规则) function add(a,b,c=10){ return a + b + c; } let resutl = add(1,2); // ...

  8. memoの颜色配置

    Visual Studio的配置 没啥说的,直接上网站: https://studiostyl.es/schemes/create 顺便保存一份我的配置 一些有趣的插件:Amigo 主题配色,还是Bl ...

  9. Python 默认环境

    查看pip默认安装目录 python -m site 查看已安装 pip list installed 查看安装位置 pip show PyMySQL

  10. pandas、matplotlib常用命令(收集整理)

    1 import matplotlib.pyplot as plt 2 import pandas as pd 3 import matplotlib as mpl 含有中文无法正常显示,需增加如下代 ...