本文章基于b站:BV1RK4y1g7A5(换了一个更完整的) 赵珊珊老师的java课程的学习加以个人理解做出的学习笔记整理。(p57-p71)
目录
分支结构
if
单分支
(1)结构:
if(条件表达式,这个表达式的结果是布尔值:要么是false,要么是true){
//如果上面()中的表达式返回结果是true,那么执行{}中代码
//如果上面()中的表达式返回结果是false ,那么不执行{}中代码//PS: { }中的代码是否执行,取决于()中表达式的返回结果
}
(2)上面的代码中,我用四个单分支拼凑出四个选择,每个选择是独立的,依次判断执行的(3)if后面的()中的条件,要按照自己需求尽量完善
(4){}可以省略不写,但是一旦省略,这个if就只负责后面的一句话,所以我们不建议初学者省略
多分支
【1】结构
if() {
}else if () {
}else if (){
} ...
else{
【2】else:隐藏了一个条件,跟上面分支条件表达式相反的功能
【3】多分支:好处:只要满足一个分支以后,后面的分支就不需要判断了--》效率高【4】我们写代码的时候,尽量保证else的存在,作为兜底
双分支
随机数
随机数:这个数在生成之前我们不确定这个数是多少,不可知
在java中依靠一个类:Math类帮助我们生成,这个类中有一个方法专门用来生成随机数:
Math.random()--> [0.0,1.0)
Math.random()*6--> [0.0,6.0)
(int)(Math.random()*6)--> [0,5]
(int)(Math.random()*6)+1--> [1,6]
练习1:[36,92]--> 92-36=56 --> [0,56]+32 --> (int)(Math.random()*57)+32
练习2:
public class test3 {
boolean keeping;
public void run() {
keeping = true;
// 1.输入积分
Scanner sc = new Scanner(System.in);
while (keeping) {
System.out.print("请输入积分(输入-1退出):");
// 判断积分输入是否合规
if (sc.hasNextInt()) {
int jiFen = sc.nextInt();
if (jiFen >= 0) {
// 2.判断折扣等级
String mes = " ";
if (jiFen >= 8000) {
mes = "0.6";
} else if (jiFen >= 4000) {
mes = "0.7";
} else if (jiFen >= 2000) {
mes = "0.8";
} else {
mes = "0.9";
}
System.out.println("享受" + mes + "折");
} else if (jiFen == -1) {
quit();
} else {
System.out.println("请输入非负数");
}
} else {
System.out.println("所输入数据非整数");
sc.next(); // 读取非整数输入,将其丢弃
}
}
}
public void quit() {
keeping = false;
System.out.println("退出成功");
}
public static void main(String[] args) {
test3 test3 = new test3();
test3.run();
}
}
程序进入死循环具体原因是,当输入的数据不是整数时,
sc.hasNextInt()
条件判断为假,然后进入到else
分支中,执行了System.out.println("所输入数据非整数");
语句。然而,在这之后并没有再次读取输入,也就是没有使用sc.next()
或其他获取输入的方法来将输入的非整数消费掉。因此,下一次循环时sc.hasNextInt()
的结果仍然是假,仍会进入else
分支,一直循环输出 "所输入数据非整数"。要解决这个问题,可以在
else
分支中加上一个额外的读取非整数的语句,例如添加sc.next()
来读取输入并将其丢弃。这样就可以确保在输入非整数时能够继续读取下一个输入,避免进入死循环。
单词簿管理系统——Java课设作业_ElysiaY的博客-CSDN博客
Ctrl+F搜索“消费的概念” ;简要:将其从可用状态变为不可用状态的过程,以确保后续操作的正确执行。
switch
【1】语法结构:
switch ( ) {
case *:
case *:
...
}
【2】switch后面是一个(),()中表达式返回的结果是一个等值,这个等值的类型可以为:int, byte,short,char ,String,枚举类型
【3】这个()中的等值会依次跟case后面的值进行比较,如果匹配成功,就执行:后面的代码
【4】为了防止代码的"穿透"效果:在每个分支后面加上一个关键词break,遇到break这个分支就结束了【5】类似else的"兜底"的分支: default分支
【6】default分支可以写在任意的位置上,但是如果没有在最后一行,后面必须加上break关键字,如果在最后一行的话,break可以省略
【7】相邻分支逻辑是一样的,那么就可以只保留最后一个分支,上面的都可以省去不写了【8 】switch分支和if分支区别:
表达式是等值判断的话--》if , switch都可以如果表达式是区间判断的情况---》if最好
【9 】 switch应用场合:就是等值判断,等值的情况比较少的情况下
循环结构
while循环
【1】语法结构:
while(布尔表达式){
循环体
}
【2】循环作用:将部分代码重复执行。
循环只是提高了程序员编写代码的效率,但是底层执行的时候依然是重复执行。【3】循环四要素
do-while循环
【1】语法结构:
do{
循环体
}while(布尔表达式); //分号不可漏
【1】 while和do-while的区别:
while:先判断,再执行
do-while:先执行,再判断---》至少被执行一次,从第二次开始才进行判断【2】什么场合使用do-while:
while(考试是否通过){
考试;
}
---》不合适do{
考试;
} while(考试是否通过);---》合适
for循环
【1】for的结构:
for(条件初始化;条件判断;迭代){循环体;
}
【2】i的作用域:作用范围:离变量最近的{}--->可以自己去控制
【3 】for循环格式特别灵活:格式虽然很灵活,但是我们自己写代码的时候不建议灵活着写。for (;;){}-->死循环
关键字
break
【1】停止最近的循环,
for(){
while(){
break;
}
}
【2】使用标签,停止特定循环
outer1:
for(){
outer2:
for(){
for(){
break outer2;
}
}
}
continue
【1】结束最近的本次循环,继续下一次循环
结束:不执行本次循环之后的代码,而转进下一次循环中;当i=36时,结束本次i=36的for循环,而后继续i=37及之后的循环
for(int i =1;i<=100;i++){
if(i==36){
continue; //打印1-100,没有36
}
System.out.println(i);
}
【2】使用标签,先结束,再继续特定循环
return
return的作用:跟循环无关,就是程序中遇到return那么return所在的那个方法就停止执行了;
打印1-35;当i=36时,后面的“------”不会打印出来,return所在的main方法已被停止执行