3.Java语法基础进阶

本章目标

  • 控制台输入
  • 循环扩展
  • 控制扩展
  • 实现HRMS后台

本章内容

一、控制台输入

在应用程序开发中,用户与程序的交互(输入/输出)都是必不可少的功能。从JDK5.0开始,Java预定义的类库中提供了一个非常方便使用工具类Scanner,帮助程序在运行中接受用户输入的信息。

1、Scanner常用方法

Scanner对象的常用方法包括:

方法 说明
scanner.nextLine() 读取一行文本,以换行作为分隔符
scanner.next() 读取一个单词,以空格作为分隔符
scanner.nextInt() 读取一个整数
scanner.nextDouble() 读取一个浮点数

Scanner对象需要依赖一个输入流(I/O流的内容在之后的课程中专门讨论),如果要读取用户的输入,只需要系统提供的代表键盘设备的基本输入流就可以了:

Scanner input = new Scanner(System.in);

2、示例

import java.util.Scanner;
public class ScannerDemo{
    public static void main(String[] args){
      Scanner input = new Scanner(System.in);
        System.out.println("您贵姓?");
        String surname = input.next();
        System.out.println("欢迎您, " + surname + " 先生。");
    }
}

因为Scanner类不属于java.lang包,因此必须通过import语句引入到源代码中;

通过系统标准输入设备构造一个Scanner对象(获得一个输入工具);

读取用户输入的内容

二、循环扩展

1、while循环

引出求1到100的和

while语句是Java最基本的循环语句。当它的控制表达式是真时,while语句重复执行一个语句或语句块;直到控制表达式为假时才结束。

image

image-20230707170434324

    while (循环条件) {
        循环体语句;
    }

        while (i < 100) {
            sum += i;
            i++;
        }

2、do…while循环

对于抢票业务来说,无论三七二十一,先抢了再说,然后在判断是否抢票成功

do-while循环总是执行它的循环体至少一次,因为它的条件表达式在循环的结尾

image

image-20230707170521515

    do {
        // 循环体
    } while (循环条件);

3、三种循环的使用场景

语句 场景
for 当应用次数是明确的情况,一般使用for
while 不确定具体循环次数的情况下使用
do…while 无论条件是否成立都要执行一次的情况下使用

三、控制结构

想判断通过Scanner输出的值是不是偶数,怎么实现?还想判断是不是奇数

用户登陆时,要求用户名和密码都相等才行,这时怎么判断呢?

1、简介

条件语句是程序设计语言中最基本的流程控制语句,几乎任何一门程序设计语言的条件语句都用到了if关键字,因而条件语句也被称为if语句。

条件语句分简单语句和复合语句,如果条件语句的分支中又包括了条件语句,即称为复合条件语句,或嵌套条件语句;否则称为简单语句。

2、if语句

2.1、只关注条件成立

if(条件){
//条件成立做某个件事情
}

示例:

String key1 = "无门钥匙";
        if(key1=="大门钥匙") {
            System.out.println("进入家中");
        }

2.2、即关注成立又关注不成立

if(条件){
 //条件成立做某件事情
}else{
 //条件不成立时做某件事情
}

示例:

    String key1 = "无门钥匙";
        if(key1=="大门钥匙") {
            System.out.println("进入家中");
        }else {
            System.out.println("只能在门口等待");
        }

2.3、嵌套If

if(条件){
    if(条件){

    }else{

   }
}else{

}

示例:


String key1 = "大门钥匙";
        String key2 = "无房门钥匙";
        if(key1=="大门钥匙") {
            if(key2 == "房门钥匙") {
                System.out.println("上床睡觉");
            }else {
                System.out.println("进入院子,吃葡萄");
            }

        }else {
            System.out.println("只能在门口等待");
        }

2.4、多条件

if(条件){
条件成立做某个事情
}else if(条件2){

}else if(条件3){

}.....
else{

}

