05 流程控制语句


流程控制语句

  • 什么是流程控制语句
    在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。
    也就是说程序的流程对运行结果有直接的影响。所以,我们必须清楚每条语句的执行流程。
    而且,很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能
  • 流程控制语句的分类
    顺序结构
    选择结构
    循环结构

顺序结构语句

  • 顺序结构
    是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。
    总的来说:写在前面的先执行,写在后面的后执行
  • 执行流程:
    从上往下,依次执行。

选择结构语句

  • 概述:也被称为分支结构。
    选择结构有特定的语法规则,代码要执行具体的逻辑运算进行判断,
    逻辑运算的结果有两个,所以产生选择,按照不同的选择执行不同的代码。
  • 选择结构的分类
    if语句
    switch语句

选择结构if语句

  • if语句有几种格式
    格式1
    格式2
    格式3
if语句的格式1
 if(比较表达式或者是boolean类型的值) {
		语句体;
	}
  • 执行流程:
    先计算比较表达式的值,看其返回值是true还是false。
    如果是true,就执行语句体;
    如果是false,就不执行语句体;
  • 比较表达式无论简单还是复杂,结果必须是boolean类型
    if语句控制的语句体如果是一条语句,大括号可以省略;如果是多条语句,就不能省略。建议永远不要省略。
    一般来说:有左大括号就没有分号,有分号就没有左大括号
package org.westos.demo;
public class IFDemo {
    public static void main(String[] args) {
        //选择语句
        // if(结果为布尔类型的表达式,或者是布尔类的值){  要执行的语句体}
        System.out.println("第一行代码执行");
        System.out.println("第二行代码执行");
        int a=3;
        int b=4;
        if(a<b){ //(表达式)括号里面的结果是false {}大括号里面的代码就不执行
            System.out.println("这条语句执行了");
        }
        System.out.println("下面的代码继续执行");
        System.out.println("下面的代码继续执行");
    }
}
if语句的格式2
 if(比较表达式) {
		语句体1;
	}else {
		语句体2;
	}
  • 注意事项:else后面是没有比较表达式的,只有if后面有。
  • 执行流程:
    首先计算比较表达式的值,看其返回值是true还是false。
    如果是true,就执行语句体1;
    如果是false,就执行语句体2;
/* 案例演示:
获取三个数据中的最大值
*/
package org.westos.demo;
import java.util.Scanner;
public class MyDemo {
    public static void main(String[] args) {
              //scanner 对象名
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入第一个整数");
        int num1 = scanner.nextInt();
        System.out.println("请输入第二个整数");
        int num2 = scanner.nextInt();
        System.out.println("请输入第三个整数");
        int num3 = scanner.nextInt();
        //使用if else 求出三个数的最大值
        int max = 0;
        if (num1 > num2) {
            max = num1;
        } else {
            max = num2;
        }
        int max1 = 0;

        if (num3 > max) {
            max1 = num3;
        } else {
            max1 = max;
        }

        System.out.println("最大值是" + max1);
    }
/* 案例演示:
获取三个数据中的最大值
*/
package org.westos.demo;
import java.util.Scanner;
public class MyDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入第一个整数");
        int num1 = scanner.nextInt();
        System.out.println("请输入第二个整数");
        int num2 = scanner.nextInt();
        System.out.println("请输入第三个整数");
        int num3 = scanner.nextInt();

        int max=num1;
        
        if(max<num2){
            max=num2;
        }
        if(max<num3){
            max=num3;
        }
        
        System.out.println("最大值是:"+max);
    }
}
  • if语句的格式2和三元的相互转换问题
    三元运算符((关系表达式) ? 表达式1 : 表达式2 )实现的,都可以采用if语句实现。反之不成立。
    什么时候if语句实现不能用三元改进呢?
    当if语句控制的操作是一个输出语句的时候就不能。
    为什么呢?因为三元运算符是一个运算符,运算符操作完毕就应该有一个结果,而不是一个输出。
