1.if.elseif
2.循环
3.控制关键词
一 运算符
算术,赋值,关系,逻辑,三目
!,非,取反的作用
boolean r = !true; //false
boolean r2 = !(1 > 0);// false
二 键盘录入
1) 导包 import java.util.Scanner;
2) 创建扫描器 Scanner scanner = new Scanner(System.in);
3) 调用方法完成输入
int a = scanner.nextInt();
三 if
if 单分支
ifelse 双分支
ublic class Demo9 {
public static void main(String[] args) {
System.out.println("-------第一题--------");
// 编写程序, 找3个数最大值
int a = 1;
int b = 2;
int c = 3;
// 找3个数最大值
if (a > b) {
if (a > c) {
System.out.println("a大");
} else {
System.out.println("c大");
}
} else {
if (b > c) {
System.out.println("b大");
} else {
System.out.println("c大");
}
}
System.out.println("-------第二题--------");
System.out.println("求出3个数的平均数");
// 编写一个程序,计算用户输入的3个数字的平均值并显示出来。
Scanner scanner = new Scanner(System.in);
System.out.println("请输入第1个数:");
int x = scanner.nextInt( );
System.out.println("请输入第2个数:");
int y = scanner.nextInt( );
System.out.println("请输入第3个数:");
int z = scanner.nextInt( );
/**
* 拼接字符串的口诀
* 1. 先献丑完整的句子
* 2. 再替换
* 选中,"",中间,++,中间变量
*/
System.out.println("您输入的数字是" + x + "," + y + "," + z + "");
// System.out.println("您输入的数字是" + "x" + ",y" + ",z");
double r = (x + y + z) / 3.0;
System.out.println("3个数的平均数是: " + r );
}
}
public class Demo10 {
public static void main(String[] args) {
// 定义一个数,输出该数是不是既能被3整除也能被5整除
// 什么叫整除? 余数为0
int a = 15;
if (a % 3 == 0 && a % 5 == 0) {
System.out.println("是既能被3整除也能被5整除" );
} else {
System.out.println("不是既能被3整除也能被5整除" );
}
// 定义一个年龄,判断该年龄是否可以考驾照
// 假设法定年龄18-70
int age = 20;
if (age >= 18 && age <= 70) {
System.out.println("可以考驾照" );
} else {
System.out.println("不能考驾照" );
}
// java中不能写连续判断: 18 < age < 70,这样报错
}
}
已经学过
if 单分支
if(布尔表达式){ }
- 1
- 2
- 3
if.else 双分支
if(布尔表达式){ } else { }
- 1
- 2
- 3
- 4
- 5
现在再学习一个
if.elseif.elseif… 多分支,实现多选一
if(布尔表达式){ } else if(布尔表达式){ } else if(布尔表达式){ } else if(布尔表达式){ } else { }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
public class Demo1 {
public static void main(String[] args) {
// 假设分数,根据分数选学校
// 要求700分以上进清华
// 600-700分进北大
// 500-600分进郑大
// 500分以下进厂
int score = 350;
if (score >= 700) {
System.out.println("上清华" );
} else if (score >= 600) {
System.out.println("上北大" );
} else if (score >= 500) {
System.out.println("上郑大" );
} else {
System.out.println("进厂" );
}
// 给定一个成绩,根据成绩的范围打印相应的等级。
// 90及以上为"A级",
// 80-89为"B级",
// 70-79为"C级",
// 60-69为"D级",
// 60以下为"E级"。
int num = 75;
if (num >= 90) {
System.out.println("A级" );
} else if (num >= 80) {
System.out.println("B级" );
} else if (num >= 70) {
System.out.println("C级" );
} else if (num >= 60) {
System.out.println("D级" );
} else {
System.out.println("E级" );
}
}
}
回忆代码的执行流程
- 最开始时代码从上至下一行一行执行
- 使用if,ifelse,ifelseif等语句实现代码有选择的执行
现在马上要学习的循环,可以实现
- 代码重复执行
实现代码循环语法
- while
- dowhile
- for
ps: 任何循环都要四要素
- 循环初始值
- 循环控制条件
- 循环迭代(变化的值)
- 循环体(循环要 做的事情)
while语法
声明+赋值变量; // 循环初始值 while(布尔表达式){// 循环控制条件 执行语句;// 循环体(循环要 做的事情) ++或--;// 循环迭代(变化的值) }
- 1
- 2
- 3
- 4
- 5
while执行流程
- 从上至下依次执行,遇到while,开始判断
- 如果结果是对(true)就执行{}内语句
- 执行迭代
- 继续回头再执行while后的判断,再根据判断结果对就执行{}内语句
- 只有当while后判断为false时不再循环
* @desc while循环
*/
public class Demo2 {
public static void main(String[] args) {
// 重复5遍中午吃 - 捞面条
int i = 1; // 初始值
while(i < 6) { // 控制条件
System.out.println("中午吃捞面条" ); // 循环体,即重复的内容
i++; // 循环迭代(每次都变化的值)
}
System.out.println("结束" );
// 输出语句输出: 11-20这10个数
int a = 11; // 初始值
while(a <= 20) {// 控制条件
System.out.println(a );// 重复内容
a++;// 迭代
}
// 输出语句输出100-1
int b = 100;
while(b > 0) {
System.out.println(b );
b--;
}
/**
* 敲代码需要注意:
* 随着学完if,ifelse,while等代码
* 出现好多{}
* 要记住{}一定成对儿出现,如果报错自己手动比对
* ----------------------------
* 格式缩进,每个{}内缩进
*/
}
}
dowhile也是一种循环
do { 执行语句; }while(条件);
- 1
- 2
- 3
* @desc dowhile 循环
*/
public class Demo3 {
public static void main(String[] args) {
// 重复输出5遍 做俯卧撑
int i = 1; // 初始值
do {
System.out.println("做俯卧撑" );// 循环内容
i++;//迭代
}while(i < 6); // 控制条件
/**
* 与while区别在于:
* dowhile会先do(先执行代码)
* 后再判断while
*/
// 输出1-10中的奇数
int a = 1;
do {
if (a % 2 == 1) {
System.out.println(a );
}
a++;
}while (a < 11);
}
}
for循环语法
for (初始值;控制条件;迭代) { 重复的内容语句; }
- 1
- 2
- 3
* @desc for循环
*/
public class Demo4 {
public static void main(String[] args) {
System.out.println("------ 第一题 -----" );
// 重复输出1-10
for (int i = 1 ; i < 11 ; i++) {
System.out.println(i );
}
System.out.println("------ 第二题 -----" );
// 练习1 输出1-10的奇数
for (int i = 1; i < 10; i++) {
if (i % 2 == 1){
System.out.println("奇数"+i );
}
}
System.out.println("------ 第三题 -----" );
// 练习2 输出1-10的偶数
for (int i = 1; i < 11; i++) {
if (i % 2 == 0){
System.out.println("偶数"+i );
}
}
System.out.println("------ 第四题 -----" );
// 练习3 输出1-10中3的倍数
for (int i = 1; i < 11; i++) {
if (i % 3 == 0){
System.out.println("3的倍数"+i );
}
}
System.out.println("------ 第五题 -----" );
// 练习4 输出1-100中所有既能被3整除又能被5整除的数
for (int i = 1; i < 101; i++) {
if (i % 3 == 0 && i % 5 == 0){
System.out.println(i );
}
}
}
}
练习题
计算1-10的和
public static void main(String[] args) {
// 求1-10的和利用循环重复相加
// 1+2+3+4+5+6+7+8+9+10
int sum = 0;// 定义变量,sum意思和,即准备存储相加的和
for (int i = 1; i < 11; i++) {
// sum = sum + i;
sum += i;
}
System.out.println(sum );
}
循环要么是死循环(一直循环)、要么是固定的循环次数,那么能不能在循环过程中控制循环?
怎么控制? 比如终止循环,或者跳过循环
这就是今天要学习的控制循环的关键词
- break
- continue
- return (并不是主要控制循环,只是用在循环中)
break 翻译: 终止,破坏
作用: 终止循环不再执行
public class Demo5 {
public static void main(String[] args) {
System.out.println("---- 演示1 ----" );
// 输出1-10,但是在输出到5时退出循环
int i = 1;
while (i < 11){
System.out.println(i );
if (i == 5) {
break;// 退出循环
}
i++;
}
System.out.println("---- 演示2 ----" );
for (int j = 1; j < 11; j++) {
System.out.println(j );
if (j == 5) {
break;// 退出循环
}
}
}
}
练习: 模拟网站登录,输入账号登录网站,假设账号是123
- 如果账户对则输出欢迎登录
- 如果错则再输入一遍账号
- 最多允许输入3次账号,3次内只要有一次输入正确即可
- 3次全错则提示账户锁定
ps:合理使用输出语句,使代码显示效果,以及提示语更贴切 (站在使用者角度去设计程序)
System.out.println("---- 演示账号登录 ----" );
Scanner scanner = new Scanner(System.in);
// 循环来实现重复输入账号
for (int k = 1;k < 4;k++){
System.out.println("请输入账号:" );
int id = scanner.nextInt( );
if (id == 123) {// 如果账号对,break可以提前结束循环
System.out.println("欢迎登录" );
break; // 停止循环
} else {
System.out.println("账户错误" );
}
}
continue 翻译: 继续
作用: 先让循环停一次,继续后续循环
* @desc continue继续循环
*/
public class Demo7 {
public static void main(String[] args) {
// 逢七过,输出时不要7
for (int i = 1; i < 11; i++) {
if (i == 7) {
continue;// 跳过这一次循环,继续下次循环
}
System.out.println(i );
}
System.out.println("后续..." );
}
}
return 翻译: 返回
作用: 无论是循环还是if等其他语句,遇到return 结束该方法
* @desc
*/
public class Demo8 {
public static void main(String[] args) {
for (int i = 1; i < 10; i++) {
if (i == 5){
break;// 中断循环
}
System.out.println(i );
}
System.out.println("break后" );// 可以执行
for (int i = 1; i < 10; i++) {
if (i == 5){
continue; // 跳过一次循环,继续后续循环
}
System.out.println(i );
}
System.out.println("continue后" );// 可以执行
for (int i = 1; i < 10; i++) {
if (i == 5){
return;
// 结束该方法,当前是main方法,所以main方法结束,程序就结束了
}
System.out.println(i );
}
System.out.println("return后" );//这句话不执行,因为上面return时方法已经结束
}
}
编写一个程序,最多接收10个数,求这些数的和
注意:中途用户可以通过输入886终止程序,并显示输入数的和
System.out.println("----- 求和练习plus -----" );
Scanner scanner = new Scanner(System.in);
int sum2 = 0;
for (int i = 1; i < 11; i++) {
System.out.println("请输入第"+i+"数字:" );
int a = scanner.nextInt( );
if (a == 886){
System.out.println("提前结束~" );
break;
}
sum2 = sum2 + a;
}
System.out.println("相加和 ==> " + sum2 );
变量的作用范围
* @desc 变量的作用域
*/
public class Demo6 {
public static void main(String[] args) {
/**
* 变量的作用域: 是离它最近的花括号{}
* 在作用范围外无法使用
* 在作用范围内可以重复使用,但是不能出现重名的变量
*/
int i = 1;
System.out.println(i );
if (true){
int a = 1;
System.out.println(a );
System.out.println(i );
}
// System.out.println(a );
System.out.println(i );
for (int a = 1;a<10;a++){
}
for (int a = 1;a<10;a++){
}
}
}
num 数字
score 分数
while 当什么时候
sum 和
break 破坏