Java语言学习(三):流程控制

原创
2018/07/11 16:23
阅读数 52

    在了解开发工具后,我们来熟悉一下Java语言的流程控制模块知识,下面通过一些案例来学习一下。

    首先,来熟悉一下流程控制语句if...else的使用:

    (1)任务:判断某一年是否为闰年

    (2)准备工作:符合闰年的条件是能被4整除但不能被100整除或者能被400整除

    (3)编程:通过控制台输入年份的方式,代码如下

import java.util.Scanner;

public class RunYear{
   public static void main(String[] args){
      Scanner scan =new Scanner(System.in);
      System.out.println("请输入一个年份:");
      long year;
      try{
          year = scan.nextLong();
          if((year%4 == 0 && year%100 !=0) || year%400 == 0)
              System.out.println(year+"是闰年!");
          else
              System.out.println(year+"不是闰年!");
      }catch(Exception e){
          System.out.println("输入的不是有效的年份!");
      }
   }
}

    (4)运行:输入年份可输出相应信息

    其中,Scanner类是一个用于扫描输入文本的简单文本扫描器,可以用这个类从控制台写入数据,类的nextLong()方法可以将输入信息转为一个long型的数据。上面运用了if...else的简单流程语句,也可以按三元运算符(?:)的形式编写,让代码看起来更加简洁。

    注意:如果if表达式判断两字符串是否相同,则不能使用 “==”,因为字符串属于对象而非基本数据类型,使用“==”判断的将是两个字符串对象的内存地址,而非字符串内容,所以需要通过equals()方法来判断是否相同。

    接下来,来熟悉一下流程控制语句switch的使用:

    (1)任务:根据成绩分出等级

    (2)准备工作:switch语句的基本语法格式

switch(表达式){
   case 常量表达式1:语句1
      break;
   case 常量表达式2:语句2
      break;
   ...
   case 常量表达式n:语句n
      break;
   default:语句n+1
      break;
}

    参数说明:  

参数名称 参数描述
表达式 必要参数,可以是任何byte、short、int和char类型的变量
常量表达式1 若case存在,则为必要参数,该常量表达式的值必须是一个与表达式数据类型相兼容的值
语句1 可选参数,一条或多条语句,当表达式的值与常量表达式1的值匹配时执行
常量表达式n 若case存在,则为必要参数,该常量表达式的值必须是一个与表达式数据类型相兼容的值
语句n 可选参数,一条或多条语句,当表达式的值与常量表达式n的值匹配时执行
break 可选参数,用于跳出switch语句
default 可选参数,当所有case中的常量表达式匹配不成功时执行
语句n+1 可选参数,若没有与表达式的值相匹配的case常量时执行

 

    (3)编程:按照百分制通过控制台输入成绩的方式,代码如下

import java.util.Scanner;

public class ScoreLevel{
   public static void main(String[] args){
      Scanner scan =new Scanner(System.in);
      System.out.println("请输入成绩:");
      try{
         int score = scan.nextInt();
         score = score/10;
         switch(score){
            case 10:
            case 9:
               System.out.println("成绩等级为A!");
               break;
            case 8:
               System.out.println("成绩等级为B!");
               break;
            case 7:
               System.out.println("成绩等级为C!");
               break;
            case 6:
               System.out.println("成绩等级为D!");
               break;
            case 5:
            case 4:
            case 3:
            case 2:
            case 1:
            case 0:
               System.out.println("成绩等级为E!");
               break;
        }
      catch(Exception e){
         System.out.println("输入无效!");
      }
   }
}

    (4)运行:输入成绩可输出相应信息

    注意:对于多个条件采取相同处理的情况,可以把多个case分支关联在一起,减少重复代码,default属于可选参数,可不采用,如上所示。break语句和continue语句都是对循环体的控制语句,前者表示跳出多层循环,结束循环,后者表示跳过其后面的语句,进入下一次循环,循环继续。

    紧接着,来熟悉一下流程控制语句while的使用:

    (1)任务:自增运算符结合while循环实现数组的遍历

    (2)准备工作:while循环语句基本语法格式

while(条件表达式){
   循环体;
}

    参数说明:条件表达式决定是否进行循环,其结果为boolean类型,即为true或false;循环体是条件表达式结果为true时执行的语句。

    (3)编程:

public class ColorWhile{
   public static void main(String[] args){
       String[] colorArray = {"BLUE","WHITE","YELLOW","BLACK","GREEN"};
       int index = 0;
       while(index < colorArray.length){
          System.out.println("颜色:为"+colorArray[index++]);
       }
   }
}

    (4)运行可在控制台看到依次输出数组中的值

    注意:数组下标从0开始;自增和自减运算符都分前置和后置两种,如上,“index++“会先使用变量的值,再进行递增运算,“++index”则会先进行递增运算,再使用变量的值,大家可以修改上面的代码进行验证,看看两者之间的区别和原理,会出现数组越界的情况。

    最后,来熟悉一下流程控制语句for的使用:

    (1)任务:输出杨辉三角

    (2)准备工作:杨辉三角的原理(两侧数值均为1,其他位置的数值是其正上方的数值与左上角数值之和);for循环语句基本语法格式

for(表达式1;表达式2;表达式3){
   循环体
}

    参数说明:3个表达式均为可选,即for循环可以无表达式,则为无限循环;执行顺序为:表达式1->表达式2->循环体->表达式3。

    (3)编程:通过控制台输入显示的行数

import java.util.Scanner;

public class YanghuiTriangle {
   public static void main(String[] args) {
      Scanner scan =new Scanner(System.in);
      System.out.println("请输入要输出的行数:");
      try{
         int row = scan.nextInt();
         //创建二维数组
         int triangle[][] = new int[row][];
         for(int i=0;i<triangle.length;i++){
             //初始化第二层数组的大小
             triangle[i] = new int[i+1];
             //遍历数组
             for(int j=0;j<=i;j++){
                 //两侧数组元素均为1
                 if(i==0 || j==0 || i==j)
                    triangle[i][j] = 1;
                 //其他数组元素值=正上方值+正上方左值
                 else
                    triangle[i][j] = triangle[i-1][j]+triangle[i-1][j-1];
                 //输出数组元素
                 System.out.print(triangle[i][j]+"\t");
             }
             System.out.println();
          }
       }catch(Exception e){
           System.out.println("输入不合规范!");
       }
   }
}

    (4)运行输入显示行数可输出对应的杨辉三角

    注意:在二维数组中,第一个下标值表示行数,第二个下标值表示列数,上面创建二维数组时第二维的长度未确定,表示第二维的长度任意、不确定。

    以上是对流程控制中几种常用的语句进行一些讲解和运用,还有相对复杂的,比如嵌套循环(九九乘法表案例)等,这里不做介绍了,大家自行学习巩固。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部