题目集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:
部分代码如下:

解释与心得:
题目详情
输入年月日的值(均为整型数),同时输入一个取值范围在[-10,10] 之间的整型数n,输出该日期的前n天(当n > 0时)、该日期的后n天(当n<0时)。
其中年份取值范围为 [1820,2020] ,月份取值范围为[1,12] ,日期取值范围为[1,31] 。
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
编写程序性,实现对简单多项式的导函数进行求解。详见作业指导书。 OO作业3-3题目说明.pdf
输入格式:
在一行内输入一个待计算导函数的表达式,以回车符结束。
输出格式:
- 如果输入表达式不符合上述表达式基本规则,则输出“Wrong Format”。
- 如果输入合法,则在一行内正常输出该表达式的导函数,注意以下几点: 结果不需要排序,也不需要化简;
- 当某一项为“0”时,则该项不需要显示,但如果整个导函数结果为“0”时,则显示为“0”;
- 当输出结果第一项系数符号为“+”时,不输出“+”;
- 当指数符号为“+”时,不输出“+”;
- 当指数值为“0”时,则不需要输出“x^0”,只需要输出其系数即可。
输出格式见输入输出示例。
本题需要用到正则表达式
踩坑心得:
做题前需要有规划,然后在开始自己定义类来创建需要的对象。
碰到编译错误时不要着急,应该先浏览一遍自己的代码看哪里有硬伤,如何经行调试找到错误
要把我大局观,本题改怎么写,需要哪些知识要心中有数
改进建议:
希望老师能多给一些建议,让我们可以更准确的把握解题方向
部分题目存在一些问题,希望老师出题老师可以在仔细审题
总结
1.学会了类的构造方法、方法的调用、参数传递、对象的构造与使用;
2、知道了循环结构、控制结构;
3.学习使用工具对代码进行跟踪调试。
4.知道了如何随机生成字符串
浙公网安备 33010602011771号