数据输入Scanner
import java.util.Scanner; // 导包
Scanner sc = new Scanner(System.in); // 创建对象
int x = sc.nextInt(); // 接收数据
System.out.println("输入的数字是"+ x);
随机数Random
import java.util.Random; // 导包
Random r = new Random(); // 创建对象
int num = r.nextInt(10); // 获取的数据范围:[0,10) 包含0不包含10
int x = r.nextInt(100) + 1; // 获取1-100的随机数
流程控制语句
<!--在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。所以,我们必须清楚每条语句的执行流程。而且,很多时候要通过控制语句的执行顺序来实现我们想要的功能。-->
语句结构 | 说明 |
---|---|
顺序语句 | 以分号结尾,表示一句话的结束 |
分支语句 | 一对大括号表示if或switch的整体结构,整体描述一个完整的if或switch语句 |
循环语句 | 一对大括号表示for|while|do...while的整体结构,整体描述一个完整的for|while|do..while语句 |
顺序结构:
<!--顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。-->
分支结构:if和switch
if语句的格式:
<!--格式1:-->
if (关系表达式) {
语句体;
}
/*
执行流程:
①首先计算关系表达式的值
②如果关系表达式的值为true就执行语句体
③如果关系表达式的值为false就不执行语句体
④继续执行后面的语句内容
*/
<!--格式2:-->
if (关系表达式) {
语句体1;
} else {
语句体2;
}
/*
执行流程:
①首先计算关系表达式的值
②如果关系表达式的值为true就执行语句体1
③如果关系表达式的值为false就执行语句体2
④继续执行后面的语句内容
*/
<!--格式3:-->
if (关系表达式1) {
语句体1;
} else if (关系表达式2) {
语句体2;
}
…
else {
语句体n+1;
}
/*
执行流程:
①首先计算关系表达式1的值
②如果值为true就执行语句体1;如果值为false就计算关系表达式2的值
③如果值为true就执行语句体2;如果值为false就计算关系表达式3的值
④…
⑤如果没有任何关系表达式为true,就执行语句体n+1。
*/
switch语句的格式:
switch (表达式) {
case 1:
语句体1;
break;
case 2:
语句体2;
break;
...
default:
语句体n+1;
break;
}
/*
执行流程:
* 首先计算出表达式的值
* 其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结 束。
* 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
*/
<!--示例代码-->
Scanner sc = new Scanner(System.in);
int month = sc.nextInt();
switch(month) {
case 12:
case 1:
case 2:
System.out.println("冬季"); // 正确的使用case穿透可以省略部分代码
break;
case 3:
case 4:
case 5:
System.out.println("春季");
break;
case 6:
case 7:
case 8:
System.out.println("夏季");
break;
case 9:
case 10:
case 11:
System.out.println("秋季");
break;
default:
System.out.println("请输入正确的月份"); // default后面的break可以省略
}
/*
格式说明:
表达式:取值为byte,short,int,char,JDK5以后可以是枚举,JDK7以后可以是String
case:后面跟的是要和表达式进行比较的值
break:表示中断,结束的意思,用来结束switch语句,如果没有使用break,则会出现case穿透效果
default:表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似
*/
循环结构for 和 while
循环结构的组成 | 循环结构对应的语法 | |
---|---|---|
初始化语句 | 用于表示循环开启是的起始状态,简单说就是循环开始的时候是什么样 | 这里可以是一条或者多条语句,这些语句可以完成一些初始化操作 |
条件判断语句 | 用于表示云鬟反复执行的条件,简单说就是判断循环是否能一直执行下去 | 这里使用一个结果为boolean类型的表达式,这个表达式能决定是否执行循环体.例如:a<3 |
循环体语句 | 用于表示循环反复执行的内容,简单说就是循环反复执行的事情 | 这里可以是任意语句,这些语句将反复执行 |
条件控制语句 | 用于表示循环执行中每次变化的内容,简单说就是控制循环是否能执行下去 | 这里通常是使用一条语句来改变变量的值,从而达到控制循环是否继续向下执行的效果,常见i++,i-- |
for循环
for (初始化语句;条件判断语句;条件控制语句) {
循环体语句;
}
/*
①执行初始化语句
②执行条件判断语句,看其结果是true还是false
如果是false,循环结束
如果是true,继续执行
③执行循环体语句
④执行条件控制语句
⑤回到②继续
*/
for(int i = 1;i <= 10;i++) {
System.out.println("循环语句")
}
while循环
// 基本格式
while(条件判断语句) {
循环体语句;
}
// 完整格式
初始化语句;
while(条件判断语句) {
循环体语句;
条件控制语句;
}
//示例
int i = 0;
while(i <= 5) {
System.out.println("循环语句");
i++;
}
/*
while循环执行流程:
①执行初始化语句
②执行条件判断语句,看其结果是true还是false
如果是false,循环结束
如果是true,继续执行
③执行循环体语句
④执行条件控制语句
⑤回到②继续
*/
do...while循环
// 基本格式
do{
循环体语句;
} while(条件判断语句);
// 完整格式
初始化语句;
do{
循环体语句;
条件控制语句;
} while(条件判断语句);
// 示例
int i = 0;
do{
System.out.println("循环语句");
i++;
} while(i <= 5);
/*
① 执行初始化语句
② 执行循环体语句
③ 执行条件控制语句
④ 执行条件判断语句,看其结果是true还是false
如果是false,循环结束
如果是true,继续执行
⑤ 回到②继续
*/
三种循环的区别
循环 | 区别 | 死循环格式 |
---|---|---|
for | 初始化语句定义在循环中,出了for循环无法使用, | for(;;){} |
while | while(true){} | |
do...while | 循环语句至少执行一次 | do{}while(true) |
跳转控制语句
跳转控制语句 | 作用 | 解释 |
---|---|---|
break | 跳出循环,结束循环 | |
continue | 跳过本次循环,继续下次循环 | continue只能在循环中进行使用 |
ruturn | 结束方法 | 这个并不是专门针对循环的,不属于跳转控制语句 |
循环嵌套和分支嵌套
public static void main(String[] args) {
//外循环控制小时的范围,内循环控制分钟的范围
for (int hour = 0; hour < 24; hour++) {
for (int minute = 0; minute < 60; minute++) {
System.out.println(hour + "时" + minute + "分");
}
System.out.println("--------");
}
}
public static void main(String[] args) {
int i = 100;
if(i > 50) {
if(i % 2 == 0) {
System.out.println("i是偶数");
}
System.out.println("i大于50");
}
}