Java流程控制


Java流程控制

1.用户交互Scanner

2.顺序结构

3.选择结构

4.循环结构

5.break & continue

6.练习


1.用户交互Scanner

  1. java.util.Scanner 是 java5 的新特性,我们可以通过 Scanner 类来获取用户的输入

  2. 基本语法

    Scanner s = new Scanner(System.in);
  3. 通过 Scanner 类的 next() 和 nextLine() 方法获取输入的字符串,再读取前我们一般需要使用 hasNext() 和 hasNextLine() 判断是否含有输入的数据

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

      /*
      1.一定要读取到有效字符后才可以结束输入
      2.对输入有效字符之前遇到的空白,next()会自动将其去掉
      3.输入有效字符后,将后面的空白作为分隔符或结束符
      */
    2. nextLine():

      /*
      1.以enter位结束符,nextLine()方法返回的是输入回车之前的所有字符
      2.可以获得空白
      */

       

    3. 示例:

      package ProcessControl.ScannerUse;

      import java.util.Scanner;
      // 程序可以输入多个数组,并计算这些数的sum和mean,每输入一个数用回车确认,通过输入非数字来结束输入并执行结果
      public class ScannerTest_5 {
         public static void main(String[] args) {
             Scanner s = new Scanner(System.in);
             // 和
             double sum=0;
             // 计算输入了多少个数字
             int n = 0;
             System.out.println("请输入数字:");
             while (s.hasNextDouble()){   // Scanner 有很多方法,注意灵活使用
                 double a = s.nextDouble();
                 n++;
                 sum+=a;
            }
             System.out.println(n+"个数的和为:"+sum);
             System.out.println(n+"个数的平均值为:"+(sum/n));
             s.close(); //凡是属于 IO 流的类,必须关闭节省资源
        }
      }

       

       

2.顺序结构

  1. Java的基本结构就是顺序结构,除非特别指出,都是从上往下一句一句执行。

  2. 顺序结构是最简单的算法结构,任何一个算法都离不开的一种基本算法结构

  3. 语句与语句之间,框与框之间都是从上往下执行。

3.选择结构

  1. if 单选择结构

    if(布尔表达式){
       //这是布尔表达式为true会执行的语句
    }

     

  2. if 双选择结构

    if(布尔表达式){
       //这是布尔表达式为true会执行的语句
    }else{
       //这是布尔表达式为false会执行的语句
    }
  3. if 多选择结构

    if(布尔表达式 1){
       //这是布尔表达式 1 为true会执行的语句
    }else if(布尔表达式 2){
       //这是布尔表达式 2 为true会执行的语句
    }else if(布尔表达式 3){
       //这是布尔表达式 3 为true会执行的语句
    }else{
       //这是以上布尔表达式都为false会执行的语句
    }

    示例:

    package ProcessControl.OrderProcess;

    import java.util.Scanner;

    public class IfDemo_2 {
       public static void main(String[] args) {
           Scanner s = new Scanner(System.in);
           System.out.println("请输入您本次考试的成绩:");
           double score = s.nextDouble();
           if(score==100){
               System.out.println("恭喜你获得了满分!");
          }else if((score<100)&&(score>=80)){
               System.out.println("考的不错哦!");

      bu     }else if((score<80)&&(score>=60)){
               System.out.println("还需要继续加油!");
          }else if((score>=0)&&(score<60)){
               System.out.println("考成这样你还睡得着觉!!!");
          }else{
               System.out.println("输入内容不合法");
          }
      }
    }
  4. 嵌套的 if 结构

    if(布尔表达式 1){
    //这是布尔表达式为true会执行的语句
    if(布尔表达式 2){
    //这是布尔表达式 2为true会执行的语句
    }else{
    //这是布尔表达式 2为false会执行的语句
    }
    }else{
    //这是布尔表达式为false会执行的语句
    }
  5. switch多选择结构

    多看看源码学习编程思路 此处可以根据IDEA的反编译功能多看看源码

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

    2. switch 语言中的变量类型可以是:

      • byte, short, int, char

      • String类型(从Java SE7开始),同时case标签必须为字符串常量或者字面量

    格式:

    switch(expression){
    case value:
    //语句
    break;
    case value:
    //语句
    break;
    case value:
    //语句
    break; //可选
    // 可以由任意数量的case语句
    default: //可选
    //语句
    }

4.循环结构

  1. while循环

    while(布尔表达式){
    // 循环内容
    }
    • 只要布尔表达式为true,就会一直循环里面的内容

    • 由于大多数情况需要程序停止的,需要一个让 表达式失效的方法 来结束循环

    • 有点程序需要一直循环,比如服务器的请求响应监听

    • 循环条件一直为true就会死循环,我们应该避免

    • 思考计算 1+2+...+100 = ?

  2. do...while循环

    do{
    // 代码语句
    }while(布尔表达式);
    • 对应do...while循环,若条件不满足,则不能进入循环,但有时候即使不满足条件,也需要至少执行一次循环体的时候,会用到

    • do...while循环至少执行一次循环体

      do...while循环 与 while 循环区别

      • while先判断后执行,do...while 先执行后判断,因此do...while 循环至少循环一次。

  3. for循环

    • for循环时支持迭代的一种通用结构,最有效,灵活的循环结构

    • for循环的循环次数再执行之前就已经确定

      for(初始化;布尔表达式;迭代){
      // 循环体
      }
      • 练习

        1. 计算 0 - 100 之间的奇数与偶数和

        2. 用while或for循环输出1-10000之间能被5整除的数,并且每行输出3个

        3. 打印乘法表

  4. 主要用于数组中的增强型for循环(Java5 引入)

    1. 先了解,后面数组会重点运用

    2. 声明语句:声明新的局部变量,该变量的类型必须与数组元素的类型相匹配。

    3. 新的局部变量的作用域限定在循环语句这块,作用时其值与数组元素的值相等

    4. 表达式:表达式时要访问的数组名,或者是返回值为数组的方法

    for(声明语句:表达式){
    //循环体
    }
    例子:
    for(int n:numbers){
    // n 的类型要与数组numbers中的元素相匹配
    // n 的作用域限定在 函数体 这块
    }

5.break & continue

  • break 在任何循环的主体部分,均可以用 break 控制循环的流程,break 用于强行退出循环。

  • continue 在循环体语句体中,用于跳出本次循环,不会执行循环体中尚未执行的语句,进入下一次循环的判定。

  • 关于goto关键字

    1. goto 关键字很早就在程序设计语言中出现。尽管java保留了这个关键字,但并未得到正式使用。带标签的continue 和break 能看到goto的影子

    2. 标签是指后面跟一个冒号的标识符,如 label:

    3. 在循环之前设置标签的唯一理由:希望在该循环中嵌套另一个循环,由于break 和 continue只能中断当前循环,若配合标签使用,就可以中断到存在标签的地方。

      // 打印101-105之所有质数
      int count = 0;
      outer:for(int i=101;i<150;i++){
      for(int j = 2;j<i/2;j++){
      if(i%j==0){
      continue outer; // 从内部循环跳到外部
      }
      }
      System.out.print(i+"\t")
      }

       

6.练习

  • 需求:打印三角形

// 主要思路是将它划分为三个三角形进行打印
package ProcessControl.OrderProcess;

public class ProcessTest {
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();
}

}
}

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM