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

  1. 顺序结构。

  2. 选择结构。

  3. 循环结构。

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

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

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

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

顺序结构:

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

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();这一行报语法错误了。

结果:

选择结构:

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

一、输入你的存款,如果大于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( 条件 ){ 要执行的代码 }

注意:

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

结果:

   

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

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

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

结果:

三、输入你的存款,如果大于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,"
                "\n2.套餐更改请按2"
                "\n3.宽带业务请按3"
                "\n4.企业业务请按4"
                "\n5.人工服务请按5"
                "\n6.其它业务请瞎按"
                "\n请选择:");
        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结构,大家可以把这个小尾巴去掉看看结果有什么不一样。

结果:

循环结构:

循环结构常用的有四种: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);
    }

执行结果:

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

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("\n=======================");
        for (int i = 0; i < 10; i++) {
            if(i==5){
                break;
            }
            System.out.print(i+",");
        }
    }

结果:

注意到两个的区别了吧

运行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,则继续询问

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

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

《Java从入门到放弃》JavaSE篇:程序结构的更多相关文章

  1. Java性能测试从入门到放弃-概述篇

    Java性能测试从入门到放弃-概念篇 辅助工具 Jmeter: Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试.JMeter 可以用于对服务器.网络 ...

  2. Java快速入门-03-小知识汇总篇(全)

    Java快速入门-03-小知识汇总篇(全) 前两篇介绍了JAVA入门的一系小知识,本篇介绍一些比较偏的,说不定什么时候会用到,有用记得 Mark 一下 快键键 常用快捷键(熟记) 快捷键 快捷键作用 ...

  3. Java从入门到放弃18---Map集合/HashMap/LinkedHashMap/TreeMap/集合嵌套/Collections工具类常用方法

    Java从入门到放弃18—Map集合/HashMap/LinkedHashMap/TreeMap/集合嵌套/Collections工具类常用方法01 Map集合Map集合处理键值映射关系的数据为了方便 ...

  4. C++第三篇--程序结构

    C++第三篇--程序结构 1. 初识程序结构 将类中的成员函数全部放在类外实现,类中只负责声明该函数 person.cpp #include <stdio.h> class Person{ ...

  5. golang快速入门(六)特有程序结构

    提示:本系列文章适合对Go有持续冲动的读者 阅前须知:在程序结构这章,更多会关注golang中特有结构,与其他语言如C.python中相似结构(命名.声明.赋值.作用域等)不再赘述. 一.golang ...

  6. 《Java从入门到放弃》JavaSE入门篇:变量

    变量是什么玩意呢? 变量,顾名思义就是能变化的量 - - 好吧,举个栗子. 图片上的各种餐具,就是变量,因为同一个盘子可以在不同的时间装不同的菜,在这一桌可以装土豆肉丝,在下一桌可以装清炒黄瓜(当然, ...

  7. 《Java从入门到放弃》JavaSE入门篇:面向对象语法一(入门版)

    前一次简单说明了一下面向对象编程的概念,今天我们就把这些概念通过Java语法来实现,然后看看效果. 来看第一个案例:定义女神类,再根据女神类创建三个女神对象,并使用女神对象的属性和方法. 第一步:定义 ...

  8. 《Java从入门到放弃》JavaSE入门篇:文件操作

    Java中的文件操作还有点小复杂··· 不过没关系,我会把它讲得很简单,嘿嘿嘿!!! 在讲Java中的文件操作前,先了解一个概念--"流",比如我们把一个杯子的水倒到另一个同样大小 ...

  9. 《Java从入门到放弃》JavaSE入门篇:异常

    异常!!!看看生活中的异常例子: 正常情况下,从家到公司上班,只需要20分钟!但如果在路上碰到堵车或修路或车突然自燃等问题,那就没办法正常去上班了.其中堵车或修路或车突然自燃等问题就属于异常. 碰到异 ...

随机推荐

  1. FineReport单元格扩展与父子格设置

    1.描述 在讲述报表设计之前,首先介绍一下FineReport报表制作的几个基本概念,本章节介绍FineReport报表赖以生存的单元格扩展. 扩展,顾名思义,就是由一变多,那么单元格扩展就是指在we ...

  2. jvm003 类加载的过程

    类加载的过程 一.加载 在加载阶段虚拟机需要完成以下三件事: 通过一个类的全限定名称来获取此类的二进制字节流 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构 在内存中生成一个代表这个类的 ...

  3. Java基础语法<十一> 异常 断言 日志 调试

    1 处理错误 1.1 异常分类 Error类层次描述了Java运行时系统的内部错误和资源耗尽错误. 设计Java程序时,主要关注Exception层次结构. 由程序错误导致的异常属于RuntimeEx ...

  4. 看懂 ,学会 .NET 事件的正确姿势

    一.事件的本质       举个例子你是个取向正常的青年男性,有个身材火辣,年轻貌美,腿长肤白的美女,冲你一笑,给你讲了一个ABCD羊吃草的故事.你有什么反应?可能你关注点在于颜值,身材,故事,故事含 ...

  5. (转)浅析CSS——元素重叠及position定位的z-index顺序

    多次在项目中遇到html页面元素的非期待重叠错误,多数还是position定位情况下z-index的问题.其实每次解决类似问题思路大致都是一样的,说到底还是对z-index的理解比较模糊,可以解决问题 ...

  6. Kibana5 数据探索使用(Discover功能)

    认识Kibana Kibana 是一个为 Logstash 和 ElasticSearch 提供的日志分析的 Web 接口.可使用它对日志进行高效的搜索.可视化.分析等各种操作.Kibana的使用场景 ...

  7. 【JAVASCRIPT】React入门学习-文本渲染

    摘要 react 学习包括几个部分: 文本渲染 JSX 语法 组件化思想 数据流 文本渲染 1. 纯文本渲染 <!DOCTYPE html> <html> <head&g ...

  8. 用Eclipse生成JPA元模型

    在JPA criteria 动态查询中,有个"元模型"的东西,它是根据"实体"类动态生成的一个类,它的主要作用是实现JPA criteria查询的"类 ...

  9. IEnumerable & IEnumerator

    IEnumerable 只有一个方法:IEnumerator GetEnumerator(). INumerable 是集合应该实现的一个接口,这样,就能用 foreach 来遍历这个集合. IEnu ...

  10. linux下更改ssh登录前的banner信息

    默认情况下,telnet ip 22端口会显示 openssh的版本信息 whereis sshd 如 cp /usr/sbin/sshd /usr/sbin/sshd2016.bak sed -i  ...