一.顺序控制
依次执行代码。
二.条件控制
1.if语句
语法结构:if(条件){
//实现我们的逻辑
}
//实现我们的逻辑
}
import java.util.Scanner;
public class If {
public static void main(String[] args) {
int bonus =500;
Scanner input = new Scanner(System.in);
System.out.println("请输入奖金,猜是否与规定的数目相符:");
int in = input.nextInt();
//条件结够
if(in == bonus){
System.out.println("恭喜您中500万!");
System.out.println("you can travel around the world!");
}
}
}
2.if...else语句
if(条件){
//实现逻辑
}else{
//实现逻辑
}
//实现逻辑
}else{
//实现逻辑
}
import java.util.Scanner;
public class If {
public static void main(String[] args) {
int bonus =500;
Scanner input = new Scanner(System.in);
System.out.println("请输入奖金,猜是否与规定的数目相符:");
int in = input.nextInt();
//条件结构
if(in == bonus){
System.out.println("恭喜您中500万!");
System.out.println("you can travel around the world!");
}else{
System.out.println("革命尚未成功,同志仍需努力!!!");
}
}
}
3.if(条件)...else if(条件)...(接N个)...else
import java.util.Scanner;
public class If {
public static void main(String[] args) {
int bonus =500;
Scanner input = new Scanner(System.in);
System.out.println("请输入奖金,猜是否与规定的数目相符:");
int in = input.nextInt();
//条件结构
if(in == bonus){
System.out.println("恭喜您中500万!");
System.out.println("you can travel around the world!");
}else{
System.out.println("革命尚未成功,同志仍需努力!!!");
}
}
}
注意:a.else if(条件): 条件的约束,和前面说的if(条件),俩者是等价的.
b.else if 可以有多个
c.else 可以省略掉的, 但是即使没有匹配所有条件,我们依然建议必须有else,来保证 语句的完整和可读性.
d.如果满足条件只需要执行一行代码,{}也是可以省略的,但是不建议这么做.
b.else if 可以有多个
c.else 可以省略掉的, 但是即使没有匹配所有条件,我们依然建议必须有else,来保证 语句的完整和可读性.
d.如果满足条件只需要执行一行代码,{}也是可以省略的,但是不建议这么做.
/*
仅会执行第一次匹配到的条件,之后就会退出我们的条件语句
*/
public class IfDemo {
public static void main(String[] args) {
int age = 23;
if(age>=60){
System.out.println("老年");
}else if(age<60 && age>=40){
System.out.println("中年");
}else if(age>=18 && age<40){
System.out.println("少年");
}else if(age<18){
System.out.println("未成年");
}
}
}
注意:条件控制语句可以彼此嵌套使用;
/*
建议: 虽然条件判断语句可以彼此嵌套,而且也没有嵌套层数的限制,但是过多的嵌套很影响可读性。
所以要避免过多的嵌套,一般最多建议嵌套3层。
*/
public class IfMutile {
public static void main(String[] args){
boolean isWeekday = true;
boolean isRain = false;
int num = 10;
if(isWeekday){
if(num>5){
System.out.println("play computer");
}
else{
System.out.println("追剧");
}
}else if(isRain){
System.out.println("不进行活动");
}
}
}
4.switch case语句
语法结构:
switch(判断值){
case 值1:
break; //跳出我们匹配到的条件, break 可以省略的.如果省略掉break. 那么代码将会在第一个匹配成功的条件,
一直向下继续执行我们的switch语句,直到遇到break为止.
case 值2:
break;
.......
case 值n:
break;
default: //可以省略,而且default 可以放到任何的位置 .作用:当匹配不到任何条件的时候,执行的内容.
}
case 值1:
break; //跳出我们匹配到的条件, break 可以省略的.如果省略掉break. 那么代码将会在第一个匹配成功的条件,
一直向下继续执行我们的switch语句,直到遇到break为止.
case 值2:
break;
.......
case 值n:
break;
default: //可以省略,而且default 可以放到任何的位置 .作用:当匹配不到任何条件的时候,执行的内容.
}
import java.util.Scanner;
public class SeasonSelect {
public static void main(String[] args){
System.out.println("请输入一个月份:");
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
switch(num){
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;
case 12:
case 1:
case 2:
System.out.println("冬天");
break;
default:
System.out.println("请输入正确的月份:");
}
}
}
三.循环控制
1.while循环
语法结构:while(循环条件){
//循环实现的代码
}
//循环实现的代码
}
/**
* 求1-50(俩边都闭区间), 所有偶数的和.
最终输出结果.
*/
public class Sum {
public static void main(String[] args) {
int minNum = 1;
final int MAX_NUM = 50;
int sum = 0;
while(minNum<=MAX_NUM){
if((minNum % 2)==0){
sum = sum + minNum;
}
minNum++;
}
/*
while(minNum<=MAX_NUM){
sum += (minNum%2==0)?minNum:0;
minNum++;
}
*/
System.out.println(sum);
}
}
2.do .. while循环
语法结构:do{
//实现的代码
}while(循环的条件);
//实现的代码
}while(循环的条件);
/*
特点: 先执行后判断;不管条件是否成立,都会至少先执行一次do 中的代码
*/
public class DoWhile{
public static void main(String[] args){
int maxNum = 10;
int minNum = 1;
//打印1到10之间的自然数
do{
System.out.println(minNum);
minNum++;
}while(minNum<=maxNum);
}
}
3.for循环
语法结构:
for(循环变量初始化 ;循环条件判断; 循环变量的改变){
//循环需要实现的逻辑
}
//循环需要实现的逻辑
}
public class ForDemo1{
public static void main(String[] args){
int minNum = 1;
final int MAX_NUM = 50;
int sum = 0;
/*
for(int i=1;i<=MAX_NUM;i++){
if(i%2 == 0){
sum+=i;
}
}
*/
/*
int i = 0;
for(;i<=MAX_NUM;){ //括号中的三部分都可省略,但;不可省略
if(i%2==1){
sum+=i;
}
i++;
}
*/
for(int i = 0,num =0;i<100;i+=4,num++){ //循环变量可以定义多个,对于循环变量的改变,我们也可以同时改变多组变量
System.out.println("i:"+i);
System.out.println("num:"+num);
}
}
}
注意:俩个关键字: 应用到循环控制中,continue的含义是跳出当次的循环,break的含义是跳出整个循环continue:
在循环的代码体中,如果遇到continue, 则会跳出当次循环,循环体内continue之后的代码都不会执行,并且循环变量进行一次改变操作,之后再次进行条件判断,如果满足条件,则进入循环,否则直接结束循环; 跳出的仅是continue外层直接包裹的循环.
break:
在循环的代码体中,如果遇到break,则会跳出本循环代码块,break后的代码不会执行。并且整个循环的过程结束。break后退出的循环也是直接包围break的循环。
在循环的代码体中,如果遇到continue, 则会跳出当次循环,循环体内continue之后的代码都不会执行,并且循环变量进行一次改变操作,之后再次进行条件判断,如果满足条件,则进入循环,否则直接结束循环; 跳出的仅是continue外层直接包裹的循环.
break:
在循环的代码体中,如果遇到break,则会跳出本循环代码块,break后的代码不会执行。并且整个循环的过程结束。break后退出的循环也是直接包围break的循环。
for循环中嵌套的层数没有限制,编译不会出错。但是建议最多嵌套2层
//外层循环控制行数,内层循环控制每行多少个*
public class ForDouble {
public static void main(String[] args){
for(int j = 1;j<=5;j++){
/*
输出: *
**
***
****
*****
*/
for(int i =1;i<=j;i++){
System.out.print("*");
}
System.out.println("");
}
//----------------------------------------
System.out.println();
for(int j = 1;j<=5;j++){
/*
输出:
*****
****
***
**
*
*/
for(int i =1;i<=(6-j);i++){
System.out.print("*");
}
System.out.println("");
}
}
}