003-控制流程语句if,elseif,switch,for,while,do while

控制流程语句

  • 分支结构
  • 循环结构

分支结构

简单的if结构

语法:
if(boolean类型的条件){
    如果boolean结果为true执行此处代码
}
举例:
如果年龄大于16年可以找女朋友
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的年龄");
int age = sc.nextInt();
if(age > 16){
    System.out.println("可以找女朋友");
}
如果年龄大于16年可以找女朋友,且性别是男的
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的年龄");
int age = sc.nextInt();
String sex = sc.next();
if(age > 16 && sex.equals("男")){
    System.out.println("可以找女朋友");
}

if...else结构

语法:
if(boolean类型条件){
    如果boolean结果为true执行此处代码
}else{
    如果boolean结果为false执行此处代码
}
举例:
如果java成绩大于80分,可以奖励一套<葵花宝典>,否则惩罚写代码
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的java成绩");
double score = sc.nextDouble();
if(score >80){
    System.out.println("奖励女朋友");
}else{
    System.out.println("惩罚写代码");
}
如果会唱跳或者会rap、篮球,可以和cxk交朋友,否则和赵四交朋友
Scanner sc = new Scanner(System.in);
System.out.println("请输入你会唱跳吗?");
boolean boo1 = sc.nextBoolean();
System.out.println("请输入你会rap、篮球吗?");
boolean boo2 = sc.nextBoolean();
if(boo1 == true || boo2 == true){
    System.out.println("可以和cxk交朋友");
}else{
    System.out.println("可以和赵四交朋友");
}

多重if结构

语法:
if(boolean类型条件1){
    满足条件1执行此处代码
}else if(boolean类型条件2){
    满足条件2执行此处代码,不满足条件1
}else if(boolean类型条件3){
    满足条件3执行此处代码,不满足条件1和2
}else{
    不满足以上条件,执行此处代码
}
举例:
如果手头大于10000块买iPhone11
如果手头大于6000块买华为
如果手头大于3000块买小米
如果手头大于1000块买诺基亚    
否则好好学习
Scanner sc = new Scanner(System.in);
System.out.println("请输入手头上的金额");
int money = sc.nextInt();
if(money > 10000){
    System.out.println("买iPhone11");            
}else if(money >6000){
    System.out.println("买华为");
}else if(money >3000){
    System.out.println("买小米");
}else if(money >1000){
    System.out.println("买诺基亚");
}else{
    System.out.println("好好学习,挣钱");
}
多重if要注意的问题:要将苛刻的条件往前放

嵌套if结构

语法:
if(boolean类型条件1){
    if(boolean类型条件2){
        满足条件1的前提下满足条件2,执行此处代码,
    }else{
        满足条件1的前提下不满足条件2,执行此处代码,
    }
}

购物如果满300块可以打折,如果是会员打8折,如果不是会员打九折
Scanner sc = new Scanner(System.in);
System.out.println("请输入购物的金额");
double money = sc.nextDouble();
if(money > 300){
    System.out.println("请输入是否是会员");
    boolean vip = sc.nextBoolean();

    if(vip == true){
        money *= 0.8;
    }else{
        money *= 0.9;
    }
}
System.out.println("您本次需要支付"+money);

总结 String类型在比较内容是否相等时候要用equals方法来判断不能用== 基本数据类型做等值判断用== String类型做等值判断用equals 语法: 字符串1.equals(字符串2)

if分支的特殊用法

if语句的大括号可以不写,但是如果不写,这个if只能控制一行代码。(看得懂不要用)

int age = 10;
if(age > 18)
    System.out.println("可以上网");

举例

判断今年是否是闰年(能被4整除且不能被100整除,或者能被400整除)
如果成绩大于90分优秀,80分良,70分中等,60分,否则留级
如果赛跑成绩小于15,可以进入决赛,男的进入男子组,女的进入女子组

代码实现

