Java第一次作业

《Java技术》第一次作业

(一)学习总结

1.Math.random()返回的只是从0到1之间的小数,如果要50到100,就先放大50倍,即0到50之间,这里还是小数,如果要整数,就强制转换int,然后再加上50即为50~100.
最终代码:(int)(Math.random()*50) + 50
Random类产生的随机数,在其最大值范围内,按照概率均匀分布的。也就是说,两个种子数相同的Random对象,第一次生成的随机数字完全相同,第二次生成的随机数字也完全相同
最重要的是math.random()使用方便,不需要导入包和创建对象,但是需要转化类型
2.Scanner sc = new Scanner(System.in);
new 一个对象,接受从键盘输入的数据,转存给Scanner 类型的变量sc。
因为数据有很多类型。所以在此转化。用不同类型的变量接受。可以理解为二次转存
3.java的程序和c非常的类似。写好一个程序最重要的还是思路.其次Java当中的数据类型 大部分跟C都一样,都是相通的。不过JAVA当中有一个String类型的,这个就相当于字符串了,比起C当中要用字符型数组来实现字符串要方便很多.boolean类型的跟C也差不太多,没有太大的区别。在运算符当中,运算符的优先级和符号就本都是一样的,不过逻辑运算符的表示方法有一点儿的区别。区别感觉也不是很大。Java中的运算符优先级为:算术运算符 > 关系运算符 > 逻辑运算符
4.猜数游戏中,了解并学习了math.random()函数,在java中可以直接调用函数来j产生随机数

int a=(int)(Math.random()*100);

5.在万年历中,由于考虑到了剩余天数和七天求余相减小于7的情况。自己掌握了math.abs函数。调用此函数可以直接取得其绝对值。

public static int week(int AllDays){
	int TheDay=0;
	if(AllDays%7==0){
		TheDay=1;
	}else{
		if(AllDays%7+1>7){
			TheDay=Math.abs((AllDays%7+1-7));
		}else{
			TheDay=Math.abs((AllDays%7+1));
		}
	}
	return TheDay;
}

6.在万年历的试验中。运用到了类似的函数调用。每一个函数实现具体的功能。最后在主类中进行实现。通过定义参数来实现函数功能

    AllYearDays=AllYearDays(year);
	AllMonthDays=AllMonthDays(year,month);
	AllDays=AllDays(AllYearDays,AllMonthDays);
	week=week(AllDays);
	PrintDate(week,year,month);

7.布尔函数的返回值分为true和false两种
例:

public static boolean isLeap(int year){
	if(year%4==0&&year%100!=0||year%400==0){
		return true;
	}else{
		return false;
	}
}

最后通过返回值来判断是否为闰年

(二)实验总结

1.猜数游戏

  • 程序设计思路:利用math.random()函数调用,生成100以内的随机数。利用循环来实现10次猜数游戏的完成。在循环开始之前建立flag标志位,每循环一次,flag++,最终通过flag来显示猜对所用的次数。
  • 实验问题分析:
    问题1:循环十次后程序还没有终止
    原因:for循环从0开始到10结束,对循环的范围计算错误
    解决方案:将循环开始条件z变成1

2.猜数游戏扩展

  • 程序设计思路:游戏主体部分和上一题相同。循环次数变为五次。但是由于增加了游戏的可重复操作性,所以游戏的主体应该在一个do循环中,当游戏进行一次后,增加一条if语句。用此改变循环条件,来决定是否继续下一轮游戏。扩展后,游戏涉及到了分数的问题。因为随着猜测错误分数递减20分。所以分数的变动随着循环改变就可以
  • 实验问题分析:
    问题1:每轮游戏剩余次数显示错误
    原因:控制循环变量i先改变再执行,所以显示的剩余次数与真实次数不同
    解决方案:将i--放入到循环之内
    问题2:最终游戏结束后,总分恒为100分
    原因:计算总分的语句放在了do循环之外,不论怎么执行,totalscor额、s的值都为score的初始值100
    解决方案:将totalscores的计算放到了最内层循环(每轮游戏结束之后运算一次)

3.万年历

  • 程序设计思路:首先判断到查询年份中间的年份有几个闰年,计算查询年月的上一个月距离1900年1月1日的天数,和7求余来判断查询月份的1号是星期几,从而展现出该月的万年历。实现要求内容之后,进行输入判断。使得年份应在1900年后,月份在1月到12月之间。
  • 实验问题分析:
    问题1:计算到1900年1月1日的天数错误
    原因:应计算每一月之前的总天数,设计成了计算该月的天数
    解决方案:利用switch语句来整合天数,减少运算过程,简单明了。
    问题2:查询时,输出的天数少一天
    原因:输出的时候,循环条件少了+1
    解决方案:改变循环条件

(三)代码托管

(四)学习进度条

-------- 代码行数(新增/累积) 学习时间(新增/累积) 本周学习内容
目标 5000行 300小时
第2-4周 201/201 10/10 学习了java的基本语法,random函数,自己了解了math函数的几种功能
第5周
第6周
原文地址:https://www.cnblogs.com/hc395071675/p/6504609.html