zoukankan      html  css  js  c++  java
  • Java【第四篇】基本语法之--循环

    循环语句

    功能

    在循环条件满足的情况下,反复执行特定代码

    循环语句的四个组成部分

    初始化部分(init_statement)
    循环条件部分(test_exp)
    循环体部分(body_statement)
    迭代部分(alter_statement)

    循环语句分类

    for 循环
    while 循环
    do/while 循环 

    for循环语句

    语法格式

    for (初始化表达式; 布尔值测试表达式; 更改表达式){
    语句或语句块;
    }

    应用举例

    package com.uncleyong;
    
    public class TestFor {
        public static void main(String[] args) {
            //从 1 打印到 100
    		for(int i = 1; i <= 100; i++){
    			System.out.println(i);
    		}
        }
    } 

    while循环语句

    语法格式

    [初始化语句]
    while( 布尔值测试表达式){
        语句或语句块;
        [更改语句;]
    }  

    应用举例

    package com.uncleyong;
    
    public class TestWhile {
        public static void main(String[] args) {
            int i = 1;
    
            while(i <= 100){
                System.out.println(i);
                i++;
            }
        }
    } 

    do/while循环语句

    语法格式 

    [初始化语句]
    do{
        语句或语句块;
        [更改语句;]
    }while(布尔值测试表达式);  

    应用举例

    package com.uncleyong;
    
    public class TestDoWhile {
        public static void main(String[] args) {
            //do ... while 一定会执行一次循环体.
            int j = 101;
            do{
                System.out.println("^^" + j++);
            }while(j <= 100);
        }
    } 

    几个循环的应用场景

    循环次数确定时一般使用for循环
    循环次数不确定时一般使用while和do...while循环

    特殊流程控制语句:break、continue

    break

    break语句用于终止某个语句块的执行,一般与if一起使用

    break语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是哪一层语句块

    label1: {   ……       
        label2: {   ……
            label3: {   ……
                     break label2;
                     ……
            }
        }
    }
    语法格式 
    { ……	 
        break;
    ……
    }
    应用举例
    public class TestBreak{
        public static void main(String args[]){
    	    for(int i = 0; i<10; i++){ 
    	     	if(i==3)
    		      break;	
    	    	System.out.println(" i =" + i);
    	    }
    	    System.out.println("Game Over!");
        }
    }
    

    continue

    continue语句用于跳过某个循环语句块的一次执行,也就是跳出本次循环,执行下一次循环,本次循环尚未执行完的代码不再执行

    continue语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环 

    语法格式
    { ……	 
        continue;
    ……
    }
    应用举例
    package com.uncleyong;
    
    public class TestContinue {
        public static void main(String [] args){
    
            //continue语句用于跳过某个循环语句块的一次执行
    
            for(int i = 1; i <= 100; i++){
                if(i % 2 != 0){
    
                    //break和continue之后不能有其他的语句,
                    //因为程序永远不会执行break 和 continue之后的语句。
                    continue;
    
    //                System.out.println("test");
                }
    
                System.out.println(i);
            }
        }
    }  

    特殊流程控制语句(break、continue)说明

    break只能用于switch语句和循环语句中。
    continue 只能用于循环语句中。
    标号语句必须紧接在循环的头部。标号语句不能用在非循环语句的前面。
    break和continue之后不能有其他的语句,因为程序永远不会执行break 和 continue之后的语句,否则编译出错。

    练习题(参考答案已放在Q群文件中)

    1、求1到100之间所有偶数的和。用for和while语句分别完成

    OuShu.java

    2、从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为0时结束程序

    TestCount.java

    3、打印 1-100 之间的所有素数

    SuShu.java

    4、分别打印如下两个直角三角形

    第一个:
    
    *
    ***
    *****
    *******
    
    
    
    第二个:
    
    ****
    ***
    **
    *
    

     

    5、打印等腰三角形

    6、【java笔试题】输入带*字符串,把*左移输出,其他字母按原顺序输出,例如:输入“as*c*gkl**o*p*h”,输出******ascgkloph

    此参考答案不是最优的

    package com.qzcsbj;
    
    import java.util.Arrays;
    import java.util.Scanner;
    
    /**
     * @create : 2020/3/13 21:10
     * @description : <描述>
     * @博客 : www.cnblogs.com/uncleyong
     * @QQ群 : 652122175
     * @公众号 : 全栈测试笔记
     */
    
    public class Test {
        public static void main(String[] args) {
            /**
             * 【java笔试题】输入带*字符串,把*左移输出,其他字母按原顺序输出,
             * 例如输入“as*c*gkl**o*p*h”,输出******ascgkloph
             */
            System.out.print("请输入带*字符串:");
            Scanner scanner = new Scanner(System.in);
            String str = scanner.nextLine();
            // String str = "as*c*g";
            System.out.println("移动前:" + str);
            char[] arr=str.toCharArray();
            for (int i=0;i<arr.length-1;i++){
                for (int j=1;j<arr.length-1-i;j++){
                    if (arr[j]=='*' && arr[j-1]!='*'){  // 把*左移
                        char temp = arr[j];
                        arr[j] = arr[j-1];
                        arr[j-1] = temp;
                    }
                }
                System.out.println("第"+ (i+1) +"轮冒泡:" + Arrays.toString(arr));
            }
            // System.out.println(Arrays.toString(arr));
            String s = "";
            for (int i=0;i<arr.length;i++){
                s+=arr[i];
            }
            System.out.println("移动后:" + s);
        }
    }
    

      

  • 相关阅读:
    .net core 3.1 使用Redis缓存
    JavaSE 高级 第11节 缓冲输入输出字节流
    JavaSE 高级 第10节 字节数组输出流ByteArrayOutputStream
    JavaSE 高级 第09节 字节数组输入流ByteArrayInputStream
    JavaSE 高级 第08节 文件输出流FileOutputStream
    JavaSE 高级 第07节 文件输入流FileInputStream
    JavaSE 高级 第06节 初识I、O流
    JavaSE 高级 第05节 日期类与格式化
    JavaSE 高级 第04节 StringBuffer类
    JavaSE 高级 第03节 Math类与猜数字游戏
  • 原文地址:https://www.cnblogs.com/uncleyong/p/9729189.html
Copyright © 2011-2022 走看看