9.16日上课总结

动手动脑总结:

1.1仔细阅读示例: EnumTest.java,运行它,分析运行结果?

numTest.java

 1 public class EnumTest {
 2
 3     public static void main(String[] args) {
 4         Size s=Size.SMALL;
 5         Size t=Size.LARGE;
 6         //s和t引用同一个对象?
 7         System.out.println(s==t);  //
 8         //是原始数据类型吗?
 9         System.out.println(s.getClass().isPrimitive());
10         //从字符串中转换
11         Size u=Size.valueOf("SMALL");
12         System.out.println(s==u);  //true
13         //列出它的所有值
14         for(Size value:Size.values()){
15             System.out.println(value);
16         }
17     }
18
19 }
20  enum Size{SMALL,MEDIUM,LARGE};

运行结果为:

false
false
true
SMALL
MEDIUM
LARGE

1.2.你能得到什么结论?你掌握了枚举类型的基本用法了吗?

结论:枚举类型调用的不是同一个对象,枚举类型可以调用,并且调用的不是原始数据(boolean、char、byte、short、int、long、float、double)。

并且是由字符串转换而成的数据类型。

2.1 请运行以下代码(TestDouble.java)

 1 package ClassTest;
 2
 3 public class TestDouble {
 4
 5     public static void main(String args[]) {
 6         System.out.println("0.05 + 0.01 = " + (0.05 + 0.01));
 7         System.out.println("1.0 - 0.42 = " + (1.0 - 0.42));
 8         System.out.println("4.015 * 100 = " + (4.015 * 100));
 9         System.out.println("123.3 / 100 = " + (123.3 / 100));
10     }
11
12 }

运行结果如下:

0.05 + 0.01 = 0.060000000000000005
1.0 - 0.42 = 0.5800000000000001
4.015 * 100 = 401.49999999999994
123.3 / 100 = 1.2329999999999999

原因:计算机为二进制。浮点数无法用二进制进行精确表示。CPU中的浮点数一般由指数与尾数组成,但这样表述会失去一定精确度,使运算产生误差。

2.2使用 BigDecimal 类解决精度问题。

 1 package ClassTest;
 2
 3 import java.math.BigDecimal;
 4
 5 public class TestBigDecimal
 6 {
 7     public static void main(String[] args)
 8     {
 9         BigDecimal f1 = new BigDecimal("0.05");
10         BigDecimal f2 = BigDecimal.valueOf(0.01);
11         BigDecimal f3 = new BigDecimal(0.05);
12         System.out.println("下面使用String作为BigDecimal构造器参数的计算结果:");
13         System.out.println("0.05 + 0.01 = " + f1.add(f2));
14         System.out.println("0.05 - 0.01 = " + f1.subtract(f2));
15         System.out.println("0.05 * 0.01 = " + f1.multiply(f2));
16         System.out.println("0.05 / 0.01 = " + f1.divide(f2));
17         System.out.println("下面使用double作为BigDecimal构造器参数的计算结果:");
18         System.out.println("0.05 + 0.01 = " + f3.add(f2));
19         System.out.println("0.05 - 0.01 = " + f3.subtract(f2));
20         System.out.println("0.05 * 0.01 = " + f3.multiply(f2));
21         System.out.println("0.05 / 0.01 = " + f3.divide(f2));
22     }
23 }

运行结果如下:

下面使用String作为BigDecimal构造器参数的计算结果:
0.05 + 0.01 = 0.06
0.05 - 0.01 = 0.04
0.05 * 0.01 = 0.0005
0.05 / 0.01 = 5
下面使用double作为BigDecimal构造器参数的计算结果:
0.05 + 0.01 = 0.06000000000000000277555756156289135105907917022705078125
0.05 - 0.01 = 0.04000000000000000277555756156289135105907917022705078125
0.05 * 0.01 = 0.0005000000000000000277555756156289135105907917022705078125
0.05 / 0.01 = 5.000000000000000277555756156289135105907917022705078125

使用String类解决了浮点数的精度问题。

 

3.1 以下代码的输出结果是什么?

             

1 int X=100;
2
3               int Y=200;
4
5               System.out.println("X+Y="+X+Y);
6
7               System.out.println(X+Y+"=X+Y");

X+Y=100200
300=X+Y

 为什么会有这样的输出结果?

第一个数字当中X+Y必须添加(),否则在Java中会被判定为连接符,而不是判定为"+"号,如此一来输出的就时X与Y的值,而在下边的输出当中,X+Y在前边,系统默认为"+",不用添加()即可输出X+Y的值。

4.1 课后作业

一家软件公司程序员二柱的小孩上了小学二年级,老师让家长每天出30道四则运算题目给小学生做。

    二柱立马就想到写一个小程序来做这件事。 这个事情可以用很多语言或者工具来实现: Excel, C/C++, C#, VB, Unix Shell, Emacs, Powershell/Vbscript, Javascript, Perl, Python, …

