zoukankan      html  css  js  c++  java
  • 《Java从入门到放弃》JavaSE篇:程序结构

    程序的结构一般分为三种:

    1. 顺序结构。

    2. 选择结构。

    3. 循环结构。

    一、顺序结构:这个不用多说吧,跟我们平时写文章的顺序一样,从上往下。

    wKioL1mf0MqwRCa0AAA_SnPBxrY664.png

    二、选择结构:从名字就能看出,要选择嘛,到底是要漂亮滴妹子,还是要有钱滴妹子呢!当然,如果是个吊丝码农滴话,那你就不要多想了,还是老老实实码代码吧···

    wKiom1mf0RTRSGADAAAuZCa1e_E965.png

    三、循环结构:循环啊,就是一直转啊转啊转啊,转到出意外为止。

    wKioL1mf0e3AN0FBAAAyQfKQ-vM590.png

    接下来还是老规矩,通过小示例来学习语法吧。

    顺序结构:

    一、输入姓名和年龄,输出自我介绍。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        public static void main(String[] args) {
            //创建输入数据的对象,具体什么叫对象···,先不用管吧
            Scanner input = new Scanner(System.in);
             
            String name;    //姓名
            int age;        //年龄
            System.out.print("请输入姓名:");
            name = input.next();
            System.out.print("请输入年龄:");
            age = input.nextInt();
             
            System.out.println("大家好,我叫"+name+",今年"+age+"岁,请多关照。");
        }

    注意:

        这就是一个标准的顺序结构,代码会从上往下执行,如果你把int age;这句话放到最后,那就会在age = input.nextInt();这一行报语法错误了。

    结果:

    wKiom1mf0_KSWfLMAAAjopYBmVk741.png

    选择结构:

    选择结构的语法有四种,我们通过下面的案例来了解。

    一、输入你的存款,如果大于5000则加上“壕”的头衔。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
        public static void main(String[] args) {
            //创建输入数据的对象,具体什么叫对象···,先不用管吧
            Scanner input = new Scanner(System.in);
             
            String name;    //姓名
            int deposit;    //存款
            System.out.print("请输入姓名:");
            name = input.next();
            System.out.print("请输入存款:");
            deposit = input.nextInt();
             
            System.out.print("大家好,我叫"+name);
            if(deposit>5000){
                System.out.print("(壕)");
            }
            System.out.println("。");
        }

    语法:

        if( 条件 ){ 要执行的代码 }

    注意:

        条件成立时会执行{}中的所有代码。

    结果:

    wKioL1mf1tPADQwqAAAW6tvQi2k216.png    wKioL1mf1uKhKQmTAAAY338-GiU737.png

    二、输入你的存款,如果大于5000则加上“壕”的头衔,否则加上“穷13”的头衔。

    1
    2
    3
    4
    5
    6
            if(deposit>5000){
                System.out.print("(壕)");
            }
            else{
                System.out.print("(穷13)");
            }

    注意:别的代码不用动,只需要在if(){}结构上加上else{}就OK了,else{}表示条件不成立时的执行代码。

    结果:

    wKiom1mf2MmQ4_YKAAAOqZ5QPuI339.png

    三、输入你的存款,如果大于50000,则加上“神壕”的头衔,否则如果大于30000,则加上“金壕”的头衔,否则如果大于10000,则加上“壕”的头衔,否则加上“穷13”的头衔。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
            if(deposit>50000){
                System.out.print("(神壕)");
            }
            else if(deposit>30000){
                System.out.print("(金壕)");
            }
            else if(deposit>10000){
                System.out.print("(壕)");
            }
            else{
                System.out.print("(穷13)");
            }

    注意:这种语法叫多分支选择结构(一般用于选择情况大于2的场合,比如演唱会门票的级别、你的女神的胸肌是A还是BCDEF等)。

    结果就不展示了。

    四、查询余额请按1,套餐更改请按2,宽带业务请按3,企业业务请按4,人工服务请按5,其它业务请瞎按.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
        public static void main(String[] args) {
            //创建输入数据的对象,具体什么叫对象···,先不用管吧
            Scanner input = new Scanner(System.in);
            int num;
            System.out.print("1.查询余额请按1,"
                    " 2.套餐更改请按2"
                    " 3.宽带业务请按3"
                    " 4.企业业务请按4"
                    " 5.人工服务请按5"
                    " 6.其它业务请瞎按"
                    " 请选择:");
            num = input.nextInt();
             
            switch (num) {
            case 1:
                System.out.println("您的余额为0。");    break;
            case 2:
                System.out.println("改完了,请回吧。");    break;
            case 3:
                System.out.println("宽带装好了,请交钱1998¥。");    break;
            case 4:
                System.out.println("请上传企业注册资料。");    break;
            case 5:
                System.out.println("我们正在招聘服务人员,请稍等...");    break;
     
            default:
                System.out.println("乱按好玩吧...");    break;
            }
        }

    注意:

    1. switch语法一般用于数值类型和布尔类型等值判断的场合,最新版的JDK支持String类型了。小伙伴们可以自己试试。

    2. 每个case后的语句执行完后都有个小尾巴(break;),表示从这儿退出switch结构,大家可以把这个小尾巴去掉看看结果有什么不一样。

    结果:

    wKiom1mf3RTTZKHyAAArPoVQZ0Y868.png

    循环结构:

    循环结构常用的有四种:while、do...while、for、foreach(后面讲集合时再介绍)。

    对应的语法都很简单,我们通过求100以内的奇数和来了解一下,后面再来分析一个经典案例。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
        public static void main(String[] args) {
            //求100以内的奇数和
             
            //1.while循环
            int i = 1;    //循环的初值
            int s = 0;    //保存和
            while (i<=100) {    //循环的条件
                s += i; //循环的内容
                i += 2;    //循环的步长(也就是循环变量的值如何变化)
            }
            System.out.println("while循环结果:"+s);
             
            //变量值还原
            i = 1;
            s = 0;
            //2.do...while循环
            do {
                s += i;
                i += 2;
            while (i<=100);
            System.out.println("do...while循环结果:"+s);
             
            //变量值还原
            s = 0;
            //3.for循环
            for (i = 1; i <= 100; i+=2) {
                s += i;
            }
            System.out.println("for循环结果:"+s);
        }

    执行结果:

    wKiom1mjzN7AGnbzAAAd79DiQS0175.png

    从上面的语法应该可以看出,循环主要有四个点:初值、条件、步长、循环体(内容)。那么这三种循环的语法有什么区别呢?

    while循环:侧重于不确定循环次数的场合,先判断,如果条件成立则进入循环。

    do...while循环:侧重于不确定循环次数的场合,先执行一次,之后如果条件成立则时入循环。

    for循环:侧重于确定循环次数的场合。

    与循环配合使用的还有两个关键字:continue和break;

    他们的作用,看代码和结果吧:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
        public static void main(String[] args) {
            for (int i = 0; i < 10; i++) {
                if(i==5){
                    continue;
                }
                System.out.print(i+",");
            }
            System.out.println(" =======================");
            for (int i = 0; i < 10; i++) {
                if(i==5){
                    break;
                }
                System.out.print(i+",");
            }
        }

    结果:

    wKioL1mjz6_D1SW1AAAbiam_rjw849.png

    注意到两个的区别了吧

    运行continue后,就不再执行循环里面continue后面的代码,直接运行i++去了。

    运行break后,则直接跳出了循环,后面的都不执行了。

    经典案例:登录功能,如果账号密码输入正确则登录成功,否则请再次输入密码。

        分析:

        登录时要输入几次账号密码?很明显不知道啊!!!所以for循环被排除了。

        然后再判断,是要先输入账号密码后判断,还是先判断后再输入账号密码呢?

        这也很明显,要先输入了才需要判断啊!!!所以while循环也被排除了。

        最后就剩下do...while循环了。代码如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
        public static void main(String[] args) {
            //模拟登录功能
            //分析过程:
            //1.定义保存账号和密码的变量
            Scanner input = new Scanner(System.in);
            String inLoginID;
            String inLoginPWD;
            //2.因为还没学习数据库,所以定义两个变量保存正确的账号和密码
            String loginID = "liergou";
            String loginPWD = "haha250";
            //3.输入账号和密码
            do{
                System.out.print("请输入账号:");
                inLoginID = input.next();
                System.out.print("请输入密码:");
                inLoginPWD = input.next();
                //4.判断输入的账号和密码与正确的是否相同(判断字符串是否相等使用equals方法),
                //如果相同等提示登录成功,循环结束,否则提示重新输入
                if(inLoginID.equals(loginID) && inLoginPWD.equals(loginPWD)){
                    System.out.println("登录成功!");
                    break;
                }
                else{
                    System.out.println("账号和密码不匹配,请重新输入!");
                }
            }while (true);
        }

    如果你非要使用while和for,那··············当然也是可以滴,只不过代码复杂度会上升,特别是使用for来写的话会很奇怪,大伙可以看看:

    这是使用while的写法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
        public static void main(String[] args) {
            //模拟登录功能
            //分析过程:
            //1.定义保存账号和密码的变量
            Scanner input = new Scanner(System.in);
            String inLoginID;
            String inLoginPWD;
            //2.因为还没学习数据库,所以定义两个变量保存正确的账号和密码
            String loginID = "liergou";
            String loginPWD = "haha250";
            //3.输入账号和密码
            System.out.print("请输入账号:");
            inLoginID = input.next();
            System.out.print("请输入密码:");
            inLoginPWD = input.next();
                 
            while (true){
                //4.判断输入的账号和密码与正确的是否相同(判断字符串是否相等使用equals方法),
                //  如果相同等提示登录成功,循环结束,否则提示重新输入
                if(inLoginID.equals(loginID) && inLoginPWD.equals(loginPWD)){
                    System.out.println("登录成功!");
                    break;
                }
                else{
                    System.out.println("账号和密码不匹配,请重新输入!");
                    //下面的代码重复了
                    System.out.print("请输入账号:");
                    inLoginID = input.next();
                    System.out.print("请输入密码:");
                    inLoginPWD = input.next();
                }
            }
        }

    下面是使用for的写法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
            for (;true;){
                //4.判断输入的账号和密码与正确的是否相同(判断字符串是否相等使用equals方法),
                //  如果相同等提示登录成功,循环结束,否则提示重新输入
                if(inLoginID.equals(loginID) && inLoginPWD.equals(loginPWD)){
                    System.out.println("登录成功!");
                    break;
                }
                else{
                    System.out.println("账号和密码不匹配,请重新输入!");
                    //下面的代码重复了
                    System.out.print("请输入账号:");
                    inLoginID = input.next();
                    System.out.print("请输入密码:");
                    inLoginPWD = input.next();
                }
            }

    最后,再布置几个练习,各位看官自己分析并练习练习吧,看具体使用哪种循环最好。

    1.    打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

    2.    将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

    3.    球从100M高度自由落下,每次落地后反跳回原高度的一半,再落下,求它在第10次落地时,共经过多少M?第10次反弹多高?

    4.    任意输入一个整数(小于6位),求它的位数询问

    5.  “我爱你,嫁给我吧?”,选择“你喜欢我吗?(y/n):",如果输入为y则打印”我们形影不离“,若输入为n,则继续询问

    如果有不确定答案的练习,就在评论里讨论吧···j_0028.gif

     

     “软件思维”博客地址:51CTO博客园,感兴趣的小伙伴可以去看相关的其它博文。 

  • 相关阅读:
    Java 开源博客——B3log Solo 0.6.6 正式版发布了!
    Java 开源博客——B3log Solo 0.6.6 正式版发布了!
    <Linux> Xen虚拟机下挂载
    Android中的动画详解系列【3】——自定义动画研究
    ueditor批量上传word图片
    富文本编辑器word
    帝国CMS 7.2-插件包整合
    PHPCMS v9插件包整合
    富文本编辑器从word粘贴公式
    富文本编辑器直接从 word 中复制粘贴公式
  • 原文地址:https://www.cnblogs.com/yixueyuan/p/7446709.html
Copyright © 2011-2022 走看看