示例:

    Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个成绩");
        int score = scanner.nextInt();
        if(score > 100 ) {
            System.out.println("请输入正确的成绩");
        }else if (score <= 100 && score >= 90) {
            System.out.println("优秀");
        } else if (score >= 80) {
            System.out.println("良好");
        } else if (score >= 60) {
            System.out.println("及格");
        } else if (score >= 0) {
            System.out.println("不及格");
        } else {
            System.out.println("请输入正确的成绩");
        }
        scanner.close();

    }

3、案例 (贯穿项目相关)

统计一组人员名单中的2字名人员/3字名人员的个数

遍历-挑选-累计模式

public class TestArray {

    public static void main(String[] args) {
        String[] names = {"张三峰","李四","王麻子","田七","李行礼"};
        System.out.println(names.length);
        int two =0,three=0;
        for (int i = 0; i < names.length; i++) {
            if(names[i].length()==2) {
                two++;
            }
            if(names[i].length()==3) {
                three++;
            }

        }
        System.out.println("名字有两个字的人数有:"+two);
        System.out.println("名字有三个字的人数有:"+three);
    }

}

4、控制结构-switch(分支)

switch是条件语句的一个变种 ,也是条件语句,不过可以用来实现多分支结构。如图:

image

  • default就是如果没有符合的case就执行它,default并不是必须的.
  • case后的语句可以不用大括号.switch语句的判断条件可以接受int,byte,char,short,String,不能接受其他类型.
  • 一旦case匹配,就会顺序执行后面的程序代码,而不管后面的case是否匹配,直到遇见break,利用这一特性可以让好几个case执行统一语句

示例

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一周的某一天");
        int day = scanner.nextInt();
        switch (day) {
        case 1:
            System.out.println("蓝色");
            break;
        case 2:
            System.out.println("白色");
            break;
        case 3:
            System.out.println("绿色");
            break;
        case 4:
            System.out.println("粉色");
            break;
        case 5:
            System.out.println("红色");
            break;
        case 6:
        case 7:
            System.out.println("大红色");
            break;
        default:
            System.out.println("无色");
        }
        System.out.println("end");

    }

}

5、break 和 continue

在循环语句的主体内(statement),可以使用break语句和continue来控制循环流程。

  • break:跳出循环,不再执行剩余部分。
  • continue:停止当次循环,回到循环起始处,进入下一次循环操作。

break,高中跑步时,肚子疼只能退出

continue,跑步偷懒,躲在大树后面直接进入到下圈

        for (int i = 1; i < 6; i++) {
            /*if(i==2) {//表示 肚子疼了
                System.out.println("不能坚持 跑步");
                break;
            }*/
            if(i%2==0) {//偷懒,不想跑了
                System.out.println("躲在大树后面");
                continue;
            }

            System.out.println("跑第"+i+"圈");
        }

四、(贯穿案例)实现HRMS后台

1、要求

String[] names ={“王婧”,“苏小雨”,“唐纯莉”,“王璐苑”,“姜藤椒”,“姜子牙”,“唐骏”};

主菜单显示:

按1.查询完整名单

按2.新增人员

按2后显示请录入新人员,回车后新人员加入名单,显示加入成功,同时再次显示主菜单.

此时按1查出的完整名单中有新加入的人员.

2、实现

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        String[] employees = new String[5];//构造一个初始容量为5的数组
        Scanner scanner = new Scanner(System.in);//构造一个接收键盘输入的对象
        int index = 0;//代表当前数组的下标所在位置
        System.out.println("欢迎进入人事管理系统!!!");
        while(true) {
            System.out.println("请选择操作:1、显示所有员工 2、添加员工 9、退出");
            int operator = scanner.nextInt();
            if(operator == 9) {
                break;
            }else if(operator == 1) {//显示所有员工的
                for (int i = 0; i < employees.length; i++) {
                    if(employees[i]!=null) {
                        System.out.println("当前员工:"+employees[i]);
                    }
                }
            }else if(operator==2) {
                System.out.println("请输入员工姓名");
                String empName = scanner.next();
                employees[index] = empName;//得到员工姓名,并添加到数组中
                index++;//指向到数组的下一个坐标
            }
        }
        System.out.println("再见!!");
        scanner.close();

    }

}

思维导图

image

posted @ 2025-02-21 12:10  icui4cu  阅读(11)  评论(0)    收藏  举报