第一次博客作业
前言
第一次题目集:
知识点:1、从键盘输入各类数值类型,从键盘输入字符串,从键盘输入数组
2、if语句
3、 输入输出语句
4、Java的数组排序,与C语言不同,可以直接用Java.uitl.Arrays
5、强制转换
题量:一共有八题,均涉及到如何从键盘输入变量,如何用if判断条件语句,7-6,7-7涉及到数组的输入。
难度:前七题难度较易,其中7-4计算税率的数据处理较为繁琐,其它每道题的主要的知识点都是简单的输入,以及简单的排序。第八题难度适中,难度主要体现在对不同三角形判断的先后,每个三角形判断条件的限制不同,判断的先后也会不同。
第二次题目集:
知识点:1、字符串的切割以及数值型字符串与数值之间的转换
2、数组的输入和数据的排序
3、Boolean的运用
4、简单接触类中的构建方法
5、输入和输出的方法
题量:共五题,其中后三题的方法较为相似,均是第三题的变形和拓展
难度:整体难度较易,其中后三题题目类型相似,将第三题做出后,第四第五题在其基础上进行改动就可以通过
第三次题目集:
知识点:1、Java中类的创建和运用
2、类中私有属性的定义,公共成员变量的创建和定义
3、正则法则
题量:共三题,前两题涉及到类的创建以及类中成员的创立,第三题涉及到正则法则的运用
难度:难度适中,前两题类的创建因为是首次接触,在刚开始会不知所措,没有思路,第三题的正则表达式,以及导数的处理,条件的判断较为繁琐,难度较大
设计与分析
题目集1 7-8
本题要求输入三角形三条边,判断该三角形为什么类型的三角形。
其中判断各类三角形的if语句分别是
if(a+b<=c||a+c<=b||b+c<=a)//不能构成三角形
if(a==b&&b==c&&a==c)//等边三角形
if(a==b&&a!=c&&b!=c||a==c&&b!=c&&a!=b||b==c&&b!=a&&a!=c)//等腰三角形
if(a*a+b*b==c*c||c*c+b*b==a*a||a*a+c*c==b*b)//直角三角形
判断输入非法的if语句是
if(a>=1&&a<=200&&b>=1&&b<=200&&c>=1&&c<=200)//输入出界
if(a+b<=c||a+c<=b||b+c<=a)//不能构成三角形
判断各类三角形的if语句应该在判断是否输入出界后再进行判断,不能构成三角形应该与判断哪类三角形是平行关系。
先进行错误输入的判断,再进行其它三角形的判断。
其中要特别注意判断等腰直角三角形的判断条件 a==b&&a!=c&&b!=c&&a*a+b*b-c*c<0.00001||a==c&&b!=c&&a!=b&&a*a+c*c-b*b<0.00001||b==c&&b!=a&&a!=c&&b*b+c*c-a*a<0.00001
题目集2 7-4
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) ; //求输入日期的下一天
public static boolean isLeapYear(int year) //判断year是否为闰年,返回boolean类型;
{
if ((year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0)))
return true;
else
return false;
}
public static boolean checkInputValidity(int year,int month,int day) //判断输入是否合理
{
int[] a= {1,3,5,7,8,10,12}; //将月份天数是31天的和月份天数是30天的分别存到两个数组中,二月份单独处理
int[] b= {4,6,9,11};
if(year>=1820&&year<=2020&&month>=1&&month<=12&&day>=1&&day<=31)
{
for(int i=0;i<7;i++)
{
if(month==a[i])
{
if(day>=0&&day<=31)
return true;
else return false;
}
}
for(int i=0;i<4;i++)
{
if(month==b[i])
{
if(day>=0&&day<=30)
return true;
else
return false;
}
}
if(month==2) //二月单独处理
{
if(isLeapYear(year))
{
if(day>0&&day<=29)
return true;
else
return false;
}
else
{
if(day>0&&day<=28)
return true;
else
return false;
}
}
return true;
}
else
return false;
}
public static void nextDate(int year,int month,int day) //输出下一天(这部分函数的处理不够满意,if语句中的判断方法完全丧失了代码的灵活性,没有运用到 创建的数组,而是笨拙的一个一个月份判断)
{
if(checkInputValidity(year,month,day))
{if(month==12)
{
if(day==31)
System.out.println("Next date is:"+(year+1)+"-1-1");
else if(day!=31)
System.out.println("Next date is:"+year+"-"+month+"-"+(day+1));
}
else
{
if(month==1||month==3||month==5||month==7||month==8||month==10)
{
if(day==31)
System.out.println("Next date is:"+year+"-"+(month+1)+"-1");
else if(day!=31)
System.out.println("Next date is:"+year+"-"+month+"-"+(day+1));
}
else if(month==4||month==6||month==9||month==11)
{
if(day==30)
System.out.println("Next date is:"+year+"-"+(month+1)+"-1");
else if(day!=30)
System.out.println("Next date is:"+year+"-"+month+"-"+(day+1));
}
else if(month==2)
{
if(isLeapYear(year))
{
if(day==29)
System.out.println("Next date is:"+year+"-"+(month+1)+"-1");
else if(day!=29)
System.out.println("Next date is:"+year+"-"+month+"-"+(day+1));
}
else
if(day==28)
System.out.println("Next date is:"+year+"-"+(month+1)+"-1");
else if(day!=28)
System.out.println("Next date is:"+year+"-"+month+"-"+(day+1));
}
}
}
题目集2 7-5 (与习题7-4的思路方法相类似)
public static boolean isLeapYear(int year) //判断year是否为闰年,返回boolean类型;
{
if ((year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0)))
return true;
else
return false;
}
public static boolean checkInputValidity(int year,int month,int day,int n) //判断输入是否合理(与7-4方法相似)
{
int[] a= {1,3,5,7,8,10,12};
int[] b= {4,6,9,11};
if(year>=1820&&year<=2020&&month>=1&&month<=12&&day>0&&day<=31&&n>=-10&&n<=10)
{
for(int i=0;i<7;i++)
{
if(month==a[i])
{
if(day>=0&&day<=31)
return true;
else return false;
}
}
for(int i=0;i<4;i++)
{
if(month==b[i])
{
if(day>=0&&day<=30)
return true;
else
return false;
}
}
if(month==2)
{
if(isLeapYear(year))
{
if(day>0&&day<=29)
return true;
else
return false;
}
else
{
if(day>0&&day<=28)
return true;
else
return false;
}
}
return true;
}
else
return false;
}
public static void nextDate(int year,int month,int day,int n) //输出下n天
{
if(checkInputValidity(year,month,day,n))
{
if(n<0) {
if(month==12)
{
if(day-n>31)
System.out.println(n+" days ago is:"+(year+1)+"-1-"+(day-n-31));
else if(day-n<=31)
System.out.println(n+" days ago is:"+year+"-"+month+"-"+(day-n));
}
else
{
if(month==1||month==3||month==5||month==7||month==8||month==10)
{
if(day-n>31)
System.out.println(n+" days ago is:"+year+"-"+(month+1)+"-"+(day-n-31));
else if(day-n<=31)
System.out.println(n+" days ago is:"+year+"-"+month+"-"+(day-n));
}
else if(month==4||month==6||month==9||month==11)
{
if(day-n>30)
System.out.println(n+" days ago is:"+year+"-"+(month+1)+"-"+(day-n-30));
else if(day-n<=30)
System.out.println(n+" days ago is:"+year+"-"+month+"-"+(day-n));
}
else if(month==2)
{
if(isLeapYear(year))
{
if(day-n>29)
System.out.println(n+" days ago is:"+year+"-"+(month+1)+"-"+(day-n-29));
else if(day-n<=29)
System.out.println(n+" days ago is:"+year+"-"+month+"-"+(day-n));
}
else
if(day-n>28)
System.out.println(n+" days ago is:"+year+"-"+(month+1)+"-"+(day-n-28));
else if(day-n<=28)
System.out.println(n+" days ago is:"+year+"-"+month+"-"+(day-n));
}
}
}
else if(n>=0)
{
{
if(month==1)
{
if(day-n>0)
System.out.println(n+" days ago is:"+year+"-"+month+"-"+(day-n));
else if(day-n<=0)
System.out.println(n+" days ago is:"+(year-1)+"-12-"+(31-day+n));
}
else if(month==3)
{
if(isLeapYear(year)) {
if(day-n>0)
System.out.println(n+" days ago is:"+year+"-"+month+"-"+(day-n));
else if(day-n<=0)
System.out.println(n+" days ago is:"+year+"-2-"+(29+(day-n)));
}else
{
if(day-n>0)
System.out.println(n+" days ago is:"+year+"-"+month+"-"+(day-n));
else if(day-n<=0)
System.out.println(n+" days ago is:"+(year)+"-2-"+(28+(day-n)));
}
}
else
{
if(month==5||month==7||month==8||month==10||month==12)
{
if(day-n>0)
System.out.println(n+" days ago is:"+year+"-"+(month)+"-"+(day-n));
else if(day-n<=0)
System.out.println(n+" days ago is:"+year+"-"+(month-1)+"-"+(31+(day-n)));
}
else if(month==4||month==6||month==9||month==11)
{
if(day-n>0)
System.out.println(n+" days ago is:"+year+"-"+(month)+"-"+(day-n));
else if(day-n<=0)
System.out.println(n+" days ago is:"+year+"-"+(month-1)+"-"+(31+(day-n)));
}
else if(month==2)
{
if(isLeapYear(year))
{
if(day-n>0)
System.out.println(n+" days ago is:"+year+"-"+(month)+"-"+(day-n));
else if(day-n<=0)
System.out.println(n+" days ago is:"+year+"-"+(month-1)+"-"+(29+(day-n)));
}
else
if(day-n>0)
System.out.println(n+" days ago is:"+year+"-"+(month)+"-"+(day-n));
else if(day-n<=0)
System.out.println(n+" days ago is:"+year+"-"+(month-1)+"-"+(28+(day-n)));
}
}
}
题目集3 7-2

与题目集2 7-4的方法相类似,多出了成员的封闭处理。
题目集3 7-5
代码思路没有思考出来,只有一个输出错误。
踩坑心得
题目集1 7-8
开始没有按照题目所给的三角形的判断先后进行判断,导致错误百出,应该先将范围更小的判断放在前面,然后再判断范围大的。
应该先将错误输入的条件判断,在进行其他判断。
还要注意等腰直角三角形的判断条件 a==b&&a!=c&&b!=c&&a*a+b*b-c*c<0.00001||a==c&&b!=c&&a!=b&&a*a+c*c-b*b<0.00001||b==c&&b!=a&&a!=c&&b*b+c*c-a*a<0.00001 较为特殊
题目集2 7-4
刚开始对年份的判断没有运用数组,而是单个判断,丧失了代码的灵活性。
int[] a= {1,3,5,7,8,10,12};
int[] b= {4,6,9,11};
但是数组起名却过于随便,应该改为和数组属性相关的名字,在复杂的代码中可以避免许多的查找,运用的麻烦。
题目集2 7-5
注意当天数n>0时是将天数向前推,n<0时是将天数向后去。
题目集3 7-2
刚开始对年份的判断没有运用数组,而是单个判断,丧失了代码的灵活性。
int[] a= {1,3,5,7,8,10,12};
int[] b= {4,6,9,11};
但是数组起名却过于随便,应该改为和数组属性相关的名字,在复杂的代码中可以避免许多的查找,运用的麻烦。
题目集3 7-3
要学会运用正则表达式
改进建议
勉强跟上进度,没有什么建议。
总结
学习代码应该提前学习,而不是老师发布一个作业,再去学习作业中的相关知识点。
在编写代码的过程中,应该先提前构想好思路,明确分工,每个类都有自己的功能。
还应该对Java的基础知识进行巩固。
浙公网安备 33010602011771号