流程控制语句和方法的几点知识点总结

控制语句分为三类:顺序,选择,循环

一、条件判断结构(选择语句)

1、if 语句 2、if-else 

3、if -else if-else 


/**
 * 测试多选择结构
 * @author 孙檬
 *
 */
public class TestIfElseIfElse {
    public static void main(String[] args) {
        int age = (int)(100*Math.random());
        System.out.print("年龄是"+age+",属于");
        if(age<15) {
            System.out.println("儿童,喜欢玩");
        }else if(age<25) {
            System.out.println("青年,要学习");
        }else if(age<45) {
            System.out.println("中年,要工作");
        }else if(age<65) {
            System.out.println("中老年,要补钙");
        }else if(age<85) {
            System.out.println("老年,多运动");
        }else {
            System.out.println("老寿星,古来稀");
        }
        
        
        
    }
}

4、switch多分支结构

/**
 * 测试switch语句
 *遇到多值判断时,推荐使用Switch,当然,switch完全可以使用ifelse代替!
 * @author HIAPAD
 *
 */
public class TestSwitch {
    public static void main(String[] args) {//
        int month = (int)(12*Math.random());
        System.out.println("月份:"+month);
        
        switch (month) {
        case 1:
            System.out.println("一月,过年啦!");
            break;
        case 2:
            System.out.println("二月!开春啦!");
            break;
        default:
            System.out.println("我是其它月份");
            break;
                
        }
        
        System.out.println("################");
        char c = 'a';
        int rand = (int)(26*Math.random());
        char c2 = (char)(c+rand);
        System.out.println(c2+":");
        switch(c2){
        case'a':
        case'e':
        case'i':
        case'o':
        case'u':
            System.out.println("元音");
            break;
        case'y':
        case'w':
            System.out.println("半元音");
            break;
        default:
            System.out.println("辅音");
            break;
        }
        
    }

}

二、循环结构

1、while循环

public class TestWhile {
    public static void main(String[] args) {
        //计算1+2+3+....+100,5050
        //暴力!
        int i = 1;
        int sum = 0;
        while(i<=100) {
            sum = sum+i;
            i++;
        }
        System.out.println(sum);
    }
}
2、do-while循环

3、for循环

public class TestFor {
    public static void main(String[] args) {
        int sum = 0;
        for (int i = 1; i <= 100; i++) {
            sum = sum + i;
        }
        System.out.println(sum);
        /*
         * int i = 1; while(i<=1){ sum = sum+1; i++; }
         */
        /**
         * 1.执行初始化语句:i= 1; 2.判断i<=100; 3.执行循环体; 4步进迭代; 5回到第二步继续判断
         */
    }

}
*for循环中可以用逗号运算符,在控制表达式的初始化和步进控制部分可以使用逗号分隔;

public class Test1{

    public static void main (String[] args){

        for(int i=1,j=i+10;i<5;i++,j=i*2){

System.out.println("i="+i+"j="+j);

}

}

}

for(;;)相当于while(true)  都指的是无限循环

for语句初始化部分声明的变量,作用域只能在循环体中,不能再循环外使用该变量

4、嵌套循环

 

public class TestWhileQianTao {
    public static  void main(String[] args) {
        for(int i=1;i<=5;i++) {
            for(int j=1;j<=5;j++) {
                System.out.print(i+"\t");
                
            }
            System.out.println(i);
        }
        
        System.out.println("###################");
        //打印九九乘法表
        for(int n=1;n<=9;n++) {
            for(int m=1;m<=n;m++) {
            System.out.print(m+"*"+n+"="+"m*n"+"\t");
            }
            System.out.println();
        }
        System.out.println("#####################");
        //用while循环分别计算100以内的奇数和偶数之和;
        int sum01 = 0;
        int sum02 = 0;
        for(int i=1;i<=100;i++) {
            if(i%2==0) {//偶数
                sum01 +=i;  // sum01=sum01+i
            }else{//奇数
                sum02+=i;
            }
        }
            System.out.println("偶数和:"+sum01);
            System.out.println("奇数和:"+ sum02);
            
            //用while 循环或其他循环输出1-1000之间能被5整除得数,且每行5个
            int p = 0;//方法二: 定义计数器
            for(int i=1;i<=1000;i++) {
                if(i%5==0) {
                System.out.print(i+"\t");
                p++;
            }
                if(p==5) {
                    System.out.println();
                     p = 0;
                }
                    
                /*方法一
                if(i%25==0) {
                    System.out.println();
                }
                */
        }
        
        
    }

}

