关于流程控制

流程控制

人与程序交互的Scanner

我们可通过Scanner类来获取用户的输入

Scanner基本语法:

Scanner sc=new Scanner(System.in);
  • 通过 Scanner 类的 next() 和 nextLine()方法获取输入的字符串;

  • 在读取前一般需要使用 hasNext() 和 hasNextLine()判断是否还有输入的数据。

​
if (sc.hasNext()){//后面没有加==就默认为true
            //使用next接收数据
            String str=sc.next();  //程序会一直等待用户输入完毕
            System.out.println("输出的内容为:"+str);
        }

 

nextLine():

// 以回车为结束符

1、nextLine() 方法返回输入回车之前的所有字符;

2、可以获得空白。

 

next():

// 以空格为结束符

1、一定要读取到有效字符后才可以结束输入;

2、对输入的有效字符之前遇到空白,next() 方法会自动将其去掉;

3、只有输入有效字符后才将其后面输入的空白作为分隔符或结束符;

4、next() 不能得到带有空格的字符串.

 

//输入数据
Scanner sc=new Scanner(System.in);
//接收数据
String str=sc.nextLint();
//关闭
sc.close();

 

对于Scanner类的常用方法

  • String nextLine() 接收控制台输入的一个字符串

  • int nextInt() 接收控制台输入的一个int型数据

  • double nextDouble() 接收控制台输入的一个double型数据

  • note : 对于char类型输入的数据 Scanner 类没有提供直接输入char类型的方法,可通过 chatAt() 方法从 next() 或者nextLine () 获取输入的字符

/*next().charAt(0)   从控制台输入的字符串中获取第一个字符 */
​
/*"SHKO".charAt(1)   输出结果为H */

 

 

 

if选择结构

  • 语法

if(布尔表达式){
    //布尔表达式为true时执行
}else{
    //布尔表达式为flase时执行
}
​
​
//多选择结构
//只执行其中一个
if(布尔表达式1){
    //布尔表达式1为true时执行
}else if(布尔表达式2){
      //布尔表达式2为true时执行
}else if(布尔表达式3){
    //布尔表达式3为true时执行
}else{
    //以上都不满足
}

/* if语句至多有1个else语句; if语句可以有若干个else if ,它们必须在else语句之前 */

 

 

switch多选择结构

switch case 语句判断一个变量与一系列值中某个值是否相等,每一个值称为一个分支.

switch(expression){
    case value1:
        //语句1
    case value2:
        //语句2
        break;
        
        ````````//可以有任意数量的case语句
    default:
        //语句n+1
        
}
 /*格式说明:
        表达式:取值为byte、short、int、char,JDK5以后可以是枚举,JDK7以后可以是String。
        case:后面跟的是要和表达式进行比较的值。
        break:表示中断,结束的意思,用来结束switch语句。
        default:表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。
        
执行流程:
   首先计算表达式的值。
   依次和case后面的值进行比较,如果有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
   如果所有的case后面的值和表达式的值都不匹配,就会执行default里面的语句体,然后程序结束掉。
*/ 

 

 char grade='A';
        switch(grade){
            case 'A':  //执行
                System.out.println("优秀");
            case'B':
                System.out.println("良好");
                break;
​
                default:
                    System.out.println("未知等级");
        }
/*控制台输出的是:
优秀
良好
但我们发现  A  对应的应该是优秀,这是因为我们的break在case'B',
它会把break之前的全部输出(我们称为case穿透)
​
=====这时我们应该在每个case后都加上break
*/

 

反编译

打开图示:

关于流程控制

点开“我的电脑”,导航栏粘贴地址,找到对应demo的class文件复制 ,在IDEA中找到需要反编译的demo ,鼠标右键,打开所在文件夹下(show in Explorer)将前面所复制的class文件粘贴到该文件夹下,此时在IDEA中会生成一个新的demo,打开即可查看。

 

循环结构

最基本的while循环

while(布尔表达式){
    //语句体
}

只要布尔表达式 为true,循环就会一直下去造成死循环,我们应尽量避免;

我们大多需要一个让表达式失效的方式来结束循环,少部分情况需要一直循环,比如服务器的请求响应监听等;

 

//1+2+ ……+100

public static void main(String[] args) {
        //1+……+100
        int i=0;
        int sum=0;
        while (i<=100) {
            sum = sum + i;
            i++;
        }
        System.out.println(sum);//5050

 

do……while循环

对于while来说不满足条件则不能进入循环,do……while循环至少执行一次

//初始化表达式        // 1
do{
    //语句体1        // 3
    //语句体2        // 4
}while(布尔表达式);   // 2

//执行顺序为  134>234>234……2不满足条件为止

 

for循环

是最有效、最灵活的循环结构

for(初始化变量;布尔表达式;变量更新){
    //语句体
}

/* 最先执行初始化步骤,可以声明一种类型,可以初始化一个或多个循环控制变量,也可以是空语句; */

在IDEA中使用快捷键 例如:100.for加回车可自动生成

//1——100能被5整除的数,且每行输出3个
    public static void main(String[] args) {
        for (int i = 5; i <=100; i++) {
            if (i%5==0){
                System.out.print(i+"\t");
            }
            if (i%(5*3)==0){                    				           System.out.print("\n");
               //System.out.println("");             
            }
        }

    }
/*
print是不换行输出
println 是换行输出
*/

 

 //九九乘法表
public static void main(String[] args) {
        //打印第一列,嵌套循环,去掉重复,调整样式
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <=i; j++) {
                System.out.print(j+"*"+i+"="+(j*i)+"\t");
            }
            System.out.println();//换行
        }
    }

/*
嵌套循环 总共的循环次数=外循环次数*内循环次数
*/

 

for和while的区别:

  • 控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到

    了,⽽while循环结束还可以继 续使⽤,如果你想继续使⽤,就⽤while,

  • 否则推荐使⽤for。原因是for循环结束,该变量就从内存中消 失,能够提

    ⾼内存的使⽤效率。

  • 在已知循环次数的时候使⽤推荐使⽤for,循环次数未知的时推荐使⽤

    while。

 

 

增强for循环

   public static void main(String[] args) {
        int[] numbers={10,20,30,40,50};
        //遍历数组元素
        for (int x:numbers){
            System.out.print(x+" ");
        }
       
      /*相当于
        for (int i = 0; i < 5; i++) {
            System.out.print(numbers[i]+" ");
        }
      */
    }

 

跳出语句

break

break在任何循环语句的主体部分,均可使用break,强制退出循环,并不是结束程序;

continue

continue在循环语句体中,用于终止某次循环过程,即跳过循环语句中未执行的语句,接着进行下一次是否执行循环的判定;(结束本次循环,继续下次循环)

打印三角形

 public static void main(String[] args) {
        //打印三角形

        for (int i = 1; i <= 5; i++) {
            for (int j = 5; j >=i ; j--) {
                System.out.print(" ");//左上角空格的倒三角形
            }
            for (int j = 1; j <=i ; j++) {
                System.out.print("*");//第二部分的三角形
            }
            for (int j = 1; j <i ; j++) {
                System.out.print("*");//第三部分的三角形
            }
            System.out.println();
        }
    }

 

 

上一篇:A - Perfect Team CodeForces - 1221C


下一篇:在abap中(Clear,Free, Refesh)的用法