流程控制语句:顺序结构、选择结构、循环结构

顺序结构

代码从主函数开始逐行向下运行
是一种宏观的代码运行结构

选择结构

程序员在写代码时碰到了多中可能发生的情况时,会使用选择结构来完成程序。
选择结构主要有两种
if 语句和switch语句
if 和 switch 的区别:
if 既可以对一个单一的值进行判断,也可以对一个区间的值进行判断;switch 只能判断单一的值

if语句

双分支

流程控制语句:顺序结构、选择结构、循环结构_第1张图片

基本格式:
if(条件表达式){	
    当条件为true时执行的代码;
}else{
    当条件为false时执行的代码;
}

单分支

流程控制语句:顺序结构、选择结构、循环结构_第2张图片

单行格式:
if(条件表达式){	
    当条件为true时执行的代码;
}

多分支

流程控制语句:顺序结构、选择结构、循环结构_第3张图片

嵌套if-else形式:
if(条件表达式1){
    条件1true时执行的代码;
    if(条件表达式2){
        条件2true时执行的代码;
        ………………
        ………………
    }else 条件2false时执行的代码;
}else 条件1false时执行的代码;
if-else-if形式
if(条件表达式1){
    条件1true是执行的代码;
}else if(条件表达式2){
    条件2为真时执行的代码;
}else if(条件表达式3){
    条件3为真时执行的代码;
}………………
 ………………

switch语句

形如下图是switch语句的工作原理

流程控制语句:顺序结构、选择结构、循环结构_第4张图片

一般用于多选情况下
switch所要求的变量的数据类型:byte short int char String 枚举

switch(变量){
    case1:
          执行语句1break;
    case2:
          执行语句2break;
    case3:
          执行语句3break;
    ........
    deafult:
          执行语句n;
          break;
}

循环结构

循环结构是程序员在编程过程中遇到重复
性问题时会使用循环结构来解决问题
循环结构主要包括两方面内容,for循环和while循环
循环的四要素:
1.循环初始化
指的就是循环从什么时候开始执行
2.循环继续条件
什么情况循环继续执行/反过来说,循环何时结束
3.循环体
就是我们需要被多次循环执行的代码块
4.循环的周期,步长,间距
当前循环和下一次循环之间的变更

for循环

for (初始操作;循环鏈续条件;每次迭代后的操作){
 	循环体;
  }

流程控制语句:顺序结构、选择结构、循环结构_第5张图片

while循环

while 循环的语法如下 : while( 循环继缞条件) { 
	循环体;
} 

流程控制语句:顺序结构、选择结构、循环结构_第6张图片

do-while

do-while是先将do后面的循环体执行之后在进入循环

do{  
	循环体;  
} while ( 循环继续条件)

流程控制语句:顺序结构、选择结构、循环结构_第7张图片

循环的选用

for 循环是已知次数的循环,所以当次数已知时使用for循环
while循环是已知结束条件的循环,所以当已知循环结束条件时使用while循环

习题

1、
流程控制语句:顺序结构、选择结构、循环结构_第8张图片

/*
数据:a,b,c,d,e,f
操作:提示用户输入、判断方程组是否有解、计算方程组的解、输出
步骤:1、提示用户输入a,b,c,d,e,f
2、判断方程是否有解,按格式输出
 */
import java.util.Scanner;
class ProblemTwo{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        //1、提示用户输入a,b,c,d,e,f
        System.out.print("Enter a,b,c,d,e,f: ");
        double a=scanner.nextDouble();
        double b=scanner.nextDouble();
        double c=scanner.nextDouble();
        double d=scanner.nextDouble();
        double e=scanner.nextDouble();
        double f=scanner.nextDouble();
        //2、判断方程是否有解,按格式输出
        double m= a * d - b * c;
        if(m==0)
            System.out.println("The equation has no soluntion");
        else
            System.out.println("x is "+((e*d-b*f)/m)+" and y is "+((a*f-e*c)/m));
    }
}

运行结果

Enter a,b,c,d,e,f: 9.0 4.0 3.0 -5.0 -6.0 -21.0
x is -2.0 and y is 3.0
Enter a,b,c,d,e,f: 1.0 2.0 2.0 4.0 4.0 5.0 
The equation has no soluntion

2、
流程控制语句:顺序结构、选择结构、循环结构_第9张图片

