题目集1-3的总结性blog

前言:

1.前三次知识点:

a.类的构造方法,有关类方法的调用,类参数传递,对象的构造与使用;

b.循环结构,控制结构;

c.数据的输入与输出;

d.使用工具对代码进行跟踪调试。

e.数组的用法,进制的互相转换

2.题量:

共18道题,题量适中

3.难度:

第一次组作业题目偏见单,第二次作业难度适中,第三次作业的第三题难度偏难。

 

设计与分析:

题目集7-8:

具体源代码如上图所示。

 

解释与心得:

本题为判断三角形类型 ,需要运用到条件语句,根据三角型的三条边的关系分出不同的情况

 

题目集2的7-4:

部分代码如下图:

解释与心得:

本体题目为:

输入年月日的值(均为整型数),输出该日期的下一天。 其中:年份的合法取值范围为[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) ; //求输入日期的下一天

需要用到的知识点有:判断年份是否为闰年,根据常识判断第二天的日期,限制年份,月份和日的输入范围

题目集2的7—5:
部分代码如下:

解释与心得:
题目详情
7-5 求前N天 (30 分)
 

输入年月日的值(均为整型数),同时输入一个取值范围在[-10,10] 之间的整型数n,输出该日期的前n天(当n > 0时)、该日期的后n天(当n<0时)。
其中年份取值范围为 [1820,2020] ,月份取值范围为[1,12] ,日期取值范围为[1,31] 。

 
解题思路与上一题大体相同,但是需要自己从键盘输入一个N,自己定义一个变量

public static void nextDate(int year,int month,int day,int d)
{
int[] r=new int[]{0,31,28,31,30,31,30,31,31,30,31,30,31};
int a = 0,b = 0,c = 0;
if(isLeapYear(year))
{
r[2] = 29;
}
if(d == 0)
{
a = year;
b = month;
c = day;
}
else if(12 == month && d < 0)
{
if(day - d > r[month])
{
a = year + 1;
b = 1;
c = day - d - r[month];
}
else if(day - d <= r[month])
{
a = year;
b = month;
c = day - d;
}
}
else if(1 == month && d > 0)
{
if(day - d > 0)
{
a = year;
b = month;
c = day - d;
}
else if(day - d <= 0)
{
a = year - 1;
b = 12;
c = r[1] + (day -d);
}
}
else if(d > 0)
{
if(day - d > 0)
{
a = year;
b = month;
c = day-d;
}
else if(day -d <= 0)
{
a = year;
b = month-1;
c = r[month-1] + (day - d);
}
}
else if(d < 0)
{
if(day - d <= r[month])
{
a = year;
b = month;
c = day - d;
}
else if(day - d > r[month])
{
a = year;
b = month + 1;
c = day - d -r[month];
}
}
System.out.println(d+" days ago is:"+a+"-"+b+"-"+c);
}
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
int d = sc.nextInt();
if(d < -10 || d > 10)
{
System.out.println("Wrong Format");
return;
}
if(checkInputValidity(a,b,c))
{
nextDate(a,b,c,d);
}
else
{
System.out.println("Wrong Format");
}
}
}

 

题目集三7-2

代码如下:

import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
Date da = new Date(a,b,c);
}
}
class Date
{
private int year;
private int month;
private int day;
public boolean isLeapYear(int a)//判断year是否为闰年,返回boolean类型
{
if(a % 4 == 0 && a % 100 != 0 || a % 400 == 0)
{
return true;
}
else
{
return false;
}
}
public boolean checkInputValidity(int a,int b,int c)//判断输入日期是否合法,返回布尔值
{
int r[] = new int[]{0,31,28,31,30,31,30,31,31,30,31,30,31};
if(isLeapYear(a))
{
r[2] = 29;
}
if(a >= 1900 && a <= 2000 && b > 0 && b <= 12 && c <= r[b] && c > 0)
{
return true;
}
else
{
return false;
}
}
public void nextDate(int a,int b,int c)
{
int[] r=new int[]{0,31,28,31,30,31,30,31,31,30,31,30,31};
if(isLeapYear(a))
{
r[2] = 29;
}
if(12 == b && r[12] == c)
{
System.out.println("Next day is:"+(a+1)+"-"+1+"-"+1);
}
else if(c < r[b])
{
System.out.println("Next day is:"+a+"-"+b+"-"+(c+1));
}
else if(c == r[b])
{
System.out.println("Next day is:"+a+"-"+(b+1)+"-"+1);
}
}
public Date(int a,int b,int c)
{
this.year = a;
this.month = b;
this.day = c;
if(checkInputValidity(this.year,this.month,this.day))
{
nextDate(this.year,this.month,this.day);
}
else
{
System.out.println("Date Format is Wrong");
}
}
}

 题目如下:

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

需要用到的知识点有:判断年份是否为闰年,根据常识判断第二天的日期,限制年份,月份和日的输入范围

题目集三7-3
7-3 一元多项式求导(类设计) (50 分)
 

编写程序性,实现对简单多项式的导函数进行求解。详见作业指导书。 OO作业3-3题目说明.pdf

输入格式:

在一行内输入一个待计算导函数的表达式,以回车符结束。

输出格式:

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

输出格式见输入输出示例。

 

本题需要用到正则表达式

 

踩坑心得:

做题前需要有规划,然后在开始自己定义类来创建需要的对象。

碰到编译错误时不要着急,应该先浏览一遍自己的代码看哪里有硬伤,如何经行调试找到错误

要把我大局观,本题改怎么写,需要哪些知识要心中有数

改进建议:

希望老师能多给一些建议,让我们可以更准确的把握解题方向

部分题目存在一些问题,希望老师出题老师可以在仔细审题

总结

1.学会了类的构造方法、方法的调用、参数传递、对象的构造与使用;

2、知道了循环结构、控制结构;

3.学习使用工具对代码进行跟踪调试。

4.知道了如何随机生成字符串

 

 

 

 

 

 

 

 

 

 

 

posted @ 2021-04-04 16:50  hyp666  阅读(80)  评论(0)    收藏  举报