【逆天OP懒狗的JAVA自学笔记--5.判断和循环】第二阶段始篇

文章目录

  • 前言
  • 一、流程控制语句
    • 1.顺序结构(最简单)
    • 2.分支结构
      • 2.1 if 语句
        • 2.1.1 if语句的三种格式
        • 2.1.2 if 的注意事项
      • 2.2 switch 语句
        • 2.2.1switch 的扩展知识
    • 3.循环结构
      • 3.1 for 循环
    • 扩展小点:
    • //1.求和的变量不能定义在循环的里面,因为变量只在所属的大括号中有效
    • //2.如果我们把变量定义在循环的里面,那么当前变量只能在本次循环中有效。
    • //3.如果我们把变量定义在循环的外面,那么就能实现当前变量的累加。
    • 结论:如果以后我们要写累加求和的变量。可以把变量定义在循环的外面。
  • 总结
  • 系列文章目录


前言

本文为流程控制语句的使用教程,并讲述接下来JAVA的学习方式有哪些改动。
在这里插入图片描述
在这里插入图片描述


一、流程控制语句

在这里插入图片描述
三种流程控制分类
在这里插入图片描述


1.顺序结构(最简单)

在这里插入图片描述


在这里插入图片描述

代码如下(示例):

public class Test {public static void main(String[] args){System.out.println("努力做主人喜欢的事");System.out.println("大小姐驾到!统统闪开!");System.out.println("凛冬已至,故乡的梅花开了吗");System.out.println("心怀不惧,方能翱翔于天际");}
}

运行结果:
在这里插入图片描述


小结
顺序执行时JAVA的默认程序运行方式。


2.分支结构

在这里插入图片描述


两种分支结构–if、switch
在这里插入图片描述


2.1 if 语句

基础概念
在这里插入图片描述


2.1.1 if语句的三种格式

①第一种:在这里插入图片描述


练习一
在这里插入图片描述

代码如下:

