《Java技术》第一次作业 计科1502 李宇蒙
《Java技术》第一次作业
(一)学习总结
1.Scanner
一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配,可以使用不同的next方法将 输入的文本转换为不同类型的值。
获取基本类型数据的方法是:
nextInt():读取整型数据
nextDouble():读取双精度数据
next():读取输入的下一行单词
nextLine():读取输入的下一行内容
实例
import.java.util.Scanner; //导入Scanner
public class Test{
public static void main(String[] args){
Scanner in=new Scanner(System.in); //创建对象
System.out.print("请输入数字:");
int input=in.nextInt();
System.out.println(input);
}
}
2.Random类和Math类的random()方法都能产生随机数,这两种方式有什么区别,各有什么特点呢?
Randow类:在一定的范围之内,产生整数类型的随机数,相同次数生成的随机数字是完全相同的,并且数字生成的几率均等。
import java.util.Random;
public class test{
public static void main(String[] args){
Random rand = new Random();
int i;
i=rand.nextInt(100)
System.out.print(i);
}
}
Math类的random():表示数学操作,比如求平方根、四舍五入等,它是Java.lang包中的类;返回的是从0到1之间的小数,如果要50到100,就先放大50倍,强制转换int,然后再加上50.
如:(int)(Math.random()*50) + 50
public class test{
public static void main(String[] args){
System.out.println("求平方根:"+Math.sqrt(9.0));
System.out.println("四舍五入:"+Math.round(9.5));
}
}
区别:Random是需要导入包java.util.Random,才可以产生随机数;而Math类的random()不需要导入包,可以直接用。
3.equals()和==
equals()方法比较字符串对象中的字符,==运算符比较两个对象是否引用同一实例。
String s1="Hello";
String s2=new String(s1);
s1.eauals(s2); //true
s1==s2; //false
boolean类型:true和flase,学会了在while(bo)中如何利用boolean来退出循环,主要一点是输入时注意,整型和boolean的区分,在猜数游戏中有详细解释。
(二)实验总结
1.猜数游戏
-
程序设计思路
通过Random产生一个随机数,使用while循环控制游戏继续进行还是退出,for循环控制次数,只允许猜数五次,玩家输入数字和随机数进行比较,进而知道猜数情况。 -
实验问题分析
问题:对于控制游戏是否继续进行还是退出,频繁出现错误,我要用boolean类型定义bo变量来判断游戏是否继续,当输入1时,游戏进行,输入2时,游戏退出,boolean类型用法不熟练,起初我不是用的flag,而是int bo=input1.nextInt() ,输入的int类型赋值给boolean类型。
解决方案:System.out.println("如果想继续请按1,退出按2"); int flag=input1.nextInt(); if(flag==2) { bo=false; System.out.println("游戏结束"); } else { bo=true; }
2.万年历
-
程序设计思路
输入年月日,计算1900年到输入的年份有多少个平年闰年,求和,然后判断输入的月是几月,再加上月份,最后将输入的日子和之前的总和相加,得到总天数,通过1+总天数%7算出日期对应的周次。
-
实验问题分析
问题1: 总天数中多了一天,当计算月份天数时,当月的日子多算了一天。
解决方案: totaldays=totaldays-1+date;
问题2: 打印万年历时,每次到周六的换行出现错误,总是向后拖延。
解决方案: 应该是用年份和月计算总天数,然后对7求余,每次等于6时换行,之前算上了日子求得的总天数对7求余,出现了错误。if(a%7==6){ //a为总天数 System.out.print(k+"\n"); } else{ System.out.print(k+"\t"); }
(三)代码托管

(四)学习进度条
| 代码行数(新增/累积) | 学习时间(新增/累积) | 本周学习内容 | |
|---|---|---|---|
| 目标 | 5000行 | 300小时 | |
| 第2-4周 | 300/300 | 30/30 | 看了上传的java视频,学习了随机数 |
| 第5周 | |||
| 第6周 |

浙公网安备 33010602011771号