if语句格式3
	if(比较表达式1) {
		语句体1;
	}else if(比较表达式2) {
		语句体2;
	}else if(比较表达式3) {
		语句体3;
	}
	...
	else {
		语句体n+1;
	}
  • 执行流程:
    首先计算比较表达式1看其返回值是true还是false,
    如果是true,就执行语句体1,if语句结束。
    如果是false,接着计算比较表达式2看其返回值是true还是false,

    如果是true,就执行语句体2,if语句结束。
    如果是false,接着计算比较表达式3看其返回值是true还是false,

    如果都是false,就执行语句体n+1。

  • 注意事项: 当只要有一个条件满足时,if语句结束。else是可以省略,但是不建议省略。

/* 案例演示:
获取三个数据中的最大值
*/
package org.westos.demo;
import java.util.Scanner;
public class MyDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("请输入第一个整数");
        int num1 = scanner.nextInt();
        System.out.println("请输入第二个整数");
        int num2 = scanner.nextInt();
        System.out.println("请输入第三个整数");
        int num3 = scanner.nextInt();
        
        int max;
        if(num1>num2&&num1>num3){
            max=num1;
        }else if(num2>num1&&num2>num3){
            max = num2;
        }else{
            max=num3;
        }

        System.out.println("最大值是"+max);
    }
}
/* 案例演示:
需求:键盘录入一个成绩,判断并输出成绩的等级。
		90-100 优秀
		80-89  良
		70-79  中
		60-69  及格
		0-59   差
	*/
package org.westos.demo;
import java.util.Scanner;
public class Demo {
    public static void main(String[] args) {
        //多重条件选择
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你的成绩 百分制");
        double socre = scanner.nextDouble();
        //对成绩进行范围的判断
        if (socre < 60 && socre >= 0) {
            System.out.println("成绩不及格");
        } else if (socre >= 60 && socre < 75) {
            System.out.println("差");
        } else if (socre >= 75 && socre < 85) {
            System.out.println("中");
        } else if (socre >= 85 && socre < 95) {
            System.out.println("良好");
        } else if (socre >= 95 && socre < 100) {
            System.out.println("优秀");
        } else if (socre == 100) {
            System.out.println("满分");
        } else {
            System.out.println("成绩不合法");
        }
    }
}
/* 案例演示:
需求:键盘录入x的值,计算出y的并输出。
x>=3,   y = 2x + 1;
-1<=x<3,y = 2x;
x<-1,   y = 2x – 1;
 */
package org.westos.demo;
import java.util.Scanner;
public class Demo {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个整数");
        int x = sc.nextInt();
        double y = 0.0;
        if (x >= 3) {
            y = 2 * x + 1;
        } else if (-1 <= x && x < 3) {
            y = 2 * x;
        } else if (x < -1) {
            y = 2 * x-1;
        }

        System.out.println("y的值是"+y);
    }
}
  • 选择结构if语句的嵌套使用
    if语句的嵌套使用。
    可以三元实现,也可以if嵌套实现。
//需求:获取三个数据中的最大值
package org.westos.demo;
import java.util.Scanner;
public class MyDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("请输入第一个整数");
        int num1 = scanner.nextInt();
        System.out.println("请输入第二个整数");
        int num2 = scanner.nextInt();
        System.out.println("请输入第三个整数");
        int num3 = scanner.nextInt();
        // if 语句的嵌套
        int max;
        
        if(num1>num2){
            if(num1>num3){
                max=num1;
            }else{
                max=num3;
            }
        }else{
            if(num2>num3){
                max=num2;
            }else{
                max=num3;
            }
        }

        System.out.println("最大值是:"+max);
    }
}

选择结构switch语句

