《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周
posted @ 2017-03-18 21:31  Masart  阅读(240)  评论(1编辑  收藏  举报