程序流程控制也就是控制程序的执行顺序。
程序中最经典的三种执行顺序:顺序结构,分支结构,循环结构。
1.分支结构
1.1.if分支
根据条件的真假来决定执行某段代码。
if有三种分支形式
java
//第一种
if(条件表达式){
代码;
}
//第二种
if(条件表达式){
代码1;
}else{
代码2;
}
//第三种
if(条件表达式){
代码1;
}else if{
代码2;
}else if{
代码3;
}...
1.2.switch分支
通过比较值来决定执行哪条分支。
java
switch(表达式){
case 值1:
执行代码...;
break;
case 值2:
执行代码...;
break;
...
case 值n-1:
执行代码...;
break;
default;
执行代码n;
}
注意事项:
- 表达式只能是byte、short、int、char、JDK5开始支持枚举,JDK7开始支持String、不支持double、float、long
- case给出的值不允许重复,且只能是字面量,不能是变量。
- 正常使用Switch 的时候不要忘记希望break,否则会出现穿透现象。
2.循环结构
控制一段代码重复执行多次。
2.1.for循环
java
for(初始化语句;循环条件;迭代语句){
循环体语句(重复执行的代码):
}
2.1.1.重复五次Hello World!
java
package item2;
public class example1 {
public static void main(String[] args) {
//目标:需要同学们掌握for循环的书写格式,并理解执行流程
//需求:打印多行Hello World
for(int i = 1;i <= 5; i++) {
System.out.println("Hello World!");
}
}
}
2.1.2.批量产生数据
java
package item2;
public class example1 {
public static void main(String[] args) {
//目标:掌握使用for循环批量产生数据
for(int a = 0;a <= 100; a++) {
System.out.println(a);
}
}
}
}
2.1.3.求1~100的数据和:
java
package item2;
public class example1 {
public static void main(String[] args) {
//打印1~100的数据和
int re1 = 0;
for(int b = 1; b <= 100; b++) {
re1 += b;
}
System.out.println(re1);
}
}
2.1.4.求1~100的奇数和
java
package item2;
public class example1 {
public static void main(String[] args) {
//打印1~100的奇数和
int re2 = 0;
for(int c = 1; c < 100; c+=2) {
re2 += c;
}
System.out.println(re2);
}
}
2.2.while循环
格式:
java
初始化语句;
while (循环条件){
循环体语句(被重复执行的代码);
迭代语句;
}
2.2.1.重复五次Hello World!
java
package item2;
public class example1 {
public static void main(String[] args) {
int i = 0;
while ( i < 5) {
System.out.println("Hello World!");
i++; }
}
}
2.2.2.for和while对比
- 功能上完全一样,for能解决的while也能解决
- 使用规范上:知道循环几次的用for;不知道的用while。
2.2.3.while的循环案例
java
package item2;
public class example1 {
public static void main(String[] args) {
//需求:一张厚度为0.1毫米的纸折多少次为8848.86米
//不知道要循环多少次用while
double PeakHeight = 8848860;
double PaperThickness = 0.1;
int count = 0;
while(PaperThickness < PeakHeight) {
//把纸进行折叠,厚度变成原来的两倍
PaperThickness *= 2;
count++;//记住纸张折叠的次数
}
System.out.println("需要折叠多少次:"+count);//27
}
}
2.3.do-while循环
java
初始化语句:
do {
循环体语句;
迭代语句;
}while(循环条件)
2.3.1.重复五次Hello World!
java
package item2;
public class example1 {
public static void main(String[] args) {
//目标:掌握do-while循环的书写格式,执行流程,特点和应用场景
//需求:打印多行Hello World!
int i = 0;
do {
System.out.println("Hello World!");
i++;
}while(i < 5);
}
}
do-while:先执行后判断
while:先判断后执行
2.4.死循环
可以一直执行下去的一种循环,如果没有干预不会停下来。
2.4.1.死循环的三种写法:
java
for( ; ; ){
System.out.println("Hello World!");
}
//经典写法
while(true){
System.out.println("Hello World!");
}
do{
System.out.println("Hello World!");
}while(true);
常出现在服务器程序中。
2.5.循环嵌套
循环中又包含循环。
java
for(int i = 0; i < 3; i++){
for(int j = 0; j < 5; j++){
System.out.println("Hello World!");
}
}
3.跳转关键字
3.1.break
跳出并结束当前所在循环的执行。
只能用于结束说在循环 ,或者结束所在Switch分支 的执行。
java
package item3;
public class loveyou {
public static void main(String[] args) {
//目标:掌握break和continue的作用
//场景:犯错说5句我错了,第三次心软算了
for(int i = 1;i <= 5; i++) {
System.out.println("loveyou"+i);
if(i == 3) {
break;
}
}
}
}
3.2.continue
用于跳出当前循环的当次执行,直接进入循环的下一次执行。
只能在循环 中进行使用。
java
package item3;
public class loveyou {
public static void main(String[] args) {
//目标:掌握break和continue的作用
//场景:犯错说5句我错了,第三次心软,第四天又后悔了
for(int i = 1;i <= 5; i++) {
if(i == 3) {
continue;
}
System.out.println("loveyou"+i);
}
}
}
4.综合案例--生成随机数
4.1.Random的使用
用于生成随机数。
例:得到0~9的随机数的实现步骤
- 导包:告诉程序去JDK的哪个包中找Random(import java.util.Random;)
- 写一行代码拿到随机数对象(Random r = new Random();)
- 调用随机数的功能获取0~9之间的随机数(int number = r.nextInt(10);)
java
package item3;
import java.util.Random;
public class loveyou {
public static void main(String[] args) {
//Random生成随机数案例
//1.导包:告诉程序去JDK的哪个包中找Random
//2.写一行代码拿到随机数对象
Random r = new Random();
//3.调用随机数的功能获取0~9之间的随机数
int data = r.nextInt(10);
System.out.println(data);
}
}
4.2.Random生成指定区间随机数
例如:要生成1~10之间的随机数,程序如何实现。(官方默认从0开始)
技巧:减加法。
java
Random r = new Random();
int data = r.nextInt(10)+1;//0~10
例:生成3~17之间的随机数
java
package item3;
import java.util.Random;
public class loveyou {
public static void main(String[] args) {
//Random生成随机数案例
//1.导包:告诉程序去JDK的哪个包中找Random
//2.写一行代码拿到随机数对象
Random r = new Random();
//3.调用随机数的功能获取0~9之间的随机数
int data = r.nextInt(15)+3;//3~17 => -3 =>(0~14)+3
System.out.println(data);
}
}
4.3.猜数字案例
要求:随机生成一个1~100之间的数据,提示用户猜测,猜大提示过大,猜小提示过小,直到猜中游戏结束。
java
package item4;
import java.util.Random;
import java.util.Scanner;
public class randomtext {
public static void main(String[] args) {
//随机产生一个1~100之间的数据
Random r = new Random();
int data = r.nextInt(100)+1;
System.out.println(data);
//定义一个死循环,让用户不断的猜测数据
Scanner sc = new Scanner(System.in);
while (true) {
//提示用户猜测
System.out.println("输入数据:");
//扫描器
int guessNumber = sc.nextInt();
//判断大小
if(guessNumber > data) {
System.out.println("猜测过大~~");
} else if(guessNumber < data) {
System.out.println("猜测过小~~~");
}else {
System.out.println("猜对啦!!");
break;//结束死循环
}
}
}
}
4.4.键盘录用补充
Java自己提供好的程序给程序员调用的
API文档:应用程序编程接口,技术说明书吗,告诉我们该怎么使用Java程序。
键盘录用技术(使用Sanner接收用户键盘输入的数据,需要三个步骤):
- 导包(自动导包):import java.uily.Scanner;
- 抄代码:代表得到键盘扫描对象的东西:Scanner sc = new Scanner(System.in);//名字:sc
- 抄代码:等待接收用户输入数据:①int age = sc.nextInt();//调用一个nextInt的功能,输入一个数被记住,就收到了用户输入的数值②String name = sc.next();//输入姓名
java
package item5;
import java.util.Scanner;
public class Scanner1 {
public static void main(String[] args) {
//1、导包:一般不需要我们自己做,idea工具会自动帮助我们导包的。
//2、抄写代码:得到一个键盘扫描器对象(东西)
Scanner sc = new Scanner(System.in);
//3、开始调用sc的功能,来接收用户键盘输入的数据。
System.out.println("请输入年龄:");
int age = sc.nextInt();//执行到这里,开始等待用户输入一个整数,直到用户按下回车键,才会拿到数据。
System.out.println("请输入姓名:");
String name = sc.next();//执行到这里,开始等待用户输入一个名字,直到用户按下回车键,才会拿到数据。
System.out.println(name + "欢迎进入");
}
}