在了解开发工具后,我们来熟悉一下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)运行输入显示行数可输出对应的杨辉三角
注意:在二维数组中,第一个下标值表示行数,第二个下标值表示列数,上面创建二维数组时第二维的长度未确定,表示第二维的长度任意、不确定。
以上是对流程控制中几种常用的语句进行一些讲解和运用,还有相对复杂的,比如嵌套循环(九九乘法表案例)等,这里不做介绍了,大家自行学习巩固。