课堂测试1:像二柱子那样,花二十分钟写一个能自动生成30道小学四则运算题目的 “软件”

课堂测试2:

  • (1)题目避免重复;
  • (2)可定制(数量/打印方式);

课堂测试1:

 1 package ClassroomTest;
 2
 3 import java.util.Scanner;
 4 /**
 5  *
 6  * @author cuixingyu
 7     *四则运算1: 输出30道两位数的加减乘除并避免出现负数
 8  */
 9 public class Math1 {
10     public static void main(String[] args) {
11         String s[]= {"+","-","*","/"};
12         int [] array=new int[30];
13         int [] array1=new int[30];
14         for(int i=0;i<30;i++) {
15             array[i]=(int)( Math.random()*100);  //随机输出100以内的整数
16             array1[i]=(int)( Math.random()*100);
17         }
18         for(int i=0;i<30;i++)
19         {int c=(int)( Math.random()*4);  //随机输出 + - *  /
20         if(array[i]>array1[i])   //避免出现复数
21         {
22             System.out.println(i+1+":"+array[i]+s[c]+array1[i]+"="+"      ");   //输出四则运算的题目
23
24         }
25         if(array1[i]>array[i])
26             {
27             System.out.println(i+1+":"+array1[i]+s[c]+array[i]+"="+"      ");
28             }
29 }
30     }
31 }

课堂测试2:

 1 package ClassroomTest;
 2
 3 import java.util.Scanner;
 4 /**
 5  *
 6  * @author cuixingyu
 7  *四则运算2: 输出30道两位数的加减乘除并避免出现负数
 8  * 并且可以定制总数和每行的个数,并且避免重复出现
 9  */
10
11 public class Math2 {
12     static Scanner sc=null;
13     static String s[]= {"+","-","*","/"};
14     public static int s1=(int)( Math.random()*100);
15     public static int s2=(int)( Math.random()*100);
16     public static int s3=(int)( Math.random()*100);
17     public static int a[][]=new int[100000][2];
18     public static int b[]=new int[100000];
19     public static void main(String[] args) {
20
21         System.out.println("请输入需要定制的题目个数:");
22         sc=new Scanner(System.in);
23         int n=sc.nextInt();
24         System.out.println("请输入一行打印的个数:");
25         int m=sc.nextInt();
26         for(int i=0;i<n;i++) {
27             if(i%m==0) {
28                 System.out.println();
29             }
30             System.out.println((i+1)+":");
31             s1=(int)( Math.random()*100);
32             s2=(int)( Math.random()*100);
33             s3=(int)( Math.random()*100);
34             System.out.print(s1);
35             a[i][0]=s1;
36             a[i][1]=s3;
37             b[i]=s2;
38             //  判断是否重复 如果重复则重新赋值
39             for(int j=0;j<i;j++) {
40                 if (a[j][0] == s1 && a[j][1] == s3 && b[j] == s2) {
41                     s3 = (int)( Math.random()*100);
42                     while (s3 == a[i][1]) {
43                         s3 = (int)( Math.random()*100);
44                     }
45                     s3 = (int)( Math.random()*100);
46                     while (s3 == a[i][1]) {
47                     }
48                 }
49             }
50             //   +
51             if(s2%4==0)
52             {
53                 System.out.print(s[0]);
54             }
55             //   -
56             if(s2%4==1)
57             {
58                 System.out.print(s[1]);
59                 while(s1<s3) {   //避免出现负数
60                     s3=(int)( Math.random()*100);
61                 }
62             }
63             //  *
64             if(s2%4==2)
65             {
66                 System.out.print(s[2]);
67                 while(s1*s3>100&&s1!=0&&s3!=0) {  //避免出现大于100的乘积
68                     s3=(int)( Math.random()*100);
69                 }
70             }
71             //  /
72             if(s2%4==3)
73             {
74                 System.out.print(s[3]);
75                 while(s1%s3!=0&&s3!=0) {  //避免出现无法整除的情况
76                 s3=(int)( Math.random()*100);
77                 }
78             }
79             System.out.print(s3+"="+"  ");
80           }
81       }
82 }

原文地址:https://www.cnblogs.com/cxy0210/p/11537449.html

时间: 2024-08-13 11:55:53

9.16日上课总结的相关文章

5月16日上课笔记-js中DOM操作

一.DOM操作 DOM节点的操作 增加 删除 修改 节点的信息: nodeName 获取节点的标签名 parentNode 获取父节点 childNodes IE忽略回车换行,chrome回车换行是文本节点 nodeType 节点类型: 1:元素节点 3:文本节点 9:document节点 2:属性节点 firstChild(支持IE浏览器) || firstElementChild(支持谷歌浏览器) //获取第一个子节点 var fc = ulDom.firstElementChild ||

最新手机号段归属地数据库(2017年4月16日版)免费下载