/**
    1:判断今年是否是闰年(能被4整除且不能被100整除,或者能被400整除)
    2:如果成绩大于90分优秀,80分良,70分中等,60分,否则留级
    3:如果赛跑成绩小于15,可以进入决赛,男的进入男子组,女的进入女子组
*/
import java.util.Scanner;
public class Test1{
    public static void main(String[] args){
        /*
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入年份");
        int year = sc.nextInt();
        if(year %400 ==0 ||  (year % 4==0 && year % 100 !=0) ){
            System.out.println("闰年");
        }else{
            System.out.println("平年");
        }        
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入成绩");
        int score = sc.nextInt();        
        if(score >= 90){
            System.out.println("优秀");
        }else if(score >= 80){
            System.out.println("良好");
        }else if(score >= 70){
            System.out.println("中等");
        }else if(score >= 60){
            System.out.println("及格");
        }else{
            System.out.println("好好学习");
        }        
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入成绩");
        int score = sc.nextInt();
        if(score < 15){
            System.out.println("请输入性别");
            String sex = sc.next();
            if(sex.equals("男")){
                System.out.println("进入男子组");
            }else{
                System.out.println("进入女子组");
            }        

        }else{
            System.out.println("很遗憾,淘汰");
        }        
        */                
    }    
}

switch....case结构

switch(具体的值){
    case 值1:
        具体的值 与值1  相等的时候,执行此处代码
        break;
    case 值2:
        具体的值 与值2  相等的时候,执行此处代码
        break;
    case 值3:
        具体的值 与值3  相等的时候,执行此处代码
        break;
    case 值4:
        具体的值 与值4  相等的时候,执行此处代码
        break;
    default :
        与所有的case都不匹配的时候,执行此处代码
        break;
}

具体的值:byte、short、char、int、枚举,在jdk1.7之后可以使用String类型
case中的值不能相等

举例:
如果选择1就执行登录操作
如果选择2就执行注册操作
如果选择3就执行查看操作
如果选择4就执行退出操作
如果选择其他就提示输入有误

Scanner sc = new Scanner(System.in);
System.out.println("欢迎进入cxk人事管理系统");    
System.out.println("1、登录");    
System.out.println("2、注册");    
System.out.println("3、查询");    
System.out.println("4、退出");                
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;
    default :
        System.out.println("输入有误");
        break;            
}

switch语句总结

  • switch语句一般都是用做等值判断
  • switch语句能用的类型byte、short、int、char、String、枚举
  • switch语句中不加break的时候的

举例

如果选择"春天"   输出345月份
如果选择"夏天"   输出678月份
如果选择"秋天"   输出9、10、11月份
如果选择"冬天"   输出12、1、2月份
如果选择其他就提示输入有误

判断学生成绩是优秀还是其的,  使用switch case实现

代码实现

/**
    如果选择"春天"   输出345月份
    如果选择"夏天"   输出678月份
    如果选择"秋天"   输出9、10、11月份
    如果选择"冬天"   输出12、1、2月份
    如果选择其他就提示输入有误    
    判断学生成绩是优秀还是其的,  使用switch case实现    
    98 97 90 99   优秀
    88 81 80 82   良好
*/
import java.util.Scanner;
public class Test2{    
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入分数");
        int score = sc.nextInt();        
        switch(score/10){
            case 10:
            case 9:
                System.out.println("陈独秀");
                break;
            case 8:
                System.out.println("良好");
                break;
            case 7:
                System.out.println("中等");
                break;
            case 6:
                System.out.println("及格");
                break;
            default:
                System.out.println("留级");
                break;
        }        
        /*
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入季节");
        String jijie = sc.next();
        switch(jijie){
            case "春天":
                System.out.println("3、4、5月份");
                break;
            case "夏天":
                System.out.println("6、7、8月份");
                break;
            case "秋天":
                System.out.println("9、10、11月份");
                break;
            case "冬天":
                System.out.println("12、1、2月份");
                break;
            default :
                System.out.println("你输入的季节有误");
                break;
        }        
        */
    }

}

循环语句

  • for循环
  • while循环
  • do..while循环

for循环

语法:
for(循环的初始化;循环的结束条件;循环的更新){
    循环体
}

举例:输出一百遍    "我喜欢java"

for(int i=1; i <=100 ;i++){
    System.out.println("我喜欢java"+i);
}


while循环

语法:
while(循环结束条件){

}
举例:计算1~100的和
int i = 1;
int sum = 0;
while(i <= 100){
    sum = sum + i;
    i++;
}
System.out.println("总和为:"+sum);

