1.程序结构:顺序结构,循环结构,选择结构
2.两个变量表比较,如果变量是基本数据类型(byte,short,int,long,float,double,char,boolean)用关系运算符(>,>=,<,<=,==,!=)表比较;如果变量是引用数据类型(String)表比较用equals()
//基本数据类型比较,用关系运算符
int num1=10;
int num2=8;
boolean result1=num1==num2;
System.out.println(result1);
//引用数据类型比较用equals()
String s1="我是中国人";
String s2="我是中国人";
boolean result2=s1.equals(s2);
System.out.println(result2);
3.从键盘上接收用户的数据:
3.1:在类框架上面导包:import java.util.Scanner;
3.2:获得从键盘上接收数据的能力
Scanner input=new Scanner(System.in);
3.3:从键盘上接收数据int num1=input.nextInt(); double num2=input.nextDouble(); String num3=input.next();
注意:键盘上不能接收char类型数据。
eg://导包 import java.util.Scanner; /** public class UserInput{ /** *程序的入口方法 */ public static void main(String[] args){ //获得从键盘上接收数据的能力 Scanner input=new Scanner(System.in); System.out.println("请输入一个整数"); //从键盘上接收一个整数并存在变量num1中 int num1=input.nextInt(); System.out.println("请输入一个小数:"); //从键盘上接收一个double类型的数并存在变量num2中 double num2=input.nextDouble(); System.out.println("请输入一个字符串:"); //从键盘上接收一个String类型的数并存在变量num3中 String num3=input.next(); System.out.println("从键盘上接收的整数为:"+num1); System.out.println("从键盘上接收的小数为:"+num2); System.out.println("从键盘上接收的字符串为:"+num3); } }
4.基本if选择结构:解决只有一种情况的问题
4.1:语法:if(条件){
代码块;
}4.2:执行流程:如果条件为true,就执行大括号中的代码块;如果条件为false,就执行if结构之后的语句。
eg:public static void main(String[] args){ System.out.println("中午的歌是否唱得好?(y/n)"); //获得从键盘上接收数据的能力 Scanner input=new Scanner(System.in); //从键盘上接收一个字符串并存在变量中 String answer=input.next(); //对结果判断 if(answer.equals("y")){ System.out.println("给每位同学发朵大红花"); } }
5.if-else结构:解决有两种情况,这两情况始终要执行其中一种
5.1:语法 :if(条件){
代码块1;
}else{
代码块2;
}5.2:执行流程:如果条件为true,就执行代码块1;如果条件为false,就执行代码块2;
eg:public static void main(String[] args){ System.out.println("明天中午的歌是否唱得好?(y/n)"); //获得具有从键盘上接收数据的能力 Scanner input=new Scanner(System.in); //从键盘上接收一个字符串并存在变量中 String str1=input.next(); //判断满足哪种情况 if(str1.equals("y")){ System.out.println("老师请大家吃饭"); }else{ System.out.println("大家请老师吃饭"); } }
6.多重if选择结构:解决有两种及以上情况的问题
6.1:语法:if(条件1){
代码块1;
}else if(条件2){
代码块2;
}else if(条件3){
代码块3;
}else{
代码块4;
}6.2:执行流程:如果条件1为true,就执行代码块1,再执行多重if结构之后的语句;如果条件1为false,就判断条件2,如果条件2为true,就执行代码块2,再执行多重if结构之后的语句;如果条件2为false,就判断条件3,如果条件3为true,就执行代码块3,再执行多重if结构之后的语句;如果条件3为false,就执行else块中代码块4。
6.3:结构特点:
6.3.1:多重if选择结构中if块有且仅有一个,else if块可以有0个到多个,else块可以有0个到1个。
6.3.2:多重if选择结构中,最多执行一个情况(分支),最少一个情况都不执行(没有else块并且前面的条件都为false);
6.3.3: 如果用多重if选择结构解决多种情况(分支)等值判断问题,分支之间可以互换置不影响结果;如果用多重if选择结构解决多种情况(分支)范围判断问题,分支之间不一定可以互换位置。eg:public static void main(String[] args){ System.out.println("今天是星期几?(1-7):"); //获得具有从键盘上接收数据的能力 Scanner input=new Scanner(System.in); //从键盘上接收一个字符串并存在变量中 int today=input.nextInt(); //判断满足哪种情况 if(today==1){ System.out.println("早餐吃包子"); }else if(today==2){ System.out.println("早餐吃馒头"); }else if(today==3){ System.out.println("早餐吃油条豆浆"); }else if(today==4){ System.out.println("早餐吃肠粉"); }else if(today==5){ System.out.println("早餐吃拉面"); }else if(today==6){ System.out.println("早餐吃豆皮"); }else{ System.out.println("睡觉"); } } public static void main(String[] args){ System.out.println("请输入成绩(0-100):"); //获得具有从键盘上接收数据的能力 Scanner input=new Scanner(System.in); //从键盘上接收一个数并存在变量中 double score=input.nextDouble(); //判断满足哪种情况 if(score>=90){ System.out.println("优秀"); }else if(score<80&&score>=60){ System.out.println("合格"); }else if(score<90&&score>=80){ System.out.println("良好"); }else{ System.out.println("再接再厉"); }
}
7.嵌套选择结构:在一个选择结构的代码块中完整包含了另一个选择结构
7.1:选择结构之间可以任意嵌套,但是嵌套要正确。
7.2:选择结构之间可以多层嵌套,但是一般两到三层嵌套。
题目:参加百米赛跑,如果跑步时间超过10秒,谢谢参与;如果跑步时间不超过10秒,恭喜你进入决赛;进入决赛后,输入性别,如果性别是男,恭喜你进入男子组决赛;如果性别是女,恭喜你进入 女子组决赛eg:public static void main(String[] args){ //获得具有从键盘上接收数据的能力 Scanner input=new Scanner(System.in); System.out.println("请输入你百米跑步的时间:"); //从键盘上接收时间,并存在变量中 double time=input.nextDouble(); if(time>10){ System.out.println("谢谢参与"); }else if(time>=0&&time<=10){ System.out.println("请输入你的性别(男/女):"); //从键盘上接收性别,并存在变量中 String sex=input.next(); if(sex.equals("男")){ System.out.println("恭喜你进入男子组决赛"); }else if(sex.equals("女")){ System.out.println("恭喜你进入女子组决赛"); }else{ System.out.println("性别输入有误!"); } }else{ System.out.println("时间输入有误!"); }
}
8.switch结构:解决多种情况等值判断问题
8.1:语法:switch(表达式){
case 常量1:
代码块1;
break;
case 常量2:
代码块2;
break;
...
default:
default中的代码块;
break;
}
8.2:执行流程:如果表达式的结果等于常量1,就执行代码块1,遇到break或者结尾}就跳出switch结构,执行之后语句;如果表达式的结果等于常量2,就执行代码块2,遇到break或者结尾}就跳出switch结构,执行之后语句;如果表达式不等于case后面的任意一个常量值,就执行default中的代码块遇到break或者结尾}就跳出switch结构。
8.3:结构特点:
8.3.1:switch结构中的表达式和常量,在jdk1.5前,支持byte,short,int,char类型
在jdk1.5后,支持枚举类型
在jdk1.7后,支持String类型。
8.3.2:switch结构中,case块可以有0个到多个,default块可以有0个到1个。
8.3.3:在同一个switch结构中,case后面的常量值必须不同。
8.3.4:switch结构中,case块中break可以省略,但是省略break后,如果表达式等于当前case块的常量,执行完这个case块中的}代码后,没有遇到break和结尾会继续往下执行并且不再判断,直到遇到break和}结尾才会跳出switch结构.
一般情况下,case块中break不要省略。
8.3.5:switch结构中,default块可以放在switch结构的大括号任何地方,不影响程序的 执行。
8.3.6:switch结构中,case块之间可以互换位置,不影响程序的执行。
8.3.7:switch结构中,可以执行0个到多个情况。eg:public static void main(String[] args){ System.out.println("今天是星期几?(1-7):"); //获得具有从键盘上接收数据的能力 Scanner input=new Scanner(System.in); //从键盘上接收一个字符串并存在变量中 int today=input.nextInt(); switch(today){ 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: System.out.println("你的输入有误!"); break; } }
9.switch结构 VS 多重if选择结构
9.1:相同点:
9.1.1:都可以解决多种情况等值判断问题,首选switch结构;
9.1.2:在解决多种情况等值判断问题时,分支之间可以互换位置。
9.1.3:都是最少一种情况(分支)都不执行。
9.2:不同点:
9.2.1:作用不同:switch结构只能解决多种情况等值判断问题;
多重if选择结构既可以解决多种情况等值判断问题,又可以解决多种情况范 围判断问题。
9.2.2:条件不同:switch结构中的表达式和常量有类型限制;
多重if选择结构的条件是关系表达式,条件的结果是boolean.
9.2.3:执行不同:switch结构可以执行多个分支的代码块;多重if选择结构最多只能执行一个分支的代码块。
9.2.4:break不同:switch结构中可以用break跳出结构,多重if选择结构不能单独用。