2017年4月16日版   360569条记录最新 手机号段数据库 号码归属地数据库  移动号段 联通号段 电信号段 14号段 170号段(虚拟运营商)   权威  全面  准确  规范字段包括 省份 城市 运营商 邮编 区号 等信息,对于数据分析.号码归属地查询等非常有帮助 三种格式:MYSQL,MSSQL,access MDB格式 字段:手机号码前7位,省份,城市,区号,运营商,邮编 末尾如下: 360551 1899981 新疆 乌鲁木齐 中国电信 0991 830000360552 18

信息系统项目3月16日作业

3月16日作业: 一,本章课程重点: 项目整体管理的过程包括如下内容: 项目启动 制定初步的范围说明书 制定项目管理计划 指导和管理项目的执行 监督和控制项目 整体变更控制 项目收尾 启动前加入背景介绍 收尾后加入经验教训就是论文论项目整体管理大纲 项目启动:项目立项以后就要正式启动项目,启动是以书面的.正式的形式肯定项目的成立于存在,同时以书面正式的形式为项目经理进行授权 项目正常的作用和内容 项目章程是正式批准一个项目的文档,或者是批准现行现行项目是否进入下一阶段的文档.项目章程应当由项目组

[NOIP集训]10月16日

今天的文件夹:10月16日.zip 毕竟是第一天,题目比较简单,简单说下做法. T1:对区间按左端点为第一关键字,右端点为第二关键字进行排序,然后计算可合并的区间,即前面区间的右端点不小于后面区间的左端点,这样合并后,新区间的右端点为二者右端点中的较大值. T2:这题跪了一次.样例太有误导性,严重差评.题意是 询问在时间$[x,y]$内海浪高度第$K$小的单位时刻是那个时刻. 但由于样例太弱,错以为是 询问在时间$[x,y]$内海浪高度第$K$小的海浪高度值. 除了这个问题,别的都很简单了,抽出

2016年3月16日作业

软考中高项学员:2016年3月16日作业 1.请根据授课内容,梳理出今晚讲的重点. 项目整体管理 1.项目整体管理的过程包括如下内容:1.项目启动,制定项目章程.2.制定初步的项目范围说明书.3.制定项目管理计划.4.指导和管理项目的执行.5.监督和控制项目.6.整体变更控制.7.项目收尾.2.项目章程应当由项目组织以外的项目发起人发布,或者由投资人发布.项目章程为项目经理使用组织资源进行项目活动提供了授权.3.项目章程应当包括以下内容:1.基于项目干系人的需求和期望提出的要求.2.项目必须满足

冲刺阶段(二)第五天 5月16日

昨天:在软件工程课上通过老师的英明指点,对本软件的设计有了一些新的想法和改进,并设计好了详细的改进思路. 今天:通过对Android通讯录视频的学习,掌握了其中的显示图像选择框(1.2.3.4)以及保存用户信息(1.2.3.4)的知识,为后续的开发奠定了基础. 困难:在保存用户信息功能部分,有时候信息会保存不成功,还有待进一步的学习. 冲刺阶段(二)第五天 5月16日,布布扣,bubuko.com

2016年9月16日-乔任梁逝世,陈乔恩发文悼念

今日(9月23日)凌晨,陈乔恩在微博发表长文悼念好友乔任梁,以下为陈乔恩微博全文: 生命是什么呢? 生命是不知道如何是好. 你永远停在2016年9月16日这一天 你是我在这里认识的第一个朋友, 一见如故,惺惺相惜. 你疼我就如疼女儿那样宠著, 你比我小却总让着我,你是个绅士. 你总是想办法给我惊喜,你是我的圣诞老人,是我的kimi叮当,是大家的有求必应先生. 你走了 走的那样安静,那样孤单,那样令人措手不及 我懵了 更多的是自责,我不知道你病的那么重 对不起对不起我的后知后觉 对不起对不起我没有

北京Uber优步司机奖励政策(4月16日)

滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfryf/p/4612609.html 优步奖励低/不挣钱/怎么办?看这里:http://www.cnblogs.com/mfryf/p/4642173.html 打豪车应用:uber详细攻略(附100元优惠码:DL8T6):http://www.cnblogs.com/mfryf/p/4752167.h

苹果iPhone 7发布:中国5388元起 9月16日上市

9月8日消息,苹果今天凌晨在美国召开秋季新品发布会,带着双摄像头.新配色.Lightning耳机接口.防水等等新特性,苹果iPhone 7/7 Plus如期而至,国行分别为5388元与6388元起,将于9月9号下午3:01开启预定,9月16号上市. 取消3.5mm耳机孔 支持IP67级防水防尘 iPhone 7还是4.7英寸,iPhone 7 Plus也还是5.5英寸屏,亮度提升25%,色域更广,支持电影模式以及手动调整色调功能,3D Touch功能也依然支持.5种配色 除了iPhone 6S/