30-流程控制的理解
什么是流程控制。现在我们写的代码如果没有if语句,代码都是从上往下执行,就是一条线执行。有了流程控制我们可以让代码根据不同的条件执行不同代码,甚至根据条件重复执行某一些代码,或者根据一个值进入不同的代码里面执行(后面说的开关语句)。
31-复合语句-代码块
复合语句也叫代码块,使用 {} 括起来。和方法体的 {}、类体的 {} 一样。复合语句以整个块为单位,复合语句可以嵌套。在复合语句中定义的变量出了这个复合语句外面就没法访问了。
代码块中变量的有效范围
public static void main(String[] args) {
{
int a = 0;
{
int b = 1;
}
//int c = b; //这个时候访问b是出错的 因为b是在代码块里面 出了这个代码块就没法访问
}
}Code language: JavaScript (javascript)
public static void main(String[] args) {
{
int father = 1;
{
int a = 1;
}
{
//int b = a; //a是在上面的代码块定义的 所以作用范围只是在上面的代码块 当前代码块就没法访问了
}
if (true) {
int a = 1; //同级别的块里面 是可以定义同名变量的
int d = father;
}
}
}Code language: JavaScript (javascript)
32-if条件语句
if条件语句可以根据某个条件去执行不同的代码。if后面的括号里面的结果如果是true则执行。
简单的if语句
if(布尔表达式) {
执行语句(可以为空也可以多条)
}
布尔表达式是必须的参数,它是一个布尔值。语句这里可以没有。
if的使用
public static void main(String[] args) {
if (true || false && 1 > 2 || IsRain()) {
System.out.println("判断是对的 欢迎大家访问FoxDevelop.com网校");
}
}
public static boolean IsRain() {
return false;
}Code language: JavaScript (javascript)
如果语句只有一条的时候可以不用 {},但个人建议还是使用 {} 好。如果一条语句都没有,甚至可以缩写为 if(true);,后面的分号不能省。
public static void main(String[] args) {
if (true || false && 1 > 2 || IsRain()) {
System.out.println("判断是对的 欢迎大家访问FoxDevelop.com网校");
}
System.out.println("www.FoxDevelop.com"); //这条语句不属于if语句块里面
}Code language: JavaScript (javascript)
练一练
比较两个int变量,判断哪个比哪个大,使用if语句不用else语句,这个时候需要两条if语句。
public static void main(String[] args) {
int a = 1;
int b = 2;
if (a > b) {
System.out.println("a大于b");
}
if (b > a) {
System.out.println("b大于a");
}
}Code language: JavaScript (javascript)
if-else语句
if-else就是如果/否则的意思。如果if后面的表达式是true则执行if后面的代码块,否则就执行else后面的代码块。同样如果只有一条语句可以省略大括号。
练一练
使用if-else完成上面的题目。
if-else if 多分支语句
在else的时候再进行判断。比如根据学生成绩输出级别:90分以上优秀,80分以上90以下良好,60到79及格,60以下不及格。
public static void main(String[] args) {
int point = 99;
if (point >= 90) {
System.out.println("优秀");
} else if (point >= 80) {
System.out.println("良好");
} else if (point >= 60) {
System.out.println("及格");
} else {
System.out.println("不及格");
}
}Code language: JavaScript (javascript)
public static void main(String[] args) {
int a = 1;
int b = 1;
if (a > b) {
System.out.println("a大于b");
} else if (a < b) {
System.out.println("b大于a");
} else {
System.out.println("b等于a");
}
}Code language: JavaScript (javascript)
练习一下
根据当前的时间进行问好(早上好、下午好、晚上好)。Java中获取当前小时数:
public static void main(String[] args) {
Date date = new Date();
int h = date.getHours();
System.out.println(h);
if (h < 6 && h > 18) {
System.out.println("晚上好");
} else if (h < 12) {
System.out.println("早上好");
} else {
System.out.println("下午好");
}
}Code language: JavaScript (javascript)
33-switch多分支语句
根据不同的月份输出对应的汉字几月份,比如当前月是4就输出”四月份”。如果没有switch用if实现,有了switch可以这样实现。
switch语句后面的括号的表达式的值必须是整数型或者字符型(char其实也是整数型)。switch语句根据后面的表达式的值去匹配case的值,一旦匹配后就开始执行case后面的若干语句,直到遇到第一个break为止,就算这个break在另外一个case里面也是。同一个switch里case的值不能相同。
练习一下
- 根据当前星期提示当前星期几
- 根据月份输出当前的季节(春夏秋冬)
34-练习课-系统登录判断
写一个程序,要求用户在控制台输入账号密码,然后验证账号和密码,验证通过则提示登录成功,验证失败则提示失败(错误信息不要提示得太明显)。
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入账号:");
String name = scan.nextLine();
System.out.println("请输入密码:");
String password = scan.nextLine();
if (name.equals("bamn") && password.equals("123321")) {
//真正的系统应该是根据name去查数据库 然后拿到这个name的密码 然后判断密码
System.out.println("登录成功"); //错误信息一般不要提示得太精确
} else {
System.out.println("账号或者密码不对");
}
}Code language: JavaScript (javascript)
35-循环语句-while语句
循环语句就是在满足一定条件的情况下反复执行某一个操作。Java中提供while、do-while、for三个循环语句。
while语句写法
while(布尔条件表达式) {
执行语句
}Code language: JavaScript (javascript)
当执行完 {} 里面的语句后重新回到表达式判断是否为true,是则继续执行,直到false为止。所以如果不想死循环,在执行语句里面应该要有一个改变条件表达式使得它为false的地方。
public static void main(String[] args) {
int i = 0;
while (i < 10) {
System.out.println("i小于10");
//如果在执行代码块里面没有改变条件的话 则会死循环
i++;
}
}Code language: JavaScript (javascript)
int i = 0;
while (i < 10)
System.out.println("1111"); //只有一条语句的时候也可以省略{}Code language: JavaScript (javascript)
试一下
统计1到100的和。
public static void main(String[] args) {
int i = 1;
int sum = 0;
while (i < 101) {
sum = i + sum; //sum += i;
i++;
}
System.out.println("1到100的和是:" + sum);
}Code language: JavaScript (javascript)
注意:
while(条件表达式);这里后面的分号是没有的,不要多加,多加了就会死循环。
36-循环语句-do-while语句
do-while语句和while语句类似,区别在于while先判断条件成立就执行循环体,而do-while先执行一次循环体然后再判断条件,成立再去执行循环体。
do {
执行语句
} while(条件表达式);Code language: JavaScript (javascript)
注意后面的分号不能少。
do {
System.out.println("www.FoxDevelop.com");
System.out.println("www.FoxDevelop.com");
System.out.println("www.FoxDevelop.com");
} while (true);Code language: JavaScript (javascript)
练一练
使用do-while实现统计1到100个数的和。
37-for循环语句
for循环也是进行循环,不过它比while等循环要丰富一些。
语法结构
for(表达式1; 表达式2; 表达式3) {
语句序列
}
- 表达式1:初始化表达式,负责完成变量的初始化,在整个循环中只执行一次
- 表达式2:循环条件表达式,值为boolean
- 表达式3:循环后操作表达式,一般用来改变循环条件
最简单的for循环:
for(;;) {
}Code language: CSS (css)
试一试
使用for实现计算1到100所有的数的和。
int sum = 0;
for (int i = 1; i < 101; i++) {
sum += i; //sum = sum + i;
}
System.out.println(sum);Code language: HTML, XML (xml)
38-foreach循环语句
foreach是for的特殊简化版本。foreach并不能完全取代for语句,然而任何foreach都可以改写成for语句。foreach通常用来遍历数组、列表。foreach语句也是使用for关键字的。
public static void main(String[] args) {
int arr[] = {1, 2, 3};
for (int x : arr) {
System.out.println(x);
}
}Code language: JavaScript (javascript)
39-练习一下-输出九九乘法口诀
使用for循环输出九九乘法口诀,注意是阶梯型的乘法口诀。提示:需要两层for循环。
public static void main(String[] args) {
for (int i = 1; i < 10; i++) { //行
for (int j = 1; j <= i; j++) { //列
System.out.print(i + " x " + j + "=" + (i * j) + " ");
}
System.out.print("\r\n");
}
}Code language: PHP (php)
40-跳转语句-break
break语句用在switch里是用来终止case。事实上break还可以用在for、while、do-while循环中,用来强制退出循环。
下面我们来做一道题
从1开始到n开始累加,当和大于1000的时候求n的值。
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i < 1000000; i++) {
sum += i;
if (sum > 1000) {
System.out.println(i);
break; //退出它所在的循环 跳到for的下面的语句去
}
}
}Code language: JavaScript (javascript)
41-跳转语句-continue语句
continue和break差不多,也是用在for、while、do-while等循环语句里面。不过它不是跳出整个循环,而是跳过本次循环。
比如使用for循环输出1到50之间所有的奇数,要求用到continue
不用continue的实现:
int sum = 0;
for (int i = 1; i <= 50; i++) {
if (i % 2 == 1) { //是奇数的时候
sum += i;
}
}
System.out.println(sum);Code language: HTML, XML (xml)
使用continue的实现:
int sum = 0;
for (int i = 1; i <= 50; i++) {
if (i % 2 == 0) { //是偶数的时候
continue; //一旦i是偶数则会执行continue 执行continue就不会执行本次循环下面的代码
}
sum += i;
}
System.out.println(sum);Code language: JavaScript (javascript)
42-return语句
return语句可以从一个方法返回,把控制权交给调用这个方法的地方。
return 表达式;Code language: JavaScript (javascript)
表达式是可选的,当方法不需要返回值(也就是void)时可以调用。
public static void main(String[] args) {
int res = GetAge(1.2f);
System.out.println(res);
}
public static int GetAge(float f) {
f = f + 2;
if (f > 3) {
return 90; //一旦这个代码执行了 则这个函数GetAge就会退出了
}
return 12;
}Code language: JavaScript (javascript)