黑马打卡第三天!!加油加油
算术运算符
运算符和表达式
int c=a+b; +是运算符
算数运算符 + - * / %(取模 取余)
//在代码运算中有小数存在时,有可能结果不精确
System.out.println(10/3);//3
System.out.println(10.0/3);//3.333333333335
//%取模取余,实际也是做除法运算,不过得到的是余数
//应用场景
- 用取模判断 A是否可以被B整除
- A%2 判断A是否为偶数
- 3个玩家斗地主判断先给谁发牌
练习:数值拆分:键盘录入一个三位数,将其拆分为个位十位 百位后,打印在控制台
公式总结:个位 :数值%10 十位 数值/10%10 百位 数值/100%10 千位 数值/1000%10
+
数字相加 不同数据类型的变量相加
类型转换的分类:
隐式转换
(取值小变换为取值大/程序自动转换)
Byte<short<int<long<float<double
两种提升规则
-
取值范围小的和取值范围大的进行运算,小的会提升为大的,再进行运算;
-
byte short char 三种类型的数据在计算时,都会直接提升为int,然后再进行运算
强制转换
(把一个取值范围大的数值赋值给取值范围小的变量是不允许的,如果这样做需要进行强制转换)
double a=12.3;
int b=(int)a;
字符串的”+“
+出现字符串则为字符串连接符
连续加为从左到右逐个参与
字符相加
System.out.println('a'+12);//109
自增自减
++/--无论是在变量前还是变量后都是将变量增1/减1
++a或--a
参与运算时int b=a++;先用后加 int b=++a;先加后用
赋值运算符
=
+=加后赋值a+=b等同于a=a+b; 隐藏强制类型转化
-=/ /= *= %=
关系运算符
==判断左右是否相等 成立为true 不成立为false
!= 判断左右两边是否不相等
< <= > >=
结果为boolean类型 =与==不相同,一个为赋值符号,一个为判断符号
逻辑运算符
&逻辑与 |逻辑或 ^逻辑异或 !逻辑非
短路逻辑运算符(与单个运算符结果一样,效率不同)
&& 而且 如用户名和密码 只有用户名正确才判断密码
|| 短路或
三元运算符
定义一个变量记录两个整数的较大值
可以进行判断,根据判断的结果得到不同的内容
格式:关系表达式?表达式1:表达式2;
三元运算符的结果一定要被使用.
运算符优先级
()优先于所有
作业day03
知识点
运算符
题目1(训练)
身高是具有遗传性的,子女的身高和父母的身高有一定的关系。假定,父母和子女的身高遗传关系如下:
儿子身高(厘米)=(父亲身高+母亲身高) ×1.08÷2
女儿身高(厘米)=(父亲身高×0.923+母亲身高) ÷2
现有父亲身高177CM,母亲身高165CM。求子女身高分别预计为多少?
训练提示
-
已知的父母身高如何用代码体现?
-
题目中的公式如何转化为代码?
`double
解题方案
- 使用变量的定义和算术运算符完成本题
操作步骤
-
定义小数变量代表父亲身高
-
定义小数变量代表母亲身高
-
通过儿子身高计算方式计算儿子身高
-
通过女儿身高计算方式计算女人身高
参考答案
double fatherHeight =177;
double motherHeight = 165;
double sonHeight = (fatherHeight+motherHeight)*1.08/2;
double daughtHeight =(fatherHeight*1.08+motherHeight)/2
题目2(训练)
红茶妹妹有21元钱,她攒了几天钱之后自己的钱比原来的两倍还多三块。绿茶妹妹有24元钱,她攒了几天钱之后自己的钱正好是原来的两倍。那么红茶和绿茶现在的钱一样多,请问对么?
训练提示
- 用什么知识点来计算她们现在的钱有多少?
- 如何对比两个人的钱数?
解题方案
- 使用赋值运算符和算术运算符计算各自的钱,使用比较运算符对比大小
操作步骤
- 定义红茶妹妹原来的钱为整数变量
- 定义绿茶妹妹原来的钱为整数变量
- 使用赋值运算符和算术运算符计算其现有的钱
- 使用比较运算符对数值做出比较
参考答案
int money1 = 21;
int money2 = 24;
money1=money1*2+3;
money2=money2*2;
resule = monney1 == money2;
System.out.println(result);
题目3(综合)
某小伙想定一份外卖,商家的优惠方式如下:鱼香肉丝单点24元,油炸花生米单点8元,米饭单点3元。订单满30元8折优惠。鱼香肉丝优惠价16元,但是优惠价和折扣不能同时使用。那么这个小伙要点这三样东西,最少要花多少钱?
训练提示
- 有两种购买方式,一种是不使用优惠价,另一种是使用优惠价。分别计算花费后,对两种方式的花费作对比。
解题方案
- 使用算术运算符、赋值运算符和三元运算符联合完成本题
操作步骤
- 使用算术运算符求出不使用优惠时的总价
- 使用三元运算符判断总价是否满足打折条件,并求出折后总价
- 使用算术运算符求出使用优惠价时的总价
- 使用三元运算符判断最终更合算的购买方式和花费
参考答案
public class Test03{
public static void main(String[] args){
int fish = 24;
int nuts = 8;
int rice = 3;
int fish2 = 16;
double method1 = (double)(fish + nuts +rice)*0.8;
double method2 = fish2 + nuts +rice;
double result = method1>method2? method2:method1;
System.out.println(result);
}
}
该题解答有误,应先判断是否满足优惠条件再进行计算!
题目4
看代码说结果,不要去运行。
System.out.println(2.0*(5/2)); 4
- 4
- 4.0
- 5
- 5.0
- 以上答案都不对
题目5:
看代码说结果,不要去运行。TomasZhang
String firstName = "Tomas";
String familyName = "Zhang";
打印firstName + familyName 之后是什么结果?
题目6:
需求:
数字6是一个真正伟大的数字,键盘录入两个整数。
如果其中一个为6,最终结果输出true。
如果它们的和为6的倍数。最终结果输出true。
其他情况都是false。
import java.util.Scanner;
public class Test02{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
//输入两个整数
int num1 = sc.nextInt();
int num2 = sc.nextInt();
boolean result = num1 == 6 || num2 == 6 || (num1 + num2) % 6 == 0;
System.out.println(result);
}
}
题目7:
需求:
键盘录入一个三位数,求这个三位数每一位的数字和。
举例:
键盘录入123。那么每一位数字相加为:1 + 2 + 3,和为:7。
import java.util.Scanner;
public class Test04{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
//输入一个三位数
System.out.println("输入一个三位数");
int num = sc.nextInt();
int a = num%10;//个位
int b = num/10%10;
int c = num/100%10;
System.out.println(a+b+c);
}
}
浙公网安备 33010602011771号