switch(表达式){
		case1:
			语句体1;
			break;
		case2:
			语句体2;
			break;
		case3:
			语句体3;
			break;
		....
		default:	
			语句体n+1;
			break;
	}
  • switch语句的格式解释
    (1):switch表示这是switch语句
    表达式的取值:byte,short,int,char
    JDK5以后可以是枚举(什么是枚举,以后再讲)
    JDK7以后可以是String
    (2):case后面跟的是要和表达式进行比较的值
    (3):语句体部分可以是一条或多条语句
    (4):break表示中断,结束的意思,可以结束switch语句
    (5):default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似
  • 面试题
    byte可以作为switch的表达式吗? 可以
    long可以作为switch的表达式吗? 不可以
    String可以作为switch的表达式吗? JDK1.7后可以
  • 执行流程
    先计算表达式的值
    然后和case后面的匹配,如果匹配成功就执行对应的语句,遇到break就会结束,否则执行default控制的语句
  • 选择结构switch语句的注意事项
    a:case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
    b:default可以省略吗?
    可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。
    c:break可以省略吗?
    可以省略,但是结果可能不是我们想要的。
    会出现一个现象:case穿透。
    最终我们建议不要省略
    d:default一定要在最后吗?
    不是,可以在任意位置。但是建议在最后。
    e:switch语句的结束条件
    a:遇到break就结束了
    b:执行到末尾就结束了
package org.westos.demo;
public class SwitchDemo {
    public static void main(String[] args) {
        //switch 语句的语法注意事项
        //switch (num) 小括号里面都支持哪些数据类型:
        // byte short int char    //例如long num的long类型就不支持的
        //JDK1.5之后支持枚举类型
        //JDK1.7之后支持字符串类型  ""

        //case 的值只能是常量
        //多个case项的数据类型要一致
        //break 结束: switch 语句 可以不要,不要会发生一种现象,这种现象叫做case穿透

        //default:项 可以写,也可以不要 位置前后没有关系
        short num = 10;

        switch (num) {
            case 10:
                System.out.println("10这个项匹配上了");
                 break;
            case 20:
                System.out.println("20这个项匹配上了");
                break;
            case 30:
                System.out.println("30这个项匹配上了");
               break;
            case 40:
                System.out.println("40这个项匹配上了");
                break;
            case 50:
                System.out.println("50这个项匹配上了");
                break;
            case 100:
                System.out.println("100这个项匹配上了");
                break;

            default:
                System.out.println("当所有的case项都没有匹配上时,就会执行默认项");
                break;
        }
        System.out.println("下面的程序继续执行");
    }
}
  • 选择结构switch语句练习
    看程序写结果:
package org.westos.demo;
public class SwitchDemo {
public static void main(String[] args) {
      /*  int x = 2;
        int y = 3;
        switch (x) {
            default:
                y++;
                break;
            case 3:
                y++;
            case 4:
                y++;
        }
        System.out.println("y=" + y); //y=4
        */
        int x = 2;
        int y = 3;
        switch (x) {
            default:
                y++;//没有break穿透 所以y++执行三次
            case 3:
                y++;
            case 4:
                y++;
        }
        System.out.println("y=" + y); //y=6
    }
}

选择结构if语句和switch语句的区别

/* 案例演示
	分别用switch语句和if语句实现下列需求:
		键盘录入月份,输出对应的季节
 */