package com.itheima.demo2;import java.util.Scanner;public class ifDemo1 {public static void main(String[] args) {//需求:键盘录入女婿酒量,如果大于 2 斤,老丈人给出回应,反之不回应//if格式//if(关系表达式){//语句体;// }//分析://1.键盘录入女婿的酒量Scanner sc = new Scanner(System.in);System.out.println("请输入女婿的酒量");int wine = sc.nextInt();//2.对酒量进行判断if(wine > 2){System.out.println("小伙子,不错哟!!");}}
}

运行结果:
若满足if条件,则执行语句体在这里插入图片描述
若不满足if条件,则不执行语句体
在这里插入图片描述


练习二—— if 对值的判断

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码如下:

package com.itheima.test;public class Test1 {public static void main(String[] args) {//小红:如果你这次考试全班第一,我就做你女朋友。//分析://1.定义变量记录小明的名次int ranking = 2;//2.对小明的名次进行判断。if(ranking == 1){System.out.println("小红成为了小明的女朋友");}}
}

运行结果:
在这里插入图片描述
小明没有考到第一,遗憾错付。


练习三——自动驾驶
在这里插入图片描述

代码如下:

package com.itheima.test;public class Test2 {public static void main(String[] args) {//汽车无人驾驶会涉及到大量的判断//当汽车行驶的时候遇到了红绿灯,就会进行判断//如果红灯亮,就停止//如果黄灯亮,就减速//如果绿灯亮,就行驶//1.定义三个变量表示灯的状态//true 亮  false 灭boolean isLightGreen = false;boolean isLightYellow = false;boolean isLightRed = true;//2.判断//红灯亮,就停止//黄灯亮,就减速//绿灯亮,就行驶if(isLightGreen){System.out.println("GoGoGo!!!");}if(isLightYellow){System.out.println("slow!!!");}if(isLightRed){System.out.println("stop!!!");}}}

运行结果:
在这里插入图片描述


②第二种:
在这里插入图片描述
if 和 else 里的语句体具有异或性,二者只有其一会被执行。


练习一
在这里插入图片描述

代码如下:

package com.itheima.test;import java.util.Scanner;public class Test3 {public static void main(String[] args) {/*需求:键盘录入一个整数,表示身上的钱。如果大于等于100块,就是网红餐厅。否则,就吃经济实惠的沙县小吃。
*///分析://1.键盘录入一个整数,表示身上的钱。Scanner sc = new Scanner(System.in);System.out.println("请录入身上的钱");int money = sc.nextInt();//2.对钱进行判断(二选一)if(money >= 100){System.out.println("吃网红餐厅");} else{System.out.println("吃经济实惠的沙县小吃");}}
}

运行结果:
在这里插入图片描述


练习二——斯坦福JAVA真题
在这里插入图片描述

代码如下:

package com.itheima.test;import java.util.Scanner;public class Test4 {public static void main(String[] args) {/*在实际开发中,如果要根据两种不同的情况来执行不同的代码,就需要用到if的第二种格式。需求:假设,用户在超市实际购买,商品总价为:600元。键盘录入一个整数表示用户实际支付的钱。如果付款大于等于600,表示付款成功。否则付款失败。
*///分析://1.键盘录入一个整数表示用户实际支付的钱。Scanner sc = new Scanner(System.in);System.out.println("录入一个整数表示实际支付的钱");int money = sc.nextInt();//2.判断if(money >= 600){System.out.println("付款成功");}else{System.out.println("付款失败");}}
}

运行结果:
在这里插入图片描述
在这里插入图片描述


练习三——斯坦福JAVA真题
在这里插入图片描述

代码如下:

package com.itheima.test;import java.util.Scanner;public class Test5 {public static void main(String[] args) {/*在实际开发中,电影院选座也会使用到if判断。假设某影院售卖了100张票,票的序号为1~100。其中奇数票号坐左侧,偶数票号坐右侧。键盘录入一个整数表示电影票的票号。根据不同情况,给出不同的提示:如果票号为奇数,那么打印坐左边如果票号为偶数,那么打印坐右边。*///分析://1.键盘录入一个整数表示电影票的票号。Scanner sc = new Scanner(System.in);System.out.println("请录入一个票号");int ticket = sc.nextInt();//只有当ticket在0 ~ 100之间,才是真实有效的票//if的嵌套if(ticket >= 0 && ticket <= 100){//2.判断票号是奇数还是偶数if(ticket % 2 == 1){System.out.println("坐左边");}else{System.out.println("坐右边");}}//添加票号非法时的提示。这句属于最外层if的语句体System.out.println("捏吗,假票!");}
}

运行结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


①第三种:
在这里插入图片描述
流程式图解:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


前两种 if 回顾
在这里插入图片描述


练习一
在这里插入图片描述

代码如下:

package com.itheima.test;import java.util.Scanner;public class Test6 {public static void main(String[] args) {/*根据不同的分数送不同的礼物。如果是95~100分,送自行车一辆如果是90~94分,游乐场玩一天如果是80~89分,送变形金刚一个。如果是80分,揍一顿。*///分析://1.键盘录入小明的考试成绩Scanner sc = new Scanner(System.in);System.out.println("请录入一个整数表示小明的成绩");int score = sc.nextInt();//对异常数据进行判断校验//0~100合理数据if(score >0 && score <= 100){//2.根据不同的考试成绩,给出不同的奖励if(score >= 95 && score <= 100){System.out.println("送自行车一辆");}else if(score >= 90 && score <= 94){System.out.println("游乐场玩一天");}else if(score >= 80 && score <= 89){System.out.println("送变形金刚一个");}else{System.out.println("揍一顿");}}else{System.out.println("当前录入的成绩不合法");}}
}

运行结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


练习二——斯坦福JAVA真题
在这里插入图片描述

代码如下:

package com.itheima.test;import java.util.Scanner;public class Test7 {public static void main(String[] args) {/*在实际开发中,多种情况判断时,会用到if的第三种格式:需求:商场都会有VIP的会员制,根据不同的会员会有不同的折扣。假设商品总价为1000。键盘录入会员级别,并计算出实际支付的钱。会员1级:打9折。会员2级:打8折。会员3级:打7折。非会员:不打折,要打也是打骨折。*///分析://1.定义变量记录总价int price = 1000;//2.键盘录入会员的级别Scanner sc = new Scanner(System.in);System.out.println("请录入会员的级别");int vip = sc.nextInt();//3.根据级别来计算实际要支付的钱if(vip == 1){System.out.println("实际支付的钱为" + (price * 0.9));}else if(vip == 2){System.out.println("实际支付的钱为" + (price * 0.8));}else if(vip == 3){System.out.println("实际支付的钱为" + (price * 0.7));}else{System.out.println("实际支付的钱为" + price);}}
}

运行结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


练习三
在这里插入图片描述
在这里插入图片描述

代码如下:

package com.itheima.test;public class Test8 {public static void main(String[] args) {//汽车无人驾驶会涉及到大量的判断//当汽车行驶的时候遇到了红绿灯,就会进行判断//如果红灯亮,就停止//如果黄灯亮,就减速//如果绿灯亮,就行驶//1.定义三个变量表示灯的状态//true 亮  false 灭boolean isLightGreen = true;boolean isLightYellow = false;boolean isLightRed = false;//2.判断//红灯亮,就停止//黄灯亮,就减速//绿灯亮,就行驶if(isLightGreen){System.out.println("GoGoGo!!!");}else  if(isLightYellow){System.out.println("slow!!!");}else if(isLightRed){System.out.println("stop!!!");}}
}

运行结果:
在这里插入图片描述

小结:
if 的第三种结构每个if 或else if 或 else 里的语句体也和第二种一样具有异或性,只会执行其中之一。


2.1.2 if 的注意事项

① 大括号的开头可以另起一行书写,但是建议写在第一行的末尾

if(关系表达式){              语句体;}或:if(关系表达式){语句体;}
--------------------------------------------------------------------------------JAVA的规范写法:if(number >= 10){System.out.println("你好");}JAVA的不规范写法:if(number >= 10){System.out.println("你好");}

2.在语句体中,如果只有一句代码,大括号可以省略不写。个人建议,大括号还是不要省略

单句代码可省略大括号,例如:

 if(number >= 10)System.out.println("number大于等于10");

这样代码也能运行,运行结果为:
在这里插入图片描述


但也有特殊情况,例如:

if(number >= 10)int a = 100; //1.定义变量a 2.给变量a赋值为100

此时程序报错在这里插入图片描述
因为int a =10;等同于int a;a = 10;,算作两句操作代码。
所以还是尽量不要省略大括号为好。


3.如果对一个布尔类型的变量进行判断,不要用==号,直接把变量写在小括号即可

正确写法如下:

 boolean flag = true;if(flag){System.out.println("flag的值为true");}

运行结果为:
在这里插入图片描述


错误写法如下:

boolean flag = true;if(flag == true){System.out.println("flag的值为true");}

这种写法极为繁琐,且容易漏写成另一种错误写法:

boolean flag = true;if(flag = true){System.out.println("flag的值为true");}

这里if后的表达式写成了赋值表达式,所以无论boolean 类型的flag初始赋值是true还是false,最终都会被if后的赋值操作覆盖,然后执行if内的语句块。
而第一种错误写法是没有必要地添加了 == 符号,if后的表达式里若是布尔类型地变量名,它会默认是true时执行if内地语句块。


2.2 switch 语句

在这里插入图片描述


基础概念
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


在这里插入图片描述


switch 流程图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


练习一 ——想吃的面

代码如下:

package com.itheima.switchdemo;public class SwitchDemo1 {public static void main(String[] args) {//兰州拉面、武汉热干面、北京炸酱面、陕西油泼面//1.定义变量记录我心里想吃的面String noodles = "海鲜龙虾面";//2.拿着这个面利用switch跟四种面条匹配switch (noodles){case "兰州拉面":System.out.println("吃兰州拉面");break;case "武汉热干面":System.out.println("吃武汉热干面");break;case "北京炸酱面":System.out.println("吃北京炸酱面");break;case "陕西油泼面":System.out.println("吃陕西油泼面");break;default:System.out.println("吃方便面");break;}}
}

运行截图:
在这里插入图片描述


练习二——运动计划

在这里插入图片描述

代码如下:

package com.itheima.test;import java.util.Scanner;public class Test9 {public static void main(String[] args) {/*需求:键盘录入星期数,显示今天的减肥活动。周一:跑步周二:游泳周三:慢走周四:动感单车周五:拳击周六:爬山周日:好好吃一顿*///分析://1.键盘录入星期数Scanner sc = new Scanner(System.in);System.out.println("请录入星期");int week = sc.nextInt();//2.利用switch对星期进行匹配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;}}
}

运行结果:
在这里插入图片描述


2.2.1switch 的扩展知识

在这里插入图片描述


①default的位置和省略
1.位置 :default不一定是写在最下面的,我们可以写在任意位置。只不过习惯会写在最下面
2.省略 : default可以省略,语法不会有问题,但是不建议省略。

代码如下:

package com.itheima.switchdemo;/*default的位置和省略  
*/
public class SwitchDemo2 {public static void main(String[] args) {int number = 100;switch (number){case 1:System.out.println("number的值为1");break;case 10:System.out.println("number的值为10");break;case 20:System.out.println("number的值为20");break;default:System.out.println("number的值不是1,10或者20");break;}}
}

运行结果:
在这里插入图片描述
若将这里的default部分省略,那么运行结果是:
在这里插入图片描述
结果是啥也没有。


②case穿透

就是语句体中没有写break导致的情况。


  • 执行流程:
  •   首先还是会拿着小括号中表达式的值跟下面每一个case进行匹配。
    
  •   如果匹配上了,就会执行对应的语句体,如果此时发现了break,那么结束整个switch语句。
    
  •   如果没有发现break,那么程序会继续执行下一个case的语句体,一直遇到break或者右大括号为止。
    

代码如下:

package com.itheima.switchdemo;/* case穿透
*/
public class SwitchDemo3 {public static void main(String[] args) {int number = 10;switch (number){case 1:System.out.println("number的值为1");break;case 10:System.out.println("number的值为10");// break;case 20:System.out.println("number的值为20");break;default:System.out.println("number的值不是1,10或者20");// break;}}
}

运行结果:
在这里插入图片描述


使用场景:
如果多个case的语句体重复了,那么我们考虑利用case穿透去简化代码。


③ switch 新特性
JDK12推出switch的结构简化

代码如下:

package com.itheima.switchdemo;/*switch新特性JDK12
*/public class SwitchDemo4 {public static void main(String[] args) {//需求:// 1 2 3  一 二  三int number = 1;switch (number){case 1:System.out.println("一");break;case 2:System.out.println("二");break;case 3:System.out.println("三");break;default:System.out.println("没有这种选项");break;}}
}

这是我们刚学习过的switch结构。
在JDK12推出了switch新特性,可以这样写:

 int number = 10;switch (number) {case 1 -> {System.out.println("一");}case 2 -> {System.out.println("二");}case 3 -> {System.out.println("三");}default -> {System.out.println("没有这种选项");}}

若case里的语句体只有一句,还可以更加精简,代码如下:

 int number = 10;switch (number) {case 1 -> System.out.println("一");case 2 -> System.out.println("二");case 3 -> System.out.println("三");default -> System.out.println("没有这种选项");}

这种精简形式下,还规避了case穿透的情况。

若case语句体里得到的结果是一个值,还能这样使用:

  int number = 10;变量 = switch (number) {case 1 -> System.out.println("一");case 2 -> System.out.println("二");case 3 -> System.out.println("三");default -> System.out.println("没有这种选项");}

把case里的值赋给一个变量


④ switch 和 if 第三种格式各自的使用场景

  • if的第三种格式:一般用于对范围的判断。
  • switch:把有限个数据一一列举出来,让我们任选其一。

代码如下:

package com.itheima.switchdemo;/*switch和if第三种格式各自的使用场景
*/public class SwitchDemo5 {public static void main(String[] args) {int score = 100;if(score >= 90 && score <= 100){System.out.println("送自行车");}}
}

运行结果:
在这里插入图片描述

例如之前的星期匹配:

  //2.利用switch对星期进行匹配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;}

若换成if,则结构臃肿混乱,而用switch的新特性,可以极简代码外观。

if形式:

		if(week = 1){System.out.println("跑步");} else if(week = 2{System.out.println("游泳");}else if(week = 3{System.out.println("慢走");}......else{System.out.println("没有这个星期");}

switch形式:

switch (week) {case 1 -> System.out.println("跑步");case 2 -> System.out.println("游泳");case 3 -> System.out.println("慢走");......default -> System.out.println("没有这个星期");

具体的使用,还需要大量练习才能做出好的选择。


练习一 —— 休息日和工作日(case穿透)
在这里插入图片描述

代码如下:

package com.itheima.test;import java.util.Scanner;public class Test10 {public static void main(String[] args) {/* 需求:键盘录入星期数,输出工作日、休息日。(1-5) 工作日,(6-7)休息日。*///分析://1.键盘录入星期数Scanner sc = new Scanner(System.in);System.out.println("请录入一个整数表示星期");int week = sc.nextInt();//2.利用switch语句来进行选择switch (week){case 1,2,3,4,5 ->  System.out.println("工作日");case 6,7 ->  System.out.println("休息日");default -> System.out.println("没有这个星期");}}
}

运行结果:
在这里插入图片描述


当case里的语句体重复时,就可以使用穿透,把原本赘余的语句结构简化。
下面是简化过程:

最初结构:

 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;}

case穿透简化:

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;}

再简化:

switch (week){case 1,2,3,4,5:             System.out.println("工作日");break;case 6,7:System.out.println("休息日");break;default:System.out.println("没有这个星期");break;}

JDK12新特性简化

 switch (week){case 1,2,3,4,5 ->  System.out.println("工作日");case 6,7 ->  System.out.println("休息日");default -> System.out.println("没有这个星期");}

爽晕了~~~


练习二 —— 用户选择
在这里插入图片描述

代码如下:

package com.itheima.test;import java.util.Scanner;public class Test11 {public static void main(String[] args) {/* 在实际开发中,如果我们需要在多种情况下选择其中一个,就可以使用switch语句。当我们拨打了某些服务电话时,一般都会有按键选择。假设现在我们拨打了一个机票预定电话。电话中语音提示:1机票查询2机票预订3机票改签4退出服务其他按键也是退出服务。请使用swtich模拟该业务逻辑。*///分析://1.键盘录入一个整数表示我们的选择Scanner sc = new Scanner(System.in);System.out.println("请输入您的选择");int choose = sc.nextInt();//2.根据选择执行不同的代码switch (choose) {case 1 -> System.out.println("机票查询");case 2 -> System.out.println("机票预订");case 3 -> System.out.println("机票改签");//case 4 -> System.out.println("退出服务");default -> System.out.println("退出服务");}}
}

这里也用到穿透简化,
用 ->取代 : 和语句体末尾的break;

运行结果:
在这里插入图片描述
在这里插入图片描述


3.循环结构

在这里插入图片描述


基础概念
在这里插入图片描述
循环种类
在这里插入图片描述


3.1 for 循环

基础概念
在这里插入图片描述


执行流程
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


i 就是整个循环体的控制者
在这里插入图片描述
首先初始化循环控制对象
在这里插入图片描述

每次执行for循环里的语句体都要进行判断
在这里插入图片描述
符合判断条件,执行语句体
在这里插入图片描述
控制对象进行自增
在这里插入图片描述
自增完再判断是否符合条件
在这里插入图片描述
若仍满足判断条件,继续执行语句体
在这里插入图片描述
然后又自增
在这里插入图片描述
再次进行判断
在这里插入图片描述
若还是判定为true,继续执行语句体
在这里插入图片描述
接着再自增控制对象
在这里插入图片描述

…一轮一轮轮执行下去,直到判断条件为false
在这里插入图片描述
然后循环结束,执行循环之外的语句。
在这里插入图片描述


核心要点
在这里插入图片描述


for 循环格式

        for(初始化语句;条件判断语句;条件控制语句){循环体;}

练习一
在这里插入图片描述

代码如下:

package com.itheima.loopdemo;public class ForDemo1 {public static void main(String[] args) {//1.需求:打印10次HelloWorld//分析://i  1 ~ 5/*for(初始化语句;条件判断语句;条件控制语句){循环体;}*/for (int i = 1; i <= 10 ; i++){System.out.println("HelloWorld");}}
}

运行结果:
在这里插入图片描述


练习二 —— 倒着输出数字

代码如下:

package com.itheima.test;public class Test12 {public static void main(String[] args) {//需求1:打印1-5//分析://开始条件:1//结束条件:5for (int i = 1 ; i <= 5; i++){//第一次循环:i = 1//第二次循环:i = 2//i : 1 2 3 4 5System.out.println(i);}//需求2:打印5-1//分析://开始条件: 5//结束条件:1for(int i = 5 ; i >= 1 ; i--){System.out.println(i);}}
}

运行结果:
在这里插入图片描述


练习三 —— 断线重连
在这里插入图片描述

代码如下:

package com.itheima.test;public class Test13 {public static void main(String[] args) {/* 在实际开发中,需要重复执行的代码,会选择循环实现。比如:如左图所示。玩游戏的时候,如果网不好那么会经常断线重连。那么断线重连这个业务逻辑就需要重复执行。假设现在公司要求,断线重连的业务逻辑最多只写5次。请用代码实现。备注:断线重连的业务逻辑可以用输出语句替代。*///分析://1,因为我们需要重复执行某段代码,所以需要用循环解决//循环的次数 5 次//开始条件:1//结束条件:5for(int i = 1; i <= 5;i++){System.out.println("第" + i + "次执行断线重连的业逻务辑");}}
}

运行截图:
在这里插入图片描述


练习三 —— 求和

在这里插入图片描述


求解过程
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
此时得到五个数的和,这也是JAVA里的累加思想过程。


代码如下:

package com.itheima.test;public class Test14 {public static void main(String[] args) {/*  需求:在实际开发中,如果要获取一个范围中的每一个数据时,也会用到循环。比如:求1-5之间的和*///分析://1.循环1~5得到里面的每一个数字//开始条件:1//结束条件:5//用来进行累加的int sum = 0;for(int i = 1; i <= 5 ; i++){//int sum = 0;//System.out.println(i);//可以把得到的每一个数字累加到变量sum当中sum = sum + i;// sum += i;//System.out.println(sum);}//当循环结束之后,表示已经把1~5累加到变量sum当中了//System.out.println(sum);}
}

运行结果:
在这里插入图片描述


扩展小点:

//1.求和的变量不能定义在循环的里面,因为变量只在所属的大括号中有效

代码如下:

package com.itheima.demo2.test;public class Test14 {public static void main(String[] args) {for(int i=1;i<=5;i++){int sum=0;System.out.println(i);sum=sum+i;}System.out.println(sum);//该句代码报错}
}

报错原因:
定义的sum在for循环的大括号里,那么sum的作用域也就是for循环里的循环体。在这里插入图片描述


//2.如果我们把变量定义在循环的里面,那么当前变量只能在本次循环中有效。

代码如下:

package com.itheima.demo2.test;public class Test14 {public static void main(String[] args) {for(int i=1;i<=5;i++){int sum=0;sum=sum+i;System.out.println(sum);}}
}

运行结果原因分析:
当本次循环结束之后,变量就会从内存中消失。
第二次循环开始的时候,又会重新定义一个新的变量。
在这里插入图片描述

//3.如果我们把变量定义在循环的外面,那么就能实现当前变量的累加。

代码如下:

package com.itheima.demo2.test;public class Test14 {public static void main(String[] args) {int sum=0;for(int i=1;i<=5;i++){sum=sum+i;}System.out.println(sum);}
}

运行结果分析:
sum定义在循环外,sum属于main方法,在main的大括号里都起作用,只声明定义一次,不会像在循环里一样,每次执行循环里的语句体都会重新初始化声明一次num。
在这里插入图片描述

结论:如果以后我们要写累加求和的变量。可以把变量定义在循环的外面。


总结

哦啦咪咪大呀,我是懒狗,俺们明天见!(24.5.11)
在这里插入图片描述


系列文章目录

提示:文章顺序即为学习顺序。

【逆天OP懒狗的JAVA自学笔记–1.入门篇】已完结
【逆天OP懒狗的JAVA自学笔记–2.JAVA基础概念篇一】已完结
【逆天OP懒狗的JAVA自学笔记–2.JAVA基础概念篇二】已完结
【逆天OP懒狗的JAVA自学笔记–2.JAVA基础概念篇三】已完结
【逆天OP懒狗的JAVA自学笔记–3.IDEA扩展设置】已完结
【逆天OP懒狗的JAVA自学笔记–4.算数运算符初阶】已完结
【逆天OP懒狗的JAVA自学笔记–4.算数运算符进阶】已完结
【逆天OP懒狗的JAVA自学笔记–4.自增自减运算符】已完结
【逆天OP懒狗的JAVA自学笔记–4.赋值运算符】已完结
【逆天OP懒狗的JAVA自学笔记–4.关系运算符】已完结
【逆天OP懒狗的JAVA自学笔记–4.逻辑运算符】已完结
【逆天OP懒狗的JAVA自学笔记–4.三元运算符】已完结
【逆天OP懒狗的JAVA自学笔记–4.原码、反码、补码原理及应用】第一阶段完成


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/837198.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决finalshell无法连接,一直提示登陆密码

问题描述 在使用FinalShell连接配置虚拟机时&#xff0c;无法正常连接&#xff0c;一直提示输入登录密码&#xff0c;即使输入的密码是正确的。 切换到root 模式,输入密码 su root 此时需要输入root账户的密码&#xff0c;但是我们又不知道root的密码&#xff0c;怎么办&…

嵌入式STM32中I2C控制器外设详解

STM32中的I2C外设主要负责IIC协议与外界进行通信,就像USART外设一样,我们在学习的过程中,需要抓住I2C应用的重点。 STM32在使用I2C协议时,可以通过两种方式, 一是软件模拟协议 意思是使用CPU直接控制通讯引脚的电平,产生出符合通讯协议标准的逻辑。例如,像点亮LED那样…

绝地求生:经典艾伦格即将回归!绝地求生艾伦格进化史

29.2版本经典艾伦格地图将会回归&#xff0c;让我回顾一下艾伦格地图的改动历史吧&#xff01; 回归时间 2016年早期A测 A测 4.1版本&#xff1a;艾伦格-新视界 主要区域变动 Military Base(军事基地) Military Base Mylta Power&#xff08;大电&#xff09; Mylta Power …

微信小程序开发题库

一. 单选题&#xff08;共12题&#xff0c;60分&#xff09; 1. (单选题) 有如下HTML代码&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>Document</title> <style> ul,li{ margin:0; p…

【计算机网络】数据链路层 组帧 习题4

组帧 发送方根据一定的规则将网络层递交的分组封装成帧(也称为组帧)。 组帧时&#xff0c;既要加首部&#xff0c;也要加尾部&#xff0c;原因是&#xff0c;在网络信息中&#xff0c;帧是以最小单位传输的。所以接收方要正确地接收帧&#xff0c;就必须清楚该帧在一串比特串中…

EasyExcel 中实体类的注解@ExcelProperty

ExcelProperty(value "职务", index 0) value 与index 的优先级, 实测得出下面结论. 1、只有value : 按照value 的匹配 2、只有index: 按照index 的匹配 3、 同时有value和index: 按照index的匹配. 结果: 按照index的匹配, 找到的数据 {"administrat…

大模型管理工具:SWIFT

目录 一、SWIFT 介绍 二、SWIFT 安装 2.0 配置环境(可选) 2.1 使用pip进行安装 2.2 源代码安装 2.3 启动 WEB-UI 三、部署模型 3.0 deploy命令参数 3.1 原始模型 3.2 微调后模型 一、SWIFT 介绍 SWIFT&#xff08;Scalable lightWeight Infrastructure for Fine-Tuni…

MySQL8.0就地升级到MySQL8.4.0

MySQL8.0就地升级到MySQL8.4.0 升级需求&#xff1a;将8.0.35升级到8.4.0,以In-Place方式直接升级到MySQL8.4.0。 数据库版本 操作系统版本 原版本 8.0.35 Centos7.9 x86_64 新版本 8.4.0 Centos7.9 x86_64 关闭现有版本MySQL&#xff0c;将二进制或包替换成新版本并…

对比学习笔记

这里写目录标题 什么是对比学习计算机视觉中的对比学习对比学习在NLP中的应用 什么是对比学习 对比学习是在没有标签的前提下学习样本之间的是否相似&#xff0c;其实和二分类比较相似&#xff0c;判断两个图像是不是属于同一个类别。换句话来说就是把相近的分布推得更近&…

用Arm CCA解锁数据的力量

安全之安全(security)博客目录导读 目录 CCA将如何改变Arm架构呢? 在实践中部署CCA 释放数据和人工智能的全部力量和潜力 早期计算中最大的挑战之一是管理计算资源&#xff0c;以最大化计算效率同时提供给不同程序或用户分配资源的分离。这导致了我们今天大多数使用的时间…

MinIO学习笔记

MINIO干什么用的&#xff1a; AI数据基础设施的对象存储 为人工智能系统提供数据支持&#xff0c;数据存储&#xff1b;对象存储&#xff08;Object Storage&#xff09;是一种数据存储架构&#xff0c;它以对象为单位来处理、存储和检索数据&#xff0c;每个对象都包含了数据本…

ModuleSim 仿真找不到模块 module is not defined

提示如下&#xff1a; # vsim -t 1ps -L altera_ver -L lpm_ver -L sgate_ver -L altera_mf_ver -L altera_lnsim_ver -L cycloneive_ver -L rtl_work -L work -voptargs""acc"" pulse_generator_tb # Start time: 14:26:25 on May 10,2024 # ** Note: (…

开关电源功率测试方法:输入、输出功率测试步骤

在现代电子设备中&#xff0c;开关电源扮演着至关重要的角色&#xff0c;其效率和稳定性直接影响到整个系统的性能。因此&#xff0c;对开关电源进行功率测试成为了电源管理的重要环节。本文将详细介绍如何使用DC-DC电源模块测试系统对开关电源的输入输出功率进行准确测量&…

网络安全之OSPF进阶

该文针对OSPF进行一个全面的认识。建议了解OSPF的基础后进行本文的一个阅读能较好理解本文。 OSPF基础的内容请查看&#xff1a;网络安全之动态路由OSPF基础-CSDN博客 OSPF中更新方式中的触发更新30分钟的链路状态刷新。是因为其算法决定的&#xff0c;距离矢量型协议是边算边…

Python | Leetcode Python题解之第87题扰乱字符串

题目&#xff1a; 题解&#xff1a; class Solution:def isScramble(self, s1: str, s2: str) -> bool:cachedef dfs(i1: int, i2: int, length: int) -> bool:"""第一个字符串从 i1 开始&#xff0c;第二个字符串从 i2 开始&#xff0c;子串的长度为 le…

5.13号模拟前端面试10问

1.介绍箭头函数和普通函数的区别 箭头函数和普通函数在JavaScript中有一些重要的区别。以下是关于这些区别的详细解释&#xff1a; 语法结构上的差异&#xff1a; 箭头函数使用更简洁的语法&#xff0c;它不需要使用function关键字&#xff0c;而是使用一个箭头&#xff08;…

第三方组件element-ui

1、创建 选vue2 不要快照 vue2于vue3差异 vue2main。js import Vue from vue import App from ./App.vueVue.config.productionTip falsenew Vue({render: h > h(App), }).$mount(#app)vue3 main.js vue2不能有多个跟组件&#xff08;div&#xff09;

牛客网刷题 | BC82 乘法表

目前主要分为三个专栏&#xff0c;后续还会添加&#xff1a; 专栏如下&#xff1a; C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读&#xff01; 初来乍到&#xff0c;如有错误请指出&#xff0c;感谢&#xff01; 描述 输出九九乘法表&am…

ASP.NET医药进销存系统

摘 要 目前&#xff0c;大中型城市的多数药品店已经实现了商品管理、客户管理、销售管理及销售管理等的信息化和网络化&#xff0c;提高了管理效率。但是&#xff0c;在大多数小药品店&#xff0c;药品店管理仍然以传统人工管理为主&#xff0c;特别是在药品的采购、销售、库…

污水设备远程监控

随着环保意识的日益增强&#xff0c;污水处理作为城市建设和环境保护的重要一环&#xff0c;越来越受到社会各界的关注。然而&#xff0c;传统的污水处理设备管理方式往往存在着效率低下、响应速度慢、维护成本高等问题。为了解决这些痛点&#xff0c;HiWoo Cloud平台凭借其强大…