流程控制之分支结构
Scanner类(扫描仪)
作用:用于接收键盘输入的数据 数字 字符串 字符 等数据
java.util包中
步骤:
1.获取工具
2.用工具
功能:
函数
接收整数类型int nextInt()
接收小数类型double nextDouble()
接收字符类型 next().charAt(0)
接收字符串类型 next()
案例:
public class Demo{
public static void main(String[] args){
java.util.Scanner gj = new java.util.Scanner(System.in);
System.out.println("请输入您的数据:");
char a = gj.next().charAt(0);
System.out.println("您输入的数据是:"+a);
}
}
导包
语法:
import 包名1.包名2.包名n.类名;
位置:
定义类之前 package语句之后
注意:
1.import语句只能在 package语句之后 定义类之前!!!!
2.import 语句可以有多个
3.当定义一个类的时候 默认就会导入java.lang包
package cn.wzx;
import java.util.Scanner;
public class Demo{
public static void main(String[] args){
Scanner gj = new Scanner(System.in);
System.out.println("请输入您的数据:");
char a = gj.next().charAt(0);
System.out.println("您输入的数据是:"+a);
}
}
案例:可以在导包时导入包下所有的类
package cn.baizhi.day03;
import java.util.*;
public class Demo{
public static void main(String[] args){
Scanner gj = new Scanner(System.in);
System.out.println("请输入您的数据:");
char a = gj.next().charAt(0);
System.out.println("您输入的数据是:"+a);
}
}
顺序结构
自顶向下逐行执行
分支结构
if分支结构
第一种:if单分支结构
语法:
if(布尔表达式){
语句1;
。。。。
}
执行流程:
|--true --->执行语句1。。。
布尔表达式-->
|--false --->直接跳过if结构
第二种: if ... else
语法:
if(布尔表达式){
语句1;
}else{
语句2;
}
执行流程:
|--true ----> 语句1
布尔表达式-->
|--false----> 语句2
练习:
键盘输入一个整数 判断这个数是奇数还是偶数
package cn.wzx;
import java.util.*;
public class Demo{
public static void main(String[] args){
Scanner s = new Scanner(System.in);
System.out.println("请输入一个整数:");
int i = s.nextInt();
if (i%2==0) {
System.out.println("是偶数");
} else{
System.out.println("是奇数");
}
}
}
if...else 和 三元运算符的转换
三元运算符有局限性
案例:
package cn.wzx;
import java.util.*;
public class Demo{
public static void main(String[] args){
int a = 4;
int b = 5;
String s = a>b?"a>b":"a<b";
if (a>b) {
System.out.println("a>b");
} else{
System.out.println("a<b");
}
}
}
第三种:if...else if...else if... .... else
语法:
if(布尔表达式1){
语句1;
}else if(布尔表达式2){
语句2;
}else if(布尔表达式3){
语句3;
}
。。。。
else if(布尔表达式n){
语句n;
}else{
语句n+1;
}
练习:
0--59 不及格
60 --- 69 及格 61 62
70----89 良好
90---100 优秀
package cn.wzx;
import java.util.*;
public class Demo{
public static void main(String[] args){
Scanner s = new Scanner(System.in);
System.out.println("请输入您的成绩:");
int fenShu = s.nextInt();
if (fenShu>=0&&fenShu<60) {
System.out.print("不及格");
}else if (fenShu<70) {
System.out.println("及格");
}else if (fenShu<90) {
System.out.println("良好");
} else{
System.out.println("优秀");
}
}
}
if语句的嵌套使用:
语法:
if(布尔表达式1){
if(布尔表达式2){
语句1;
}
if(布尔表达式3){
}
}
案例:
package cn.wzx;
import java.util.*;
public class Demo{
public static void main(String[] args){
Scanner s = new Scanner(System.in);
System.out.println("请输入您的成绩(成绩在0到100之间):");
double fenShu = s.nextDouble();
if(fenShu>=0&&fenShu<=100){
if (fenShu>=0&&fenShu<60) {
System.out.print("不及格");
}else if (fenShu<70) {
System.out.println("及格");
}else if (fenShu<90) {
System.out.println("良好");
} else{
System.out.println("优秀");
}
}else{
System.out.println("你脑子进水了 滚蛋");
}
}
}
switch …case结构
语法:
switch(表达式){
case 值1:语句1;
case 值2:语句2;
。。。
case 值n:语句n;
}
执行流程:
用表达式的值和case后的每个值进行匹配 如果表达式的值和case后的值相等那么就执行case后对应的语句
要求:表达式的值的类型 必须是 byte short int char jdk7之后支持String 枚举 其中的一种
case穿透问题:
解决用break语句:
package cn.wzx;
import java.util.*;
public class Demo{
public static void main(String[] args){
Scanner s = new Scanner(System.in);
System.out.println("请输入一个1-7的整数:");
int i = s.nextInt();
switch(i){
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: System.out.println("星期六");break;
case 7: System.out.println("星期日");break;
}
}
}
==================================================================
default语句:
注意:
1.当表达式的值和所有case的值都不匹配 就会执行default语句
2.default语句的位置和执行顺序无关 无论放在第几行都是最后执行
3.当default语句放在其他行时必须加break语句 否则会出现case穿透
4.default语句放在最后一行可以省略break
package cn.baizhi.day03;
import java.util.*;
public class Demo{
public static void main(String[] args){
Scanner s = new Scanner(System.in);
System.out.println("请输入一个1-7的整数:");
int i = s.nextInt();
switch(i){
default:System.out.println("你个傻叉");
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: System.out.println("星期六");break;
case 7: System.out.println("星期日");break;
}
}
}
==============================================================
注意:case后的值不可以重复 如果重复直接报错
import java.util.*;
public class Demo{
public static void main(String[] args){
Scanner s = new Scanner(System.in);
System.out.println("请输入一个1-7的整数:");
int i = s.nextInt();
switch(i){
case 1: System.out.println("星期一");break;
case 2: System.out.println("星期二");break;
case 2: System.out.println("星期三");break;
case 4: System.out.println("星期四");break;
case 5: System.out.println("星期五");break;
case 6: System.out.println("星期六");break;
case 7: System.out.println("星期日");break;
default:System.out.println("你个傻叉");break;
}
}
}
===============================================================
case穿透问题:
案例:用switch case结构 改写 成绩的案例
package cn.wzx;
import java.util.*;
public class Demo{
public static void main(String[] args){
Scanner s = new Scanner(System.in);
System.out.println("请输入你的分数:");
int score = s.nextInt();
if (score>=0&&score<=100) {
switch(score/10){
case 6: System.out.println("及格");break;
case 7:
case 8: System.out.println("良好");break;
case 9:
case 10: System.out.println("优秀");break;
default: System.out.println("不及格");
}
} else {
System.out.println("你个傻叉");
}
}
}
局部变量
概念:定义在函数内部的变量叫做局部变量
作用域:能够访问到变量的范围
特点:
1.变量没有赋值不能使用
2.在重合作用域内不能定义同名局部变量
3.从定义位置开始到所在代码块结束,是局部变量的作用域
代码块:
{}
案例:不能在重合作用域范围定义重名的局部变量
package cn.wzx;
import java.util.*;
public class Demo{
public static void main(String[] args){
int a =30;
{
int a = 20;
System.out.println(a);
}
{
}
}
}
案例:在不同的代码块 不能相互访问局部变量
package cn.wzx;
import java.util.*;
public class Demo{
public static void main(String[] args){
{
int a = 20;
System.out.println(a);
}
{
System.out.println(a);
}
}
}
案例:在没有重合作用域范围 可以定义同名的局部变量
package cn.wzx;
import java.util.*;
public class Demo{
public static void main(String[] args){
{
int a = 20;
System.out.println(a);
}
{
int a = 30;
System.out.println(a);
}
}
}
注意
当if结构后的{}省略时 if结构只对其后的第一条语句起作用