Java学习第四天
*******************************单目运算符 循环结构****************************
昨天的内容回顾:
逻辑运算符:&& || !
赋值运算符:先计算赋值运算符右边的表达式
= += -= *= /= %=
程序结构:
1、顺序结构:自上而下逐行进行
2、选择结构:if 多重if选择结构 嵌套if选择结构 switch结构
【说明:】
(1)表达式的类型:
在JDK1.6以前 只能是int byte short char 类型
在JDK1.6及以后 增加了String
(2)break:不是必须的
(3)default:默认的意思(相当于else,以上都不是,否则的意思)可以放在任意位置,但一般放在最后
(4)case的值是不能重复的
面试题:不使用第三方变量来交换两个变量的值(运用+-)
练习1:员工管理系统的功能:计算个人所得税税金
超出部分
5000以下 0
5001~6000 1.2%
6001~8000 2.5%
8001~10000 4%
10000以上 6%
要求:从控制台输入本月工资,通过计算告知你本月应缴纳的税金为多少?
Ex1.java
package cn.qc.javaproject1706.day4;
import java.util.Scanner;
public class Ex1 {
public static void main(String[] args) {
Scanner ip = new Scanner(System.in);
System.out.println("请输入你的工资:");
float salary = ip.nextFloat();
// 存放税金
float tax = 0.0f;
// 存放超出部分的薪资
float comSalary = salary - 5000;
//多重if
if (salary <= 5000) {
tax = 0;
} else if (salary <= 6000) {
tax = comSalary * 0.012f;
} else if (salary <= 8000) {
tax = comSalary * 0.025f;
} else if (salary <= 10000) {
tax = comSalary * 0.04f;
} else if (salary > 10000) {
tax = comSalary * 0.06f;
}
System.out.println("你本月应缴纳的税金为:" + tax);
ip.close();
}
}
今日内容:
1、单目运算符(重点):
2、循环结构:
重点是应用 怎样应用语法来实现代码功能
1、单目运算符(重点):
什么是单目运算符?
目:参与计算的表达式或变量(多目运算符:1+2+3)
单目:一个表达式或变量
例如: int i=0;
i++;
运算符:++(对变量进行加一) --(对变量减一)
见代码Sign.java
package cn.qc.javaproject1706.day4;
public class Sign {
public static void main(String[] args) {
//单目运算符
int i=2;
System.out.println("i="+i);
i++;
System.out.println("i="+i);
int num=1;
int sum=num++ +2;
//先使用num的值+2赋值给sum,然后改变num的值+1 sum=3 num=2改变后对sum无影响
System.out.println("sum="+sum);
int num1=1;
int sum1=++num1 +2;//先改变num1的值+1,然后再加2 sum1=2+2=4
System.out.println("sum1="+sum1);
int num2=1;
//先使用num2的值 输出 输出后 再改变num2的值
System.out.println(num2++);//结果还是1
System.out.println(num2);//结果为2
int num3=1;
int ret=++num3 + num3++ + ++num3;
// num3=2 2+2=4 num3=3 4+4=8
//ret=?
System.out.println("ret="+ret);
}
}
int i=1;
++i;//先改变i的值(就是对i+1),然后再使用i
i++;先使用i的值,然后再改变i的值
使用:从内存中读取到值然后进行计算、输出、赋值等
() 单目运算 算术运算 比较运算 逻辑运算 赋值运算
(优先级由高到低 括号优先级永远是最高的!)
2、循环结构:
重复的去做一件事
循环案例: 找案例的特点
第一个:打印五十份试卷 重复做的事:打印 结束:50份试卷打完
第二个:二百米一圈操场上跑5千米 重复:跑圈 结束:够5000米
第三个:完成10道编程题 重复:做题 (每次的题可以不同) 结束:做完10道题
循环的两要素:循环体(重复做的事是什么)
循环条件(什么时候重复做/什么时候不重复、结束了)
循环的好处:
输入一百遍“好好学习,天天向上!”
for(int i=0; i<100;i++){
System.out.println("好好学习,天天向上!");
}
1、while循环
while(循环条件){
/循环体
}
见代码While.java
package cn.qc.javaproject1706.day4;
public class While {
public static void main(String[] args) {
//100遍好好学习,天天向上!while
//循环条件:不足100 遍就要打印 使用变量来计数
//循环体:输出打印
//什么变量来记录打印的次数
int i=1;
while(i<=100){
//循环体
System.out.println("第"+i+"遍:好好学习,天天向上!");
//打印次数+1
//
i++;
}
}
}
在循环条件中使用的变量叫循环变量
【注意】一定要在循环体中去改变循环变量,否则将造成死循环。
练习2:
要求计算1~100之间数字之和 while
int i=1;
int sum=0;
循环条件:判断是否加到100 i<=100
循环体: sum+=i i++;
Ex2.java
package cn.qc.javaproject1706.day4;
public class Ex2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int i = 1;
int sum = 0;
while (i <= 100) {
sum += i;//等于sum=sum+1
i++;//等于i+1
}
System.out.println("sum=" + sum);
}
}
练习3:
计算0~100之间偶数的和 while
Ex3.java
package cn.qc.javaproject1706.day4;
public class Ex3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//方法一
int i=0;
int sum=0;
while(i<=50){
sum+=i*2;
i++;
}System.out.println("sum="+sum);
//方法二
int j=2;
int sum1=0;
while(j<=100){
sum1+=j;
j+=2;
}System.out.println("sum1="+sum1);
}
}
计算0~100之间
7的倍数 q%7==0
各位是7 q%7==7
十位是7 q/7==7
int q = 0;
while (q < 100) {
if (q % 7 == 0 || q % 10 == 7 || q / 10 == 7) {
System.out.println(q);
}
q++;
}
应用:
登录:当账号或密码错误3次后停止登录
条件:错误次数是否够三次
循环体 输入账号密码
Login.java
package cn.qc.javaproject1706.day4;
import java.util.Scanner;
public class Login {
public static void main(String[] args) {
Scanner ip=new Scanner(System.in);
System.out.println("***************************");
System.out.println("*******HR管理系统***********");
System.out.println("***************************");
//声明循环变量来记录错误的次数
int count=0;
while(count<3){
//输入账号密码然后进行判定
System.out.println("请输入账号:");
String userId=ip.next();
System.out.println("请输入密码:");
String userPwd=ip.next();
if(userId.equals("admin") && userPwd.equals("123456")){
System.out.println("登陆成功!");
//当输入正确后,需要结束循环
break;
}else{
//循环变量改变
count++;
if(count==3){
System.out.println("错误次数已打到3次,程序退出!");
//退出
System.exit(0);
}else{
//错误
System.out.println("账号或密码错误,请重新输入!");
}
}
}
System.out.println("系统功能菜单如下:");
}
}
break :跳出当前所在的循环(当前所在的循环结束),循环后的代码继续执行
格式化代码 在搜狗输入法外 全选代码 Ctrl+shift+F
猜数游戏:
随机产生一个数(一百以内),然后通过用户输入产生的数是多少
允许猜5次,每次如果猜错了,提示用户:猜大了还是小了,到5次还没猜对 程序结束
Demo.java
package cn.qc.javaproject1706.day4;
import java.util.Scanner;
import java.util.Random;
public class Demo {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner ip = new Scanner(System.in);
// 怎样产生一个随机数
// 产生一个0~指定范围的随机数
Random rd = new Random();
// 使用rd产生0~指定的数,范围内的随机数
int num = rd.nextInt(100);
System.out.println(num);
int i = 1;
while (i <= 5) {
System.out.println("您还有" + (6 - i) + "次机会");
System.out.println("请输入一数:");
int num1 = ip.nextInt();
if (num < num1) {
System.out.println("您猜的数大了!");
} else if (num > num1) {
System.out.println("您猜的数小了!");
} else if (num == num1) {
System.out.println("您猜对啦!");
break;
}i++;
}
System.out.println("程序退出!");
System.exit(0);
}
}
循环:条件 循环体
循环方式:(三种)
while循环 先判断条件 条件为true 执行循环体 如果为false 循环结束
有可能一次都执行不到
do while循环 先执行循环体 再判断条件 如果条件为true 将再次执行循环体 如果为false 循环结束
至少被执行一次
do{
//循环体
}while(条件);
不判断条件,让用户至少执行一次 使用do while循环
例如:给用户输出菜单
至少输出一次
1~100加和
Dowhile.java
package cn.qc.javaproject1706.day4;
public class Dowhile {
public static void main(String[] args) {
// TODO Auto-generated method stub
//do while 1~100之间数字之和
int i=1;
int sum=0;
do{
sum+=i;
//改变循环变量
i++;
}while(i<=100);
System.err.println("sum="+sum);
}
}
(3)for
for (表达式1;表达式2;表达式3){
//循环体
}
表达式1:循环变量的初始化(初始化:声明并且赋值的过程)
表达式2:判断循环条件是否满足循环条件
表达式3:完成循环变量的迭代(++ --)
见代码For.java
package cn.qc.javaproject1706.day4;
public class For {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 1~100之间数字之和
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
System.out.println("sum=" + sum);
}
}
for循环的执行过程:
int sum=0;
for(int i=1;i<=100;i++){
sum+=i;
}
执行顺序:
表达式1、表达式2、执行循环体sum+=i;、表达式3、表达式2。。。。。
for 先判断条件,只有条件为true 才执行循环体
已知循环次数的情况下 使用for
使用for循环,统计1~100之间7倍数的个数
Ex6.java
package cn.qc.javaproject1706.day4;
public class Ex6 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int count = 0;
for (int i = 1; i <= 100; i++) {
if (i % 7 == 0) {
count += 1;
}
}
System.out.println("count=" + count + "个");
}
}
【说明:】
(1)表达式1可以省略(就是可以把它拿出去)
int i = 1
for ( ; i <= 100; i++)
}
(2)表达式3也可以省略(没有:死循环 或 把它拿出去放在循环体中)
(3)表达式2也可以省略(将没有条件直接执行循环体)
for( ; ; )
死循环 while(true){
}
循环总结:
1、先判断条件,再执行循环体 while for
2、先执行一次,在判断条件do while
3、已知循环次数的情况下优先考虑for
4、改变循环结构的关键词
break:退出所在的当前循环(当前循环结束)
只能用在循环中和switch中
continue:结束本次循环(0本次还有未执行的代码,将不被执行),进入下一次循环
只能用在循环中
见代码:Continue.java
package cn.qc.javaproject1706.day4;
public class Continue {
public static void main(String[] args) {
// TODO Auto-generated method stub
for (int i = 1; i <= 20; i++) {
// 先判断当前循环变量的值是否是4
if (i == 4) {
continue;
}
// 输出
System.out.println("i=" + i);
}
}
}
循环的嵌套:
明天内容:二重循环 数组
练习:
输入一个四位数:分别输出