• Java零基础(从0到1)---》控制语句


    目录

    🏀1.分类

    🥅怎么接收用户键盘输入

    🥅控制语句分类

    🏀2.语句详解

    🥏选择语句if、switch

    🥅 if语句

    🥅 switch语句

    🥏循环语句while、do...while、for

    🥅 for循环

    🥅 while循环

    🥅 do...while循环

    🥏转向语句:break、continue

    🥅 break语句

    🥅 continue语句

    🏀3.小试牛刀


    ❤️知识大纲

    🏀1.分类

    🥅怎么接收用户键盘输入

    ❤️java.util.Scanner s = new java.util.Scanner(System.in);
        ⭐️接收整数: int i = s.nextInt()
        ⭐️接收字符串:String str = s.next();

    ❤️或者把第一句话分为两个步骤:

       ⭐️import java.util.Scanner;

       ⭐️Scanner s = new Scanner(System.in)

    🥅控制语句分类

    ❤️控制语句的可以让我们的程序具有逻辑性/条理性,可以使用控制语句来实现一个“业务”。

    ❤️控制语句包括3类:选择语句、循环语句、转向语句
       ⭐️选择语句(分支语句): if语句、switch语句;
       ⭐️循环语句: for循环、while循环、do..while..循环;
       ⭐️转向语句: break、continue、return(后面讲);

    🏀2.语句详解

    🥏选择语句if、switch

    选择语句主要包括两种:if和switch!

    🥅 if语句

    if语句是分支语句,也可以叫做条件语句。if语句的语法格式:
      ❤️第一种写法:

    1.  if(布尔表达式){
    2.                     java语句;
    3.                     java语句;
    4.                 }

          ⭐️这里的一个大括号{} 叫做一个分支。
          ⭐️该语法的执行原理是:如果布尔表达式的结果是true,则执行大括号中的程序,否则大括号中代码不执行。

      ❤️第二种写法:     

    1.  if(布尔表达式){  // 分支1
    2.                     java语句;     
    3.                 }else{  // 分支2
    4.                     java语句;
    5.                 }

       ⭐️执行原理:如果布尔表达式的结果是true,则执行分支1,分支2不执行。如果布尔表达式的结果是false,分支1不执行,执行分支2。

     ❤️第三种写法:    

    1.  if(布尔表达式1){ // 分支1
    2.                     java语句;
    3.                 }else if(布尔表达式2){ // 分支2
    4.                     java语句;
    5.                 }else if(布尔表达式3){ // 分支3
    6.                     java语句;
    7.                 }else if(布尔表达式4){ // 分支4...
    8.                     java语句;
    9.                 }....

         ⭐️执行原理:先判断“布尔表达式1”,如果“布尔表达式1”为true,则执行分支1,然后if语句结束了。
         ⭐️当“布尔表达式1”结果是false,那么会继续判断布尔表达式2的结果, 如果布尔表达式2的结果是true,则执行分支2,然后整个if就结束了。
         ⭐️ 从上往下依次判断,主要看第一个true发生在哪个分支上。第一个true对应的分支执行,只要一个分支执行,整个if结束。

    ❤️第四种写法:          

    1.  if(布尔表达式1){ // 分支1
    2.                     java语句;
    3.                 }else if(布尔表达式2){ // 分支2
    4.                     java语句;
    5.                 }else if(布尔表达式3){// 分支3
    6.                     java语句;
    7.                 }else if(布尔表达式4){// 分支4
    8.                     java语句;
    9.                 }else{
    10.                     java语句; // 以上条件没有一个成立的。这个else就执行了。
    11.                 }

    注意事项

    ⭐️对于if语句的条件只能是布尔表达式,true和false!不能是具体的数字和变量这一点是和C语言严格区分的;
    ⭐️对于if语句来说,在任何情况下只能有1个分支执行,不可能存在2个或者更多个分支执行。if语句中只要有1个分支执行了,整个if语句就结束了。(对于1个完整的if语句来说的);
    ⭐️以上4种语法机制中,凡是带有else分支的,一定可以保证会有一个分支执行。以上4种当中,第一种和第三种没有else分支,这样的语句可能会导致最后一个分支都不执行。第二种和第四种肯定会有1个分支执行;
    ⭐️当分支当中“java语句;”只有1条,那么大括号{}可以省略,但为了可读性,最好不要省略。
    ⭐️控制语句和控制语句之间是可以嵌套的,但是嵌套的时候大家最好一个语句一个语句进行分析,不要冗杂在一起分析。                

    实例分析 

    ❤️例1

    ⭐️对于变量本身就是布尔类型,我们的方式有多中;因为本身类型就是布尔型,只要合乎语法和逻辑就可以!比如:sex、sex == true、或者写成三目运算符!

    1. public class Test01{
    2. public static void main(String[] args){
    3. //1.本身就是布尔类型
    4. boolean sex = true;
    5. if(sex){//sex == true也可以
    6. System.out.println('男');
    7. }
    8. else{
    9. System.out.println('女');
    10. }
    11. //2.也可以用三目运算符
    12. char str = sex?'男':'女';
    13. System.out.println(str);
    14. //3.一种特殊情况
    15. if(sex = true){//赋值运算符,也可以编译通过,永远只执行if语句
    16. System.out.println('男');
    17. }
    18. else{
    19. System.out.println('女');
    20. }
    21. }
    22. }

    ❤️例2

    ⭐️对于变量是整型,我们的方式就很少了,因为if后面跟的必须是布尔表达式;所以要写成一个表达式,让它生成一个布尔类型,例如:i == 100;

    ⭐️如果if...else后面只跟着一条语句,大括号可以省略;如果省略写了两个java语句也是没问题的;但是就会和下面的else断开,造成else没有if语句,编译报错;

    1. //1.本身不是布尔类型
    2. int i = 100;
    3. if(i == 100){
    4. System.out.println(true);
    5. }
    6. else{
    7. System.out.println(false);
    8. }
    9. //2.else缺少if
    10. if(sex)
    11. System.out.println('男');
    12. System.out.println("Hello wprld");//合乎语法的
    13. else //这一行报错,因为else缺少if
    14. System.out.println('女');
    15. //上面等价于
    16. if(sex){
    17. System.out.println('男');
    18. }
    19. System.out.println("Hello wprld");
    20. else
    21. System.out.println('女');

    ❤️例3

    1. public class Test02{
    2. public static void main(String[] args){
    3. //从键盘接收数据
    4. System.out.print("请输入你的年龄:");
    5. java.util.Scanner s = new java.util.Scanner(System.in);
    6. int age = s.nextInt();
    7. //1.方法1
    8. if(age<0 || age >150){
    9. System.out.println("年龄不合法");
    10. }else if(age <= 5){
    11. System.out.println("婴幼儿");
    12. }else if(age <= 10){
    13. System.out.println("少儿");
    14. }else if(age <= 18){
    15. System.out.println("少年");
    16. }else if(age <= 35){
    17. System.out.println("青年");
    18. }else if(age <= 55){
    19. System.out.println("中年");
    20. }else{
    21. System.out.println("老年");
    22. }
    23. //2.方法2代码改良
    24. String str = "老年";
    25. if(age<0 || age >150){
    26. System.out.println("年龄不合法");
    27. return;//不合理就跳出循环,防止后面在打印
    28. }else if(age <= 5){
    29. str = "婴幼儿";
    30. }else if(age <= 10){
    31. str = "少儿";
    32. }else if(age <= 18){
    33. str = "少年";
    34. }else if(age <= 35){
    35. str = "青年";
    36. }else if(age <= 55){
    37. str = "中年";
    38. }
    39. System.out.println(str);//最后公用一个打印;因为每次只能打印一个
    40. }
    41. }

    ❤️例4
       ⭐️系统接收一个学生的考试成绩,根据考试成绩输出成绩的等级。

       ⭐️等级:优:[90~100]、良:[80~90) 、中:[70-80)、及格:[60~70)、不及格:[0-60)

       ⭐️要求成绩是一个合法的数字,成绩必须在[0-100]之间,成绩可能带有小数。

    1. public class Test03{
    2. public static void main(String[] args){
    3. java.util.Scanner s = new java.util.Scanner(System.in);
    4. System.out.print("请输入你的成绩:");
    5. double grade = s.nextDouble();
    6. String str = "优";
    7. if(grade <0 || grade >100){
    8. System.out.println("分数不合法");
    9. return; //不合理就跳出循环,防止后面在打印
    10. }else if(grade<60){
    11. str = "不及格";
    12. }else if(grade < 70){
    13. str = "及格";
    14. }else if(grade < 80){
    15. str = "中";
    16. }else if(grade < 90){
    17. str = "良";
    18. }
    19. System.out.println(str);//最后公用一个打印;因为每次只能打印一个
    20. }
    21. }

    ❤️例5

    ⭐️从键盘上接收天气的信息:1表示:雨天
                                                     0表示:晴天
    ⭐️同时从键盘上接收性别的信息:1表示:男
                                                             0表示:女
    ⭐️业务要求:
                    当天气是雨天的时候:男的:打一把大黑伞
                                                        女的:打一把小花伞
                    当天气是晴天的时候:男的:直接走起,出去玩耍
                                                        女的:擦点防晒霜,出去玩耍

    1. public class Test04{
    2. public static void main(String[] args){
    3. java.util.Scanner s = new java.util.Scanner(System.in);
    4. System.out.print("请输入天气,1表示雨天,0表示晴天:");
    5. int weather = s.nextInt();
    6. System.out.print("请输入性别,1表示男,0表示女:");
    7. int sex = s.nextInt();
    8. if(weather == 1){
    9. if(sex == 1){
    10. System.out.println("打一把大黑伞");
    11. }else{
    12. System.out.println("打一把小花伞");
    13. }
    14. }else{
    15. if(sex == 1){
    16. System.out.println("直接走起,出去玩耍");
    17. }else{
    18. System.out.println("擦点防晒霜,出去玩耍");
    19. }
    20. }
    21. }
    22. }

    🥅 switch语句

    ❤️switch语句也是选择语句,也可以叫做分支语句。
    ❤️switch语句的语法格式:          

    1.  switch(值){
    2.             case1:
    3.                 java语句;
    4.                 java语句;...
    5.                 break;
    6.             case2:
    7.                 java语句;
    8.                 java语句;...
    9.                 break;
    10.             case3:
    11.                 java语句;
    12.                 java语句;...
    13.                 break;
    14.             default:
    15.                 java语句;
    16.             }

           ⭐️其中:break语句不是必须的;default分支也不是必须的。
           ⭐️switch语句支持的值有:支持int类型以及String类型
           ⭐️一定要注意JDK的版本,JDK8之前不支持String类型,只支持int。在JDK8之后,switch语句开始支持字符串String类型。
           ⭐️switch语句本质上是只支持int和String,但是byte,short,char也可以
                使用在switch语句当中,因为byte short char可以进行自动类型转换。

    ❤️switch语句的执行原理
           ⭐️拿“值”与“值1”进行比较,如果相同,则执行该分支中的java语句,然后遇到"break;"语句,switch语句就结束了。
           ⭐️如果“值”与“值1”不相等,会继续拿“值”与“值2”进行比较,如果相同,则执行该分支中的java语句,然后遇到break;语句,switch结束。
           ⭐️注意:如果分支执行了,但是分支最后没有“break;”,此时会发生case 穿透现象。所有的case都没有匹配成功,那么最后default分支会执行。

    实例分析 

    ❤️例1

    ⭐️写一个完整的switch语句;接收键盘输入,根据输入的数字来判断星期几。
    ⭐️0 星期日、1 星期一....、假设输入的数字就是正确的。0到6

    1. public class Test05{
    2. public static void main(String[] args){
    3. java.util.Scanner s = new java.util.Scanner(System.in);
    4. System.out.print("请输入[0-6]的天数:");
    5. int day = s.nextInt();
    6. switch(day){
    7. case 0:
    8. System.out.println("星期日");
    9. break;
    10. case 1:
    11. System.out.println("星期一");
    12. break;
    13. case 2:
    14. System.out.println("星期二");
    15. break;
    16. case 3:
    17. System.out.println("星期三");
    18. break;
    19. case 4:
    20. System.out.println("星期四");
    21. break;
    22. case 5:
    23. System.out.println("星期五");
    24. break;
    25. case 6:
    26. System.out.println("星期六");
    27. break;
    28. default:
    29. System.out.println("选择错误");
    30. break;
    31. }
    32. }
    33. }

    ❤️例2
       ⭐️系统接收一个学生的考试成绩,根据考试成绩输出成绩的等级。必须用switch来写

       ⭐️等级:优:[90~100]、良:[80~90) 、中:[70-80)、及格:[60~70)、不及格:[0-60)

       ⭐️要求成绩是一个合法的数字,成绩必须在[0-100]之间,成绩可能带有小数。

    1. public class SwitchTest02{
    2. public static void main(String[] args){
    3. //提示用户输入学生成绩
    4. java.util.Scanner s = new java.util.Scanner(System.in);
    5. System.out.print("请输入学生成绩:");
    6. double score = s.nextDouble();
    7. //System.out.println(score);
    8. if(score < 0 || score > 100){
    9. System.out.println("您输入的学生成绩不合法,再见!");
    10. return;
    11. }
    12. // 程序能够执行到这里说明成绩一定是合法的。
    13. // grade的值可能是:0 1 2 3 4 5 6 7 8 9 10
    14. // 0 1 2 3 4 5 不及格
    15. // 6 及格
    16. // 7 中
    17. // 8 良
    18. // 9 10 优
    19. int grade = (int)(score / 10); // 95.5/10结果9.55,强转为int结果是9
    20. String str = "不及格";
    21. switch(grade){
    22. case 10: case 9:
    23. str = "优";
    24. break;
    25. case 8:
    26. str = "良";
    27. break;
    28. case 7:
    29. str = "中";
    30. break;
    31. case 6:
    32. str = "及格";
    33. }
    34. System.out.println("该学生的成绩等级为:" + str);
    35. }
    36. }

    🥏循环语句while、do...while、for

    🥅 for循环

    ❤️for循环的语法机制以及运行原理


           ⭐️语法机制:   

    1.  for(初始化表达式; 条件表达式; 更新表达式){
    2.                 循环体; // 循环体由java语句构成
    3.                 java语句;
    4.                 java语句;
    5.                 java语句;
    6.                 java语句;
    7.                 ....
    8.             }

          ⭐️注意:
                    第一:初始化表达式最先执行,并且在整个循环中只执行一次。
                    第二:条件表达式结果必须是一个布尔类型,也就是:true或false
         ⭐️执行原理:
               (1)先执行初始化表达式,并且初始化表达式只执行1次。
               (2)然后判断条件表达式的结果,如果条件表达式结果为true,则执行循环体。
               (3)循环体结束之后,执行更新表达式。
               (4)更新完之后,再判断条件表达式的结果,如果还是true,继续执行循环体。
               (5)直到更新表达式执行结束之后,再次判断条件时,条件为false,for循环终止。       ⭐️更新表达式的作用是:控制循环的次数,换句话说,更新表达式会更新某个变量的值,这样条件表达式的结果才有可能从true变成false,从而 终止for循环的执行,如果缺失更新表达式,很有可能会导致死循环。

     ❤️例1

    1. public class ForTest02{
    2. public static void main(String[] args){
    3. //1. 最简练的for循环
    4. //初始化表达式、条件表达式、更新表达式 其实都不是必须的!!!
    5. for(;;){
    6. System.out.println("死循环");
    7. }
    8. //2.最常见的for循环
    9. for(int i = 0;i < 10;i++){
    10. System.out.println("i = " + i); // 0 1 2 3....9
    11. }
    12. System.out.println(i);//错误: 找不到符号,i的范围只在for循环内
    13. //3.i变量的作用域就扩大了。
    14. int i = 0;
    15. for(;i < 10;i++){
    16. System.out.println("i --> " + i); // 0 1 2 3....9
    17. }
    18. System.out.println("i = " + i); //10,这里的i就可以访问了
    19. //4.变形
    20. for(int k = 1; k <= 10; ){
    21. System.out.println("k --> " + k);
    22. k++;// 1 2 3 4 5 6 7 8 9 10
    23. }
    24. //5.变形
    25. for(int k = 1; k <= 10; ){
    26. k++;
    27. System.out.println("value --> " + k); // 2 3 4 5 6 7 8 9 10 11
    28. }
    29. }
    30. }

    ❤️例2

    1. public class ForTest03{
    2. public static void main(String[] args){
    3. //1. for的其它形式
    4. for(int i = 10; i > 0; i--){
    5. System.out.println("i = " + i); // 10 9 8 7 6 5 4 3 2 1
    6. }
    7. //2. 变形
    8. for(int i = 0; i < 10; i += 2){
    9. System.out.println("value1 = " + i); // 0 2 4 6 8
    10. }
    11. //3. 死循环
    12. for(int i = 100; i > 0; i %= 3){
    13. System.out.println("value2 = " + i); // 100 1 1... 1
    14. }
    15. }
    16. }

    ❤️例3:求1-100所得奇数和

    1. public class Test07{
    2. public static void main(String[] args){
    3. int i = 0;
    4. int sum = 0;
    5. for(i=1;i<=100;i+=2){
    6. sum+=i;
    7. }
    8. System.out.println("sum = "+sum);//2500
    9. }
    10. }

    ❤️例4:嵌套循环

    1. public class Test08{
    2. public static void main(String[] args){
    3. //1.注意初始化放里面
    4. for(int i =0;i< 2;i++){
    5. for(int j=0;j<10;j++){
    6. System.out.print(j+" ");
    7. }
    8. System.out.println();
    9. }//打印两行0-9的数字
    10. //2.初始化放外面
    11. int n = 0;
    12. for(int m = 0;m<2;m++){
    13. for(;n<10;n++){
    14. System.out.print(n+" ");
    15. }
    16. System.out.println();
    17. }//打印一行0-9的数字
    18. }
    19. }

     ❤️例5:九九乘法表

    1. public class Test09{
    2. public static void main(String[] args){
    3. for(int i=1;i<=9;i++){
    4. for(int j=1;j<=i;j++){
    5. System.out.print(j+"*"+i + "=" +i*j+" ");
    6. }
    7. System.out.println();
    8. }
    9. }
    10. }

    🥅 while循环

    ❤️while循环的语法机制以及执行原理
         ⭐️语法机制:         

    1.  while(布尔表达式){
    2.                     循环体;
    3.                 }

        ⭐️执行原理:
             判断布尔表达式的结果,如果为true就执行循环体,循环体结束之后,再次判断布尔表达式的结果,如果还是true,继续执行循环体,直到布尔表达式结果为false,while循环结束。

        ⭐️while循环有没有可能循环次数为0次?
              可能;while循环的循环次数是:0~n次

    ❤️例1

    1. public class WhileTest01{
    2. public static void main(String[] args){
    3. //1.死循环
    4. while(true){
    5. System.out.println("死循环");
    6. }
    7. //2.本质上while循环和for循环原理是相同的。
    8. for(初始化表达式; 布尔表达式; 更新表达式){
    9. 循环体;
    10. }
    11. 初始化表达式;
    12. while(布尔表达式){
    13. 循环体;
    14. 更新表达式;
    15. }
    16. //3.例子对比
    17. //----for
    18. for(int i = 0; i < 10; i++){
    19. System.out.println("i --->" + i);
    20. }
    21. //----while
    22. int i = 0;
    23. while(i < 10){
    24. System.out.println("i = " + i);
    25. i++;
    26. }
    27. //4.for和while完全可以互换,只不过就是语法格式不一样。
    28. for(int i = 0; i < 10; ){
    29. i++;
    30. System.out.println("i --->" + i); // 1 2 3 .. 9 10
    31. }
    32. int i = 0;
    33. while(i < 10){
    34. i++;
    35. System.out.println("i = " + i); // 1 2 3 .. 9 10
    36. }
    37. }
    38. }

    🥅 do...while循环

    ❤️do..while循环语句的执行原理以及语法机制:
        ⭐️语法机制:    

    1. do {
    2.                 循环体;
    3.             }while(布尔表达式);

       ⭐️注意:do..while循环最后的时候别漏掉“分号”;

       ⭐️执行原理:
             先执行循环体当中的代码,执行一次循环体之后,判断布尔表达式的结果,如果为true,则继续执行循环体,如果为false循环结束。
       ⭐️对于do..while循环来说,循环体至少执行1次。循环体的执行次数是:1~n次
            对于while循环来说,循环体执行次数是:0~n次

    ❤️例1

    1. public class Test10{
    2. public static void main(String[] args){
    3. int i = 0;
    4. //1.
    5. do{
    6. //第一种方法
    7. System.out.println(i);
    8. i++;
    9. //第二种方法
    10. System.out.println(i++);
    11. }while(i<10);//0...9
    12. //2.
    13. i = 0;
    14. do{
    15. System.out.println(++i);
    16. }while(i<10);//1...10
    17. }
    18. }

    🥏转向语句:break、continue

    🥅 break语句

    ❤️break;语句比较特殊,特殊在:break语句是一个单词成为一个完整的java语句。
          ⭐️break的作用:终止当前循环,直接跳出循环;

    ❤️break主要用在两个地方,其它位置不行:
          ⭐️第一个位置:switch语句当中,用来终止switch语句的执行。用在switch语句当中,防止case穿透现象,用来终止switch。
          ⭐️第二个位置:break;语句用在循环语句当中,用在for当中、用在while当中、用在do....while当中;用来终止循环的执行。

    ❤️break;语句的执行并不会让整个方法结束,break;语句主要是用来终止离它最近的那个循环语句。

    ❤️怎么用break;语句终止指定的循环呢?
         ⭐️第一步:你需要给循环起一个名字,例如:

    1.   a: for(){
    2.                     b:for(){
    3.                     
    4.                     }
    5.                 }

        ⭐️第二步:终止:break a;

    ❤️例1

    1. public class BreakTest01{
    2. public static void main(String[] args){
    3. for(int i = 0; i < 10; i++){
    4. if(i == 5){
    5. //1.break;语句会让离它最近的循环终止结束掉。终止的不是if,不是针对if的,而是针对离它最近的循环。
    6. break;
    7. }
    8. System.out.println("i = " + i); // 0 1 2 3 4
    9. }
    10. //2.这里的代码照常执行。break;的执行并不会影响这里。
    11. System.out.println("Hello World!");
    12. //3.常用的终止内存的for
    13. for(int k = 0; k < 2; k++){ // 外层for
    14. for(int i = 0; i < 10; i++){ // 内层for
    15. if(i == 5){
    16. break; //这个break;语句只能终止离它最近的for,内层的for
    17. }
    18. System.out.println("i ===> " + i);
    19. }
    20. }
    21. System.out.println("------------------------------------------");
    22. //4.终止外层的for,起一个别名!
    23. a:for(int k = 0; k < 2; k++){
    24. b:for(int i = 0; i < 10; i++){
    25. if(i == 5){
    26. break a; //终止指定的循环。
    27. }
    28. System.out.println("i ===> " + i);
    29. }
    30. }
    31. System.out.println("呵呵");
    32. }
    33. }

    🥅 continue语句

    ❤️continue翻译为:继续;continue语句和break语句要对比着学习;
    ❤️continue语句的作用是:终止当前"本次"循环,直接进入下一次循环继续执行。
    ❤️continue语句后面也可以指定循环;

    1.  a:for(;;更新表达式1){
    2.                 b:for(;;更新表达式2){
    3.                     if(){
    4.                         continue a;
    5.                     }
    6.                     code1;
    7.                     code2;
    8.                     code3;
    9.                 }
    10.             }

    ❤️例1

    1. public class ContinueTest01{
    2. public static void main(String[] args){
    3. //1.对于break直接跳出当前循环
    4. for(int i = 0; i < 10; i++){
    5. if(i == 5){
    6. break;
    7. }
    8. System.out.println("i = " + i);//0、1、2、3、4
    9. }
    10. System.out.println("----------------------------");
    11. //2.对于continue是跳出当前的一次循环,继续下一次循环
    12. for(int i = 0; i < 10; i++){
    13. if(i == 5){
    14. continue;
    15. }
    16. System.out.println("i = " + i); //输出结果是0-9没有5
    17. }
    18. }
    19. }

    🏀3.小试牛刀

    ❤️例1:计算1000以内所有不能被7整除的整数之和

    1. public class Test01{
    2. public static void main(String[] args){
    3. int sum = 0;
    4. for(int i = 1;i<=1000;i++){
    5. if(i%7 != 0){
    6. sum +=i;
    7. }
    8. }
    9. System.out.println("sum="+sum);
    10. }
    11. }

    ❤️例2:计算 1+2-3+4-5+6-7....+100的结果

    ⭐️注意除1以外,偶数是正,奇数是负;所以我们就从2开始循环,把sum初始化为1就可

    1. //方法1:
    2. public class Test02{
    3. public static void main(String[] args){
    4. int sum = 1;
    5. for(int i=2;i<=100;i++){
    6. if(i%2 ==0){
    7. sum+=i;
    8. }
    9. else{
    10. sum-=i;
    11. }
    12. }
    13. System.out.println(sum);
    14. }
    15. }
    1. //方法2:定义一个flag标记,用来控制正负,一个数一个数进行处理
    2. public class Test02{
    3. public static void main(String[] args){
    4. int sum = 1;
    5. int flag = 1;
    6. for(int i=2;i<=100;i++){
    7. sum +=flag*i;
    8. flag = -flag;
    9. }
    10. System.out.println(sum);
    11. }
    12. }

    ❤️例3:从控制台输入一个正整数,计算该数的阶乘。

    1. public class Test03{
    2. public static void main(String[] args){
    3. java.util.Scanner s = new java.util.Scanner(System.in);
    4. System.out.print("请输入一个整数:");
    5. int num = s.nextInt();
    6. int ret = 1;
    7. //方法1
    8. for(int i=1;i<=num;i++){
    9. ret*=i;
    10. }
    11. //方法2
    12. for(int i = num;i>0;i--){
    13. ret*=i;
    14. }
    15. System.out.println(ret);
    16. }
    17. }

    ❤️例4:判断一个数是不是质数

    1. //方法1:
    2. public class Test04{
    3. public static void main(String[] args){
    4. java.util.Scanner s = new java.util.Scanner(System.in);
    5. int num = s.nextInt();
    6. int i = 0;
    7. for(i = 2;i<num;i++){
    8. if(num%i == 0){
    9. System.out.println(num+"不是质数");
    10. break;
    11. }
    12. }
    13. if(i == num){
    14. System.out.println(num+"是质数");
    15. }
    16. }
    1. //方法2:
    2. public class Test04{
    3. public static void main(String[] args){
    4. java.util.Scanner s = new java.util.Scanner(System.in);
    5. int num = s.nextInt();
    6. int i = 0;
    7. boolean str = true;//也相当于一个标记
    8. for(i = 2;i<num;i++){
    9. if(num%i == 0){
    10. str = false;//不是更改标记
    11. break;
    12. }
    13. }
    14. System.out.println(num+(str ? "是":"不是")+"质数");//根据标记输出值
    15. }
    16. }

    ❤️例5:打印金字塔

    1. *
    2. ***
    3. *****
    4. *******
    5. *********
    1. public class Test05{
    2. public static void main(String[] args){
    3. java.util.Scanner s = new java.util.Scanner(System.in);
    4. int n = s.nextInt();
    5. for(int i=0;i<n;i++){
    6. for(int j=0;j<n-i-1;j++){
    7. System.out.print(" ");
    8. }
    9. for(int j=0;j<2*i+1;j++){
    10. System.out.print("*");
    11. }
    12. System.out.println();
    13. }
    14. }
    15. }

    ❤️例6:

    小芳的妈妈每天给她2.5元钱,她都会存起来,但是,每当这一天是存钱的第5天
    或者5的倍数的话,她都会花去6元钱,请问,经过多少天,小芳才可以存到100元钱!

    1. public class Test06{
    2. public static void main(String[] args){
    3. double money = 0;
    4. int day = 0;
    5. while(true){//这也可以写成while(money<100),这样就不需要break了
    6. money += 2.5;
    7. day++;
    8. if(day%5 == 0){
    9. money -= 6;
    10. }
    11. if(money >= 100){
    12. break;
    13. }
    14. }
    15. System.out.println("需要"+day+"天存到"+money+"元钱");
    16. }
    17. }

     ❤️例7:

    一个数如果恰好等于它的因子之和,这个数就是完数,例如 6 = 1 + 2 + 3,编程
    找出1000内所有的完数。

    1. public class Test07{
    2. public static void main(String[] args){
    3. for(int i=2;i<=1000;i++){//1不算完数,从2开始
    4. //注意sum的位置,写在内循环,因为每次都要重置sum为0
    5. int sum = 0;
    6. //i取一半,最好的是取根号i,目前还没学习库函数,先取i/2
    7. for(int j=1;j<= i/2;j++){
    8. if(i%j == 0){
    9. sum += j;
    10. }
    11. }
    12. if(sum == i){
    13. System.out.println(i);
    14. }
    15. }
    16. }
    17. }

     ❤️例8:求一个数是几位数,并逆序打印每一位

    1. public class Test08{
    2. public static void main(String[] args){
    3. java.util.Scanner s = new java.util.Scanner(System.in);
    4. int num = s.nextInt();
    5. int count = 0;
    6. int tmp = num;
    7. //求位数
    8. while(tmp != 0){
    9. count++;
    10. tmp /= 10;
    11. }
    12. System.out.println("位数是"+count+"位");
    13. //逆序打印
    14. tmp = num;
    15. while(tmp != 0){
    16. System.out.println(tmp%10);
    17. tmp /= 10;
    18. }
    19. }
    20. }

    ❤️例9

    1. 1 10 100 1000
    2. 2 20 200 2000
    3. 3 30 300 3000
    4. 4 40 400 4000
    1. public class Test09{
    2. public static void main(String[] args){
    3. for(int i=1;i<=4;i++){
    4. int tmp = i;
    5. for(int j=1;j<=4;j++){
    6. System.out.print(tmp+" ");
    7. tmp *= 10;
    8. }
    9. System.out.println();
    10. }
    11. }
    12. }

    ❤️例10

    1. *
    2. ***
    3. *****
    4. *******
    5. *********
    6. *******
    7. *****
    8. ***
    9. *
    1. public class Test10{
    2. public static void main(String[] args){
    3. java.util.Scanner s = new java.util.Scanner(System.in);
    4. int num = s.nextInt();
    5. x(num);
    6. }
    7. public static void x(int n){
    8. //1.打印上半部分
    9. for(int i=0;i<n;i++){
    10. for(int j=0;j<n-i-1;j++){
    11. System.out.print(" ");
    12. }
    13. for(int j=0;j<2*i+1;j++){
    14. System.out.print("*");
    15. }
    16. System.out.println();
    17. }
    18. //2.打印下半部分
    19. for(int i=0;i<n-1;i++){
    20. for(int j=0;j<=i;j++){
    21. System.out.print(" ");
    22. }
    23. for(int j=0;j<2*(n-i-1)-1;j++){
    24. System.out.print("*");
    25. }
    26. System.out.println();
    27. }
    28. }
    29. }

    ❤️例11

    篮球从 5 米高的地方掉下来,每次弹起的高度是原来的 30%,经过几次弹起,篮球的高度是 0.1 米。 

    1. public class Test11{
    2. public static void main(String[] args){
    3. int count = 0;
    4. double h = 5;
    5. while(h >= 0.1){
    6. h *= 0.3;
    7. count++;
    8. }
    9. System.out.println(count);
    10. }
    11. }

  • 相关阅读:
    【Linux】常用工具(下)
    软考高级职称哪个好考?明确给你答案
    k8s学习(RKE+k8s+rancher2.x)成长系列之简配版环境搭建(四)之Helm及cert-manager安装
    The significance of void 0 in JS
    超级好用的笔记工具------Typora 如何修改Typora 中图片保存的位置
    Mysql修改密码
    SQLite基础语法速用大法(Flutter)
    红黑树(C语言实现)
    postgres创建递归视图
    2023 家电行业品牌社媒营销洞察报告
  • 原文地址:https://blog.csdn.net/m0_61933976/article/details/124914521