/*
数据:用户输入的两位数number1、彩票的两位数number2、
    用户输入两位数的个位num1和十位num2、彩票的个位nu1、nu2
指令:获得num1、num2、nu1、nu2    判断两个数是否完全相同   判断所有数字是否匹配   
    判断一个数字与彩票上的一个数字匹配  输出
步骤:1、提示用户输入一个两位数number1
2、使计算机产生一个10~99之间的随机数number2
3、分离number1和number2的十位和个位
4、判断数字是否完全相同、是否匹配、是否有一个数字匹配并且输出
注意:需要使用到随机数产生随机数的方法
1、Math.random()产生[0,1)之间的一个dobule型数
2、Random类
*/ 
import java.util.Scanner;
class ProblemFive{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        //1、提示用户输入一个两位数number1
        System.out.print("请输入一个两位数:");
        int number1=scanner.nextInt();
        //2、使计算机产生一个10~99之间的随机数number2
        int number2=(int)(Math.random()*90+10);
        //3、分离number1和number2的十位和个位
        int num1=number1%10;
        int num2=number1/10;
        int nu1=number2%10;
        int nu2=number2/10;
        //4、判断数字是否完全相同、是否匹配、是否有一个数字匹配并且输出
        if(number1==number2){
            System.out.println("恭喜您获得10000美元奖金!");
        }else if(num1==nu2&&num2==nu1){
            System.out.println("恭喜您获得3000美元奖金!");
        }else if(num1==nu1||num1==nu2||num2==nu1||num2==nu2){
            System.out.println("恭喜您获得1000美元奖金!");
        }else{
            System.out.println("很遗憾!您没有中奖!");
        }
    }
}

运行结果:

请输入一个两位数:34
很遗憾!您没有中奖!
请输入一个两位数:78
恭喜您获得1000美元奖金!

3、
流程控制语句:顺序结构、选择结构、循环结构_第10张图片

/*
数据:世纪j、一个星期中的某一天h、月份m、某月的第几天q、世纪的某一年k、年year
指令:提示用户输入年、月、该月的某一天,计算世纪数j、世纪的某一年k、星期的某一天h
步骤:1、提示用户输入年year
2、提示用户输入月m
3、提示用户输入该月的某一天q
4、判断一月和二月
5、计算世纪数j
6、计算世纪的某一年k
7、计算星期的某一天
8、输出今天是星期几
 */
import java.util.Scanner;
class ProblemSeven{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        //1、提示用户输入年year
        System.out.print("Enter year (eg: 2012): ");
        int year=scanner.nextInt();
        //2、提示用户输入月m
        System.out.print("Enter month 1-12: ");
        int m=scanner.nextInt();
        //3、提示用户输入该月的某一天q
        System.out.print("Enter the day of the month: ");
        int q=scanner.nextInt();
         //4、判断一月和二月
        if(m==1||m==2){
            m=12+m;
            year=year-1;
        }
        //5、计算世纪数j
        int j=Math.abs(year/100);
        //6、计算世纪的某一年k
        int k=year%100;
        //7、计算星期的某一天
        int h=(q+26*(m+1)/10+k+k/4+j/4+5*j)%7;
        String weekstr="";
        switch(h){
            case 0:weekstr="Saturday";break;
            case 1:weekstr="Sunday";break;
            case 2:weekstr="Monday";break;
            case 3:weekstr="Tuesday";break; 
            case 4:weekstr="Wednesday";break;
            case 5:weekstr="Thursday";break;
            case 6:weekstr="Friday";break;
        }
        //8、输出今天是星期几
        System.out.println("Day of the week is "+weekstr);
    }
}

运行结果

Enter year (eg: 2012): 20
Enter month 1-12: 2
Enter the day of the month: 8
Day of the week is Saturday

4、
流程控制语句:顺序结构、选择结构、循环结构_第11张图片

/*
数据:三角形的三个点坐标(0,0) (0,100) (200,0)、输入的点的坐标(x,y)、三角形斜边在坐标轴上的方程y=x/2
指令:提示用户输入点的坐标、判断点的位置、输出点的位置
步骤:1、提示用户输入点坐标
2、判断点的位置,并且输出
 */
 import java.util.Scanner;
 class ProblemNine{
     public static void main(String[] args){
         Scanner scanner=new Scanner(System.in);
         //1、提示用户输入点坐标
         System.out.print("Enter a point`s x- and y- coordinates : ");
         double x=scanner.nextDouble();
         double y=scanner.nextDouble();
         //2、判断点的位置,并且输出
         if(x>=0&&x<=200&&y>=0&&y<=100&&y<=x/2){
             System.out.println("The point is in the triangle");
         }else{
             System.out.println("The point is not in the triangle");
         }
     }
 }

运行结果

Enter a point`s x- and y- coordinates : 100.5 25.5
The point is in the triangle
Enter a point`s x- and y- coordinates : 100.5 50.5
The point is not in the triangle

