JAVA入门到精通-第4讲-流程控制
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130144352597-1177681684.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130144352958-2059796719.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130144355165-564832114.png)
条件表达式数据类型,应该和case常量表达式一致,否则就会报错。
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130144356924-755062996.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130144357243-1162143143.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130144357518-13293663.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130144357833-1896880079.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130144358054-1562484251.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130144358303-1262565627.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130144358737-652904212.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130144359717-1297888051.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130144359983-1413059931.png)
*****:switch中的可用数据类型主要是:允许byte,short,int,char,enum等
1、单分支控制作业:请大家看个案例[demo22.java]:
编写一个程序,可以输入人的年龄,如果该同学的年龄大于18岁,则输出“你年龄大于18,要为自己的行为负责!”
x
/*
作者:徐升
功能:单分支控制作业
日期:2017/9/1
*/
import java.io.*; //载入IO流包
public class Demo22{
public static void main(String []args) {
try {
//输入流,从键盘接受数
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
//给出提示
System.out.println("请输出你的年龄");
//从控制台读取一行数据
String a1=br.readLine();
//把String转为float
float num1=Float.parseFloat(a1);
if(num1>18) {System.out.println("你的年龄大于18,要为自己的行为负
责!");}
if(num1==18) {System.out.println("你的年龄是18岁");}
if(num1<18) {System.out.println("你的年龄小于18岁");}
}catch(Exception e) {
e.printStackTrace();
}
}
}
2、双分支控制作业:请大家看个案例[demo33.java]:
编写一个程序,可以输入人的年龄,如果该同志的年龄大于18岁,则输出“你年龄大于18岁,要对自己的行为负责!”否则,输出“你的年龄不大这次放过你了”
import java.io.*;//加载IO流包
public class Demo33{
public static void main(String []args){
try{
//输入流,从键盘接收数
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
//给出提示
System.out.println("请输入你的年龄");
//从控制台读取一行数据
String a1=br.readLine();
//把String转为float
float num1=Float.parseFloat(a1);
if(num1>=18){System.out.println("你年龄大于18岁,要对自己的行为负责!");}
else{System.out.println("你的年龄不大这次放过你了");}
}catch(Exception e){
e.printStackTrace();
}
}
}
3、多分支控制作业:请大家看个案例[demo44.java]
编写一个程序,可以输入人的年龄,如果该同志的年龄大于18岁,则输出“你年龄大于18,要对自己的行业负责,送入监狱”。如果该同志的年龄大于10岁并且小于等于18,则输出“你的年龄也不小了,把你送少管所”。其它情况,则输出“小孩子,下次注意”。
x
/* 作者:徐升
功能:多分支控制作业
日期:2017.9.1
*/
import java.io.*;//加载IO流包
public class Demo44{
public static void main(String []args){
try{
//输入流,从键盘接收数
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
//给出提示
System.out.println("请输入你的年龄");
//从控制台读取一行数据
String a1=br.readLine();
//把String转为float
float num1=Float.parseFloat(a1);
if(num1>=18){System.out.println("你年龄大于18岁,要对自己的行为负责,送入监狱");}
else if(num1>10 && num1<=18)
{System.out.println("你的年龄也不小了,把你送少管所");}
else
{System.out.println("小孩子,下次注意");}
}catch(Exception e){
e.printStackTrace();
}
}
}
4、多分支控制作业:请大家看个案例[demo55.java]
请编写一个程序,该程序可以接收一个字符,比如:a,b,c,d,e,f,g
a表示星期一,b表示星期二...根据用户的输入显示相应的信息,要求使用switch语句完成。
x
/* 作者:徐升
功能:switch语句控制
日期:2017.9.1
*/
import java.io.*; //加载IO流包
public class Demo55 {
public static void main(String []args){
try{
//输入流,从键盘接收数
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
//给出提示
System.out.println("请输入一个字符:");
//从控制台读取一行数据
String t=br.readLine();
switch(t) //switch()多分支控制语句实现跳转
{
case "a":
System.out.println("星期一");
break;
case "b":
System.out.println("星期二");
break;
case "c":
System.out.println("星期三");
break;
case "d":
System.out.println("星期四");
break;
case "e":
System.out.println("星期五");
break;
case "f":
System.out.println("星期六");
break;
case "g":
System.out.println("星期日");
break;
default:
System.out.println("珍惜时间,但行好事,莫问前程!");
}
}catch(Exception e){
e.printStackTrace();
}
}
}
import java.io.*;
public class Demo55{
public static void main(String []args){
try{
//输入流,从键盘接收数
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
System.out.println("请输入1,2,3,4,5,6,7");
String a1=br.readLine();
int c=Integer.decode(a1);
switch(c){
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;
}
}catch(Exception e){
e.printStackTrace();
}
}
}
5、多分支控制作业:请大家看个案例[demo66.java]
对比switch与if语句在执行分支语句的区别。
import java.io.*;
public class Demo66{
public static void main(String []args){
try{
//输入流,从键盘接收数
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
//给出提示
System.out.println("请输入0至100的数:");
//从控制台读取一行数据
String a1=br.readLine();
//把String转为int
int a=Integer.decode(a1);
if (a<=100 && a>=90){System.out.println("优");}
else if (a<90 && a>=80){System.out.println("良");}
else if (a<80 && a>=70){System.out.println("中");}
else if (a<70 && a>=60){System.out.println("及格");}
else if (a<60 && a>=0){System.out.println("不及格");}
else {System.out.println("input error");}
}catch(Exception e){
e.printStackTrace();
}
}
}
***switch分支语句不支持判断类型即boolean类型,switch只支持byte,short,int,char,enum等数据类型
-------------------------------------------------------------------------------
循环控制
听其名而知其意,就是让你的代码可以循环的执行。
循环控制有三种
1、for循环
语法:
for(循环初值;循环条件;步长){
语句;//循环体
}
2、while循环
语法:
while(循环条件){
语句;//循环体
}
特别说明:while循环是先判断在执行语句。
3、do
while循环 语法:
do{
语句;//循环体
}while(循环条件);
特别说明:do while循环是先执行,再判断。
请大家看个案例[demo77-88-99.java]:
编写一个程序,可以打印10句“你好,我是刘德华同志!”。请大家想想怎么做?
1、for循环
for (int a=0;a<10;a++)
{System.out.println("你好,我是刘德华同志!");}
2、while循环
int i=0;
while(i<10)
{System.out.println("你好,我是刘德华同志!");
i++;}
3、do while循环
int i=0;
do
{
System.out.println("你好,我是刘德华同志!");
i++;
}
while(i<10)
请编写一个程序,可以接收一个整数,表示层数,打印出金字塔一半。[demo100.java]
x
***把一个复杂的问是先拆解成简单问题
//三角形[Demo100.java]
public class Demo100{
public static void main(String []args){
//死去活来法-->打四次
int lay=4;
//表示有多少层
for(int i=1;i<=lay;i++){
//打印*
for(int j=1;j<=i;j++){
System.out.print("*");
}
System.out.println();//换行
}
}
}
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130144420508-1325186059.png)
-------------------------------------------------------------------------------
//金字塔[Demo101.java]
public class Demo101{
public static void main(String []args){
int lay=10;//表示有多少层
for(int i=1;i<=lay;i++){
//找出规律
//1->3 2->2 3->1 4->0找出空格
for(int k=1;k<=lay-i;k++){
System.out.print(" ");
}
//打印*
//1->1 2->3 3->5 4->7找出星的规律
for(int j=1;j<=(i-1)*2+1;j++){
System.out.print("*");
}
System.out.println();//换行
}
}
}
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130144420889-857376843.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130144421081-1276345794.png)
-------------------------------------------------------------------------------
//镂空金字塔[Demo102.java]
public class Demo102{
public static void main(String []args){
int lay=10;//表示有多少层
for(int i=1;i<=lay;i++){
//找出规律
//1->3 2->2 3->1 4->0找出空格
for(int k=1;k<=lay-i;k++){
System.out.print(" ");
}
//打印*
//1->1 2->3 3->5 4->7找出星的规律
for(int j=1;j<=(i-1)*2+1;j++){
//判断该层是否是顶层或者是底层
if(i==1||i==lay){
System.out.print("*");
}else{
//如果是第一个*
if(j==1||j==(i-1)*2+1){
System.out.print("*");
}else{
System.out.print(" ");
}
}
}
System.out.println();//换行
}
}
}
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130144422040-2103802798.png)
-------------------------------------------------------------------------------
//空心菱形[Demo103.java]
public class Demo103{
public static void main(String []args){
int lay=4;//菱形上半部行数
for(int i=1;i<=lay-1;i++){ //判断循环上半部分
for(int k=1;k<=lay-i;k++){ //找行内*号前输出空格
System.out.print(" ");
}
for(int j=1;j<=(i-1)*2+1;j++){ //找行内输出星的位置
if(j==1||j==(i-1)*2+1){ //判断行最小长度和最大长度,并在最小长度和最大长度上输出*号,行内输入出空格。
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.println(); //换行
}
for(int i=1;i<=lay;i++){ //判断循环菱形下半部分
for(int k=1;k<=i-1;k++){ //判断循环找*号前要输出空格处
System.out.print(" ");
}
for(int j=1;j<=(lay-i)*2+1;j++){ //判断循环行长度
if(j==1||j==(lay-i)*2+1){ //判断行最小长度和最大长度,并在最小长度和最大长度上输出*号,行内输入出空格。
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.println();//输出换行
}
}
}
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130144422432-504826467.png)
-------------------------------------------------------------------------------
//实心菱形[Demo104.java]
public class Demo104{
public static void main(String []args){
int lay=4;//菱形上半部行数
for(int i=1;i<=lay-1;i++){ //判断循环上半部分
for(int k=1;k<=lay-i;k++){ //找行内*号前输出空格
System.out.print(" ");
}
for(int j=1;j<=(i-1)*2+1;j++){ //找行内输出星的位置
System.out.print("*");
}
System.out.println(); //换行
}
for(int i=1;i<=lay;i++){ //判断循环菱形下半部分
for(int k=1;k<=i-1;k++){ //判断循环找*号前要输出空格处
System.out.print(" ");
}
for(int j=1;j<=(lay-i)*2+1;j++){ //判断循环行长度
System.out.print("*");
}
System.out.println();//输出换行
}
}
}
}
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130144423201-484959546.png)