(一)学习总结
1.在java中通过Scanner类完成控制台的输入,查阅JDK帮助文档,Scanner类实现基本数据输入的方法是什么?不能只用文字描述,
一定要写代码,通过具体实例加以说明。
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner rand = new Scanner(System.in);
int shu = rand.nextInt();
System.out.println("你输入的是:"+shu);
}
}
Scanner 的头文件为import java.util.Scannner,主函数里再用Scanner声明,就可以调用了。 首先创建一个Scanner对
象rand,构造函数的初始值为System.in,再利用rand.nextInt()来接收一个int型数据shu的值。 字符串类型遇到空格或者
回车就结束输入, 需要用到nextline()
2.Random类和Math类的random()方法都能产生随机数,这两种方式有什么区别,各有什么特点呢?查阅JDK帮助文档,并举例加以说明。
Math.random()返回的只是从0到1之间的小数,如果要50到100,就先放大50倍,即0到50之间,这里还是小数,如果要整数,就强制
转换int,然后再加上50即为50—100. 如 (int)(Math.random()*50) + 50
Random类产生的随机数,在其最大值范围内,按照概率均匀分布的。也就是说,两个种子数相同的Random对象,第一次生成的随
数字完全相同,第二次生成的随机数字也完全相同。如 Random rand = new Random();a = rand.nextInt(100)+1;生成1-100的随机数
3.运行下列程序,结果是什么?查阅资料,分析为什么。
public class Test {
public static void main(String args[]) {
double a = 0.1;
double b = 0.1;
double c = 0.1;
if((a + b + c) == 0.3){
System.out.println("等于0.3");
}else {
System.out.println("不等于0.3");
}
}
}
精度缺失
为了处理精度损失的问题,可以使用java.math.BigDecimal类,查阅JDK帮助文档或教材p378,对上述程序进行修改。
import java.math.BigDecimal;
import java.math.MathContext;
public class Test {
public static void main(String args[]) {
BigDecimal a = new BigDecimal(0.1);
BigDecimal b = new BigDecimal(0.1);
BigDecimal c = new BigDecimal(0.1);
if(a.add(b).add(c).round(new MathContext(1)).equals(new BigDecimal("0.3"))){
System.out.println("等于0.3");
}else {
System.out.println("不等于0.3");
}
}
}
(二)实验总结
实验内容:
1.看商品猜价格
思路:1.产生随机数,范围在100之内;2.输入猜的数据与随机数进行比较,输出猜大了或者猜小了或者数输出随机数和猜
了多少次猜对的;3.用数组和FOR循环
问题:不会用输入;
解决方案:用头文件import java.util.Scanner;,主函数里再用Scanner声明, 首先创建一个Scanner对
象rand,构造函数的初始值为System.in,再利用rand.nextInt()来接收一个int型数据shu的值。
2.万年历
思路:1.闰年的判断方法为((year%40&&year%100!=0)||year%4000);2.用if语句分类实现输出该月的天数;
3.求该年该月之前到1900.1.1的天数,分别判断1900年到该年的每一年,如果是闰年天数加366,如果是平年天数加365;
判断该年该月之前每个月的天数,可以调用第二个函数,得到所求总天数;
4.输出该月日历1+(totalDays(year,month)+n)%7为判断该月第一天为星期几(调用第三个函数,n为这个歌月的天数),
用循环输出空格,根据星期几控制换行;
5.在主函数里调用方法,得出所求
问题1:输出日历时每个号占一行
原因:用的是System.out.println();
解决方案:应该用用的是System.out.print();
问题2:日历输出不对
原因:总天数没有加上该月的天数
解决方案:调用第三个方法并加入该月天数 再求。
3.评分系统
思路:用数组存储评委打的分数, 利用循环找到最大值最小值,总分减去最大分最小分 ,求出平均值为最后得分,调用排序函数最后输出。
实验问题分析:
问题:最后输出的值不对
原因:for循环从1开始的,少算了
修改:循环从0开始
(三)代码托管
码云提交历史截图
上传实验项目代码到码云,在码云项目中选择“统计-提交”,设置搜索时间段,搜索本周提交历史,并截图。