5、
流程控制语句:顺序结构、选择结构、循环结构_第12张图片
流程控制语句:顺序结构、选择结构、循环结构_第13张图片

/*
数据:两个矩形中心点的坐标r1、r2,第一个矩形的长l1 高h1 ,第二个矩形的长l2 高h2
指令:提示用户输入两个矩形中心点的坐标r1、r2,第一个矩形的长l1 高h1 ,第二个矩形的长l2 高h2 
    计算两中心点的水平距离 竖直距离    判断两个矩形之间关系 输出
步骤:1、提示用户输入两个矩形中心点的坐标r1、r2,第一个矩形的长l1 高h1 ,第二个矩形的长l2 高h2
2、计算计算两中心点的水平距离 竖直距离
3、判断两个矩形之间关系并输出
*/
import java.util.Scanner;
class ProblemTen{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        //1、提示用户输入两个矩形中心点的坐标r1、r2,第一个矩形的长l1 高h1 ,第二个矩形的长l2 高h2
        System.out.print("Enter r1`s center x-,y-coordinates,width and height:");
        double x1=scanner.nextDouble();
        double y1=scanner.nextDouble();
        double l1=scanner.nextDouble();
        double h1=scanner.nextDouble();
        System.out.print("Enter r2`s center x-,y-coordinates,width and height:");
        double x2=scanner.nextDouble();
        double y2=scanner.nextDouble();
        double l2=scanner.nextDouble();
        double h2=scanner.nextDouble();
        //2、计算计算两中心点的水平距离 竖直距离
        double d1=Math.abs(x1-x2);//水平距离
        double d2=Math.abs(y1-y2);//竖直距离
        //3、判断两个矩形之间关系并输出
        if((l1/2+l2/2)<=d1||(h1/2+h2/2)<=d2){
            System.out.println("r2 does not overlap r1");
        }else if(d1+l2/2<=l1/2&&d2+h2/2<=h1/2){
            System.out.println("r2 is inside r1");
        }else{
            System.out.println("r2 overlap r1");
        }
    }
}

运行结果

Enter r1`s center x-,y-coordinates,width and height:2.5 4 2.5 43
Enter r2`s center x-,y-coordinates,width and height:1.5 5 0.5 3
r2 is inside r1
Enter r1`s center x-,y-coordinates,width and height:1 2 3 5.5
Enter r2`s center x-,y-coordinates,width and height:3 4 4.5 5
r2 overlap r1
Enter r1`s center x-,y-coordinates,width and height:1 2 3 3
Enter r2`s center x-,y-coordinates,width and height:40 45 3 2
r2 does not overlap r1

6、
流程控制语句:顺序结构、选择结构、循环结构_第14张图片

/*
数据:输出的层数
指令:输出一个数字金字塔
步骤:1、提示用户输入金字塔层数
2、输出金字塔
*/
import java.util.Scanner;
class ProblemFourteen{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        //1、提示用户输入金字塔层数
        System.out.print("Enter the number of line: ");
        int line=scanner.nextInt();
        //2、输出金字塔
        for(int i=0;i<line;i++){
            for(int s=line-i;s>=0;s--){
                System.out.print("  ");
            }
            for(int j=-(i);j<1+2*i-(i);j++){
                System.out.printf("%3d",Math.abs(j)+1);
            }
            System.out.println();
        }
    }
}

运行结果

Enter the number of line: 7
                1
              2 1 2
            3 2 1 2 3
          4 3 2 1 2 3 4
        5 4 3 2 1 2 3 4 5
      6 5 4 3 2 1 2 3 4 5 6
    7 6 5 4 3 2 1 2 3 4 5 6 7

7、
流程控制语句:顺序结构、选择结构、循环结构_第15张图片

class ProblemFifteen_01{
    public static void main(String[] args){
        for(int i=0;i<6;i++){
            for(int j=0;j<=i;j++){
                System.out.print((j+1)+" ");
            }
            System.out.println();
        }        
    }
}

运行结果

1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6
class ProblemFifteen_02{
    public static void main(String[] args){
        for(int i=0;i<6;i++){
            for(int j=6;j>i;j--){
                System.out.print(j+" ");
            }
            System.out.println();
        }  
    }
}

运行结果

6 5 4 3 2 1
6 5 4 3 2
6 5 4 3
6 5 4
6 5
6
class ProblemFifteen_03{
    public static void main(String[] args){
        for(int i=0;i<6;i++){
            for(int s=5;s>i;s--){
                System.out.print("  ");
            }
            for(int j=i+1;j>0;j--){
                System.out.print((j)+" ");
            }
            System.out.println();
        }  
    }
}

