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-20230707170434324
while (循环条件) {
循环体语句;
}
while (i < 100) {
sum += i;
i++;
}
2、do…while循环
对于抢票业务来说,无论三七二十一,先抢了再说,然后在判断是否抢票成功
do-while循环总是执行它的循环体至少一次,因为它的条件表达式在循环的结尾
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是条件语句的一个变种 ,也是条件语句,不过可以用来实现多分支结构。如图:
- 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();
}
}
思维导图
本文来自博客园,作者:icui4cu,转载请注明原文链接:https://www.cnblogs.com/icui4cu/p/18728999