5、break和continue语句

5.1、break语句用于强退出循环,不执行循环中剩余的语句

public class TestBreak {
    public static void main(String[] args) {
        int total = 0; //定义计数器
        System.out.println("Begin");
        while(true) {
            total++; //每循环一次,计数器加一
            int i = (int) Math.round(100*Math.random());
            System.out.println(i);
            //i等于88时,退出循环
            if(i==88) {
                break;
                
            }
        }
        //输出循环次数
        System.out.println("Game over,used"+ total+"times.");
        
    }

5.2、continue用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。

/**
 * 测试 continue
 * continue用于结束本次循环,继续循环下一次
 * @author HIAPAD
 *
 */
public class TestContinue {
    public static void main(String[] args) {
        int count = 0;//定义计数器
        for(int i=100;i<150;i++) {
            // 如果是3的倍数,则逃过本次循环,继续进行下一次循环
            if(i%3==0) {
                continue;
                
            }
            //否则(不是3的倍数),输出该数
            System.out.print(i+"、");
            count++;//没输出一个数,计数器加1
            if(count%5==0) {
                System.out.println();
                count = 0;
            }
            
        }
    }    
}

带标签的break和continue语句

三、方法

1、方法就是用来一段用来完成特定功能的代码片段,从属于类和对象的


public class TestMethod {
    public static void main(String[] args) {
        //通过对象调用普通方法
        TestMethod tm =new TestMethod();
        tm.printHyz();
        tm.printHyz();
        tm.add(500, 20, 0);
        int c= tm.add(500, 20, 0)+794;
        System.out.println(c);
    }
    void printHyz() {
        System.out.println("可爱的燕子");
        System.out.println("活泼的燕子");
        System.out.println("美丽的燕子");
    }
    int add(int a,int b,int c) {
        int sum = a+b+c;
        System.out.println(sum);
        return sum;  //renturn 两个作用:1结束方法的运行;2返回值
    }
}
 

2、方法的重载

重载的方法,实际是完全不同的方法,只是名称相同而已

形参的类型,个数,顺序不同构成重载

public class TestOverload {
    public static void main(String[] args) {
        System.out.println(add(500,20));
        System.out.println(add(500,20,1));
        System.out.println(add(500.0,20));
        System.out.println(add(500,20.0));
        
        
        System.out.println();
        System.out.println(1);
        System.out.println(3.0);
        
    }
    //求和的方法
    public static int add(int n1,int n2) {
        int sum = n1+n2;
        return sum;
    }
    //方法名相同,参数个数不同,构成重载
    public static int add(int n1,int n2,int n3) {
        int sum = n1+n2+n3;
        return sum;
    }
    //方法名相同,参数类型不同,构成重载
    public static double add(double n1,int n2) {
        double sum = n1+n2;
        return sum;
    }
    // 方法名相同,参数顺序不同,构成重载
    public static double add(int n2,double n1) {
        double sum = n1+n2;
        return sum;
    }
    /*
    //编译错误:只有参数名称不同时,不构成方法重载
    public static int add(int n2,int n1) {
        double sum = n1+n2;
        return sum;
    //编译错误:只有返回值不同时,不构成方法重载
     * public static int add(int n1,int n2) {
        double sum = n1+n2;
        return sum;
        
        
    */
    

3、递归结构

     任何能用递归解决的问题都能用迭代解决。递归方法更加自然的反应问题,易于调试和理解,不强调效率时,可以使用递归放法。

   在要求提高性能的情况下避免使用递归,它花时间又耗内存。

 

你可能感兴趣的:(java)