1.1 循环结构
1.1.1 while循环
//测试while循环
import java.util.Scanner;
public class WhileTest{
public static void main(String[] args) {
//用户输入一个数字 判定这个数字的长度 123 --> 3
/*
1: 在当前类的头顶上编写如下代码:
import java.util.Scanner;
2: 使用
Scanner input = new Scanner(System.in);
3: 获取用户输入的值
int num = input.nextInt();
*/
Scanner input = new Scanner(System.in); // int num = 10;
System.out.println("请输入一个数字>>>>>>>");
int num = input.nextInt(); //Math.random();
System.out.println("用户输入的值是:"+num);
// 计算当前用户输入数字的长度
//a:声明一个变量存储 长度
int length = 0;
while(num!=0){
num = num / 10;
length++;
}
System.out.println("您输入的数值的长度是"+length+"位数");
}
}
I、语法结构
while(expression){
//loop-statement;
}
II、执行流程
- 判定表达式的结果 如果结果时true则执行循环体一次 ,继续判定 直到循环条件(表达式)的结果时false,则终止整个while循环
- 最开始表达式的结果就是false 则直接跳过;
III、注意事项
- 需要在循环体中存在一些代码能够改变循环条件的结果,这样该循环才不会变为死循环(死循环不一定是坏的);
- 知道循环终止条件,但是不确定循环次数;
// 一下代码没有问题 编译器只管类型ok
boolean flag = true;
while(flag){
}
System.out.println("excute.....");
// 一下代码有问题 编译的时候确定了表达式的值 所以可以肯定后面的excute是不可达的
while(true){
}
System.out.println("excute.....");
// 一下代码有问题 final之后相当于flag会被替换为字面值
final boolean flag = true;
while(flag){
}
System.out.println("excute.....");
1.1.2 do-while循环
//测试do-while循环
import java.util.Scanner;
public class DoWhileTest{
public static void main(String[] args) {
//用户输入一个数字 判定这个数字的长度 123 --> 3
Scanner input = new Scanner(System.in); // int num = 10;
System.out.println("请输入一个数字>>>>>>>");
int num = input.nextInt(); //Math.random();
System.out.println("用户输入的值是:"+num);
// 计算当前用户输入数字的长度
//a:声明一个变量存储 长度
int length = 0;
do{
num = num / 10;
length++;
}while(num!=0);
System.out.println("您输入的数值的长度是"+length+"位数");
}
}
I、语法结构
do{
//loop-statement
}while(expression);
II、执行流程
- 不管三七二十一,先做一次循环体;
- 然后判定表达式的结果 如果结果时true则再执行循环体一次 ,继续判定 直到循环条件(表达式)的结果时false,则终止整个do-while循环
III、注意事项
- 知道循环终止条件,但是不确定循环次数;
- do-while的使用场景比较少,适用于循环条件的判定依赖于循环体的执行;
1.1.3 for循环
//测试for循环
public class ForTest{
public static void main(String[] args) {
// 1: 计算1-100累加求和
//int num = 1; // 这个变量存储 1- 100之间的值
int sum = 0; // 累加求和
//1:声明循环变量
//2:判定循环条件 //5:继续判定循环条件
for(int num = 1;num<=100;num++){//4:改变循环变量的值
//3:执行循环体1次
sum = sum+num;
}
System.out.println("1累加到100之间的和是:"+sum);
}
}
I、语法结构
for(;;){
// 循环体
}
for(;循环条件;){
// 循环体
}
for(声明循环变量;循环条件;改变循环变量的表达式){
// 循环体
}
II、执行流程
- 声明循环变量;
- 判定循环条件 如果条件位true 执行循环体一次
- 如果条件位false 则跳过for循环执行后续代码
- 如果条件位true 执行循环体之后,执行改变循环变量的表达式 ,继续判定循环条件以此类推;
III、注意事项
- for循环是所有循环里面格式最灵活的;
- 循环变量声明在for中,会在一定程度上降低内存消耗;
- 改变循环变量的值的表达式,这是执行完循环体之后要做的,不能因为写在了同一行,所以认为它的执行顺序和循环变量声明,循环条件判定是在一起执行的;
- for循环能够确定循环次数,while确定的循环的终止条件;
1.2 流程中断
1.2.1 continue
一定要知道我们的程序的执行流程是严格按照顺序流程执行的,在执行的过程中会嵌套各种分支以及循环;
continue:跳出循环 只跳出当前循环一次;
//测试continue
public class ContinueTest{
public static void main(String[] args) {
// 使用生成1-100之间的数字 然后判定这些数字中是否存在
// 偶数,只打印偶数 如果是奇数 则跳过
for (int i=1;i<=100 ;i++ ) {
// i就是1-100之间的数值
// 判定i的值是奇数还是偶数
if(i%2==1){ //i是奇数
continue;
}else{//i是偶数
System.out.print(i+" ");
}
System.out.println("我是换行");
}
}
}
1.2.2 break
打断case穿透,跳出当前循环
// 测试break
public class BreakTest{
public static void main(String[] args) {
// 需求:计算1-100累加求和 然后计算累加值超过3000之后的累计的值是几
//声明变量存储累加的值
int sum = 0;
//1:计算累加求和 1-100
for(int i = 1;i<=100;i++){
sum = sum+i; //sum+=i
// 判定累加的值是否超过3000了
if(sum>=3000){
System.out.println("累加的和超过了3000,目前累加到"+i+",累加的和是"+sum);
// 跳出循环
break;
}
}
System.out.println("game over");
}
}
1.2.3 return
跳出方法
// 测试break
public class BreakTest{
public static void main(String[] args) {
// 需求:计算1-100累加求和 然后计算累加值超过3000之后的累计的值是几
//声明变量存储累加的值
int sum = 0;
//1:计算累加求和 1-100
for(int i = 1;i<=100;i++){
sum = sum+i; //sum+=i
// 判定累加的值是否超过3000了
if(sum>=3000){
System.out.println("累加的和超过了3000,目前累加到"+i+",累加的和是"+sum);
// 跳出循环
break;
}
}
System.out.println("game over");
}
}
从跳出的程度而言,continue<break<return
一下代码是为了更好的认识continue、break和return;
// 测试break
public class BreakTest{
public static void main(String[] args) {
// 需求:计算1-100累加求和 然后计算累加值超过3000之后的累计的值是几
//声明变量存储累加的值
int sum = 0;
//1:计算累加求和 1-100
for(int i = 1;i<=100;i++){
sum = sum+i; //sum+=i
// 判定累加的值是否超过3000了
if(sum>=3000){
System.out.println("累加的和超过了3000,目前累加到"+i+",累加的和是"+sum);
// 跳出循环
break;
}
}
System.out.println("game over");
}
}