练习代码

/*
    从键盘上输入任意一个整数,输出这个整数是几位数
    思路:每次除以10,直到为0,循环的次数就是这个数的位数
    1234
    123
    12
    1
    0    
*/
import java.util.Scanner;
public class Test1{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个任意整数");
        int num = sc.nextInt();
        //定义一个变量来保存输入的值
        int temp = num;

        if(num == 0){
            System.out.println("0是一个1位数");
        }else{
            //定义一个变量用来保存循环的次数
            int count = 0;
            while(num != 0){
                num = num /10; 
                count++;      
            }
            System.out.println(temp+"是一个"+count+"位数");
        }        
    }    
}
/*
    从键盘上输入任意一个整数,输出这个数的每一位上的数字
    思路:  每次对10取余得到个位数,然后除以10再对10取余    
    int a = num % 10;
    num =  num / 10
    int b = num % 10;
    num =  num / 10
    int c = num % 10;
    num =  num / 10
    int d = num % 10;
    num =  num / 10
*/
import java.util.Scanner;
public class Test2{    
    public static void main(String[] args){        
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个任意整数");
        int num = sc.nextInt();        
        while(num != 0){
            int i = num % 10;
            System.out.println(i);
            num = num /10;

        }    
    }
}

do while循环

语法:
do{
    循环体
}while(循环结束条件);
举例:计算1~100的和
int i = 1;
int sum = 0;
do{
    sum = sum + i;
    i++;
}while(i <= 100);
System.out.println("总和为:"+sum);

区别:

while循环时先判断再执行循环体
do while循环时先执行再判断。   do while循环,至少会执行一次

break、continue关键字

break       结束当前循环
continue    结束本次继续下一次循环

举例:从键盘输入数字,如果输入0就结束,否则继续输入
Scanner sc = new Scanner(System.in);        
while(true){
    int num = sc.nextInt();
    System.out.println("你输入的为:"+num);
    if(num == 0){
        //结束当前循环
        break;
    }
}
举例:从键盘输入字符串,如果字符串等于"cnm"获取"wocao",就不输出,否则输出
Scanner sc = new Scanner(System.in);    
while(true){
    System.out.println("请输入......");
    String s = sc.next();            
    /*
        if(s.equals("cnm")||s.equals("wocao")){
            continue;//结束本次循环继续下次循环
        }
    */                
    if(!s.equals("cnm")&&!s.equals("wocao")){
        System.out.println("你在说:"+s);
    }                    
}

嵌套循环

代码演示

*****
*****
*****
*****
*****
for(int j=0;j<5;j++){//外层循环负责行数    

    for(int i=0;i<5;i++){//内层循环负责次数    
        System.out.print("*");
    }
    //换行
    System.out.println();
}
*
**
***
****
*****
******
for(int i = 0; i < 6 ;i++){  // 行            
            for(int j = 0; j <= i ;j++ ){ //列
                System.out.print("*");
            }            
            System.out.println();
        }
******
*****
****
***
**
*
for(int i = 0; i < 6; i++){

            for(int j = 0; j < 6-i ;j++){
                System.out.print("*");
            }

            System.out.println();
        }
     *
    **
   ***
  ****
 *****
******
for(int i = 0; i < 6; i++){
    for(int j=0;j< 6-i-1;j++){
        System.out.print(" "); 
    }

    for(int k =0;k <= i ;k++){
        System.out.print("*"); 
    }            
    System.out.println();            
}
*******
*      *
*     *
*      *
*      *
*      *
*******
for(int i = 0; i< 6;i++){ //行            
            for(int j = 0; j < 6; j++){
                if(i == 0 || i == 5 || j == 0 || j == 5){
                    System.out.print("*");
                }else{
                    System.out.print(" ");
                }                 
            }            
            System.out.println();
        }
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
1*5=5   2*5=10  3*5=15  4*5=20  5*5=25
1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36
1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49
1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64
1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81
 //九九乘法表        
for(int i = 1; i <= 9;i++){
      for(int j = 1; j <= i; j++){
          System.out.print(j+"*"+i+"="+(i*j)+"\t");
      }
     System.out.println();
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容