《Java技术》第一次作业 1502 马 帅
《Java技术》第一次作业
(一)学习总结
1.通过Scanner类,可以从控制台中输入一个字符或数字或字符串,并读入内存中。可以使用不同的next方法将输入的文本转换为不同类型的值,其中:
nextInt():读取整型数据;
nextDouble():读取双精度数据;
nextLine():读取输入的下一行内容。
例如:
Scanner input=new Scanner(System.in);
int A=input.nextInt();
double B=input.nextDouble();
即可输入一个整型数字和一个双精度数字。
2.random方法是java.lang.Math的方法,会返回一个正的double值,该值大于等于0.0且小于1.0。而Random类是一个类(java.util.Random),里面含有很多方法。可以使用Random类产生所需要的随机数,可以说更加灵活;而Math类中的random方法则只会产生一个区间为[0.0,1.0)的double类型的随机数。
nextFloat(): 返回一个在0.0和1.0之间均匀分布的float值;
nextInt(): 返回一个随机int值;
nextInt(int n):返回一个区间为[0,n)的均匀分布的int值。
例如:
Random rand=new Random();
a=Math.random();
b=rand.nextInt(100);
其中a是一个大于等于0.0且小于1.0的双精度的随机数,而b则是一个大于等于0且小于100的一个整型随机数。
3.刚刚开始接触Java,感觉Java和C语言有很多相似的地方。于我而言,C语言和Java的区别在于声明和调用。在C语言中,很多函数是需要自己写的,而在Java中,很多方法都是可以直接使用的,使用起来非常便捷。这两周掌握了如何生成随机数,还有如何输入数据,这很基础但十分关键。
(二)实验总结
1.看商品猜价格
- 程序设计思路:使用Random类中的.nextInt(100)来产生随机数以生成价格,并套用do...while()循环语句来实现重复游戏。每次输入数字与随机数进行判断,并定义两个变量来记录得分和次数。
- 实验问题分析:
这个程序与之前写过的C语言中的一个程序类似,掌握了随机数产生的方法后并没有出现错误。
2.日历
- 程序设计思路:
首先写出四个方法:
(1)判断闰年:public static boolean isLeap(int year)
当年数可以被4整除且不能被100整除,或者可以被400整除即为闰年:
(year%4==0 && year%100!=0)||(year%400==0)
(2)判断某年的某月有多少天:public static int days(int year, int month)
使用switch...case语句进行判断,1、3、5、7、8、10、12月有31天,4、6、9、11月有30天;当月数为2时,进行判断,即调用isLeap(int year)方法进行闰年判断,闰年时有29天,不是闰年有28天。
(3)某年某月之前距离1900年1月1日有多少天:public static int totalDays(int year, int month)
定义一个整型变量初始化为0,从1900年进行整年的统计,到year(不等于year)为止,并且使用isLeap(int year)方法判断是否为闰年,非闰年每年加365,闰年则加366;再从1月进行整月的统计,到month(不等于month)为止,使用days(int year, int month)方法返回值即为该月天数。
(4)输出某年某月的日历:public static void printCalender(int year, int month)
首先打印表头(星期一 星期二……),使用(1+totalDays(year,month)%7)计算,值为1到7则为星期一到星期日,并计算该日与星期一之间的差值+1,插入对应的空格,并定义一个整型变量n初始化为0,记录插入空格数。使用days(int year, int month)方法判断该月有多少天数。在空格后从1开始输出,每输出一个数便使n++,当n%7==0时,输出换行符。
最后在main()方法中输入要查询的年和月,调用printCalender(int year, int month)方法进行输出即可。
- 实验问题分析:
问题:判断某年某月之前距离1900年1月1日有多少天出现错误,从1904年开始出错。
原因:考虑1904年是第一个闰年,发现在进行整年的统计调用isLeap(int year)方法进行闰年判断时,其中参数出错。
解决方案:错误参数为需要计算的那一年,改为从1900开始循环的统计年后错误消除。
(三)代码托管
- 码云commit历史截图
(四)学习进度条
代码行数(新增/累积) | 学习时间(新增/累积) | 本周学习内容 | |
---|---|---|---|
目标 | 5000行 | 300小时 | |
第2-4周 | 114/300 | 30/30 | 看了一些关于Java的课程资料,学会了使用Eclipse,完成了作业 |
第5周 | |||
第6周 |