运行结果

          1
        2 1
      3 2 1
    4 3 2 1
  5 4 3 2 1
6 5 4 3 2 1
class ProblemFifteen_04{
    public static void main(String[] args){
        for(int i=0;i<6;i++){
            for(int s=0;s<i;s++){
                System.out.print("  ");
            }
            for(int j=0;j<6-i;j++){
                System.out.print((j+1)+" ");
            }
            System.out.println();
        }  
    }
}

运行结果

1 2 3 4 5 6
  1 2 3 4 5
    1 2 3 4
      1 2 3
        1 2
          1

8、

流程控制语句:顺序结构、选择结构、循环结构_第16张图片

/*输出
                               1
                           1   2   1
                       1   2   4   2   1
                   1   2   4   8   4   2   1
               1   2   4   8  16   8   4   2   1
           1   2   4   8  16  32  16   8   4   2   1
       1   2   4   8  16  32  64  32  16   8   4   2   1
   1   2   4   8  16  32  64 128  64  32  16   8   4   2   1
*/
class ProblemSixteen{
    public static void main(String[] args){
        int a;
        for(int i=0;i<8;i++){
            for(int s=7-i;s>0;s--){
                System.out.print("    ");
            }
            for(int j=(-i);j<=i;j++){
                System.out.printf("%4d",a=(int)(Math.pow(2,Math.abs(Math.abs(j)-i))));
            }
            System.out.println();
        }
    }
}

运行结果

                               1
                           1   2   1
                       1   2   4   2   1
                   1   2   4   8   4   2   1
               1   2   4   8  16   8   4   2   1
           1   2   4   8  16  32  16   8   4   2   1
       1   2   4   8  16  32  64  32  16   8   4   2   1
   1   2   4   8  16  32  64 128  64  32  16   8   4   2   1

9、
按下列格式输出

ONE

*				
**
***
****
*****
******
*******
class Star{
    public static void main(String[] args){
        for(int line=1;line<=7;line++){
            for(int i=1;i<=line;i++){
                System.out.print("*");
            }
            System.out.println();
        }	
	}
}

运行结果

*				
**
***
****
*****
******
*******

TWO

*
**
***
****
*****
******
*******
******
*****
****
***
**
*
class Star{
    public static void main(String[] args){
        for(int i=1;i<=11;i++){
            for(int j=1;j<=i&&j<=12-i;j++){
                System.out.print("*");
            }
            System.out.println();
        }	
	}
}

运行结果

*
**
***
****
*****
******
*******
******
*****
****
***
**
*

THREE

      *
	 **
    ***
   ****
  *****
 ******
*******
 ******
  *****
   ****
    ***
     **
      *
class Star{
    public static void main(String[] args){
        for(int i=1;i<=11;i++){
            for(int k=1;k<=Math.abs(i-6);k++){
                System.out.print(" ");
            }
            for(int j=1;j<=i&&j<=12-i;j++){
                System.out.print("*");
            }
            System.out.println();
        }	
	}
}

运行结果

      *
	 **
    ***
   ****
  *****
 ******
*******
 ******
  *****
   ****
    ***
     **
      *

FOUR

      *
	 * *
    * * *
   * * * *
  * * * * *
 * * * * * *
* * * * * * *
 * * * * * *
  * * * * *
   * * * *
    * * *
     * *
      *
class Star{
    public static void main(String[] args){
        for(int i=1;i<=11;i++){
            for(int k=1;k<=Math.abs(i-6);k++){
                System.out.print(" ");
            }
            for(int j=1;j<=i&&j<=12-i;j++){
                System.out.print("* ");
            }
            System.out.println();
        }	
	}
}

运行结果

    *
   * *
  * * *
 * * * *
* * * * *
* * * * * *
* * * * * * *
* * * * * *
* * * * *
 * * * *
  * * *
   * *
    *

FIVE

      *
	 * *
    *   *
   *     *
  *       *
 *         *
*           *
 *         *
  *       *
   *     *
    *   *
     * *
      *
class Star{
    public static void main(String[] args){
        for(int i=1;i<=11;i++){
            for(int k=1;k<=Math.abs(i-6);k++){
                System.out.print(" ");
            }
            for(int j=1;j<=i&&j<=12-i;j++){
                if(j==1||j==i||j+i==12){
                    System.out.print("* ");
                }else{
                    System.out.print("  ");
                }
            }
            System.out.println();
        }	
	}
}

运行结果

      *
	 * *
    *   *
   *     *
  *       *
 *         *
*           *
 *         *
  *       *
   *     *
    *   *
     * *
      *

你可能感兴趣的:(java)