流程控制语句
顺序结构
是Java程序默认的执行流程,按照代码的先后顺序,从上到下依次执行。
分支结构
if语句结构
if (关系表达式){
语句体;
}
if注意点:1.如果语句体中只有一句代码,大括号可以省略不写 2.如果对一个布尔类型进行判断时,直接把变量写在小括号中即可。
public class Test1 {
public static void main(String[] args) {
//红灯亮,则停止
//黄灯亮,则减速
//绿灯亮,则行驶
boolean isLightGreen = false;
boolean isLightYellow = true;
boolean isLightRed = false;
if (isLightGreen){
System.out.println("gogogo!");
}
if (isLightYellow){
System.out.println("slow!");
}
if (isLightRed){
System.out.println("stop!");
}
}
}
if-else语句结构
if (关系表达式){
语句体1;
}else{
语句体2;
}
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) {
//影票选座
//如果票的序号为奇数,则打印出坐左边
//如果票的序号为偶数,则打印出坐右边
//票的序号为1-100才为有效
Scanner sc = new Scanner(System.in);
System.out.println("请输入你要选择的座位序号:");
int number = sc.nextInt();
if(number>=0&&number<=100){
if(number%2==0){
System.out.println("你的座位在右边");
}else{
System.out.println("你的座位在左边");
}
}
}
}
if第三种格式--多种情况判断
if (关系表达式1){
语句体1;
}else if (关系表达式2){
语句体2;
}
...
else{
语句体n+1;
}
import java.util.Scanner;
public class Test3 {
public static void main(String[] args) {
//商品总价为1000,键盘录入会员的级别,并计算实际支付的价钱
//会员1级:打9折
//会员2级:打8折
//会员3级:打7折
//非会员:不打折
int primeprice = 1000;
Scanner sc = new Scanner(System.in);
System.out.println("请输入您的会员等级,若非会员请输入0:");
int vip = sc.nextInt();
if (vip == 1){
System.out.println("实际支付价钱为:"+(primeprice*0.9));
}else if (vip ==2){
System.out.println("实际支付价钱为:"+(primeprice*0.8));
}else if (vip ==3){
System.out.println("实际支付价钱为:"+(primeprice*0.7));
}else {
System.out.println("实际支付价钱为:"+primeprice);
}
}
}
Switch结构
import java.util.Scanner;
public class Test4 {
public static void main(String[] args) {
//键盘录入星期天数,显示今天的减肥活动
Scanner sc = new Scanner(System.in);
System.out.println("请输入星期");
int week = sc.nextInt();
switch (week){
case 1:
System.out.println("今天的运动是跑步");
break;
case 2:
System.out.println("今天的运动是游泳");
break;
case 3:
System.out.println("今天的运动是慢走");
break;
case 4:
System.out.println("今天的运动是动感单车");
break;
case 5:
System.out.println("今天的运动是拳击");
break;
case 6:
System.out.println("今天的运动是爬山");
break;
case 7:
System.out.println("今天要好好吃一顿");
break;
default:
System.out.println("没有这个星期");
break;
}
}
}
switch结构中一些需要注意的:
default的位置和省略
位置:default不一定是写在最下面的,可以写在任意位置,只不过习惯写在最下面
省略:default可以省略,语法不会有问题,但是最好别省略。
case穿透---缺失break
首先那小括号中表达式的值与下面每一个case进行匹配,如果此时匹配上了则会执行相对应的语句体,而如果此时发现break,则会结束整个switch语句,但是如果没有break,则程序会继续执行下一个case的语句体,直到遇见break或者大括号为止。
switch新特性---在JDK12以后
//请注意,如果case中只有一句语句,则{}可以省略
switch (week){
case 1->{
System.out.println("今天的运动是跑步");
}
case 2-> {
System.out.println("今天的运动是游泳");
}
case 3-> {
System.out.println("今天的运动是慢走");
}
case 4-> {
System.out.println("今天的运动是动感单车");
}
case 5-> {
System.out.println("今天的运动是拳击");
}
case 6 -> {
System.out.println("今天的运动是爬山");
}
case 7-> {
System.out.println("今天要好好吃一顿");
}
default->{
System.out.println("没有这个星期");
}
}
选择switch语句还是if的第三种结构的判断方法:
1.如果我们判断的在一个范围内时,使用if的第三种结构
2.如果需要我们把有限的数据列举出来,选择其中一个执行时,我们需要使用switch语句。
import java.util.Scanner;
public class Test5 {
public static void main(String[] args) {
//键盘录入星期天数,输出工作日和休息日
//1-5为工作日,6-7为休息日
//可以使用if的第三种结构、或者switch语句,在这里使用switch语句
//由于存在多个有限情况的输出相同,在switch语句中可以采取case穿透情况
Scanner sc = new Scanner(System.in);
System.out.println("请输入星期");
int week = sc.nextInt();
switch (week){
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("今天是工作日");
break ;
case 6:
case 7:
System.out.println("今天是休息日");
break;
default:
System.out.println("没有这个星期");
break;
}
}
}
在JKD12以后可以简写为:
switch (week){
case 1,2,3,4,5 -> System.out.println("今天是工作日");
case 6,7 -> System.out.println("今天是休息日");
default -> System.out.println("没有这个星期");
}
循环结构
for循环
for(初始化语句;条件判断语句;条件控制语句){
循环体语句;
}
public class CirculationDemo1 {
//需求:求1-10之间的数据和,并输出求和结果
public static void main(String[] args) {
int sum1 = 0;
for (int i =1;i<=10;i++){
sum1 +=i;
}
System.out.println(sum1);
}
}
public class CirculationDemo2 {
//需求:求1-100之间的偶数数据和,并输出求和结果
public static void main(String[] args) {
int sum1 = 0;
for (int i =0;i<=100;i=i+2){
sum1 +=i;
}
System.out.println(sum1);
}
}
import java.util.Scanner;
public class CirculationDemo3 {
//需求:键盘输入两个数字,表示一个范围,统计在该范围中,
// 即能被3整除,又能被5整除数字有多少个?
public static void main(String[] args) {
Scanner sc1 = new Scanner(System.in);
System.out.println("请输入第一个数字:");
int start = sc1.nextInt();
Scanner sc2= new Scanner(System.in);
System.out.println("请输入第二个数字:");
int end = sc2.nextInt();
int num = 0;
for (int i=start;i<=end;i++){
if(i%3==0&&i%5==0){
num+=1;
}
}
System.out.println(num);
}
}
While循环语句结构
while(条件判断语句){
循环体;
条件控制语句;
}
public class CirculationDemo4 {
//需求:循环折叠纸张,只有纸张厚度<珠穆朗玛峰的高度时,循环才能继续,否则循环停止
//统计折叠的次数
public static void main(String[] args) {
int height = 8844430;
double paper = 0.1;
int count = 0;
while (paper<height){
paper = paper*2;
count++;
}
System.out.println("此时折叠了"+count+"次");
}
}
do-while语句
do{
循环体;
条件控制语句;
}while(条件判断语句)
死循环
//for结构下的死循环
for ( ; ; ){
System.out.println("循环执行一直打印的内容");
}
//while结构下死循环
while (true){
System.out.println("循环执行一直打印的内容");
}
//do-while结构下死循环
do {
System.out.println("循环执行一直打印的内容");
}while (true);
//不要同时出现,同时出现会报错,因为死循环的代码是不会执行循环之后的内容
//最好使用while结构下的死循环
break和continue
break: 存在于switch和循环语句中,碰见break,表示跳出(结束)该结构
continue: 只存在与循环中,表示跳出本次循环,继续执行下次循环。
public class CirculationDemo5 {
//需求:逢七过
//数字中包含7或者是7的倍数都要说 过!
//在控制台打出1-100之间的满足逢7过的数据
public static void main(String[] args) {
for (int a = 1;a<=100;a++){
if (a%7==0||a%10==7||a/10==7){
System.out.println("逢7过的数字是"+a);
}
}
}
}
import java.util.Scanner;
public class CirculationDemo6 {
//需求:键盘录入一个数,并判断该数是否为质数
//除了1和本身,没有其他约数,就叫做质数
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入数字");
int number = sc.nextInt();
boolean flag = true;
for (int i =2;i<=number-1;i++){
if (number%i==0){
flag = false;
}
}
if (flag){
System.out.println(number+"是个质数。");
}else {
System.out.println(number+"不是个质数。");
}
}
}
import java.util.Random;
import java.util.Scanner;
public class CirculationDemo7 {
//需求:程序自动生成一个1-100的随机数,再使用代码去猜测这个数字是多少
public static void main(String[] args) {
//生成1-100随机数
Random r = new Random();
int number = r.nextInt(100)+1;//100表示随机数的范围,生成的准确范围为:[0,100)
Scanner sc = new Scanner(System.in);
while (true){
System.out.println("请输入数字");
int guessnumber = sc.nextInt();
if (guessnumber<number){
System.out.println("您猜的数据小了");
} else if (guessnumber>number) {
System.out.println("您猜的数据大了");
}else {
System.out.println("恭喜您猜中了!");
}
}
}
}