第二章-程序控制

1.if语句

  • 重点:只要又有一个if的分支执行了,就结束整个if语句

  • 带else结尾的if语句,一定有分支执行,允许嵌套使用

  • 关于java语言当中的1f语句,属于选择结构,if语句又被称为分支语句/条件控制语句:
    if语句的语法结构:四种编写方式

    • 第一种: ==最多只有一个执行,==可能if语句里面的语句都不执行
      主f(布尔衣达式) {
      java语句;

    • 第二种:二选一,==一定有一个要被执行 ,==不是if语句里面的就是else里面的
      if(布尔表达式){
      java语句;

      java语句;
      }else{
      java语句;

      java语句;

      }

    • 第三种:可能if语句里面的语句都不执行
      if(布尔表达式) {
      java语包;

      java语句;
      }else if(布尔表达式){
      java语句;
      java语句;…
      }

    • 第四种:

      if(布尔表达式) {
      java语包;

      java语句;
      }else if(布尔表达式){
      java语句;
      java语句;…
      }else{

      }

  • 重点:对于java中的if语句来说,==只要有一个分支执行,==整个if语句全部结束.

  • 注意:以上的第二种编写方式和第四种编写方式都带有else分支,这两种方式可以100%保证会有分支执行

    • "所有的控制语句"都是可以嵌套使用的-只要合理嵌套就行
  • image-20220608212343656
  • 注意:嵌套使用的时候,代码格式要保证完美。【该缩进的时候必须缩进,大部分情况下使用大括号包围的需要对称
    5、if语句的分支中只有一条java语句的话,大括号可以省略不写。
    if(true){
    一承java语句;
    }
    if (true/false)一条java语句;

    看得懂就行,不要这样写,不美观

  • public class IfTest01{
        public static void main (String [] args){
            //需求:所在位置的五公里范围之内有肯德基的话,去KFc吃午饭
            //公里数
            //double distance = 6.0 ; 
                //单位kM
                double distance = 1.o ;
            //判断语句
            if(distance < 5 ) {
            System.out.println ( "去KFc吃开封菜!") ;
            }
            /*
            需求:
            假设系统给定一个考生的成绩,成绩可能带有小数点
            根据学生的成绩判断该学生的成绩等级:
            [90-100]A
            [ 80-90)B
            [70-80)c
            [ 60-70)D
            [o-60)E
            以上的逻辑判断采用if语句完成,应该怎么写?
    
            */
              double grade = 90 ;
            if(grade >= 90){
                System.out.println ( 'A') ;
            }else if(grade >= 80) {
                System.out.println ( 'B') ;
            }else if (grade >= 70) {
                System.out.println ( 'C') ;
            }else if (grade >= 60){
                System.out.println ( 'D' ) ;
            }else{
                System.out.println ( 'E' ) ;
            }
    
        }    
    }
    //使用以下这种方式可以完成需求,但是这种方式效率较低。每一个if都是不相关的,都是独立的/每一个if都会判断一次-,浪费内存
    /*
    if(){
    }
    if(){
                
    }
    if(){
    }
    if() {
    }
    */
                
    
  • //根据需求决定选择以上的第四种结构来完成需求
    /*
    if(score < 0 || score > 100){
    System.out.println("对不起,您提供的考生成绩不合法");
    }else if(score >= 90 && score <= 100){
    //没必要判断是否小于等于100,能执行到这里一定是<=100
    */
    //意味着成绩肯定是合格的,在 0----100之间
    if(score < 0 || score > 100) {
    	System.out.println("对不起,您提供的考生成绩不合法");
    }else if(score >= 90) {
    	System.out.println("该考生的考试成绩等级是:A" );
    }e1se if(score >= 80){
        //能够判断到这里说明成绩一定是小于90分的
    	System.out.println("该考生的考试成绩等级是:B等级");
    }else if (score >=70){
    	System.out.println("该考生的考试成绩等级是:c等级");
    }else if (score >=60){
    	System.out.println("该考生的考试成绩等级是:D等级");
    }else{
    	System.out.print1n("该考生的考试成绩等级是:E等级");
    }
    
  • 代码优化

    String grade ="该考生的考试成绩等级是:E等级";
    if(score < 0 || score > 100){
    	grade = "对不起,您提供的考生成绩不合法";
    }else if(score >= 90){
    	grade = "该考生的考试成绩等级是:A等级";
    }else if(score >= 80){
    	grade = "该考生的考试成绒等级是:B等级";
    }else if(score >= 70){
    	grade = "该考生的考试成绩等级是:c等级";
    }else if(score >=60){ 
    	grade = "该考生的考试成绩等级是:D等级";
    System.out.println(grade);
     /*
     默认就是不合格,如果匹配,就改变grade的值
     */
    
    
  • /*需求:
    假设系统给定一个人的年龄,根据年龄来判断这个人处于生命的哪个阶段,年龄必须在[O-1501
    [0-5]幼儿
    [6-10]少儿
    [11-18]青少年
    [19-35]青年
    [36-55]中年
    [56-150]老年
    */
    public class IfTest02{
        public static void main (String[] args){
    
        }
    }
                
    
  • 键盘输入信息到内存中

  • /*System.out.println();负责向控制台输出
    【从内存到控制台,输出的过程,这是从内存中出来了】
    接收用户键盘输入,从"键盘"到"内存"。
    【输入的过程,到内存中去】
    以下代码先不要问为什么!固定编写就可以接收用户键盘的输入。
    也可以使用import 导入相应的包
    */
    public class KeyInputTest{
    public static void main (String[] args){
    //第一步:创建键盘扫描器对象
    java.util.Scanner s = new java.util.Scanner(System.in);
    //第二步:调用Scanner对象的next()方法开始接收用户键盘输入
        //程序执行到这里会停下来,等待用户的输入
        //当用户输入后,回车键后,键入的内容会自动
        //赋值给userInputContent
    String userInputConten = s.next();
        //标识符见名知意
     System.out.println("你输入的是:" + userInputContent);
    //接收薮字【以整数型int的形式来接收】
        int num = s.nextInt();
    //将内存中的数据输出到控制台
    //System.out.printin("w您输入了: " +userInputContent);
    System.out.println ("您输入的数字是:" + num) ;
                
    
  • 总结:记住代码,或者直接将代码复制粘贴
    第一步:
    java.util.Scanner s = new java.util. Scanner(System.in) ;

    第二步:
    String str = s.next();


    int num = s.nextInt() ;

    image-20220608222457504 image-20220608222621674
    public class IfTest02{
    public static void main (String[] args){
    //1、接收键盘输入:年龄【输入的时候必须输入数字】
    //推荐使用,尽量不使用导包的方式处理
    java.util.Scanner s = new java.util.Scanner(system.in);
        //system.out.println("请输入您的年龄:") ;
    System.out.print("请输入您的年龄:");
        //输出提示信息,
        //要不然用户根本不知道这里要干嘛!
        int age = s.nextInt();
        //停下来等待用户的输入,输入之后自动接收,赋值给age变量。以整数形式进行输入
    // System.out.println( "age = " + age);
    //2、根据需求进行业务逻辑判断
    /*
    以字符串形式进行文本输入
    java.util.Scanner s = new java.util.Scanner(System.in);
    String userInputContent = s.next();
    */
    String str = "老年";
    if(age < 0 || age > 150) {
    	str = "您提供的年龄不合法,年龄值需要在[0-150]之间" ;
    }else if(age <= 5) {
    	str = "幼儿";
    }else if(age <= 10){
     	str = "少年";
    }else if(age <= 18){
    	str = "青少年";
    }else if(age <= 35){
        str = "青年";
    }else if( age <=55){
    	str = "中年";
    }
    System.out.println("你处于生命周期的" + str +"阶段!");
                
    
    • /*
      需求:
      判断当前的天气:
      当外边下雨的时候:
      带南伞:
      判断性别:
      当性别为男:带一把大黑伞,当性别为女:带一把小花年伞
      当外边是晴天的时候:
      判断天气的温度:
      当天气温度在30度以上:
      当性别为男:戴墨镜,
    • 当性别为女:擦防晒霜

    提示:

    1、一定会用到嵌套

    2、天气状况、性别、温度都要键入用1和0进行代替

    */

    public class IfTest03{
    public static void main (String[] args){
            java.util.Scanner = new java.util.Scanner(System.in);
            System.out.println("欢迎使用本系统,您通过本系统可以完成一些简单的判断");
            System.out.println("说明1:1表示下雨,0表示晴天");
            System.out.println("说明2:1表示男:0表示女");
            System.out.println("说明3:温度为数字");
            //接收天气的状况
            	System.out.print("请输入性别状况:");
            int sex = s.nextInt();
            	System.out.print("请输入当前天气状况:");
            int weather = s.nextInt() ;
        //判断天气状况
            if(weather == 1){
        //下雨天
            System.out.println("下雨天");
            if(sex == 1){
                System.out.println("带一把大黑伞");
            }else if(sex == 0){
                System.out.println("带一把大花伞");
            }else{
                System.out.println("你输入的性别有误");
            }
            }else if(weather == 0){
        //晴天
        //	System. out.println( "睛天");
        /*
        不管是晴天雨天,都需要键入,性别,分别键入
        显然复杂,浪费内存,对于都需要的,共同的,
        应该外部,就是放在if判断
        */
        int tem = s.nextInt ();
              if( tem > 30) {
        if( sex==1){
            System.out.println("戴墨镜");
    
        }else if(sex == 0){
        	System.out.println("搽防晒霜");
        }else{
        	System.out.println("对不起,您的性别是怎么事?");
        }
        }else{
        	System.out.println("对不起,您输入的天气状况不存在!");
                
        }
    }
    

public class IfTest04{
public static void main (String [] args){
boolean sex = true ;
if(sex) {
System.out.println(“男”);
}else{
System.out.println(“女”);
sex = false;
if(sex)
System.out.println(“男”);
else
System.out.println(“女”);
//-条件后面只有一句语句,正常运行------------------
if(sex)
System.out.println(“男”);
//此处已经和else断开
//下面的语句就是一个独立的语句

    System.out.println("呵呵");
    else//报错,禁止单独使用
    /*
    17行开始报错,if没问题,然后输出男,再输出呵呵呵,
    17行开始报错,else找不到if,违反else不可以单独使用

    注意:编译器只检查语法,不检查语义错误
         允许if单独使用,不允许else单独使用
    */
    System.out.println( "女");

}
}

2.switch语句

关于switch语句:

1、switch语句也属于选择结构,也是分支语句

2、switch语句的语法结构:

一个比较完整的switch语句应该这样编写:

switch (int或string类型的字面值或变量){case int或string类型的字面值或变量:
​		java语句;
​		java语句;

​		java语句;break ;case int或string类型的字面值或变量:
​		java语句;
​		java语句;

​		java语句;break ;case int或string类型的字面值或变量:
​		java语句;
​		javai语句;

​		java语句;break;....default;

​		java语句;....
  • 3.switch语句的执行原理:
    switch后面小括号当中的"数据"case后面的"数据"进行一一匹配,
    匹配成功的分支执行。按照自上而下的顺序依次匹配。

  • 匹配成功的分支执行,分支当中最后有"break;"语句的话,整个switch语句终止

  • 匹配成功的分支执行,分支当中没有"break;"语句的话,直接进入下一个分支执行(不进行匹配)这种现象被称为case穿透现象。【提供break;语句可以避免穿透】

  • 所有分支都没有匹配成功,当有default的语句话,会执行default分支当中的程序。

  • switch后面和case后面只能是int或者string类型的数据,不能是探测其它类型。

  • 当然byte , short,char也可以直接写到switch和case后面,因为它们可以进行自动类型转换。byte , short , char可以自动转换成int类型。

  • JDK6的,switch和case后面只能探测int类型。

  • JDK7之后包括7版本在内,引入新特性,switch关键字和case关键字后面可以探测int或string类型的数据。

  • case可以合并:
    int i = 10 ;
    switch (i) {
    case 1: case 2 : case 3: case 10:
    //满足其中一个人case条件就执行下面的语句
    System.out.println(“Test code !”);
    }

  • 注意:

  • 1、Switch适用于多项选择问题,在成绩处理问题时,经常除以10除以60,然后(int)处理,就是简单的数学角度处理

    public class switchTest05{
    	public static void main(String[]args){
    	//考生成绩
    		 double score = 95.5;
    		 double score = 100;
    		 double score = 60.5;
    		 double score = 59.9;
    		转换成int
    		int grade = (int)(score / 10);
    		switch(grade){
    			case 9: case 10:
    			System.out.println("A");
    			break;
    			case 8:
    			System.out.println("B");
    			break;
    			case 7:
    			System.out.println("C”);
    			break;
    			case 6:
    			System.out.println("D");
    			break;
    			default:
    			System.out.println("E");
    		}
    	}
    }
    
*/
public class 动力节点temp{
	public static void main(String [] args){
	/*
	long a = 10L;
	int b = a; //编译报错*/
	/*
	long x = 100L;
	switch(x){}
	//编译报错
	*/
      //解决编译错误
      long x = 100L;
          switch((int)x){}
      byte b = 10;
          switch(b){}
      short s = 10;
          switch(s){}
      char c = 'A';
          switch(c){}
      char cc = 97;
          switch(cc){} 
      //编译报错
      // switch (true) {}
      String userName = "zhangsan";
      switch(userName){}

      /*
      较switch完整的switch语句
      */
      //接收用户的输入:
      //1表示星期一
      //2表示星期二
      //...
      //7表示星期日
      java.util.Scanner sc = new java.util.Scanner(System.in);
      System.out.print("请输入数字");
      int num = sc.nextInt();
      switch(num){
          case 1 :
              System.out.println("星期一");
              break;
          case 2 :
              System.out.println("星期二");
              break;
          case 3 :
              System.out.println("星期三");
              break;
          case 4 :
              System.out.println("星期四");
              break;
          case 5 :
              System.out.println("星期五");
              break;
          case 6 :
              System.out.println("星期六");
              break;
          case 7 :
              System.out.println("星期七");
              break;
          default :
              System.out.println("你输入的数字有误!!!");

	}

}
	
/*
case 穿透

switch(num){
	case 1 :
		System.out.println("星期一");
	case 2 :
		System.out.println("星期二");	
	case 3 :
		System.out.println("星期三");	
	case 4 :
		System.out.println("星期四");	
	case 5 :
		System.out.println("星期五");	
	case 6 :
		System.out.println("星期六");	
	case 7 :
		System.out.println("星期七");	
	default :
		System.out.println("你输入的数字有误!!!");
		}
输入1,全部穿透,输入3,从3开始到后面,全部穿透


*/

/*
case合并

switch(num){
case 1 : case 0:
	System.out.println("星期一");
	break;
case 2 :
	System.out.println("星期二");
	break;
case 3 :
	System.out.println("星期三");
	break;
case 4 :
	System.out.println("星期四");
	break;
case 5 :
	System.out.println("星期五");
	break;
case 6 :
	System.out.println("星期六");
	break;
case 7 :
	System.out.println("星期七");
	break;
default :
	System.out.println("你输入的数字有误!!!");
	输入0或1 (case合并)均会输出  星期一
  • 四则运算

  • 
    


*/

/*
实现计算器当中的
+
-
*
/
%
实现思路:
1、选择所有数据从健盘输入
2、使用switch语句进行判断
3、需要从控制台输入三次:
第一个数字
运算符
第二个数字
最终在控制台上是这样的一个场景:
欢迎使用简单计算器系统:
请输入第一个数字:10
请输入运算符:+-*/

/*

%

*/

/*

请输入第二个数字:20
运算结果:10l
*/



public class SwitchTest04{
 public static void main(String [] args) {
 	// 导入扫描器
 	java.uti1.Scanner s = new java.uti1.Scanner(System.in);
 	System.out.println("欢迎使用简单计算器系统");
 	System.out.println("请输入第一个数字(仅限整型数据):");
 	// 用户输入第一个参与运算的数
 	int num1 = s.nextInt();
 	System.out.println("请输入一个运算符");
 	// 用户输入操作符
 	String operator = s.next();
 	System.out.println("请输入第二个数字");
 	// 用户输入第二个参与运算的数
 	int num2 = s.nextInt();
 	// Switch区分不同的操作类型
 	int result = 0;
 		switch(operator){
 			case "+":
 			result = num1 + num2;
 			break ;
 			case "-":
 			result = num1 - num2;
 			break;
 			case "*":
 			result = num1 * num2;
 			break;
 			case "/":
 			result = num1 / num2;
 			break;
 			case "%":
 			result = num1 % num2;
 			break;
 		}
 		// 输出结果的打印
 		System.out.println("运算结果为:"+num1+operator+num2+"="+result);
 		// 每个case后面都需要运算结果输出,干脆放到外面,节省内存空间
 } 
}


3.for

  • 循环结构:
    在程序当中总有一些需要反复的/重复的执行的代码,假设没有循环结构,那么这段需要重复执行的代码自然是需要重复编写的。代码无法得到重复使用。所以多数编程语言都是支持循环结构的。将来把需要反复执行的代码片段放到"循环体",再联合"计数器”,共同控制这段需要反复执行的代码。

  • 基本上所有的编程语言支持的循环包括三种:

    • for循环
    • while循环
    • do. . while循环
  • 当前示例主要讲解for循环。for循环的语法结构是什么呢?
    语法结构:

    • for(初始化表达式;布尔表达式;更新表达式) {
      //是需要重复执行的代码片段[循环体:由java语句构成]
      }
  • for循环执行过程/原理

    • 初始化表达式、布尔表达式、更新表达式都不是必须的! [但是两个分号是必须的]

      • for(;😉{

        }

      • 【死循环】 ctrl + c 停止死循环

    • 初始化表达式最先执行,并且在整个for循环当中只执行一次。

    • 布尔表达式必须是true/false,不能是其它值。

    • for 的执行过程:
      先执行初始化表达式,并且该表达式只执行一次
      判断布尔表达式的结果是true还是false
      布尔表达式true
      执行循环体
      执行更新表达式
      判断布尔表达式的结果是true还是false
      布尔表达式true
      执行循环体
      执行更新表达式
      判断布尔表达式的结果是true还是false
      布尔表达式true

      布尔表达式false
      循环结束
      布尔表达式false
      循环结束
      布尔表达式false
      循环结束

  • 不使用循环

    • public class ForTest01{
      	public static void main(String [] args){
      		System.out.println("1");
      		System.out.println("2");
      		System.out.println("3");
      		System.out.println("4");
      		System.out.println("5");
      		System.out.println("6");
      		System.out.println("8");
      		System.out.println("9");
      		System.out.println("10");
          }
      }
      
  • 使用循环

    • // 使用循环
      public class ForTest02{
      	public static void main(String [] args){
      		for(int i = 1;i < 11;i++){
      			System.out.println(i);
                  	}
      	}
      }
      
  • i变量的作用域

    • /*
      i变量的作用域。
      */
      public class ForTest02{
      	public static void main(String [] args){
      		//以下的for循环当中i"变量的作用域是仅限于当前for循环内部使用。
      		for(int i = 0;i < 10;i++){
      			System.out.println("i—-->"+i);
      		}
      		//以下的for循环当中"i"变量的作用域是仅限于当前for循环内部使用。
      		for(int i = 0;i <= 10;i++){
      			System.out.println("i—-->>"+i);
      		}
      		/*
      		这个i变量可以在main方法的作用域当中访问吗?无法访问
      		System.out.println(" i " + i);
      		只要一跳出for循环,变量i就会在内存空间中被销毁,也就没法
      		在for循环外面使用
      		编译错误
      		*/
      		//main方法作用域当中的i变量,只要main方法没有结束,这里的i就能用。
      		int i = 0;
      		for( ;i < 10;i++){
      			System.out.println( "i ---->" + i);
      		}
      		//这里可以访问main方法作用域当中的i变量
      		System.out.println("i—-->" + i); //10
          }
      }
      /*
      还可以这样写,先声明变量,在进行赋值
      int j;
      for(i = 1;i <= 10;i++){
      	System.out.println(i);
      }
      
    • 奇数偶数

    • public class ForTest03{
      	public static void main(String [] args){
      	//输出1~10中所有的奇数
      	for(int i = 1;i <= 10;i += 2){
      		// i+=2    i= i + 2;
      		System.out.println("i -->" +i);// 1 3 5 7 9
      	}
      	//输出1~10中所有的偶数
      	for(int i = 2;i <= 10;i += 2){
      		System.out.println("i -->"+i);
      	}
      	for(int i = 10;i > 0;i--){
      		System.out.println("i -->" + i);
      		//10 9 8 7 6 5 4 3 2 1
      	}
      	for(int i = 100;i > 50;i -= 10){
      		System.out.println("i -->" + i); //100 90 80 70 60 50
      	}
      	}
      }
      
      /*
      循环迭代条件可以放在循环体的最后一句语句;
      for(int i=0;i<10;){
      	System.out.println(i);
      	i++;
      	//一定要放在最后一句,才可以与正常写法等价
      	若不写在最后一句,则不等价于正常for循环写法
      	但是不会报错,也可以进行循环,只不过,什么时
      	候结束循环会有差距。
      	故意不写迭代条件,也不会报错,直接进入死循环
      }
      
      */
      /*
      循环语句和条件判断语句嵌套使用【for和if的嵌套】
      */
      
    • 奇数问题

    • public class ForTest04{
      	public static void main(String [] args){
      		//找出1~100所有的奇数
      		//第一种方案:从1开始,每次递增2,这样每一个数字一定是奇数。
      		for(int i=1;i<=100;i+=2){
      			System.out.println("奇薮-->" + i);
      		}
      		//第二种方案:从1开始,以1递增,每一个数据都进行判断,判断标
      		//准是该数字对2求余数
      		for(int i=1;i<=100;i++){
      		//system. out .println("i --习" + i);
      		//判断i是否为奇数,是奇数的时候输出
      		//i%2= 0//偶数
      		//i%2= 1//奇数
      		//i % 2 != 0//奇数
      			if(i % 2 != 0){
      				// if()里面是一个布尔型的值
      				System.out.println(i);
      			}
      		}
      		//以上两种方案,优先选择第一种方案: 代码少,循环次数少,效率较高
      
    • 求和问题

    • /*
      在前一个程序的基础之上,计算1~100所有奇数的和
      1+3+5+7+9.....+99累加
      运算符 += 就是专门完成追加的.
      注意:设计累计问题,一般是将累计变量放在循环体外面
      */
      public class ForTest05{
      	public static void main(String [] args){
      	//定义一个变量[盒子],初始值为0
      	int sum = 0;
      		for(int i=1;i<100;i+=2){
      		//i一定是奇数
      		//累加求和
      		//system.out .println("i -->”+ i);
      			sum += i;
      		}
      	//以上的for循环结束之后,最终输出求和的结果
      	System.out.println("sum =" + sum);
      	}
      }
      
    • 嵌套问题

    • /*
      for循环嵌套for循环
      */
      public class ForTest06{
      	public static void main(String [] args){
      		for(int i = 1;i <= 10;i++){ 
      		/*共循环10次
      		循环体中可以编写其它的控制语句
      		控制语句可以嵌套使用
      		//控制语句可以是:if、 if..else、switch、 for. while、do ..while
      		if(){
      			for(){
      				while(){
      					if(){
      					    for(){
                        		 }
      				    }
      			    }
      		   }
      	    }
      	*/
      /*内层循环,内层循环中的变量名和外层循环中的变量名不能重名。
      作用域的问题
              for ( int i=100; ; ){
              }
      	*/
      
      	}
      	
      }
      
    • for循环嵌套

    • /*
      最好不要想太多,即使循环体当中是一个for循环,不要将这个for特殊化,也是只一个普通的for循环,只不过是一段符
      合java语法的代码
      */
      public class ForTest07{
          public static void main(String [] args){
              for(int i = 0;i < 10;i++){//循环10次
                  //这里的代码片段执行10遍
                   for(int j = 0;j < 1;++){ //循环1次,输出0
                      System.out.println("j--->"+j);
                   }
              }
          }
      }
      
      
    • 乘法表

    • /*
      使用for循坏输出九九乘法表:
      1*1=1
      2*1=2 2*2=4
      3*1=3 3*2=6 3*3=9
      4*1=4 4*2=8 4*3=12 4*4=16 ---- -----
      ........................
      9*1=9     .........9*9=81
      
      关键点:观察规律,怎么将内外循环联系起来
      	每一行与行号相同的,明显是第一个乘数,显然让第一个乘数作为外循环更好
      	联系:内循环的终止条件就是行号
      for(int i = 1;i<=9;i++){ //外层循环9次
       //i是行号
       //System.out.println(i);
       //循环体当中的程序主要的任务是什么?
       //处理当前行,将当前行中所有的项目全部输出
         /*
         for(int j=1;j<=???;j++){
       		System.out.println("");
       
       		}
         }
         第几行就要循环几次,所以j<=i
         就可以将内外循环联系起来
       
      */
      public class ForTest08{
          public static void main(String [] args){
              for(int i = 1;i <= 9;i++){
               //行,第一个乘数
                   for(int j = 1; j <= i;j++){
                     //列,第二个乘数
                     //输出结果,并进行填充
                   System.out.print(i + "*" + j + "=" + i * j + "\t");
                   }
                   System.out.println();
              }
      
          }
      }
      
      
  • 先死后活和标记的编程思想

  • /*
    编写for循环找出1~100中所有的素数
    素数:又被称为质数,能够被1和自身整除,不能被其它数
    字整除的数字称为素数。
    //先编写程序,验证7这个数字是否为素数
    
    实现思路:
    7/1 [不需要]
    7/2 [7 % 2 != 0]
    7/3 [7 % 3 != 0]
    7/4 [7 % 4 != 0]
    7/5 [7 % 5 != 0]
    7/6 [7 % 6 != 0]
    7/7 [不需要]
    结论是: 7是素数
    
    
    重点掌握编辑思想和先死后活思想
    int i=8;
    boolean issushu = true; //默认将i看做一一个素数[标记在开发中比较常用]
    for(int j=2;j<i;j++){
    //j是什么: 2 3 4 5 6
    	if(i % j == 0){
    	//非素数
    	isSuShu = false;
    	//已经知道i是非素数,跳出循环,效率较高 ,避免资源浪费。
    	break;
    	}
    }
    System.out.println(isSuShu ? i + "是素数": i + "怀是素数");
    
    符合三元运算符类型兼容,""  用加号与别的相连,将其他转化为字符串
    
    
    
    */
    public class ForTest09{
      public static void main(String [] args){
      		int count = 0;
    	  	for(int i=2;i<=100;i++){
    			boolean isSuShu = true;
                //假定是素数,然后再去否定它
    			for(int j=2;j<i;j++){
    				if(i%j == 0){
                        
    				isSuShu = false;
    				break;
                        //一旦否定成功就跳出循环,提高代码运行效率
    				}
    			}
    			if(isSuShu){ //是素数
    				System.out.print(i+"\t");
    				count++;
    				if(count % 8 == 0){
                        System.out.println();
    				}
    	        }
    	    }
    	}
    }
    /*
    
    数量统计的方式:
    
    也可以不使用求余的方式进行换行的判定
    1.求余
    2.逢八就归零
    count++;
    	if(count == 8){
    		System.out.println();
    		//换行之后进行统计的归零
    		count = 0;
    	}
    
     */
    					
    
    

4.while循环

  • while循环语句:

    • while循环的语法结构:
      while(布尔表达式){
      循环体;
      }

    • while循环的执行原理:

      • 先判断布尔表达式的结果:
        • true
          执行循环体
        • false
          循环结束
    • while循环的循环次数:

      • 0~N次
        注意:while循环的循环体可能执行次数为0次.

image-20220908200431748

public class WhileTest01{
	public static void main(String [] args){
		int i = 10;
		int j = 3;
		while(i > j){
			System.out.println("hehe!");
		}
	}
}

5.do-while

/*
do. . while循环:
1、do..while循环的语法结构:
	do{
		循环体;
	}while(布尔表达式);
2、do. . whi le循环的执行原理
3、do. . while循环的执行次数:
do. . while循环的循环体代码片段执行次数是: 1----N次 [至少一次]
4、使用do. .while循环的注意事项:
do. . while循环语句最终有一个分号  ;  别丢了。
*/
public class DoWhile01	
{
	public static void main(String [] args){
		int i = 10;
		do{
			System.out.println("do while 循环"+i);
		}while(i > 100);

		// 至少执行一遍
		while(i > 100){
			System.out.println("while循环"+i);

		}
	}
} 

6.终止语句

6.1.break

  • 关于java控制语句当中的break语句:
    • break是java语 言当中的关键字,被翻译为"中断/折断"
    • break ;可以成为一个单独的完整的java语句:
      break;
    • break语句使用在switch语句当中,用来终止switch的语句执行。
    • break语句同样可以使用在循环语句当中,用来终止循环的执行。
      • break终止哪个循环呢?
        • break;语句使用在for,while,do..while循环语句当中用来跳出循环,终止循环的执行。因为当程序循环到某个条件的时候,后续的循环没必要执行了,再执行也是耗费资源,所以可以终止循环,这样可以提高程序的执行效率。
    • 以下以for循环为例讲解break;语句。
    • 默认情况下,break终止的是离它最近的循环,特殊情况,标签指定
public class BreakTest01
{
	public static void main(String[] args){
		for(int i = 0;i < 10;i++) {
			if(i == 5){
			break ;
			// 终止的是当前的for循环
			}
			System.out.println("i --> " + i);//01234
		}
		// helloworld与break无关,依旧输出
		System.out.println("hello world");
		//以下语法使用较少。
		//给for循环起名for1
		for1:for(int j = 0;j < 3;j++){
		//给for循环起名for2
			for2:for(int i = 0;i < 10;i++){
				if(i == 5){
					break for1;
				}
				 //终止for1循环
			System.out.println("---->"+ i);
			}
		}
    }
}

6.2.continue

  • continue语句:

    • continue表示: 继续/go on/ 下一个

    • continue也是一个continue关键字加一个分号构成一个单独的完整的java语句,主要出现循环语句当中用来控制循环的执行。

    • break和continue的 区别?

      • break表示循环不执行了

      • continue表示直接进入下一次循环继续执行,整个循环并未结束循环,跳过的只是本次循环。 默认情况下,continue终止的是离它最近的循环,特殊情况,标签指定

      • public class ContinueTest01{
          	public static void main(String [] args){
          	for(int i = 0;i < 10;i++){
          		if(i == 5){
          		    break;
          	    }
          		System.out.println("i ="+ i);
          		//01234
          	}
          	    System.out.println("He1lo World");
          	for(int i = 0;i < 10;i++){
          		if(i == 5){
          		continue; 
          }
          	//只要这个语句执行,当前本次循环停止,从continue开始到
          	//本循环的最后一个语句之间所有的语句不再执行
          	//直接进入下一次循环继续执行,执行一个完整的循环
          	    System.out.print1n("i ="+i);
          	    //012346789
          	}
          	    System.out.println("He11o World");
          	}
        }
        
    • 补充return

      • 终止所在方法
      • 返回一个值,在递归中,必须执行到 ; 处,才算完整,然后进行返回
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@yanyu666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值