package org.westos.demo;
import java.util.Scanner;
public class SwitchDemo {
    public static void main(String[] args) {
        // 3 4 5 春节  6 7 8 夏季  9 10 11 秋季  12 1 2 冬季
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入月份");
        int month = scanner.nextInt();
      /*  if(month>=3&&month<=5){
            System.out.println("春季");
        }else if(month==7||month==8||month==6){
            System.out.println("夏季");
        }else if(month>=9&&month<=11){
            System.out.println("秋季");
        }else if(month==1 || month == 12||month==2){
            System.out.println("冬季");
        }else{
            System.out.println("输入不合法");
        }
        */
        switch (month) {
            case 3:
            case 4:
            case 5:
                System.out.println("春季");
                break;
            case 6:
            case 7:
            case 8:
                System.out.println("夏季");
                break;
            case 1:
            case 2:
            case 12:
                System.out.println("冬季");
                break;
            case 9:
            case 10:
            case 11:
                System.out.println("秋季");
                break;

            default:
                System.out.println("输入不合法");
                break;
        }
        // if 和 switch 语句的区别
        //switch 一般用于对某些个常量进行选择
        //if 不但可以对常量进行选择,也可以对范围进行选择
    }
}
  • 在做判断的时候,我们有两种选择,if语句和switch语句,那么,我们到底该如何选择使用那种语句呢?
    if语句使用场景:针对结果是boolean类型的判断;针对一个范围的判断; 针对几个常量值的判断.
    switch语句使用场景:针对几个常量值的判断.

循环结构语句

  • 什么是循环结构
    循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,
    需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环
  • 循环结构的分类
    for循环
    while循环

for循环

for(初始化表达式语句;判断条件语句;控制条件语句) {
		循环体语句;
	}
  • 执行流程:
    a:执行初始化表达式语句
    b:执行判断条件语句,看其返回值是true还是false
    如果是true,就继续执行
    如果是false,就结束循环
    c:执行循环体语句;
    d:执行控制条件语句
    e:回到B继续。
  • 注意事项:
    初始化表达式语句只执行一次
package org.westos.demo;
public class ForDemo {
    public static void main(String[] args) {
        //输出十行 helloworld
        //对应重复的代码,我们应该使用循环来改进
        //for 循环
        // int i=0 循环的初始值 从0开始循环
        // i<10 循环的条件 为true 时 循环继续,为false 时循环结束
        //  i++ 控制循环的语句 没循环一次 i自增一下

        //语句的执行流程
        /*
        * 1. 执行 int i=0 给i赋值初始值 ,此语句只执行一次
        * 2. 判断 i<10 如果为true 执行{} 里面的循环体
        * 3. 执行 i++
        * 然后返回2 继续执行  直到 i<10 为false时循环终止
        */
        for(int i=0;i<10;i++){
            System.out.println("helloworld");// 循环体
        }
    }
}
循环结构for语句的练习之获取数据
/* 案例演示
	需求:请在控制台输出数据1-10
	需求:请在控制台输出数据10-1
	*/
package org.westos.demo;
public class ForDemo {
    public static void main(String[] args) {
       // 需求:请控制台输出数据1 - 10
        for(int i=1;i<=10;i++) {
            System.out.println(i);
        }
        System.out.println("------------------------------------");
       // 需求:请在控制台输出数据10 - 1
        for(int i=10;i>=1;i--){
            System.out.println(i);
        }
    }
}
  • 注意事项
    判断条件语句无论简单还是复杂结果是boolean类型。
    循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略。
    一般来说:有左大括号就没有分号,有分号就没有左大括号
循环结构for语句的练习之求和思想
//案例演示:	需求:求出1-10之间数据之和
package org.westos.demo;
public class ForDemo {
    public static void main(String[] args) {
       /* A:
        案例演示:
        需求:求出1 - 10 之间数据之和*/
        // int sum=1+2+3+4+5+6+7+8+9+10;
        //定义一个变量。来接收结果
        int sum = 0;
        for (int i = 1; i <= 10; i++) {
            sum = sum + i; //sum+=i;
        }
        System.out.println("和是" + sum);
    }
}
/* 案例演示:
	需求:求出1-100之间偶数和
	需求:求出1-100之间奇数和
   */
