java第一次作业
(一)学习总结
1.java中从键盘输入可通过Scanner类完成,举例如下:
Scanner in=new Scanner(System.in);
int year =in.nextInt();
Scanner是一个类,作用是获取控制台的输入信息,反馈到in 里,In是一个对象,通过new创建对象。System.in中in 不能改。同时要记得写import java.util.Scanner;添加Scanner类。
2.random类 随机数的产生
import java.util.Random;
public class caiyouxi {
public static void main(String args[]){ //主函数
Random random=new Random();
int realNumber=random.nextInt(100)+1;
}
}
math类 随机数的产生
Math.random()
区别在于math类的范围小一些,是在0到1之间随机一个double类型的数,而random类的可以更改类型也可更改数字范围。
3.判断某年到某年之间有多少天,会涉及到之间有多少个闰年。要注意百年不闰的说法。例如是400倍数的闰年2000年,相隔4年会有一个闰年(2004),而相隔100年又不是闰年例如(2100),相隔400年又是一个闰年例如(2400)。所以要记得减去百年不闰的天数,加上隔400年为闰年的天数。
public static int totaldays(int year,int month){ //1900到year month有多少天
int a,b,h,f,c=0;
int d;
int i;
a=year-1900;
b=(a-1)/4;
h=(year-1600)/400;
f=(year-1900)/100;
if(month==1){
c=0;
}
else{
for(i=1;i<month;i++){
c=c+days( year,i);
}
}
d=a*365+b-f+h+c;
return d;
}
(二)实验总结
1.猜数游戏
-
程序设计思路:
把猜数字写在子函数中,在主函数中通过循环调用子函数来实现选择性多次玩游戏,子函数写的是一轮游戏。 -
实验问题分析:
问题1:用Scanner类进行输入,如果要进行多次不同的输入时,new建立的对象一样时会报错。
原因:不同的输入,不同的变量就会对应不同的存储空间和地址,所以对应的new建立的对象也不同。
解决方案:Scanner in=new Scanner(System.in); int m =in.nextInt(); Scanner input=new Scanner(System.in); int a =input.nextInt();
把这两个输入中的变量和对象都设置为不同的。
1.万年历
-
程序设计思路:
建立4个子函数有:是否为闰年、某年某月有多少天、1900年到某年某月有多少天、日历。写成子函数是方便调用,例如某年某月有多少天会调用到是否为闰年的子函数,还有日历子函数较为复杂,它用到前面的三个子函数。问题1:输出日历时星期几与几号错位
原因:星期几是用字符串输出而且输出的是汉字,而几号是数字。
解决方案:System.out.println("日\t一\t二\t三 \t四 \t五\t六 "); for(i=1;i<=d+1;i++){ System.out.print("\t"); } m=days( year,month); //当月有多少天 for(i=d+2;i<m+(d+2);i++){ System.out.print(e+"\t"); e++; //e为几号 if(i%7==0){ System.out.println(); } }
用\t来实现空格,实现汉字和数字对齐。
(三)[代码托管]https://git.oschina.net/hebau_cs15/java-cs01lxy.git
- 码云commit历史截图
(四)学习进度条
代码行数(新增/累积) | 学习时间(新增/累积) | 本周学习内容 | |
---|---|---|---|
目标 | 5000行 | 300小时 | |
第2-4周 | 141 | 30/30 | 学习了Scanner类还有随机数 |
第5周 | |||
第6周 |