我们需要开始学习控制语句,控制语句分为两类:选择和循环。
“选择结构”代表“如果…,则…”的逻辑。
比如,如果女朋友来电,则迅速接电话;如果看到红灯,则停车;
“循环结构”代表“如果…,则再继续…”的逻辑。
比如,如果没打通女朋友电话,则再继续打一次;如果没找到喜欢的人,则再继续找。
很神奇的是,“选择和循环”就能表示所有的事情!
不信,你可以试试拆分你遇到的各种事情。
实际上,任何软件和程序,小到一个练习,大到一个操作系统,
本质上都是由“变量、选择语句、循环语句”组成。
这两种基本逻辑结构是相互支撑的,它们共同构成了算法的基本结构,无论怎样复杂的逻辑结构,都可以通过它们来表达。上述两种结构组成的程序可以解决全部的问题,所以任何一种高级语言都具备上述三种结构。
因此,本章是大家真正跨入编程界的“门槛”,是成为“程序猿”的“门票”。
选择结构
if单选择结构
语法结构:
if(布尔表达式){
语句
}
if语句对条件表达式进行一次测试,若测试为真,则执行{}中的语句,否则跳过该语句。
图1 if结构流程图
【示例1】if选择结构
doublei = 6 * Math.random();
doublej = 6 * Math.random();
doublek = 6 * Math.random();
intcount = (int) (i + j + k);
if(count > 15) {
System.out.println("今天手气不错");
}
if(count >= 10 && count <= 15) { //错误写法:10
System.out.println("今天手气很一般");
}
if(count < 10) {
System.out.println("今天手气不怎么样");
}
System.out.println("得了" + count + "分");
示例1运行效果图
Math类的使用
java.lang包中的Math类提供了一些用于数学计算的方法。
Math.random()该方法用于产生一个0到1这间的double类型的随机数。
int i = (int) (6 * Math.random()); //产生:[0,5]之间的随机整数
新手雷区:
如果if语句不写{},则只能作用于后面的第一个语句。强烈建议,任何时候都跟上{},即使里面只有一句话!
if-else双选择结构
语法结构:
if(布尔表达式){
语句1
}else{
语句2
}
当条件表达式为真时,执行语句块1,否则,执行语句块2。也就是else部分。
图2 if-else结构流程图
【示例2】if-else结构
double r = 4 * Math.random();
double area = Math.PI* Math.pow(r, 2);
double circle = 2 * Math.PI* r;
System.out.println("半径为:" + r);
System.out.println("面积为:" + area);
System.out.println("周长为:" + circle);
if(area >= circle) {
System.out.println("面积大于等于周长");
} else {
System.out.println("周长大于面积");
}
示例2运行效果图
条件运算符有时候可用于代替if/else,如示例3与示例4所示。
【示例3】使用if-else
inta=2;
intb=3;
System.out.println((a
【示例4】使用条件运算符
inta=2;
intb=3;
if(a
System.out.println(a);
}else{
System.out.println(b);
}
if-else if-else多选择结构
语法结构:
if(布尔表达式1) {
语句块1;
} else if(布尔表达式2) {
语句块2;
}………
else if(布尔表达式n){
语句块n;
} else {
语句块n+1;
}
图3 if-else if-else多选择流程图
【示例5】if-else if-else多选择结构
public class Welcome{
public static void main(String[] args) {
int age = (int) (100 * Math.random());
System.out.print("年龄是" + age + ",属于");
if (age < 15) {
System.out.println("儿童,喜欢玩!");
} else if (age < 25) {
System.out.println("青年,要学习!");
} else if (age < 45) {
System.out.println("中年,要工作!");
} else if (age < 65) {
System.out.println("中老年,要补钙!");
} else if (age < 85) {
System.out.println("老年,多运动!");
} else {
System.out.println("老寿星,古来稀!");
}
}
};
示例3-5运行效果图
示例3-5运行效果图
switch多选择结构
语法结构:
switch (表达式) {
case值1:
语句序列;
[break];
case值2:
语句序列;
[break];
… … … … …
[default:
默认语句;]
}
图4switch多选择流程图
根据表达式值的不同执行许多不同的操作。switch语句中case标签在JDK1.5之前必须是整数或者枚举,不能是字符串,在JDK1.7之后允许使用字符串(String)。
switch语句会根据表达式的值从相匹配的case标签处开始执行,一直执行到break语句处或者是switch语句的末尾。与任一case值不匹配,则进入default语句(如果存在default语句的情况)。
【示例6】switch结构
public class VowelsAndConsonants {
public static void main(String[] args) {
char c = 'a';
int rand =(int) (26*Math.random());
char c2 = (char)(c+rand);
System.out.print(c2 + ": ");
switch (c2) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
System.out.println("元音"); break;
case 'y':
case 'w':
System.out.println("半元音"); break;
default:
System.out.println("辅音");
}
}
}
示例6运行效果图
示例6运行效果图
「全栈Java笔记」是一部能帮大家从零到一成长为全栈Java工程师系列笔记。笔者江湖人称 Mr. G,10年Java研发经验,曾在神州数码、航天院某所研发中心从事软件设计及研发工作,从小白逐渐做到工程师、高级工程师、架构师。精通Java平台软件开发,精通JAVAEE,熟悉各种流行开发框架。
笔记包含从浅入深的六大部分:
A-Java入门阶段
B-数据库从入门到精通
C-手刃移动前端和Web前端
D-J2EE从了解到实战
E-Java高级框架精解
F-Linux和Hadoop
F-Linux和Hadoop