package org.westos.demo;
public class ForDemo {
    public static void main(String[] args) {
       // 需求:求出1 - 100 之间偶数和
      //  需求:求出1 - 100 之间奇数和
        int ou=0;
        int ji=0;
        for(int i=1;i<=100;i++){
            if(i%2==0){
                ou+=i;
            }else{
                ji+=i;
            }
        }
        System.out.println("奇数和是"+ji);
        System.out.println("偶数和是" + ou);
    }
}
循环结构for语句的练习之水仙花及统计思想
/* 案例演示
	需求:在控制台输出所有的”水仙花数”
所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。
举例:153就是一个水仙花数。
153 = 1*1*1 + 5*5*5 + 3*3*3 = 1 + 125 + 27 = 153
 */
// 需求:统计”水仙花数”共有多少个
package org.westos.demo;
public class ForDemo {
    public static void main(String[] args) {
        //分析:1.确定循环的范围  100----999
        // 2. 100 你要获取这个数的每一个位上的数字
        // 获取到每个位上的数字 后,然后把每个位上数字的立方 相加 看等不等于这个数,如果相等就是水仙花数
       /* int num=153;
        //取个位上的3
       int ge= num/1%10;
       int shi=num/10%10;
       int bai=num/100%10;
        System.out.println(ge);
        System.out.println(shi);
        System.out.println(bai);*/
        // 定义一个统计变量
        int count=0;
        for (int i = 100; i <= 999; i++) {
            int ge = i / 1 % 10;
            int shi = i / 10 % 10;
            int bai = i / 100 % 10;
            int flowerNumber=ge*ge*ge+shi*shi*shi+bai*bai*bai;
            if(flowerNumber==i){
                System.out.println("水仙花数是: "+i);
                count++;
            }
        }
        System.out.println("水仙花数有"+count+"个");
    }
}

while循环

while语句
		while(判断条件语句) {
			循环体语句;
		}
		
	//完整格式
	    初始化条件语句;
	    while(判断条件语句) {
			 循环体语句;
			 控制条件语句;
	   }
  • 执行流程:
    a:执行初始化条件语句;
    b:执行判断条件语句,看其返回值是true还是false
    如果是true,就继续执行
    如果是false,就结束循环
    c:执行循环体语句;
    d:执行控制条件语句
    e:回到b继续。
/* 案例演示
	需求:在控制台输出10次"helloworld"
	需求:请在控制台输出数据1-10
	*/
package org.westos.demo;
public class WhileDemo {
    public static void main(String[] args) {
        int i=1; //循环的初始值
        while (i<=10){ //条件为true 循环继续,为false 循环结束
            System.out.println("helloworld");
            i++; //控制循环的语句不要忘了
        }
        System.out.println("----------------------------");
        int j=1;
        while (j<=10){
            System.out.println(j);
            j++;
        }
    }
}
/* 循环结构while语句的练习
统计思想:	统计”水仙花数”共有多少个
  */
package org.westos.demo;
public class WhileDemo {
    public static void main(String[] args) {
        int h=100;
        int count = 0;
        while (h<1000){
            int ge = h / 1 % 10;
            int shi = h / 10 % 10;
            int bai = h / 100 % 10;
            int flowerNumber = ge * ge * ge + shi * shi * shi + bai * bai * bai;
            if (flowerNumber == h) {
                System.out.println("水仙花数是: " + h);
                count++;
            }
            h++;
        }
        System.out.println("水仙花数有" + count + "个");
    }
}
do…while语句
	do {
		循环体语句;
	}while(判断条件语句);
	
//完整格式
		初始化条件语句;
		do {
			循环体语句;
			控制条件语句;
		}while(判断条件语句);
  • 执行流程:
    a:执行初始化条件语句;
    b:执行循环体语句;
    c:执行控制条件语句;
    d:执行判断条件语句,看其返回值是true还是false
    如果是true,就继续执行
    如果是false,就结束循环
    e:回到b继续。
package org.westos.demo;
public class WhileDemo {
    public static void main(String[] args) {
        //先执行do里面的代码一次,后去判断循环条件是否成立,如果成立,继续循环,不成立循环终止
        int i=1;
        do{
            System.out.println("先执行一次");
            i++;
        }while (i<=10);
    }
}

