Java流程控制
1、分支结构
1.1 if分支
if分支有三种形式:
// 需求1:测量用户体温,如果提问大于37°就报警
double t = 37.5;
if (t > 37) {
System.out.println("体温不正常,赶紧带走!!!!");
}
// 需求2:发红包,现在钱包有99元,发出90元红包,如果够发则发送成功,如果不够发则显示余额不足
double money = 89.0;
if (money > 90) {
System.out.println("发送成功!");
} else {
System.out.println("余额不足,穷光蛋一枚~~");
}
// 需求3:[0,60)D,[60,70)C,[70,90)B,[90,100]A
Scanner sc = new Scanner(System.in);
System.out.println("请录入分数:");
int score = sc.nextInt();
if (score >= 0 && score < 60) {
System.out.println("D");
} else if (score >= 60 && score < 70) {
System.out.println("C");
} else if (score >= 70 && score < 90) {
System.out.println("B");
} else if (score >= 90 && score <= 100) {
System.out.println("A");
} else {
System.out.println("录入出错!");
}
1.2 switch分支
格式:
switch(表达式){ case 表达式运算的值1: 执行的代码; break; case 表达式运算的值2: 执行的代码; break; ........... case 表达式运算的值n-1: 执行的代码; break; default: 执行代码n; }
需求:
System.out.println("==================================================");
System.out.println("请输入星期:");
String xingqi = sc.next();
switch (xingqi) {
case "周一":
System.out.println("埋头苦干,解决bug");
break;
case "周二":
System.out.println("请求大牛程序员帮忙");
break;
case "周三":
System.out.println("今晚啤酒、龙虾、小烧烤");
break;
case "周四":
System.out.println("主动帮新来的女程序员解决bug");
break;
case "周五":
System.out.println("今晚吃鸡");
break;
case "周六":
System.out.println("与王婆介绍的小芳相亲");
break;
case "周日":
System.out.println("郁郁寡欢,准备上班");
break;
default:
System.out.println("输入的星期不合法");
}
// 语法版
System.out.println("请输入星期:");
String xingqi = sc.next();
switch (xingqi) {
case "周一" -> System.out.println("埋头苦干,解决bug");
case "周二" -> System.out.println("请求大牛程序员帮忙");
case "周三" -> System.out.println("今晚啤酒、龙虾、小烧烤");
case "周四" -> System.out.println("主动帮新来的女程序员解决bug");
case "周五" -> System.out.println("今晚吃鸡");
case "周六" -> System.out.println("与王婆介绍的小芳相亲");
case "周日" -> System.out.println("郁郁寡欢,准备上班");
default -> System.out.println("输入的星期不合法");
}
switch使用的注意事项:
2、循环结构
2.1 for循环结构
快捷键产生for循环:fori
怎么快速将一段代码放入for循环中:ctrl+alt+t
// 需求1:打印多行hello world
for (int i = 0; i < 5; i++) {
System.out.println("Hello World");
System.out.println(i);
}
for (int i = 0; i < 5; i += 2) { //这里的+号可以替换成*,-,/等等
System.out.println("Hello World");
System.out.println(i);
}
// 需求2:求1到100的奇数和
int sum = 0;
for (int i = 1; i <= 100; i += 2){
sum = sum + i;
}
System.out.println("1到100的奇数和为:" + sum);
2.2 while循环
while循环的格式:
int i = 0; while (i < 5) { System.out.println("Hello World"); i++; }
案例:
// 珠穆朗玛峰折纸案例
double thickness = 0.1;// 单位毫米
double peakHeight = 8848860;//单位毫米
int count = 0;
while (thickness < peakHeight) {
thickness = thickness * 2;
count = count + 1;
}
System.out.println("折叠的次数为:" + count);
2.3 for循环与while循环的对比
1、for循环能实现的,while循环也能实现。while循环能实现的,for循环也能实现,功能上没有区别。
2、在不知道循环次数的情况下,建议使用while循环解决更专业。一开始就知道循环次数的,用for循环来解决更专业。
2.4 do_while循环
int i = 0;
do {
System.out.println("Hello World");
i++;
} while (i < 3);
格式入下:
应用场景:当情况比较紧急的时候,例如抢票的时候,需要用到do_while循环,如果用for和while循环进行先判断的话票可能就会在判断是否有票的时候而错失,这个时候do_while循环先执行后判断的优势就体现出来了。
3、Scanner函数
Scanner函数:主要作用是获取到程序员从键盘中输入的数据,然后对获取到的数据进行操作处理。
格式:
// 创建一个从键盘获取信息的对象 Scanner sc = new Scanner(System.in); // nextInt()代表输入的是int类型的数值 int i = sc.nextInt(); // next()代表输入的是字符串 String j = sc.next();
4、Random函数
Random函数:作用是产生随机数
格式:
//1、导包 //2、创建一个Random对象,用于生成随机数 Random ran = new Random(); //3、调用random所提供的功能,获取到随机数 int data = ran.nextInt(10); //获取到一个随机整数,括号中填的数是生成随机数的范围,包前不包后 System.out.println(data); //生成浮点型随机数 double data = ran.nextDouble(); //生成boolen类型的随机数 boolean b = ran.nextBoolean();
如何生成指定区间的随机数:
方法一:减加法
int data = ran.nextInt(10) + 1; // 生成0-10之间的随机数
方法二:进1法
int data = ran.nextInt(11); // 生成0-10之间的随机数
5、总结案例
import java.util.Random;
import java.util.Scanner;
public class Guessing_numbers {
public static void main(String[] args) {
//创建一个随机数对象
Random ran = new Random();
//创建一个键盘输入对象
Scanner sc = new Scanner(System.in);
//生成一个随机数
int number = ran.nextInt(100) + 1;
System.out.println(number);
while (true) {
System.out.println("请输入你猜测的数字:");
//获取到从键盘中输入的数据
int guess_number = sc.nextInt();
if (number > guess_number) {
System.out.println("猜小了!");
} else if (number < guess_number) {
System.out.println("猜大了!");
} else {
System.out.println("猜对了!");
break;
}
}
}
}
ess_number) {
System.out.println("猜小了!");
} else if (number < guess_number) {
System.out.println("猜大了!");
} else {
System.out.println("猜对了!");
break;
}
}
}
}