文章目录
1. 分支结构
1.1 if
分支
/*格式1: if(条件表达式){代码.....}*/
//心跳检测
int heartBeat = 30;
if (heartBeat <60 || heartBeat >100){
System.out.println("您的心跳数据是:"+ heartBeat +",您可能需要进一步检查!");
}
System.out.println("检查结束");
/*格式2:if(条件表达式){代码....}
else{代码.....} */
//发红包
double money = 5000;
if (money >= 1314){
System.out.println("success");
}
else{
System.out.println("fall");
}
/*格式3:if(条件表达式){代码...}
else if(条件表达式){代码...} ....
else{代码..} */
//绩效系统:
int s= 97;
if (s>=0 && s<60){
System.out.println("c");
}
else if(s>=60 && s<80){
System.out.println("b");
}
else if(s>=80 && s<90){
System.out.println("a");
}
else if(s>=90 && s<100){
System.out.println("a+");
}
else{
System.out.println("输入错误");
}
1.2 switch
分支
- 匹配条件去执行分支,适合做值匹配的分支选择,结构清晰,格式良好
- 执行流程:
- 先执行表达式的值,拿着这个值去与case后的值进行匹配
- 匹配哪个case的值为true就执行哪个case,遇到
break
就跳出switch分支 - 如果case后的值都不匹配则执行default代码
/*
switch(表达式){
case 值1:
执行代码;
break;
case 值2:
执行代码;
break;
....
case 值n-1:
执行代码;
break;
default:
执行代码n;
}
*/
//例
String weekday = "周二";
switch(weekday){
case "周一":
System.out.println("1");
break;
case "周二":
System.out.println("2");
break;
case "周三":
System.out.println("3");
break;
case "周四":;
System.out.println("4");
break;
case "周五":
System.out.println("5");
break;
case "周六":
System.out.println("6");
break;
case "周日":
System.out.println("7");
break;
default:
System.out.println("输入错误!");;
}
- 注意事项:
- 表达式类型只能是
byte
、short
、int
、char
、String
、enum(枚举)
,不支持double、float、long
- case给出的值不允许重复,且只能是字面量,不能是变量
- 不要忘记写
break
,否则会出现穿透现象 - 存在多个case分支的功能代码是一样的时,可以用穿透性把流程集中到同一处处理,这样就可以简化代码
- 表达式类型只能是
//穿透现象运用
int month = 7;
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
System.out.println(month + "月是31天");
break;
case 2:
System.out.println(month + "月闰年29天,非闰年28天");
break;
case 4:
case 6:
case 9:
case 11:
System.out.println(month + "月是30天");
default:
System.out.println("数据错误!");
}
2. 循环结构
2.1 for
循环
- 控制一段代码反复执行很多次
/*格式:
for (初始化语句; 循环条件; 迭代语句){
循环体语句; //(重复执行的代码
}
*/
//示例:输出3次HelloWorld
for (int i=0; i<3; i++){
System.out.printin("HelloWorld");
}
//求和
int sum = 0;
for (int i = 1; i <= 10 ; i++) {
sum += i;
}
System.out.println("和为:" + sum);
//求奇数和
//方法1
int sum1 = 0;
for (int i = 1; i <= 10 ; i++) {
if (i%2 == 1) {
sum1 += i;
}
}
System.out.println("奇数和为:" + sum1);
//方法2
int sum2 = 0;
for (int i = 1; i <= 10 ; i+=2) {
sum2 += i;
}
System.out.println("奇数和为:" + sum2);
//水仙花数
int count = 0;
for (int i = 100; i <= 999; i++) {
int g = i % 10;
int s = i / 10 % 10;
int b = i / 100;
if ((g*g*g + s*s*s + b*b*b) == i){
count ++;
System.out.print(i+"\t");
}
}
System.out.println();
System.out.println("水仙花个数是:" + count);
2.2 while
循环
/*格式
while(循环条件){
循环体语句;
迭代语句;
}
*/
int i = 0;
while(i < 3){
System.out.println("hello");
i++;.
//案例:珠穆朗玛峰
double peakHeight = 8848860;
double paperThickness = 0.1;
int count = 0;
while (paperThickness < peakHeight){
paperThickness *= 2;
count++;
}
System.out.println("折叠次数:" + count);
System.out.println("纸张最终厚度:" + paperThickness);
/*也可以用for循环
for (;paperThickness < peakHeight;){
paperThickness *= 2;
count++;
}*/
2.3 do...while
循环
int i = 0;
do{
System.out.println("hello");
i++;
}while(i < 3);
三种循环的区别:
- for循环和while循环——先判断后执行
- do…while循环——第一次执行后判断
for循环和while循环的区别:
- 功能上完全一样,for能解决的问题while也能解决,反之亦然
- 使用规范:知道循环几次——for;不知道循环几次——while
- for循环,控制循环的变量只在循环中可以使用;while循环,控制循环的变量在循环后还可以继续使用
2.4 死循环
//
for(;;){
System.out.println("hello");
}
//经典while死循环
while(true){
System.out.println("死循环");
}
//
do{
System.out.println("死循环");
}while(true)
//案例:密码输入
int okPassword = 520;
Scanner sc = new Scanner(System.in);
while (true){
System.out.println("请您输入正确的密码");
int password = sc.nextInt();
if(password == okPassword){
System.out.println("登录成功");
break;
}
else{
System.out.println("密码错误");
}
}
2.5 嵌套循环
//嵌套循环模板
for (int i = 0; i < ; i++) {
for (int j = 0; j < ; j++) {
//执行语句
}
}
//案例:4*5列矩阵
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 5; j++) {
System.ot.print("*");
}
System.out.println();
}
3. 跳转关键字:break
、continue
break
:跳出并结束当前所在循环的执行;只能用于结束所在循环,或者结束所在switch分支的执行continue
:用于跳出当前循环的当次执行,进入下一次循环;只能在循环中进行使用
//break和continue的作用
for (int i = 0; i < 5; i++) {
System.out.println("hello");
if(i == 2){
break;//跳出并结束当前循环的执行
}
}
for (int i = 0; i < 5 ; i++) {
if(i == 3){
continue;//立即跳出当次执行,进入循环的下一次
}
System.out.println("helloworld");
}
4. Random
随机数
- 作用:用于在程序中获取随机数的技术
使用步骤:
- 导包:告诉程序去JDK的哪个包中找随机数技术
- 写一行代码代表得到随机数对象
- 调用随机数的功能获取0-9的随机数
import java.util.Random;
Random r = new.Random();
int number = r.nextInt(10);
注意:
- nextInt(n) 功能只能生成:
0
至n-1
之间的随机数,不包含n
- Random生成区间随机数的技巧:减加法
import java.util.Random; //导包
public class NoteDemo {
public static void main(String[] args) {
Random r = new Random(); //创建随机数对象
//调用nextInt方法可以同时返回一个整型的随机数给你
for (int i = 0; i < 10; i++) {
int data = r.nextInt(10);//0-9不包含10(包前不包后)
System.out.println(data);
}
}
}
//生成3-10之间的随机数
Random r = new Random();
int number = r.nextInt(7) + 3;
5. 综合案例: 猜数字游戏
import java.util.Random;
import java.util.Scanner;
public class NoteDemo {
public static void main(String[] args) {
//随机一个1-100之间的数
Random r = new Random();
int luckNumber = r.nextInt(100) + 1;
//使用一个死循环让用户不断猜测,并给出提示
Scanner sc = new Scanner(System.in);
while(true){
//让用户输入猜测数据
System.out.println("请输入猜测数据(1-100):");
int guessNumber = sc.nextInt();
//判断猜测是否准确
if(guessNumber > luckNumber){
System.out.println("猜测数据过大!");
}
else if(guessNumber < luckNumber){
System.out.println("猜测数据过小!");
}
else{
System.out.println("猜测正确!");
break;
}
}
}
}