分支语句
相对于顺序语句来说,分支语句多用于处理特殊情况,Java中的分支语句有:
if... else if ... else
switch...case
jdk8中switch 可以是字符串类型
每个case中不要忘了break
这两个语句是等价的。
1、程序的结构
程序默认从上到下顺序执行(顺序结构)
程序的结构:顺序结构、分支结构、循环结构
2、if分支语句
程序执行的过程中可以有多个选择
格式:
if(表达式){
语句块;
}
......
进行表达式的求值:如果表达式的值为非0(真) 会执行语句块
0 (假) 不会执行语句块,
3、if分支语句的几种形式
1)最简单的,要不执行,要不是不执行
if(表达式){
语句块;
}
2)if.....else......
if(表达式){
语句块1;
}else{
语句块2;
}
进行表达式的求值:如果表达式的值为(真) 会执行语句块1
0 (假) 会执行语句块2
注意:语句块1和语句2只可能被执行一次
3)if...else...的嵌套问题
if(表达式1){
if(表达式2){ //表达式1值为1,并且表达式2值为1
语句块1;
}else{
语句块2; //表达式1值为1,但是表达式2的值为0
}
}else{
语句块3; //表达式1为0的时候
}
4)if..... else if ......else....
if(表达式1){
语句块1; //表达式1为真
}else if(表达式2){
语句块2; //当表达式1不成立,但是表达式2成立
}else{
语句块3; //当表达式1和表达式2都不成立的时候
}
4、if注意点
1)if(1)、if(-1)、if(a=5) 永真式 if(0) 永假
2)if(表达式); 表示判断完了什么都不做
3) if(表达式) return 0; //程序退出,代码不会再往下执行了
4) if(表达式){int num=10;} printf("%d",num);(错误的)
5)if(表达式) int num=10; (作用域紊乱)
5、switch分支语句
也是用于条件判断,当表达是的结果有多种情况,用switch比较方便一些
格式:
switch(表达式){
case 整型常量或者字符常量: 语句;
.....
default:
//如果上面的条件都不满足,执行default
}
计算表达式的值,用这个值和case后的常量进行比较,如果这个值等于了某个常量值,会执行case对应的分支语句,遇到break;才结束,如果没有遇到break,程序一直会往下执行,直到switch语句结束
6、switch的注意点
1)switch(表达式) 表达式:返回值是整型
2)case 常量 常量:必须是整型的 ,不能是flaoat cast 2.3:
可以放常量表达式,但是不允许:a+3
3) 作用域的问题
case 3: {
int num=-1;
}
case 4:printf("%d
",num); 不允许的
4)case分之语句可以有多句,可以使用大括号,也可以不使用
5)作用域紊乱的问题: case 4:int a=4; (错误的)
简易计算机
import java.util.Scanner;
public class Calc {
public static void main(String [] args) {
String expression="", again;
int result;
try {
Scanner in = new Scanner(System.in);
do {
MyBC evaluator = new MyBC();
System.out.println("Enter a valid postfix expression: ");
int i=0;
System.out.println(args[0]+"
");
while(i<args[0].length()){
expression += args[0].charAt(i)+" ";
i++;
}
result = evaluator.turn(expression);
System.out.println();
System.out.println("That expression equals " + result);
System.out.print("Evaluate another expression [Y/N]? ");
again = in.nextLine();
System.out.println();
}
while (again.equalsIgnoreCase("y"));
} catch (Exception IOException)
{
System.out.println("Input exception reported");
}
}
}
运行结果图: