1 程序流程
尽管现实世界的问题是复杂的、千变万化的,但与之相对应的计算机算法流程只有三种结构。
它们可以解决几乎全部的问题,任何一种编程语言都具备这三种流程结构:
1)顺序结构
2)分支结构(选择结构)
3)循环结构
1.1 顺序结构
当没有任何有关流程控制的语句时,程序从上而下,一行一行地顺序执行
1.2 分支结构
若条件P为真,则执行A,否则执行B
1.3 循环结构
若条件P为真,则执行循环体代码,执行一次完毕后,再次判断条件P是否为真,若为真则执行循环体代码。然后重复上面的过程,直到P为假,退出循环
2 分支结构
根据一定的条件有选择地执行或跳过特定的语句。
简单来说,就是根据不同的情况做出不同的决定
2.1 if 结构
基本语法:
if(表达式) {
语句块
}
流程图:
描述: 当表达式值为ture时,执行语句块A,否则跳过语句块A
语法上,语句块仅有一句代码时,可以省略{},但是一般不建议这么做。
2.2 if-else 结构
世界上最远的距离,是我在if里你在else里,虽然经常一起出现,但却永不结伴执行。
基本语法:
if(表达式) {
语句块A
} else {
语句块B
}
流程图:
描述:表达式为true时,执行语句块A;表达式为false时,执行语句块B
2.3 if-else if- else结构
基本语法:
if(表达式1) {
语句块1
} else if (表达式2) {
语句块2
} else if (表达式3) {
语句块3
}
……
else if (表达式n) {
语句块n
} else {
语句块n+1
}
注意:
else if 可以有多个,也可以没有
else 可以有,可以没有
流程图:
2.4 分支结构嵌套
分支结构中还可以按照某些条件继续进行判断。
如果有多个条件同时参与判断,此时可以使用if嵌套来解决。
if嵌套通过外层语句和内层语句的协作,可以增强程序的灵活性
if(条件1) {
if(条件2) {
代码块1
} else {
代码块2
}
} else {
代码块3
}
流程图:
2.5 switch结构
基本语法:
switch(表达式) {
case 值1:
语句块1;
break;
case 值2:
语句块2;
break;
……
case 值N:
语句块N;
break;
[default:
语句块;
break;]
}
1)表达式的值必须是以下几种类型之一:
char,byte,short,int,enum,String(Jdk7之后);
不能用boolean,long,float,double等其他类型
2)case子句中的值必须是常量值,不能是一个范围
3)所有case子句中的值不能重复,否则编译出错
4)default子句是可选的
5)break语句用于执行完一个case分支后跳出switch语句块;如果没有,引起case贯穿
2.6 if和switch比较
1)相同点
都可以用于分支判断
2)不同点
switch结构用于处理等值判断的情况
if结构用于判断连续区间的情况
附录
通过 Scanner 类来获取用户的输入
注意:无脑记就行!!!
导包:
写在class的前面
import java.util.Scanner;
Scanner的用法:
// 创建Scanner对象,从键盘接收数据
Scanner scanner = new Scanner(System.in);
System.out.println("请输入年龄:");
// 接收键盘输入的整数
int age = scanner.nextInt();
// 其他
scanner.nextByte();
scanner.nextShort();
scanner.nextInt();
scanner.nextLong();
scanner.nextFloat();
scanner.nextDouble();
scanner.nextBoolean();
// 接收键盘输入的字符串
scanner.next();
scanner.nextLine();
局部变量
方法或代码块("{}"括起来的语句)中定义的变量成为局部变量
局部变量只在局部范围内有效,它的作用范围从声明开始,直到包含它的代码块结束
局部变量必须声明并且赋值才可以使用
public static void main(String[] args) {
// 局部变量,只在局部范围内有效
// main方法中定义的局部变量,整个main方法中都可以使用
int a = 100;
int b = 20;
if(a > b) {
// 代码块中定义的局部变量只在该代码块内有效
int max = a; // 语句1
System.out.println(max);
} else {
int max = b; // 语句2
System.out.println(max);
}
// 语句1 和语句2在不同的代码块中,变量名相同互不影响
}
public static void main(String[] args) {
int a = 100;
int b = 20;
int max = 0; // 语句1
if(a > b) {
// int max = a; // 语句2
max = a;
} else {
max = b;
}
System.out.println(max);
// 语句1和语句2不能同时出现,否则报错
}