其他

循环结构三种循环语句的区别
  • do…while循环至少执行一次循环体。
    而for,while循环必须先判断条件是否成立,然后决定是否执行循环体语句。
  • :如果你想在循环结束后,继续使用控制条件的那个变量,用while循环,否则用for循环。不知道用for循环。
    因为变量及早的从内存中消失,可以提高内存的使用效率。
    建议优先考虑for循环,然后是while循环 ,最后是do…while循环
    // for     while      do while
    //如果你知道了循环次数,一般选用 for循环
    //如果你不知道要循环多少次一般选用while循环 但是你要知道循环的结束条件
    //do while先执行一次,后判断条件
循环结构注意事项之死循环
  • 一定要注意控制条件语句控制的那个变量的问题,不要弄丢了,否则就容易死循环。
  • 两种最简单的死循环格式
    while ( true ){…}
    for (;;){…}
package org.westos.demo;
public class ForDemo {
    public static void main(String[] args) {
        //死循环   //无法结束的循环
    /*    for(;;){  //for的死循环
            System.out.println("死循环");
            int i=0; //会报错 是一行废代码  前面是死循环 不会执行这行代码
        }
*/
        int i = 1;
        while (true) {   //while的死循环   //while (true)这个条件永远是true就一直执行 死循环
            System.out.println(i);
            i++;
            if (i > 10) {
                break;   //加个条件 把while的死循环终止掉
            }
        }
    }
}
循环结构循环嵌套输出4行5列的星星
  • 案例演示
    需求:请输出一个4行5列的星星(*)图案。
    如图:
    *****
    *****
    *****
    *****
    注意:
    System.out.println(" “);和System.out.print(” ");的区别
    System.out.print输出结果不换行;System.out.println 输出结果换行
package org.westos.demo;
public class ForDemo {
    public static void main(String[] args) {
     /*
        for (int i = 0; i < 4; i++) {
            System.out.println("*****");
        }
*/
        for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 5; j++) {
                System.out.print("*");       //print打印不换行   //println打印并换行
            }
            System.out.println(); //()里面什么都不输出 //这行语句仅仅只输出一个换行符
        }
       //另一种换行方法 在里面加一个for循环 
          for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 5; j++) {
                System.out.print("*");       //print打印不换行   //println打印并换行
                if(j==4){      //  换行方法
                    System.out.println();
                }
            }   
         }        
    }
}
      //   结论:外循环控制行数,内循环控制列数
循环结构循环嵌套输出正三角形

案例演示
需求:请输出下列的形状
*
**
***
****
*****

package org.westos.demo;
public class ForDemo {
    public static void main(String[] args) {
        for (int i = 1; i <= 5; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print("*");
            }
            System.out.println(); //仅仅只输出一个换行符
        }
    }
}
  • 代码优化
    注意:
    ‘\x’ x表示任意,这种做法叫转义字符。
    ‘\t’ tab键的位置
    ‘\n’ 换行
 //转义字符
      System.out.print("aaaaaaaaaaaaaaa\n"); // \n 换行符
      System.out.print("bbbb\tbbbbbbbbbbbbbb"); // \t 空一个table
循环结构九九乘法表
  • 案例演示
    需求:在控制台输出九九乘法表。
package org.westos.demo;
public class ForDemo {
    public static void main(String[] args) {
        //  (把前面学的 输出三角形星星 代码中 System.out.print("*")中的 * 换成 表达式)
        /*
        *   1*1=1
        *   1*2=2 2*2=4
        *   1*3=3 2*3=6 3*3=9
        *   1*4=4 2*4=8 3*4=12 4*4=16 
        * */
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <=i; j++) {   //每循环一次增加一列 所以j <=i
                System.out.print(j+"*"+i+"="+(j*i)+"\t\t"); // j*i每一行的i不变 内循环j自加
            }
            System.out.println();
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值