资源预览内容
第1页 / 共57页
第2页 / 共57页
第3页 / 共57页
第4页 / 共57页
第5页 / 共57页
第6页 / 共57页
第7页 / 共57页
第8页 / 共57页
第9页 / 共57页
第10页 / 共57页
亲,该文档总共57页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第2章 体重指数计算器,项目-体重指数计算器,项目目标 掌握Java语言的基本符号; 掌握Java中的基本数据类型; 掌握各种运算符的使用; 掌握程序结构中的选择结构。,项目-体重指数计算器,项目任务 体重指数,又称身体质量指数,英文为Body Mass Index,简称BMI),是用体重公斤数除以身高米数平方得出的数字,是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准。男性低于20, 女性低于19,属于过轻;男性20-25,女性19-24,属于适中;男性25-30,女性24-29,属于过重;男性30-35,女性29-34,属于肥胖;男性高于35,女性高于34,属于非常肥胖。专家指出最理想的体重指数是22。本项目的任务编写程序,当输入性别,身高,体重后能计算出体重指数。 示例:codeBMI.java,项目分析,项目完成思路 输入相应的信息包括性别,身高,体重。 根据输入的身高,体重计算体重指数。 根据性别及计算出的体重指数给出相应的健康报告。,项目分析,需解决问题 项目中需要输入,输出体重指数等信息,这些用来保存输入,输出的数据应该保存到变量中,变量该如何使用? 不同的数据需要保存到不同类型的变量中,Java中都有哪些基本数据类型? 数据的加工,比如体重指数的计算需要借助除法和乘法运算来完成,Java还有哪些运算符? 项目的运行,将根据男性和女性性别不同,体重指数位于不同的区间,健康的报告情况也不同,不同的情况不同的处理,选择结构需要应用其中。选择结构如何使用?,技术准备,变量 Java的基本符号 数据类型 数据类型转换 运算符 选择结构,变量,变量作用: 用于存储数据输入、输出和中间数据。 声明变量: 数据类型 变量名; 注意:变量在使用前必须声明,变量声明,例如: int x; double radius; char a;,变量声明,变量通常有初值,可以在一步中说明变量并对其初始化,例如: int x = 1; double d = 1.4;,标识符,是用户定义的用于表示变量名、类名、接口名、方法名、方法的参数名等符号。,标识符,命名规则 由字母、数字、下划线_、美元符号$组成 首字母不能是数字 不能是保留字(50个) 区分大小写 标识符名称最好有意义,Java的基本符号,数字常量 整数:100,31,100(以0开头表示8进制,以0x开头表示16进制) 小数:0.5 字符编码 使用16位的Unicode编码,能表示所有自然语言字符,Java的基本符号,字符常量 用单引号括起来的单个字符,比如:A,2,也可以是中等非英文字符 字符串常量 用双引号括起来的字符序列,比如:“欢迎” 布尔常量:只有两个值:true和false,数据类型,Java中共三种基本数据类型: 数值型 字符型 布尔型,数据类型,数值字面量,字面量是在程序中直接出现的基本类型的数据值。 int i = 34; long l = 1000000l; float f = 100.2f;或float f = 100.2F; double d = 100.2d;或double d=100.2D; 注意:浮点型字面量默认为double型。,字符数据类型,字符数据类型char用于表示单个字符。如: char c = A; char c = 4; Char c = 98; Char c = ,布尔数据类型,布尔数据类型来自布尔代数,它的值域包括两个值:真(true)和假(false)。例如: boolean lightsOn = true; boolean lightsOn = false;,类型转换,精度由高到底排序: double float long int short byte,数值类型转换,可以将低精度的值赋给高精度类型的变量 比如:double i=10; 但是,如果不进行强制类型转换,就不能将高精度类型的值赋给低精度类型的变量。 如: float f = 10.1;(错),类型转换,类型转换是一种操作,它把一种数据类型的值转换成另一种数据类型。 用于由高精度向低精度转换时; 例如: float f = (float)10.1; int i = (int)f;,数值类型转换,Java中当两个类型不同的运算对象进行二元运算时,Java 自动 把精度较低的类型转换成另一个精度较高的类型。,数值运算时,表达式提升规律如下:,操作数中如果有double类型,则都会转换成double类型; 如果有float类型,则都会转换成float类型; 如果有long类型,则都会转换成long类型; 其他的byte, short, char, int 自动提升为int,例:,int a=1; double b=2.5; double c=a + b;,1.0,3.5,结果 c,2.5,考虑下面的程序是否能正常编译?,public class TypeConvert public static void main(String args) byte b1 = 3; byte b2 = 4; byte b3=b1+b2; ,运算符,算术运算符包括:+, -, *, / 和 %。 整数除法的结果是整数,如5/2= 2而不是2.5。考虑1/2=? 运算符%得出除法的余数,如5%2=1 。 例:codeMathematicsOperatorTest.java,赋值运算符,进行变量说明后,可以用赋值语句给它赋一个值,赋值语句语法如下: variable = value; variable = expression; 注意:在赋值语句中,左边变量的数据类型必须与右边值的数据类型相容。,例如: int x = 1; double radius = 1.0; char a = A; x = x + 5*(3/2);,赋值语句,复合赋值运算符,运算符 例 等价于 += i+=8 i = i+8 -= f-=8.0 f = f-8.0 *= i*=8 i = i*8 /= i/=8 i = i/8 %= i%=8 i = i%8 codeCompoundOperator.java,增量运算符和减量运算符,前置增量/减量运算符:变量先加1或减1,再参与表达式中的运算。 +x 或者 x 后置增量/减量运算符:变量先参与表达式的运算,再加1或减1。 x+ 或者 x,自增、自减运算符,x = 1; y = x+; y = +x; 上述语句运行后x和y的值分别是多少? y = x - -; y = - - x; codeAddOne.java,比较运算符,运算符 名称 例 结果 大于 12 false = 大于等于 1=2 false = 等于 1=2 false != 不等于 1!=2 true,codeCompareOperator.java,逻辑运算符,运算符 名称 描述 ! 非 逻辑否定,取反 &, & 与 逻辑与,并且 |, | 或 逻辑或,或者 异或 逻辑异或,排同 codeLogicOperator.java,运算符 & 和 |,运算符 & 和 | 的两个运算对象都要计算。&又称为无条件与运算符,| 称为无条件或运算符。 使用&和 | 运算符可以保证不管左边的操作数是true还是false,总要计算右边操作数。,运算符 & 和 |,使用运算符& 和 |时,如果左边的表达式能将结果确定,无需再进行右边的表达式计算。,运算符 & 和 |,&和|,思考: 如果x的初值为1,那么下列表达式执行完后x的值是多少? (1 x) & ( 1 x+) (1 x) & ( 1 x+) (1 = x) | (1 x+) (1 = x) | (1 x+),位运算符,对整数的二进制位进行逻辑运算 运算符 名称 描述 & 与 按位与 | 或 按位或 异或 按位异或 非 按位取反,&和 |不但可以进行逻辑运算还可进行位运算,位运算,比如: 15 & 3 15的二进制 :0000 0000 0000 1111 3的二进制: 0000 0000 0000 0011 结果: 0000 0000 0000 0011 思考:15|3 153 15 codeBitOperator.java,移位运算, 右移 将二进制位向右移,正数补0,负数补1 例如:5 2 等价于5除以2的2次方 无符号右移 将二进制位向右移,高位补0,codeBitChange.java,条件运算符,Op1 ? Op2 : Op3 Op1为布尔型 ,当Op1为true,表达式结果为Op2的值,否则为Op3的值 例如: 2 1 ? 3 : 4 的值是 3 1 2 ? 3 : 4 的值是 4,字符串连接运算符, 可以实现字符串的连接 基本格式: op1 op 2 要求op1和op2至少要有一个是字符串,另一个可以是各种类型 例:codeStringJoin .java,字符串连接运算符,例如: (1)System.out.println( “welcome ” + “ to java”) (2)double radius=5.0; System.out.println(“radius 的值是” + radius),程序基本流程,顺序结构 选择结构 循环结构,选择结构if语句,简单if语句只在条件为真时执行。其语法如下: if (布尔表达式) 语句(组); ,If语句,例如: if (i = 0) codeIfTest.java,if-else语句,if (布尔表达式) 布尔表达式为真时执行的语句(组); else 布尔表达式为假时执行的语句(组); ,if-else语句,if (a b) max = b; else max = a; ,嵌套的if语句,例如: if (ik) if (jk) System.out.println(“i 和 j 比 k 大”); else System.out.println(“i 比 k 小”);,嵌套的if语句,多重选择if语句的书写风格: if(条件1)语句1 else if (条件2)语句2 else if (条件3)语句3 else 语句; 这个风格可以避免深层缩进并使程序容易阅读。 codeIfElseTest.java,switch语句,Java提供switch语句来有效的处理多重条件。 switch (表达式) case 值1: 语句组1; break; case 值2: 语句组2; break; case 值N: 语句组N; break; defalut: 缺省语句组; ,switch语句,switch语句应遵从下述规则: 表达式switch-expression的结果类型只能为char、byte、short或int型值。 value1valueN 必须与switch-expression的值具有相同的数据类型。当switch-expression的值与case语句的值相匹配时,执行该case语句中的语句。(每个case语句都顺序进行) 关键字break是可选的。break语句终止整个switch语句。若break语句不存在,下一个case语句将被执行。 默认情况(default)是可选的,它用来执行指定情况都不为真时的操作。默认情况总是出现在switch语句块的最后。,switch语句,Java提供switch语句来有效的处理多重条件。 例如: SwitchTest.java SwitchTest2.java 注意 表达式结果类型:byte,short,int或者char case匹配
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号