1.3:流程控制语句(上)

前言:菜鸟一枚,如有问题欢迎大家在评论区指出,我们一起学习。

1.3.1:输入语句Scanner

 使用方法:

//使用Scanner需要导入这个包   如不导入,在使用Scanner时需要用全称(java.util.Scanner)
import java.util.Scannner;
    
Scanner input = new Scannner(System.in);
int num = input.nextInt();//输入int类型数据
long bigNum = input.nextLong();//long类型
double d = input.nextDouble();//short类型
boolean b = input.nextBoolean();//布尔类型
String s = input.next();//字符串类型
String ss = input.nextLine();//另一种字符串输入方式
char c = input.next().charAt(0);//先按照字符串接收,然后再取字符串的第一个字符(下标为0)

.next()与.nextLine()区别:

.next() :在输入字符串时,在未读取到有效数据时,会吞掉缓冲区的空格和回车。在获取到有效数据后,遇到空格和回车就会停止输入。

String s = input.next();//输入   中国 人民,中国前面的空格和中国后面的内容都不会赋给s,前面的空格会被吞掉,后面的遇到空格停止输入了。

.nextLine() :在输入字符串时,遇到回车就会停止输入。

String ss = input.nextLine();//输入  中国  人民,会原封不动赋给ss。

注意:虽然.next()和.nextLine()都能读取字符串,但是在使用时有陷阱。.next()和.nextLine()都可以与.nextInt()等混用,但是当.nextLine()在.nextInt()等下面时,会得到不同的结果。

int num = input.nextInt();
String s = input.nextLine();
//这段代码可以正常给num赋值,但是s确是一个空的字符串,无法输入
/*
原因是在使用.nextInt()等方法输入时会以回车结束输入,这个回车会存在输入缓冲区,这些方法在使用时会吞掉回车不会读取它。(包括.next()方法,因为它没读到有效数据)但是.nextLine()会直接读取这个回车,导致停止输入。
*/


//解决方法
int num = input.nextInt();
input.nextLine();//这个用于吞掉缓冲区的回车,不需要接收,便于下一个正常输入
String s = input.nextLine();

1.3.2:if-else结构

 if-else结构有单分支,双分支,多分支三种结构,并且if-else可以嵌套。

//单分支
if(条件表达式){
  	语句体;
}

//双分支    
if(关系表达式) { 
  	语句体1;
}else {
  	语句体2;
}
    
//多分支    
if (判断条件1) {
  	执行语句1;
} else if (判断条件2) {
  	执行语句2;
}
...
}else if (判断条件n) {
 	执行语句n;
} else {
  	执行语句n+1;
}

//嵌套
if(关系表达式) { 
  	if(关系表达式) { 
  		语句体1;
	}else {
  		语句体2;
	}  
}else {
  	语句体3;
}

 

1.3.3: switch- case结构

 语法结构:

switch(表达式){
    case 常量值1:
        语句块1;
        break;
    case 常量值2:
        语句块2;
        break;  
    default:
        语句块n+1;
}

执行过程,将表达式的值与各个常量自上往下进行比较,若是相等,则执行case对应的语句块。在执行语句块完毕时,若有break语句,则跳出switch-case结构,如果没有该语句,则会进行case的穿透。所谓case穿透,就是没有遇到break或者default时,程序会一直执行下去,知道所有语句执行结束。

注意:表达式值的类型只能是:4种基本数据类型(byte,short,int,char),两种引用数据类型(String,枚举)。

注意:case后面必须是常量,而且不能重复。

注意:default无论在哪个位置,总是最后执行,但case必须自上往下。

利用case穿透简化代码:

//不利用case穿透需要重复写输出语句
switch(num){
    case 1:
    case 3:
    case 5:
        System.out.println("奇数");
        break;
    case 2:
    case 4:
    case 6:
        System.out.println("偶数");
        break;
}

//错误方法1
switch(num){
    case 1,3,5:
        System.out.println("奇数");
        break;
    case 2,4,6:
        System.out.println("偶数");
        break;
}

//错误方法2
switch(num){
    case 1|3|5:
        System.out.println("奇数");
        break;
    case 2|4|6:
        System.out.println("偶数");
        break;
}


//java12以后的新方法,case后面可以接多个常量,并且每一句都会自动break,不用担心漏写break
		switch(month) {
			case 1,3,5 -> System.out.println("奇数");
			case 2,4,6 -> System.out.println("偶数");
		};

 Java14新特性-switch表达式_idea java source 12不支持switch规则-CSDN博客

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oooosuperstar

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值