《Java技术》第XX次作业
(一)学习总结
1.在java中通过Scanner类完成控制台的输入,查阅JDK帮助文档,Scanner类实现基本数据输入的方法是什么?
一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。而且scanner可以接受任意的数入流。
例如,以下代码使用户能够从 System.in 中读取一个数:
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
实例操作之最简单的输入数据
`
//导包
import java.util.Scanner;
public class TextScanner{
public static void main(String [] args){
//创建Scanner对象 接受从控制台输入
Scanner input = new Scanner(System.in);
System.out.print("请输入数据:");
String str = input.next();
System.out.println(输入的数据为:"+str+");
}
}`
运行结果为
`输入数据 halloworld
输入的数据为:halloworld`
2.Random类和Math类的random()方法都能产生随机数,这两种方式有什么区别,各有什么特点呢?
Math.random()返回的只是从0到1之间的小数,如果要50到100,就先放大50倍,即0到50之间,这里还是小数,如果要整数,就强制转换int,然后再加上50即为50~100.
最终代码:
`(int)(Math.random()*50) + 50`
Random类的随机方法是设定随机种子的,(如:new Random().nextInt(10)),这里的10就是随机种子,根据随机数的原理,相同随机种子在相同的随机次数中产生的随机数是一样的,也就是说,两个种子数相同的Random对象,第一次生成的随机数字完全相同,第二次生成的随机数字也完全相同搜索
`(
public class RandomNum{
public static void main(String[] args){
Random r1 = new Random(100);//第一个Random对象r1,随机种子100
Random r2 = new Random(100);//第二个Random对象r2,随机种子100
System.out.println("r1产生的值:"+r1.nextInt());
System.out.println("r2产生的值:"+r2.nextInt());
System.out.println("Math.random产生的值:"+(int)(Math.random()*100));
}
}`
3.学习总结
计算机高级编程语言类型:编译型、解释型。
JDK:编译环境
JRE:解释环境
JVK:java虚拟机,JRE的一部分
(二)实验总结
1.猜价格
程序设计思路:用random让系统自己产生一个随机数,然后输入数据猜测,判断是否与随机数
相等,如果猜对了输出猜了几次和价格,如果猜错了输出猜大了还是小了。超过十次,输出价格。
问题1:输不到十次就出现答案
原因:for循环出现错误。
解决方案:for (int i=0;i<10;i++)
问题2:还没有猜价格,答案就出来了
原因:答案输出放的太靠前,逻辑有点问题。
解决方案:将输出答案放到了最后。
2.万年历
程序设计思路:分别输入年份,月份。用循环求所输的年份是闰年还是平年,并且判断所输年份一
共多少天。再计算输入的月份一共有多少天,需要判断是不是闰年,决定2月的天数。最后加上这月
的天数求年份的总天数的天数,然后对7求余,余几就是星期几。整除就是星期日。
问题1:判断闰年平年时出现了错误,每年的总天数不对。
原因:闰年年份不能被100整除。
解决方案:在判断闰年加上条件
`if(year%4==0&&year%100!=0||year%400==0)`
问题2:输出的格式不正确,
原因:分不清年与周的关系
解决方案:用年份总天数,然后对7求余,余几就是星期几。整除就是星期日。
(三)代码托管
- 码云commit历史截图
(四)学习进度条
代码行数(新增/累积) | 学习时间(新增/累积) | 本周学习内容 | |
---|---|---|---|
目标 | 5000行 | 300小时 | |
第2-4周 | 300/300 | 30/30 | 学习了java前两章 |
第5周 | |||
第6周 |