From f01abc4ed98e7d20b2cbce293a1fb0414f069b22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=AC=A3?= <3188923799@qq.com> Date: Mon, 5 Dec 2022 20:16:42 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E6=88=91=E7=9A=84=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...347\254\246 - \345\211\257\346\234\254.md" | 0 ...73\223\346\236\204if\345\222\214switch.md" | 460 ++++++++++++++++++ .../images/\345\233\276\347\211\2072.png" | Bin 0 -> 5363 bytes .../images/\345\233\276\347\211\2073.png" | Bin 0 -> 6137 bytes .../images/\345\233\276\347\211\2074.png" | Bin 0 -> 6852 bytes .../images/\345\233\276\347\211\2075.png" | Bin 0 -> 17023 bytes 6 files changed, 460 insertions(+) rename "29 \347\216\213\351\233\257\351\235\231/20221201 \350\207\252\345\242\236\350\207\252\345\207\217 \350\265\213\345\200\274\350\277\220\347\256\227 \345\205\263\347\263\273\357\274\210\347\237\255\350\267\257\351\200\273\350\276\221 \344\270\211\345\205\203\357\274\211\350\277\220\347\256\227\347\254\246.md" => "29 \347\216\213\351\233\257\351\235\231/20221201 \350\207\252\345\242\236\350\207\252\345\207\217 \350\265\213\345\200\274\350\277\220\347\256\227 \345\205\263\347\263\273\357\274\210\347\237\255\350\267\257\351\200\273\350\276\221 \344\270\211\345\205\203\357\274\211\350\277\220\347\256\227\347\254\246 - \345\211\257\346\234\254.md" (100%) create mode 100644 "29 \347\216\213\351\233\257\351\235\231/20221202 \345\210\206\346\224\257\347\273\223\346\236\204if\345\222\214switch.md" create mode 100644 "29 \347\216\213\351\233\257\351\235\231/images/\345\233\276\347\211\2072.png" create mode 100644 "29 \347\216\213\351\233\257\351\235\231/images/\345\233\276\347\211\2073.png" create mode 100644 "29 \347\216\213\351\233\257\351\235\231/images/\345\233\276\347\211\2074.png" create mode 100644 "29 \347\216\213\351\233\257\351\235\231/images/\345\233\276\347\211\2075.png" diff --git "a/29 \347\216\213\351\233\257\351\235\231/20221201 \350\207\252\345\242\236\350\207\252\345\207\217 \350\265\213\345\200\274\350\277\220\347\256\227 \345\205\263\347\263\273\357\274\210\347\237\255\350\267\257\351\200\273\350\276\221 \344\270\211\345\205\203\357\274\211\350\277\220\347\256\227\347\254\246.md" "b/29 \347\216\213\351\233\257\351\235\231/20221201 \350\207\252\345\242\236\350\207\252\345\207\217 \350\265\213\345\200\274\350\277\220\347\256\227 \345\205\263\347\263\273\357\274\210\347\237\255\350\267\257\351\200\273\350\276\221 \344\270\211\345\205\203\357\274\211\350\277\220\347\256\227\347\254\246 - \345\211\257\346\234\254.md" similarity index 100% rename from "29 \347\216\213\351\233\257\351\235\231/20221201 \350\207\252\345\242\236\350\207\252\345\207\217 \350\265\213\345\200\274\350\277\220\347\256\227 \345\205\263\347\263\273\357\274\210\347\237\255\350\267\257\351\200\273\350\276\221 \344\270\211\345\205\203\357\274\211\350\277\220\347\256\227\347\254\246.md" rename to "29 \347\216\213\351\233\257\351\235\231/20221201 \350\207\252\345\242\236\350\207\252\345\207\217 \350\265\213\345\200\274\350\277\220\347\256\227 \345\205\263\347\263\273\357\274\210\347\237\255\350\267\257\351\200\273\350\276\221 \344\270\211\345\205\203\357\274\211\350\277\220\347\256\227\347\254\246 - \345\211\257\346\234\254.md" diff --git "a/29 \347\216\213\351\233\257\351\235\231/20221202 \345\210\206\346\224\257\347\273\223\346\236\204if\345\222\214switch.md" "b/29 \347\216\213\351\233\257\351\235\231/20221202 \345\210\206\346\224\257\347\273\223\346\236\204if\345\222\214switch.md" new file mode 100644 index 0000000..1f3a9a5 --- /dev/null +++ "b/29 \347\216\213\351\233\257\351\235\231/20221202 \345\210\206\346\224\257\347\273\223\346\236\204if\345\222\214switch.md" @@ -0,0 +1,460 @@ +## 流程控制语句 + +在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。所以,我们必须清楚每条语句的执行流程。而且,很多时候要通过控制语句的执行顺序来实现我们想要的功能。 + +### 流程控制语句分类(了解) + +​ 顺序结构 + +​ 分支结构(if, switch) + +​ 循环结构(for, while, do…while) + +### 顺序结构(了解) + +顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。 + +顺序结构执行流程图: + +![1545615769372](G:\Java仓库\java-base\29 王雯静\images\图片2.png) + +### 分支结构之if语句 + +#### if语句格式1 + +~~~java +格式: +if (关系表达式) { + 语句体; +} +~~~ + +执行流程: + +①首先计算关系表达式的值 + +②如果关系表达式的值为true就执行语句体 + +③如果关系表达式的值为false就不执行语句体 + +④继续执行后面的语句内容 + +![1545616039363](G:\Java仓库\java-base\29 王雯静\images\图片3.png) + +示例: + +~~~java +public class IfDemo { + public static void main(String[] args) { + System.out.println("开始"); + + // 如果年龄大于18岁, 就可以上网吧 + int age = 17; + + if(age >= 18){ + // int a = 10; + System.out.println("可以上网吧"); + } + + System.out.println("结束"); + } +} +~~~ + +#### if语句格式2 + +~~~java +格式: +if (关系表达式) { + 语句体1; +} else { + 语句体2; +} +~~~ + +执行流程: + +①首先计算关系表达式的值 + +②如果关系表达式的值为true就执行语句体1 + +③如果关系表达式的值为false就执行语句体2 + +④继续执行后面的语句内容 + +![1545616221283](G:\Java仓库\java-base\29 王雯静\images\图片4.png) + +示例:奇偶数 + +​ 任意给出一个整数,请用程序实现判断该整数是奇数还是偶数,并在控制台输出该整数是奇数还是偶数。 + +~~~java +public class Demo2If { + public static void main(String[] args) { + // 程序判断一个数, 是奇数还是偶数 + int num = 9; + + if(num % 2 == 0){ + System.out.println("偶数"); + }else{ + System.out.println("奇数"); + } + } +} +~~~ + +#### if语句格式3 + +~~~java +格式: +if (关系表达式1) { + 语句体1; +} else if (关系表达式2) { + 语句体2; +} +… +else { + 语句体n+1; +} +~~~ + +执行流程: + +①首先计算关系表达式1的值 + +②如果值为true就执行语句体1;如果值为false就计算关系表达式2的值 + +③如果值为true就执行语句体2;如果值为false就计算关系表达式3的值 + +④… + +⑤如果没有任何关系表达式为true,就执行语句体n+1。 + +![1545616667104](G:\Java仓库\java-base\29 王雯静\images\图片5.png) + +示例: + +​ 定义一个在0~100之间的变量a, 90~100优秀,80~89良好,70~79中等,60~69及格,0~59请努力加油! + +~~~java +public class Demo3If { + public static void main(String[] args){ + int score = 65; + if(score >= 90 && score <= 100){ + System.out.println("优秀"); + }else if (score >= 80 && score <= 89){ + System.out.println("良好"); + }else if (score >= 70 && score <= 79){ + System.out.println("中等"); + }else if (score >= 60 && score <= 69){ + System.out.println("及格"); + }else if (score >= 0 && score <= 59){ + System.out.println("请努力加油"); + }else{ + System.out.println("成绩有误!"); + } + } +} +~~~ + +#### if语句格式3案例 + +需求:小明快要期末考试了,小明爸爸对他说,会根据他不同的考试成绩,送他不同的礼物,假如你可以控制小明的得分,请用程序实现小明到底该获得什么样的礼物,并在控制台输出。 + +分析: + +​ ①小明的考试成绩未知,可以使用键盘录入的方式获取值 + +​ ②由于奖励种类较多,属于多种判断,采用if...else...if格式实现 + +​ ③为每种判断设置对应的条件 + +​ ④为每种判断设置对应的奖励 + +```java +import java.util.Scanner; +public class IfTest02 { + public static void main(String[] args){ + // 1. 使用Scanner录入考试成绩 + Scanner sc = new Scanner(System.in); + System.out.println("请输入您的成绩:"); + int score = sc.nextInt(); + // 2. 判断成绩是否在合法范围内 0~100 + if(score >=0 && score <= 100){ + // 合法成绩 + // 3. 在合法的语句块中判断成绩范围符合哪一个奖励 + 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("您的成绩输入有误!"); + } + } +} +``` + +分支语句Switch + +格式: + +```java +switch (表达式) { +case 1: +语句体1; +break; +case 2: +语句体2; +break; +... +default: +语句体n+1; +break; +} +``` + +#### 执行流程: + +首先计算出表达式的值 + +其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到 break就会结 束。 + +最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束 掉。 + +#### switch案例-减肥计划 需求:键盘录入星期数,显示今天的减肥活动 + +周一:跑步 周二:游泳 周三:慢走 周四:动感单车 周五:拳击 周六:爬山 周日:好好吃一顿 + +```java +public static void main(String[] args){ +// 1. 键盘录入星期数据,使用变量接收 +Scanner sc = new Scanner(System.in); +System.out.println("请输入"); +int week = sc.nextInt(); +// 2. 多情况判断,采用switch语句实现 +switch(week){ +// 3. 在不同的case中,输出对应的减肥计划 +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语句case穿透 + + 概述 : 如果switch语句中,case省略了break语句, 就会开始case穿透 + +需求 : 键盘录入星期数,输出工作日、休息日 (1-5)工作日,(6-7)休息日 + +```java +/* +case穿透是如何产生的? +如果switch语句中,case省略了break语句, 就会开始case穿透. +现象: +当开始case穿透,后续的case就不会具有匹配效果,内部的语句都会执行 +直到看见break,或者将整体switch语句执行完毕,才会结束。 +*/ +public static void main(String[] args){ +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; +} +} +} +``` + + + +### 作业: + +```java +import java.util.Scanner; + +public class D1 { + public static void main(String[] args) { + double pay=0; + Scanner sc = new Scanner(System.in); + System.out.println("请输入乘坐的车型:"); + String car = sc.next(); + System.out.println("请输入行车千米数:"); + double kilometer = sc.nextDouble(); + double kilo=kilometer-3; + switch (car) { + case "夏利": + if (kilometer > 0 && kilometer <= 3) { + pay+=3; + } else { + pay = 3+(kilo*2.1); + } + break; + case "富康": + if (kilometer > 0 && kilometer <= 3) { + pay += 4; + } else { + pay = 4+(kilo*2.4); + } + break; + case "桑塔纳": + if (kilometer > 0 && kilometer <= 3) { + pay += 5; + } else { + pay = 5+(kilo*2.7); + } + break; + } + System.out.println("需要支付:"+pay); + } +} +``` + +```java +import java.util.Scanner; + +public class D2 { + public static void main(String[] args) { + Scanner sc=new Scanner(System.in); + System.out.println("请输入今天的日期:"); + int year= sc.nextInt(); + int month=sc.nextInt(); + int day= sc.nextInt(); + int sum=0; + switch (month){ + case 12: + sum+=30; + case 11: + sum+=31; + case 10: + sum+=30; + case 9: + sum+=31; + case 8: + sum+=31; + case 7: + sum+=30; + case 6: + sum+=31; + case 5: + sum+=30; + case 4: + sum+=31; + case 3: + if (year%4==0 && year%100!=0 ||year%400==0){ + sum+=29; + }else{ + sum+=28; + } + case 2: + sum+=31; + case 1: + sum=sum+day; + } + System.out.println(year+"年"+month+"月"+day+"日是本年的第"+sum+"天"); + } +} +``` + +```java +import java.util.Scanner; + +public class D3 { + public static void main(String[] args) { + Scanner sc=new Scanner(System.in); + System.out.println("请输入一个字符:"); + char a=sc.next().charAt(0); + + if (a>='a'&& a<='z' || a>='A'&& a<='Z'){ + switch (a){ + case 'a': + case 'e': + case 'i': + case 'o': + case 'u': + System.out.println(a+"是小写韵母"); + break; + case 'A': + case 'E': + case 'I': + case 'O': + case 'U': + System.out.println(a+"是大写韵母"); + break; + case 'b': + case 'c': + case 'd': + case 'g': + case 'h': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': + System.out.println(a+"是小写声母"); + break; + default: + System.out.println(a+"是大写声母"); + } + + }else{ + System.out.println("输入的字符不是字母。"); + } + + } + + + +``` \ No newline at end of file diff --git "a/29 \347\216\213\351\233\257\351\235\231/images/\345\233\276\347\211\2072.png" "b/29 \347\216\213\351\233\257\351\235\231/images/\345\233\276\347\211\2072.png" new file mode 100644 index 0000000000000000000000000000000000000000..54a5b64dade4a61fee0e2ff91effa4b5be4def2c GIT binary patch literal 5363 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 Ang9R* literal 0 HcmV?d00001 diff --git "a/29 \347\216\213\351\233\257\351\235\231/images/\345\233\276\347\211\2074.png" "b/29 \347\216\213\351\233\257\351\235\231/images/\345\233\276\347\211\2074.png" new file mode 100644 index 0000000000000000000000000000000000000000..17494d812df010f09713db004bf7983c95c69c02 GIT binary patch literal 6852 zcmbtZbyQSQw;y^4nW4Lsl192=0Er=$k`4*!k`hIvTR^(IOS&7RhLDg(r9--5c-Jrf z`__8zTkrlcYu35vp0m%sv-dA1OhZlK5e_8|2n2ehq$u|S1VTXpzAu9@fzMX!K^hQ< zGD1mCM$0SxVA)T_a4X~RSO`CpVSx7Kn(1&%q#H%ZYu}9eWhmP7IY+ne{8zaeLskZL z-&&g&?tUl=K1nFNX5Vf1V{F%=G%s1~oAR;n-q5jtCk@-BGVfN-*YgUN97I_X_Eh^* zvL1JRi4J&_+=JwmN~Q=#vA05`xOH$p4c{6S;Tz}Kx*k0h-%8)g9|JBk=$mK{&}RBO zEv_)=Le297R4~Id69au3rpY zd~;z!SBWhFx{$XB^?En~N6$)9SGfb4kT~C~$&wIk?M{cAVMbfO4fB zdYklN{ldNYs%(iOJv!T^{^4Cb!7BedhgZ{%BdQ+9ffIPk z!Jw|aapHI=sLDllNZ5&=K>{JhUyxNVn4O0fV00bsX$`8DyEm zKNr=lY6T@!`=_vTxPbJur-&fl#(ZB8pwzt1v$QOH+5RNWI_r)yWiupB55`a@cPmt9qG{esYqbbir6}2{En9bzUILVWyX>>>oM5C zGP8w6HFKHr4zIYvEghy-bVKFfDNtbBpSpB0$3Iz&XJU>Ims9)wUFCb|m(CrhqP;<0 zJN*)EjhsjympKBZg6oTlL^i*PW~$%mt-M@jP}dMo$s_4*E1$ITAJbgXdIV#^9|t{S zUS`lDmdSNnStD?QWl|i_u!czl*(q$vl$eOzA!uTAN}zoDu^?$SEu@XnpGEg(Cn|nC z@wWZ#P1ddi$EnKlybT3Q>JEWbiI4rQ;7-X&wey6ofDDgKO4L({4%-M^zp1)QXML88yAe-)u1*>6%+pgix4X zVx^pkUh-^lz`Ew#if ziI-Zr;EVz4eWsGyTc2&$Rh?GWGUgx8e(0wUAx{h&NG(f^^4Aw$Z@^w2b&JxDUW z-NC&i2X+;zyuF;#dQKl%BDbpE3FEX8Cu1yJyrxZXxNnkd?)_;!$MlWu-_JpQDuUensRZhzOHXN#Ei5nnX^#I(T1?k*epA%R;|7d&%ot5$FW zDJ-cM!n9s$11ND%-dLatVX|Bu@1T6}we8YCfmW{aDV?UI-5q5iU(Ru6D|%k}GG6cj z>-@N%qygDqpH?s~#(Qi1I%E#*gL}cVN8YE+#whIE_b$tIY7c{hWy~5o-NHy`oH6IOK*QRVD~UFvg#+?_7(I^ z+eW0=)M&>I-d@-nJz_SfP2?x)VrPlXnc(tAyiV(yT3%~e{TiQ5k5|*rdFL5sl=`T1 z+dbS^Y<8q1A~WAulrz#oUI9zT5~oTNQq=B|N@Eo*j3q+n(<65;8I*%?#LN{eDXnp1 zT}gOq3{gcCA1FsSYjf+&+c$Y|8ZOMts=CEsSvz5mVdd;JS(=Y$78LTA0mD9Z>@cg zg~qgP-e|Bob6YHvmnSd@H#NV;C@-yfdF(ATCNX*Fu<0)6HRhMOuunp|DJdoEOxp)E zqtsCkMq0fksNTWTw!}Mm$kw?Wk`RmC@9gAgE0=8st(^`;no2GIg|nul6NA9%5w0pe zE*V+iU_flic%N-31?o_0CnWKDgu3w!ghzfaOj0dc^6GXBD}=kW^^=tSg}+<>a$sMe z^yff-FDSt~6=%{c;0W~s;2AzeqdsnjH8Ro7sz#GL9qD~u6u;B9v{Qd8KmI)nQk=F3 zbm{c$U0XN4b!{(3GQH;-66aA0RfK9VSfm#9hXlb(ve@l~OTNd+T?v#A2VNd}#ddcy0~Zmi}Nj}4>yZ?}LQ z{WRRKs$am|#=c1Lf9hO=<4tMLj3&hcq0l5+ddh$tqg8992GKbVL%RZS)ZTk!8!8Ro z?#x)5tmM?L79B!=H1dUrM<^wn-j&&gv$m}lI&#D$Du2(tKTAe=p&wZ0%f=>tH~2FR z4EeP7?Vh-T#W!b8?1jbPMwiKTMu3Yl#gEMD?A`4=$8xZ4Kt>M}76w|DnSJ=DlPEng z)GC77yE2wLpTOpD32ZN{``a{=vm@k&JeU7;tN_Te;n7`Z=ZzEp3^B`_58{575`Ed7 zzb^59<&*0!5e0GZi|q3!aQPONGJByS_*r5?w1=mFbDInA70ysKk6rUE^Bbk2rorC- zdF+%@Hu39-Zn!+6vRooyI^#$~uYEK=#K+g&l6@Lu*lCP6z|(dHO&X}*!w#daapWaw zGrbZAysyg?Kn5TX?2M}?KdKIG_oB)7sldn<(S6(j)KAO){i!!wng46qU(iu=#t1sn}`YMqMkW3JJzgXO7*Go8XiVr~>dQ6mY}(sa5M~M>-?+wcsQo|J4i}K|G?5yhy2X%Ql=`I_Rrcb9CdHj{Cf)R{QL` zNRu@YKoOppRil^O!5pyLuf)kQZ%5qX1*K%zKJPsQB{Et9gDcd-p+E83~G8jG*hq;o7w_hbK36wVRL)#!ArtaiQLPYEVgSfu)eyW>*; zAGtU70Hffl>rmKkbFCBTYOT3Etk5vPuo7xR( zf3ym)7xYL2b1YMF{j*KUZLYZnUCGRHuu>oSX9L}R-l!!OKm+YfnMfvIq$I=cS1KYTE}AW!Auk0$<>f>ziJP_<4%TPo_vk zAqFV1B;;3B%Rtk_X%SQ7e22FL_m>Ue{#+4{VUIwIOD*N@B59>&OT4-a*lC`(>m zB3HgPi^ZgJrmb~de%vOy8?x90@qyARd%{av&*3N^VQFp=2U^y*b z$FEfX!&vSGD-Sf|V$z9t*C&Ot3y>7*M+U|vYA%6#(lB}@V;>jDp~K5oVi*VGvcG)A z?;78a*pen{5AWCU9Y5~f`=iK9`JK{58=rD~&4KR5K|_CEJ2@4`iSc*PNZ!z?{%j{B zA^&3?0h|@`>`j@m(8C!sJDIW8nzHBiwsfj2CT5U_q9=W(st%WM1wlkE9a{AmBAw6I zKcU(Bw*+^fhay}$^kbvn?K?y>8A6$+^8AMN&;xJKh-GH`8Tv}6I4m_Us5ynKMe?DI!)^gz(5~Mf76fD|x3_Z;T%w)Gb2@@u7RY{grVEhvGkY=ARmk$eSJCuGL6fpWj)XrhP)H*H-XtZ-!4Rz6j-x{=WL0 zs;f0VZqVV~BJ@eePUz=}_`2riW|4Z_Sk@XSi9-j2dLG+&Ymp>lew8tCXcMDB(g)0&OahBLL4;MLo*|}kjGlQ+w z8hDZ)tL`r*SsV4tjx%`3^ z(Lsd)R)&KTc&53??5KtPD+BlXx8IkD8nWxay4S?2gA#q2bXKvKZ&~p&wtuhNv{{ZU z>oBV09Pl;ca6ZDx@eXUtB#2O(3;m1`fS8p7TDWRvM7sUQp|1}w?qRL|b{8F5toN=t~LY}j0Vs%|T;S$$Q)xNlvTNUl7 z4B3XK`s&4B=@Ev{WfLz@l60G1b#qZw8foIT$2OACQAQlY z|K4!Gx675!xQZ>Cn9_jVCkv)JKgQ%d5ew^XZPmS(>FtH+v+jW~Frg{*2VkCt+AwCUoh;e=isZe8biItI^6DvN5@ z64@_dh0V}vNvj-sck|#dpTyNVs_pGOUSFBNKO%UaXm8RI|KQaWS8z1n;3Oad&XNRn zb0&Afnp+g3wdSqsTC!|TB4u12B7Fw3oBUi!a{jL#mvyp1JX+iR;_7MIIPx3dEuCfz zCMCz|kQ)OXJv^~&zuxk=s_H%nAZ_Hb_2@p1%NyzM(g{|FD_O_}_`RKU4jwZG&(K>s+j^<2JF{z7 z$@DKWSiU~hrrlh|?PW_;u^H;3E1Kqly&&gCpIWQ`-i}M^cT|!DkvuQepwD?rVRtU^ z!LbdR9MD;DC0bPJ4S*Ng)i{-xr6&F?Inl?0w54e-q>8ej&dL zI$`}=Qll-vtQ0@?AgjvU-AEWlmAu!ahEIp{>l2Tz7FDAZBGRF zkqUU|r~s}f0U5PNAi$iSvx&}Ee#Fm2EFujwuyYm@yDoapb4<=nze|e$gA`bI#`s2r zH6rKo2o@a?h_&Okw?mxOP_{`2FsKcw!VAFDX?M}egaFDKB*2tM*be?paqc`zCbY@D z{c_8R=Xldi2L$-1Im}3a0dxT{-`>E{(fCAt>@iMG%fFFSF`lnh{8)$Veq|_hgTijk z`S=LGSzm)Zv(f++M6qM%Je$a&hg7!o|LbGYqj&i&Y#AHqY`c_qOEW|cLm5DFb(kv) zm&JIPI0V_Zy#CHrnSVBb)EJ7l$sXi_b0`S@1#j3wB4Q&zu3s@PXFkFBIAW&T3Vs~4 z-6|+Iq*oh^7w?W12xbw0{V&AyAe}`+KX8wi4sacKvnoq#YW+r4Ee74E|8}AU*8Tm$ zX6p|n^xI%*B;|1yj2F~nWQ=qXlb)L4~=<0E7q&-ex6E=V+p$Yi(ukB6O)6n z)MB^ns!RFFn?{=xq+|F@_P0;<^I-k@ulAip_D_;5HUD(W8wkK`!fqHQfEES0oTK@s z{ln?h)ef-*RxC}Rhx2c7?0v`05j~fsPp@EggqwPC+{FT*je~J@r+SSU^r_m!@gcdZLRucO z$SjPxb{=@XqbeRJ(XY|Br%*dFz2@|`4;RGnBB}vKuSV2TI)Fe{56%vo+qO%#eD&9a zL?KFoI+tXct#DA1FJe&8Zyt~)x4F`uD4{m;R|xY;wnBG(MY!lZZg7UsFOX176bm*H&Wla zwmh^+)x-Y#Fsq`$hjGK8#MGyhWY{Ts0q>D67z}5s=g?%j0?0Q3Gn$OdsL4qw#T9IN69fv{f_9N{O?tXpJstD7Z9>M;J z{sO65sD8E&7`+t@fTn2?GM#e&Oc~06u`|OU(vXZ#$rf1O4YxCLy<>;>rCxpOj5_Cq z|FBCgw!U8W-*yfYpC59%ic8yUvgX9ep$Sg4nPz>Rt64+%UjP@G%Rn}?$19%+0GxX= Z2Zg=)^)^8*;NK~blDwK+CCv2G{{TH;DiZ(z literal 0 HcmV?d00001 diff --git "a/29 \347\216\213\351\233\257\351\235\231/images/\345\233\276\347\211\2075.png" "b/29 \347\216\213\351\233\257\351\235\231/images/\345\233\276\347\211\2075.png" new file mode 100644 index 0000000000000000000000000000000000000000..b7835a46e9950ccf8d0429ede987c4cff03b3b02 GIT binary patch literal 17023 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 IM0C9W7ZBhH3jhEB literal 0 HcmV?d00001 -- Gitee From cb79086ae7369e8a41ce992771a8b041b4bace27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=AC=A3?= <3188923799@qq.com> Date: Wed, 7 Dec 2022 12:06:42 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\257\255\345\217\245for while do-while.md" | 388 ++++++++++++++++++ 1 file changed, 388 insertions(+) create mode 100644 "29 \347\216\213\351\233\257\351\235\231/20221206 \345\276\252\347\216\257\350\257\255\345\217\245for while do-while.md" diff --git "a/29 \347\216\213\351\233\257\351\235\231/20221206 \345\276\252\347\216\257\350\257\255\345\217\245for while do-while.md" "b/29 \347\216\213\351\233\257\351\235\231/20221206 \345\276\252\347\216\257\350\257\255\345\217\245for while do-while.md" new file mode 100644 index 0000000..b84ccea --- /dev/null +++ "b/29 \347\216\213\351\233\257\351\235\231/20221206 \345\276\252\347\216\257\350\257\255\345\217\245for while do-while.md" @@ -0,0 +1,388 @@ +# for 循环 + +##### 循环: + +循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环 体 语句,当反复 执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循 环,否 则循环将一直执行下去,形 成死循环。 + +#### for循环的格式: + +``` +for(初始化语句;条件判断语句;条件控制语句){ + 循环体语句; +} +``` + +##### 格式解释: + +初始化语句: 用于表示循环开启时的起始状态,简单说就是循环开始的时候什么样 + + 条件判断语句:用于表示循环反复执行的条件,简单说就是判断循环是否能一直执行下去 + +循环体语句: 用于表示循环反复执行的内容,简单说就是循环反复执行的事情 + +条件控制语句:用于表示循环执行中每次变化的内容,简单说就是控制循环是否能执行下去 + +##### 执行流程: + +①执行初始化语句 + + ②执行条件判断语句,看其结果是true还是false + + 如果是false,循环结束 如果是true,继续执行 + +③执行循环体语句 + + ④执行条件控制语句 + + ⑤回到②继续 + +#### 举例1(循环输出1~5): + +```java +public class ForTest01 { +public static void main(String[] args) { +//需求:输出数据1-5 +for(int i=1; i<=5; i++) { +System.out.println(i); +} +System.out.println("--------"); +//需求:输出数据5-1 +for(int i=5; i>=1; i--) { +System.out.println(i); +} +} +} +``` + +#### 举例2 (1~5求和) + +###### 注意求和要设变量 + +```java +public class ForTest02 { +public static void main(String[] args) { +//求和的最终结果必须保存起来,需要定义一个变量,用于保存求和的结果,初始值为0 +int sum = 0; +//从1开始到5结束的数据,使用循环结构完成 +for(int i=1; i<=5; i++) { +//将反复进行的事情写入循环结构内部 +// 此处反复进行的事情是将数据 i 加到用于保存最终求和的变量 sum 中 +sum += i; +/* +sum += i; sum = sum + i; +第一次:sum = sum + i = 0 + 1 = 1; +第二次:sum = sum + i = 1 + 2 = 3; +第三次:sum = sum + i = 3 + 3 = 6; +第四次:sum = sum + i = 6 + 4 = 10; +第五次:sum = sum + i = 10 + 5 = 15; +*/ +} +//当循环执行完毕时,将最终数据打印出来 +System.out.println("1-5之间的数据和是:" + sum); +} +} + +``` + +###### 本题要点: + + 今后遇到的需求中,如果带有求和二字,请立即联想到求和变量 + +求和变量的定义位置,必须在循环外部,如果在循环内部则计算出的数据将是错误的 + +#### 举例3(求1-100偶数和) + +```java +public class ForTest03 { +public static void main(String[] args) { +//求和的最终结果必须保存起来,需要定义一个变量,用于保存求和的结果,初始值为0 +int sum = 0; + //对1-100的数据求和与1-5的数据求和几乎完全一样,仅仅是结束条件不同 +for(int i=1; i<=100; i++) { +//对1-100的偶数求和,需要对求和操作添加限制条件,判断是否是偶数 +if(i%2 == 0) { +sum += i; +} +} +//当循环执行完毕时,将最终数据打印出来 +System.out.println("1-100之间的偶数和是:" + sum); +} +} +``` + +#### 举例4(求1~100之间的所有偶数和比奇数和多多少) + +```java +public class ForTest04 { +public static void main(String[] args) { + int jsum = 0; + int osum = 0; + for(int = 1; i <= 100; i++) + if{ + jsum += i; + }else{ + osum += i; + } + System.out.println(osum-jsum); +} +} + +``` + +##### 什么是水仙花数? + + 水仙花数,指的是一个三位数,个位、十位、百位的数字立方和等于原数 + +例如 153 3*3*3 + 5*5*5 + 1*1*1 = 153 + +#### 举例5 .1(水仙花数) + +```java +public class ForTest04 { +public static void main(String[] args) { +//输出所有的水仙花数必然要使用到循环,遍历所有的三位数,三位数从100开始,到999结 +束 +for(int i=100; i<1000; i++) { +//在计算之前获取三位数中每个位上的值 +int ge = i%10; +int shi = i/10%10; +int bai = i/10/10%10; +//判定条件是将三位数中的每个数值取出来,计算立方和后与原始数字比较是否相等 +if(ge*ge*ge + shi*shi*shi + bai*bai*bai == i) { +//输出满足条件的数字就是水仙花数 +System.out.println(i); +} +} +} +} + +``` + +###### 思路: + +1获取所有的三位数,准备进行筛选,最小的三位数为100,最大的三位数为999,使用for循环 获取 + + 2. 获取每一个三位数的个位,十位,百位,做if语句判断是否是水仙花数 + +#### 5.2 (水仙花数) + +```java +public class Demo6For { +/* +需求:在控制台输出所有的“水仙花数”,要求每行打印2个 +System.out.print (打印内容); 打印后不换行 +System.out.println(打印内容); 打印后换行 +分析: +1. 定义变量count,用于保存“打印过”的数量,初始值为0 +2. 在判定和打印水仙花数的过程中,拼接空格, 但不换行,并在打印后让count变量 ++1,记录打印过的数量 +3. 在每一次count变量+1后,判断是否到达了2的倍数,是的话,换行。 +*/ +public static void main(String[] args){ +// 1. 定义变量count,用于保存“打印过”的数量,初始值为0 +int count = 0; +for(int i = 100; i <= 999; i++){ +int ge = i % 10; +int shi = i / 10 % 10; +int bai = i / 10 / 10 % 10; +if( (ge*ge*ge + shi*shi*shi + bai*bai*bai) == i){ +// 2. 在判定和打印水仙花数的过程中,拼接空格, 但不换行,并在打印后让 +count变量+1,记录打印过的数量 +System.out.print(i + " "); +count++; +// 3. 在每一次count变量+1后,判断是否到达了2的倍数,是的话,换行 +if(count % 2 == 0){ +System.out.println(); +} +} +} +} +} +``` + +###### 本题要点: + + 今后如果需求带有统计xxx,请先想到计数器变量 + +计数器变量定义的位置,必须在循环外部 + +# while循环 + +##### 格式: + +``` +初始化语句; +while (条件判断语句) { +循环体语句; +条件控制语句; +} +``` + +#### while循环执行流程: + + ①执行初始化语句 + + ②执行条件判断语句,看其结果是true还是false + +如果是false,循环结束 如果是true,继续执行 + +③执行循环体语句 + +④执行条件控制语句 + +⑤回到②继续 + +#### 举例1(循环5次HelloWord) + +```java +public class WhileDemo { +public static void main(String[] args) { +//需求:在控制台输出5次"HelloWorld" +//for循环实现 +for(int i=1; i<=5; i++) { +System.out.println("HelloWorld"); +} +System.out.println("--------"); +//while循环实现 +int j = 1; +while(j<=5) { +System.out.println("HelloWorld"); +j++; +} +} +} +``` + +#### 举例2(珠穆朗玛峰) + +需求:世界最高山峰是珠穆朗玛峰(8844.43米=8844430毫米),假如我有一张足够大的纸,它的厚 度是0.1毫米。请问,我折叠多少次,可以折成珠穆朗玛峰的高度? + +```java +public class WhileTest { +public static void main(String[] args) { +//定义一个计数器,初始值为0 +int count = 0; +//定义纸张厚度 +double paper = 0.1; +//定义珠穆朗玛峰的高度 +int zf = 8844430; +//因为要反复折叠,所以要使用循环,但是不知道折叠多少次,这种情况下更适合使用while +循环 +//折叠的过程中当纸张厚度大于珠峰就停止了,因此继续执行的要求是纸张厚度小于珠峰高度 +while(paper <= zf) { +//循环的执行过程中每次纸张折叠,纸张的厚度要加倍 +paper *= 2; +//在循环中执行累加,对应折叠了多少次 +count++; +} +//打印计数器的值 +System.out.println("需要折叠:" + count + "次"); +} +} +``` + +# do-while循环 + +##### 格式: + +``` +初始化语句; +do { +循环体语句; +条件控制语句; +}while(条件判断语句); + +``` + +#### 执行流程: + + ① 执行初始化语句 + + ② 执行循环体语句 + +③ 执行条件控制语句 + + ④ 执行条件判断语句,看其结果是true还是false + +如果是false,循环结束 + + 如果是true,继续执行 + + ⑤ 回到②继续 + +#### 举例1(循环5次HelloWord) + +```java +public class DoWhileDemo { +public static void main(String[] args) { +//需求:在控制台输出5次"HelloWorld" +//for循环实现 +for(int i=1; i<=5; i++) { +System.out.println("HelloWorld"); +} +System.out.println("--------"); +//do...while循环实现 +int j = 1; +do { +System.out.println("HelloWorld"); +j++; +}while(j<=5); +} +} +``` + +# 以上三种循环的区别 + +- ##### for循环和while循环先判断条件是否成立,然后决定是否执行循环体(先判断后执行) + +- ##### do...while循环先执行一次循环体,然后判断条件是否成立,是否继续执行循环体(先执行后 判断) + +- ##### for循环和while的区别 + +- ##### 条件控制语句所控制的自增变量,因为归属for循环的语法结构中,在for循环结束后,就不能 再次被访问到了 + +- ##### 条件控制语句所控制的自增变量,对于while循环来说不归属其语法结构中,在while循环结束 后,该变量还可以继续使用 + +# 死循环 + +##### 格式: + +```java +for死循环格式 : +for(;;){ +} +while死循环格式 : +while(true){ +} +do..while死循环格式 : +do{ +}while(true); +``` + +#### 举例 + +```java +/* +问题: 死循环有应用场景吗? +例如: 键盘录入一个1-100之间的整数 +顾虑: 键盘录入是用户操作的, 用户就可能会出现一些误操作的现象 +*/ +public static void main(String[] args) { +/* +for(;;){ +System.out.println("我停不下来了~"); +} +*/ +/* +while(true){ +System.out.println("我停不下来了~"); +} +*/ +do{ +System.out.println("我停不下来了~"); +}while(true); +System.out.println("看看我能被执行吗?~"); // 无法访问的语句 +} +} +``` + -- Gitee From 5df5dd1c7f33fb94759693941165117d6b490805 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=AC=A3?= <3188923799@qq.com> Date: Fri, 9 Dec 2022 12:05:09 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E6=88=91=E7=9A=84=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...346\261\202\345\222\214\357\274\211.md.md" | 783 ++++++++++++++++++ 1 file changed, 783 insertions(+) create mode 100644 "29 \347\216\213\351\233\257\351\235\231/20221208 \350\267\263\350\275\254\350\257\255\345\217\245\357\274\210break conttiue\357\274\211\351\232\217\346\234\272\346\225\260\357\274\210random\357\274\211\346\225\260\347\273\204\357\274\210\351\235\231\346\200\201\345\212\250\346\200\201\345\210\235\345\247\213\345\214\226 \351\201\215\345\216\206 \350\216\267\345\217\226\346\234\200\345\244\247\345\200\274 \346\261\202\345\222\214\357\274\211.md.md" diff --git "a/29 \347\216\213\351\233\257\351\235\231/20221208 \350\267\263\350\275\254\350\257\255\345\217\245\357\274\210break conttiue\357\274\211\351\232\217\346\234\272\346\225\260\357\274\210random\357\274\211\346\225\260\347\273\204\357\274\210\351\235\231\346\200\201\345\212\250\346\200\201\345\210\235\345\247\213\345\214\226 \351\201\215\345\216\206 \350\216\267\345\217\226\346\234\200\345\244\247\345\200\274 \346\261\202\345\222\214\357\274\211.md.md" "b/29 \347\216\213\351\233\257\351\235\231/20221208 \350\267\263\350\275\254\350\257\255\345\217\245\357\274\210break conttiue\357\274\211\351\232\217\346\234\272\346\225\260\357\274\210random\357\274\211\346\225\260\347\273\204\357\274\210\351\235\231\346\200\201\345\212\250\346\200\201\345\210\235\345\247\213\345\214\226 \351\201\215\345\216\206 \350\216\267\345\217\226\346\234\200\345\244\247\345\200\274 \346\261\202\345\222\214\357\274\211.md.md" new file mode 100644 index 0000000..0a141e6 --- /dev/null +++ "b/29 \347\216\213\351\233\257\351\235\231/20221208 \350\267\263\350\275\254\350\257\255\345\217\245\357\274\210break conttiue\357\274\211\351\232\217\346\234\272\346\225\260\357\274\210random\357\274\211\346\225\260\347\273\204\357\274\210\351\235\231\346\200\201\345\212\250\346\200\201\345\210\235\345\247\213\345\214\226 \351\201\215\345\216\206 \350\216\267\345\217\226\346\234\200\345\244\247\345\200\274 \346\261\202\345\222\214\357\274\211.md.md" @@ -0,0 +1,783 @@ +# 跳转控制语句 + +**跳转控制语句(break)** + +跳出循环,结束循环 + +**跳转控制语句(continue)** + +跳过本次循环,继续下次循环 + +*注意: continue只能在循环中进行使用!* + +**例如:** + +```java +public class Demo1Continue { +/* +continue : 跳过某次循环体内容的执行 +注意:使用是基于条件控制, 在循环内部使用. +需求: 模拟电梯上行的过程 1-24层, 4层不停. +*/ +public static void main(String[] args){ +for(int i = 1; i <= 24; i++){ +if(i == 4){ +continue; +} +System.out.println(i + "层到了~"); +} +} +} + +public class Demo2Break { +/* +break : 终止循环体内容的执行 +注意:使用是基于条件控制的 +break语句只能在循环和switch中进行使用. +需求: 模拟20岁工作到80岁, 60岁退休. +*/ +public static void main(String[] args){ +for(int i = 20; i <= 80; i++){ +if(i == 60){ +break; // 结束整个循环 +} +System.out.println(i + "岁正在上班"); +} +} +} + +import java.util.Scanner; +public class Test { +/* +需求:程序运行后,用户可多次查询星期对应的减肥计划,直到输入0,程序结束 +步骤: +1. 不明确用户操作几次, 使用死循环包裹业务逻辑 +2. 匹配到0的时候,使用break结束循环死循环 +*/ +public static void main (String[] args){ +lo:while(true){ +System.out.println("请输入您要查看的星期数:"); +System.out.println("(如无需继续查看,请输入0退出程序)"); +// 1. 键盘录入星期数据,使用变量接收 +Scanner sc = new Scanner(System.in); +int week = sc.nextInt(); +// 2. 多情况判断,采用switch语句实现 +switch(week){ +// 3. 在不同的case中,输出对应的减肥计划 +case 0: +System.out.println("感谢您的使用"); +break lo; +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; +} +} +} +} +``` + +## Random产生随机数 + +**概述:** + +Random类似Scanner,也是Java提供好的API,内部提供了产生随机数的功能 + +API后续课程详细讲解,现在可以简单理解为Java已经写好的代码 + +使用步骤: + +1.**导入包** + +import java.util.Random; + +2.**创建对象** + +Random r = new Random(); + +3.**产生随机数** + +int num = r.nextInt(10); + +**解释**: 10代表的是一个范围,如果括号写10,产生的随机数就是0-9,括号写20,参数的随机数则是0-19 + +```java +import java.util.Random; +public class Demo1Random { +/* +Random : 产生随机数 +1. 导包 : import java.util.Random; +导包的动作必须出现在类定义的上面 +2. 创建对象 : Random r = new Random(); +上面这个格式里面,r 是变量名,可以变,其他的都不允许变 +3. 获取随机数 : int number = r.nextInt(10); //获取数据的范围:[0,10) 包 +括0,不包括10 +上面这个格式里面,number是变量名,可以变,数字10可以变。其他的都不 +允许变 +需求: 产生随机数1-10之间的 +*/ +public static void main(String[] args){ +// 2. 创建对象 +Random r = new Random(); +for(int i = 1; i <= 10; i++){ +// 3. 获取随机数 +int num = r.nextInt(10) + 1; // 1-10 +System.out.println(num); +} +} +} +``` + +### Random练习-猜数字 + +需求:程序自动生成一个1-100之间的数字,使用程序实现猜出这个数字是多少?当猜错的时候根据不同情况给出相应的提示 + +A. 如果猜的数字比真实数字大,提示你猜的数据大了 + +B. 如果猜的数字比真实数字小,提示你猜的数据小了 + +C. 如果猜的数字与真实数字相等,提示恭喜你猜中了 + +```java +import java.util.Scanner; +import java.util.Random; +public class Test { +/* +需求:程序自动生成一个1-100之间的数字,使用程序实现猜出这个数字是多少? +当猜错的时候根据不同情况给出相应的提示 +如果猜的数字比真实数字大,提示你猜的数据大了 +如果猜的数字比真实数字小,提示你猜的数据小了 +如果猜的数字与真实数字相等,提示恭喜你猜中了 +1. 准备Random和Scanner对象, 分别用于产生随机数和键盘录入 +2. 使用Random产生一个1-100之间的数, 作为要猜的数 +3. 键盘录入用户猜的的数据 +4. 使用录入的数据(用户猜的数据)和随机数(要猜的数据)进行比较, 并给出提示 +5. 以上内容需要多次进行, 但无法预估用户输入几次可以猜测正确, 使用while(true)死 +循环包裹 +6. 猜对之后, break结束. +*/ +public static void main(String[] args){ +// 1. 准备Random和Scanner对象, 分别用于产生随机数和键盘录入 +Random r = new Random(); +Scanner sc = new Scanner(System.in); +// 2. 使用Random产生一个1-100之间的数, 作为要猜的数 +int randomNum = r.nextInt(100) + 1; +// 5. 以上内容需要多次进行, 但无法预估用户输入几次可以猜测正确, 使用 +while(true)死循环包裹 +while(true){ +// 3. 键盘录入用户猜的的数据 +System.out.println("请输入您猜的数据:"); +int num = sc.nextInt(); +// 4. 使用录入的数据(用户猜的数据)和随机数(要猜的数据)进行比较, 并给出提示 +if(num > randomNum){ +System.out.println("猜大了"); +}else if(num < randomNum){ +System.out.println("猜小了"); +}else{ +// 6. 猜对之后, break结束. +System.out.println("恭喜,猜中了"); +break; +} +} +System.out.println("感谢您的使用"); +} +} +``` + +## 数组 + +数组介绍 + +​ 数组就是存储数据长度固定的容器,存储多个数据的数据类型要一致。 + +### 数组的定义格式 + +#### 第一种格式 + +​ 数据类型[] 数组名 + +```java +int[] arr; +double[] arr; +char[] arr; +``` + +### 第二种格式 + +​ 数据类型 数组名[] + +```java +int arr[]; +double arr[]; +char arr[]; +``` + +## 数组的动态初始化 + +#### 什么是动态初始化 + +​ 数组动态初始化就是只给定数组的长度,由系统给出默认初始化值 + +#### 动态初始化格式 + +```java +数据类型[] 数组名 = new 数据类型[数组长度]; + + + + + int[] arr = new int[3]; +``` + +### 动态初始化格式详解 + +* **等号左边**: + + * int:数组的数据类型 + + * []:代表这是一个数组 + + * arr:代表数组的名称 + +* **等号右边:** + + * new:为数组开辟内存空间 + + * int:数组的数据类型 + + * []:代表这是一个数组 + + * 5:代表数组的长度 + + ```java + package com.itheima.array; + + public class Demo2Array { + 数组的动态初始化: + 在初始化的时候, 需要手动指定数组的长度, 系统会为数组容器分配初始值. + + 动态初始化格式: + 数据类型[] 数组名 = new 数据类型[数组的长度]; + + 注意: + 打印数组变量的时候, 会打印出数组的内存地址 + + [I@10f87f48 : + + @ : 分隔符 + [ : 当前的空间是一个数组类型 + I : 当前数组容器中所存储的数据类型 + 10f87f48 : 十六进制内存地址 + + 0 1 2 3 4 5 6 7 8 9 a b c d e f + */ + public static void main(String[] args) { + // 数据类型[] 数组名 = new 数据类型[数组的长度]; + // 通过new关键字创建了一个int类型的数组容器, 该容器可以存储5个int类型的整数, 该容器被arr数组变量所记录 + int[] arr = new int[5]; + // [I@10f87f48 + System.out.println(arr); + + byte[] bArr = new byte[3]; + // [B@b4c966a + System.out.println(bArr); + + } + } + ``` + +## 数组元素访问 + +#### 什么是索引 + +​ 每一个存储到数组的元素,都会自动的拥有一个编号,从0开始。 + +​ 这个自动编号称为数组索引(index),可以通过数组的索引访问到数组中的元素。 + +#### 访问数组元素格式 + + 数组名[索引]; + +### 代码 + +```java +package com.itheima.array; + +public class Demo3ArrayIndex { + /* + 数组动态初始化: + 初始化的时候, 手动指定数组长度, 系统会为数组容器分配初始值. + + 数组的元素访问格式: + 数组名[索引] + + 索引: 数组中数据的编号方式, 编号从0开始 + 作用: 访问数组容器中的空间位置 + + 注意: + 数组在创建完毕后, 即使没有赋值, 也可以取出, 但取出的元素都是默认初始化值. + + */ + public static void main(String[] args) { + int[] arr = new int[3]; // 0 1 2 + System.out.println(arr); // 数组的内存地址 [I@10f87f48 + + // 数组名[索引] 访问数组容器中的空间位置 + System.out.println(arr[0]); // 0 系统自动分配的默认初始化值 + System.out.println(arr[1]); + System.out.println(arr[2]); + + System.out.println("--------------"); + + // 数组名[索引] + arr[0] = 11; + arr[1] = 22; + arr[2] = 33; + + System.out.println(arr[0]); + System.out.println(arr[1]); + System.out.println(arr[2]); + } +} +``` + +## 数组的静态初始化 + +#### 什么是静态初始化 + +​ 在创建数组时,直接将元素确定 + +#### 静态初始化格式 + +* 完整版格式 + + 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...}; + +* 简化版格式 + + 数据类型[] 数组名 = {元素1,元素2,...}; + +#### 示例代码 + +```java +package com.itheima.array2; + +public class Demo1Array { + /* + 数组静态初始化 : 初始化时指定每个数组元素的初始值,由系统决定数组长度 + + 完整格式: + 数据类型[] 数组名 = new 数据类型[]{数据1,数据2,数据3...}; + 简化格式: + 数据类型[] 数组名 = {数据1,数据2,数据3...}; + */ + public static void main(String[] args) { + // 数据类型[] 数组名 = new 数据类型[]{数据1,数据2,数据3...}; + int[] arr = new int[]{11,22,33}; + System.out.println(arr[0]); + System.out.println(arr[1]); + System.out.println(arr[2]); + + // 数据类型[] 数组名 = {数据1,数据2,数据3...}; + int[] arr2 = {44,55,66}; + System.out.println(arr2); + System.out.println(arr2[0]); + System.out.println(arr2[1]); + System.out.println(arr2[2]); + + } +} +``` + +### 数组操作的两个常见问题 + +#### 索引越界异常 + +* 出现原因 + + ```java + public class ArrayDemo { + public static void main(String[] args) { + int[] arr = new int[3]; + System.out.println(arr[3]); + } + } + ``` + + 数组长度为3,索引范围是0~2,但是我们却访问了一个3的索引。 + + 程序运行后,将会抛出ArrayIndexOutOfBoundsException 数组越界异常。在开发中,数组的越界异常是不能出现的,一旦出现了,就必须要修改我们编写的代码。 + +* 解决方案 + + 将错误的索引修改为正确的索引范围即可! + +#### 空指针异常 + +* 出现原因 + + ```java + public class ArrayDemo { + public static void main(String[] args) { + int[] arr = new int[3]; + + //把null赋值给数组 + arr = null; + System.out.println(arr[0]); + } + } + ``` + + arr = null 这行代码,意味着变量arr将不会在保存数组的内存地址,也就不允许再操作数组了,因此运行的时候会抛出 NullPointerException 空指针异常。在开发中,空指针异常是不能出现的,一旦出现了,就必须要修改我们编写的代码。 + +* 解决方案 + + 给数组一个真正的堆内存空间引用即可! + +### 数组遍历 + +* 数组遍历:就是将数组中的每个元素分别获取出来,就是遍历。遍历也是数组操作中的基石。 + + ```java + public class ArrayTest01 { + public static void main(String[] args) { + int[] arr = { 1, 2, 3, 4, 5 }; + System.out.println(arr[0]); + System.out.println(arr[1]); + System.out.println(arr[2]); + System.out.println(arr[3]); + System.out.println(arr[4]); + } + } + ``` + + 以上代码是可以将数组中每个元素全部遍历出来,但是如果数组元素非常多,这种写法肯定不行,因此我们需要改造成循环的写法。数组的索引是 0 到 lenght-1 ,可以作为循环的条件出现。 + + ```java + public class ArrayTest01 { + public static void main(String[] args) { + //定义数组 + int[] arr = {11, 22, 33, 44, 55}; + + //使用通用的遍历格式 + for(int x=0; x max){ + max = arr[i]; + } + } + // 4. 循环结束后, 打印最大值. + System.out.println("max:" + max); + } + } + ``` + +### 数组元素求和 + +* 需求:键盘录入5个整数,存储到数组中,并对数组求和 + +* 思路: + + 1.创建键盘录入对象,准备键盘录入 + 2.定义一个求和变量,准备记录累加后的结果 + 3.动态初始化一个长度为5的int数组,准备存储键盘录入的数值 + 4.将键盘录入的数值存储到数组中 + 5.遍历数组,取出每一个元素,并求和 + 6.输出总和 + +* 代码实现: + + ```java + package com.itheima.test; + + import java.util.Scanner; + + public class Test3Array { + /* + 需求:键盘录入5个整数,存储到数组中,并对数组求和 + + 思路: + 1.创建键盘录入对象,准备键盘录入 + 2.定义一个求和变量,准备记录累加后的结果 + 3.动态初始化一个长度为5的int数组,准备存储键盘录入的数值 + 4.将键盘录入的数值存储到数组中 + 5.遍历数组,取出每一个元素,并求和 + 6.输出总和 + */ + public static void main(String[] args) { + // 1.创建键盘录入对象,准备键盘录入 + Scanner sc = new Scanner(System.in); + // 2.定义一个求和变量,准备记录累加后的结果 + int sum = 0; + // 3.动态初始化一个长度为5的int数组,准备存储键盘录入的数值 + int[] arr = new int[5]; + // 4.将键盘录入的数值存储到数组中 + for(int i = 0; i < arr.length; i++){ + System.out.println("请输入第" + (i+1) + "个整数:"); + //arr[i] = 10; + arr[i] = sc.nextInt(); + } + + // 5.遍历数组,取出每一个元素,并求和 + for (int i = 0; i < arr.length; i++) { + sum += arr[i]; + } + + // 6.输出总和 + System.out.println("sum:" + sum); + + } + } + ``` + +### 数组基本查找 + +* 需求: + + 已知一个数组 arr = {19, 28, 37, 46, 50}; 键盘录入一个数据,查找该数据在数组中的索引,并在控 + 制台输出找到的索引值。 + +* 思路: + + 1.定义一个数组,用静态初始化完成数组元素的初始化 + 2.键盘录入要查找的数据,用一个变量接收 + 3.定义一个索引变量,初始值为-1 + 4.遍历数组,获取到数组中的每一个元素 + 5.拿键盘录入的数据和数组中的每一个元素进行比较,如果值相同,就把该值对应的索引赋值给索引变量,并结束循环 + 6.输出索引变量 + +* 代码实现: + + ```java + public static void main(String[] args) { + // 1.定义一个数组,用静态初始化完成数组元素的初始化 + int[] arr = {19, 28, 37, 46, 50}; + // 2.键盘录入要查找的数据,用一个变量接收 + Scanner sc = new Scanner(System.in); + System.out.println("请输入您要查找的元素:"); + int num = sc.nextInt(); + // 3.定义一个索引变量,初始值为-1 + // 假设要查找的数据, 在数组中就是不存在的 + int index = -1; + // 4.遍历数组,获取到数组中的每一个元素 + for (int i = 0; i < arr.length; i++) { + // 5.拿键盘录入的数据和数组中的每一个元素进行比较,如果值相同,就把该值对应的索引赋值给索引变量,并结束循环 + if(num == arr[i]){ + // 如果值相同,就把该值对应的索引赋值给索引变量,并结束循环 + index = i; + break; + } + } + // 6.输出索引变量 + System.out.println(index); + } + } + ``` + +### 评委打分 + +* 需求:在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。 + + 选手的最后得分为:去掉一个最高分和一个最低分后 的4个评委平均值 (不考虑小数部分)。 + +* 思路: + + 1.定义一个数组,用动态初始化完成数组元素的初始化,长度为6 + 2.键盘录入评委分数 + 3.由于是6个评委打分,所以,接收评委分数的操作,用循环 + 4.求出数组最大值 + 5.求出数组最小值 + 6.求出数组总和 + 7.按照计算规则进行计算得到平均分 + 8.输出平均分 + +* 代码实现: + + ```java + public static void main(String[] args) { + // 1.定义一个数组,用动态初始化完成数组元素的初始化,长度为6 + int[] arr = new int[6]; + // 2.键盘录入评委分数 + Scanner sc = new Scanner(System.in); + // 3.由于是6个评委打分,所以,接收评委分数的操作,用循环 + for (int i = 0; i < arr.length; i++) { + System.out.println("请输入第" + (i+1) + "个评委的打分:"); + int score = sc.nextInt(); + if(score >= 0 && score <= 100){ + // 合法的分值 + arr[i] = score; + }else{ + // 非法的分值 + System.out.println("您的打分输入有误, 请检查是否是0-100之间的"); + i--; + } + } + + // 4.求出数组最大值 + int max = arr[0]; + for (int i = 1; i < arr.length; i++) { + if(max < arr[i]){ + max = arr[i]; + } + } + + // 5.求出数组最小值 + int min = arr[0]; + for (int i = 1; i < arr.length; i++) { + if(min > arr[i]){ + min = arr[i]; + } + } + + // 6.求出数组总和 + int sum = 0; + for (int i = 0; i < arr.length; i++) { + sum += arr[i]; + } + + // 7.按照计算规则进行计算得到平均分 + int avg = (sum - max - min ) / 4; + + // 8.输出平均分 + System.out.println(avg); + } + } + ``` + +## 作业: + +猜数字: + +```java +import java.util.Random; +import java.util.Scanner; + +public class D5 { + public static void main(String[] args) { + Random ran = new Random(); + int num = ran.nextInt(100)+1; + Scanner sc = new Scanner(System.in); + while (true){ + System.out.println("输入你猜的数字:"); + int num1 = sc.nextInt(); + if(num >num1){ + System.out.println("猜小了"); + + + }else if(num num){ + System.out.println("大了"); + }else if(a Date: Mon, 12 Dec 2022 11:26:44 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E6=88=91=E7=9A=84=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...346\261\202\345\222\214\357\274\211.md.md" | 526 ++++++++++++++++++ 1 file changed, 526 insertions(+) create mode 100644 "29 \347\216\213\351\233\257\351\235\231/2022121020221208 \346\225\260\347\273\204\357\274\210\351\235\231\346\200\201\345\212\250\346\200\201\345\210\235\345\247\213\345\214\226 \351\201\215\345\216\206 \350\216\267\345\217\226\346\234\200\345\244\247\345\200\274 \346\261\202\345\222\214\357\274\211.md.md" diff --git "a/29 \347\216\213\351\233\257\351\235\231/2022121020221208 \346\225\260\347\273\204\357\274\210\351\235\231\346\200\201\345\212\250\346\200\201\345\210\235\345\247\213\345\214\226 \351\201\215\345\216\206 \350\216\267\345\217\226\346\234\200\345\244\247\345\200\274 \346\261\202\345\222\214\357\274\211.md.md" "b/29 \347\216\213\351\233\257\351\235\231/2022121020221208 \346\225\260\347\273\204\357\274\210\351\235\231\346\200\201\345\212\250\346\200\201\345\210\235\345\247\213\345\214\226 \351\201\215\345\216\206 \350\216\267\345\217\226\346\234\200\345\244\247\345\200\274 \346\261\202\345\222\214\357\274\211.md.md" new file mode 100644 index 0000000..3ed5168 --- /dev/null +++ "b/29 \347\216\213\351\233\257\351\235\231/2022121020221208 \346\225\260\347\273\204\357\274\210\351\235\231\346\200\201\345\212\250\346\200\201\345\210\235\345\247\213\345\214\226 \351\201\215\345\216\206 \350\216\267\345\217\226\346\234\200\345\244\247\345\200\274 \346\261\202\345\222\214\357\274\211.md.md" @@ -0,0 +1,526 @@ +## 数组 + +数组介绍 + +​ 数组就是存储数据长度固定的容器,存储多个数据的数据类型要一致。 + +### 数组的定义格式 + +#### 第一种格式 + +​ 数据类型[] 数组名 + + int[] arr; + double[] arr; + char[] arr; + +### 第二种格式 + +​ 数据类型 数组名[] + + int arr[]; + double arr[]; + char arr[]; + +## 数组的动态初始化 + +#### 什么是动态初始化 + +​ 数组动态初始化就是只给定数组的长度,由系统给出默认初始化值 + +#### 动态初始化格式 + + 数据类型[] 数组名 = new 数据类型[数组长度]; + + + + + int[] arr = new int[3]; + +### 动态初始化格式详解 + +* **等号左边**: + + * int:数组的数据类型 + + * []:代表这是一个数组 + + * arr:代表数组的名称 + +* **等号右边:** + + * new:为数组开辟内存空间 + + * int:数组的数据类型 + + * []:代表这是一个数组 + + * 5:代表数组的长度 + + ```java + package com.itheima.array; + + public class Demo2Array { + 数组的动态初始化: + 在初始化的时候, 需要手动指定数组的长度, 系统会为数组容器分配初始值. + + 动态初始化格式: + 数据类型[] 数组名 = new 数据类型[数组的长度]; + + 注意: + 打印数组变量的时候, 会打印出数组的内存地址 + + [I@10f87f48 : + + @ : 分隔符 + [ : 当前的空间是一个数组类型 + I : 当前数组容器中所存储的数据类型 + 10f87f48 : 十六进制内存地址 + + 0 1 2 3 4 5 6 7 8 9 a b c d e f + */ + public static void main(String[] args) { + // 数据类型[] 数组名 = new 数据类型[数组的长度]; + // 通过new关键字创建了一个int类型的数组容器, 该容器可以存储5个int类型的整数, 该容器被arr数组变量所记录 + int[] arr = new int[5]; + // [I@10f87f48 + System.out.println(arr); + + byte[] bArr = new byte[3]; + // [B@b4c966a + System.out.println(bArr); + + } + } + ``` + +## 数组元素访问 + +#### 什么是索引 + +​ 每一个存储到数组的元素,都会自动的拥有一个编号,从0开始。 + +​ 这个自动编号称为数组索引(index),可以通过数组的索引访问到数组中的元素。 + +#### 访问数组元素格式 + + 数组名[索引]; + +### 代码 + +```java +package com.itheima.array; + +public class Demo3ArrayIndex { + /* + 数组动态初始化: + 初始化的时候, 手动指定数组长度, 系统会为数组容器分配初始值. + + 数组的元素访问格式: + 数组名[索引] + + 索引: 数组中数据的编号方式, 编号从0开始 + 作用: 访问数组容器中的空间位置 + + 注意: + 数组在创建完毕后, 即使没有赋值, 也可以取出, 但取出的元素都是默认初始化值. + + */ + public static void main(String[] args) { + int[] arr = new int[3]; // 0 1 2 + System.out.println(arr); // 数组的内存地址 [I@10f87f48 + + // 数组名[索引] 访问数组容器中的空间位置 + System.out.println(arr[0]); // 0 系统自动分配的默认初始化值 + System.out.println(arr[1]); + System.out.println(arr[2]); + + System.out.println("--------------"); + + // 数组名[索引] + arr[0] = 11; + arr[1] = 22; + arr[2] = 33; + + System.out.println(arr[0]); + System.out.println(arr[1]); + System.out.println(arr[2]); + } +} +``` + +## 数组的静态初始化 + +#### 什么是静态初始化 + +​ 在创建数组时,直接将元素确定 + +#### 静态初始化格式 + +* 完整版格式 + + 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...}; + +* 简化版格式 + + 数据类型[] 数组名 = {元素1,元素2,...}; + +#### 示例代码 + +```java +package com.itheima.array2; + +public class Demo1Array { + /* + 数组静态初始化 : 初始化时指定每个数组元素的初始值,由系统决定数组长度 + + 完整格式: + 数据类型[] 数组名 = new 数据类型[]{数据1,数据2,数据3...}; + 简化格式: + 数据类型[] 数组名 = {数据1,数据2,数据3...}; + */ + public static void main(String[] args) { + // 数据类型[] 数组名 = new 数据类型[]{数据1,数据2,数据3...}; + int[] arr = new int[]{11,22,33}; + System.out.println(arr[0]); + System.out.println(arr[1]); + System.out.println(arr[2]); + + // 数据类型[] 数组名 = {数据1,数据2,数据3...}; + int[] arr2 = {44,55,66}; + System.out.println(arr2); + System.out.println(arr2[0]); + System.out.println(arr2[1]); + System.out.println(arr2[2]); + + } +} +``` + +### 数组操作的两个常见问题 + +#### 索引越界异常 + +* 出现原因 + + ```java + public class ArrayDemo { + public static void main(String[] args) { + int[] arr = new int[3]; + System.out.println(arr[3]); + } + } + ``` + + 数组长度为3,索引范围是0~2,但是我们却访问了一个3的索引。 + + 程序运行后,将会抛出ArrayIndexOutOfBoundsException 数组越界异常。在开发中,数组的越界异常是不能出现的,一旦出现了,就必须要修改我们编写的代码。 + +* 解决方案 + + 将错误的索引修改为正确的索引范围即可! + +#### 空指针异常 + +* 出现原因 + + ```java + public class ArrayDemo { + public static void main(String[] args) { + int[] arr = new int[3]; + + //把null赋值给数组 + arr = null; + System.out.println(arr[0]); + } + } + ``` + + arr = null 这行代码,意味着变量arr将不会在保存数组的内存地址,也就不允许再操作数组了,因此运行的时候会抛出 NullPointerException 空指针异常。在开发中,空指针异常是不能出现的,一旦出现了,就必须要修改我们编写的代码。 + +* 解决方案 + + 给数组一个真正的堆内存空间引用即可! + +### 数组遍历 + +* 数组遍历:就是将数组中的每个元素分别获取出来,就是遍历。遍历也是数组操作中的基石。 + + ```java + public class ArrayTest01 { + public static void main(String[] args) { + int[] arr = { 1, 2, 3, 4, 5 }; + System.out.println(arr[0]); + System.out.println(arr[1]); + System.out.println(arr[2]); + System.out.println(arr[3]); + System.out.println(arr[4]); + } + } + ``` + + 以上代码是可以将数组中每个元素全部遍历出来,但是如果数组元素非常多,这种写法肯定不行,因此我们需要改造成循环的写法。数组的索引是 0 到 lenght-1 ,可以作为循环的条件出现。 + + ```java + public class ArrayTest01 { + public static void main(String[] args) { + //定义数组 + int[] arr = {11, 22, 33, 44, 55}; + + //使用通用的遍历格式 + for(int x=0; x max){ + max = arr[i]; + } + } + // 4. 循环结束后, 打印最大值. + System.out.println("max:" + max); + } + } + ``` + +### 数组元素求和 + +* 需求:键盘录入5个整数,存储到数组中,并对数组求和 + +* 思路: + + 1.创建键盘录入对象,准备键盘录入 + 2.定义一个求和变量,准备记录累加后的结果 + 3.动态初始化一个长度为5的int数组,准备存储键盘录入的数值 + 4.将键盘录入的数值存储到数组中 + 5.遍历数组,取出每一个元素,并求和 + 6.输出总和 + +* 代码实现: + + ```java + package com.itheima.test; + + import java.util.Scanner; + + public class Test3Array { + /* + 需求:键盘录入5个整数,存储到数组中,并对数组求和 + + 思路: + 1.创建键盘录入对象,准备键盘录入 + 2.定义一个求和变量,准备记录累加后的结果 + 3.动态初始化一个长度为5的int数组,准备存储键盘录入的数值 + 4.将键盘录入的数值存储到数组中 + 5.遍历数组,取出每一个元素,并求和 + 6.输出总和 + */ + public static void main(String[] args) { + // 1.创建键盘录入对象,准备键盘录入 + Scanner sc = new Scanner(System.in); + // 2.定义一个求和变量,准备记录累加后的结果 + int sum = 0; + // 3.动态初始化一个长度为5的int数组,准备存储键盘录入的数值 + int[] arr = new int[5]; + // 4.将键盘录入的数值存储到数组中 + for(int i = 0; i < arr.length; i++){ + System.out.println("请输入第" + (i+1) + "个整数:"); + //arr[i] = 10; + arr[i] = sc.nextInt(); + } + + // 5.遍历数组,取出每一个元素,并求和 + for (int i = 0; i < arr.length; i++) { + sum += arr[i]; + } + + // 6.输出总和 + System.out.println("sum:" + sum); + + } + } + ``` + +### 数组基本查找 + +* 需求: + + 已知一个数组 arr = {19, 28, 37, 46, 50}; 键盘录入一个数据,查找该数据在数组中的索引,并在控 + 制台输出找到的索引值。 + +* 思路: + + 1.定义一个数组,用静态初始化完成数组元素的初始化 + 2.键盘录入要查找的数据,用一个变量接收 + 3.定义一个索引变量,初始值为-1 + 4.遍历数组,获取到数组中的每一个元素 + 5.拿键盘录入的数据和数组中的每一个元素进行比较,如果值相同,就把该值对应的索引赋值给索引变量,并结束循环 + 6.输出索引变量 + +* 代码实现: + + ```java + public static void main(String[] args) { + // 1.定义一个数组,用静态初始化完成数组元素的初始化 + int[] arr = {19, 28, 37, 46, 50}; + // 2.键盘录入要查找的数据,用一个变量接收 + Scanner sc = new Scanner(System.in); + System.out.println("请输入您要查找的元素:"); + int num = sc.nextInt(); + // 3.定义一个索引变量,初始值为-1 + // 假设要查找的数据, 在数组中就是不存在的 + int index = -1; + // 4.遍历数组,获取到数组中的每一个元素 + for (int i = 0; i < arr.length; i++) { + // 5.拿键盘录入的数据和数组中的每一个元素进行比较,如果值相同,就把该值对应的索引赋值给索引变量,并结束循环 + if(num == arr[i]){ + // 如果值相同,就把该值对应的索引赋值给索引变量,并结束循环 + index = i; + break; + } + } + // 6.输出索引变量 + System.out.println(index); + } + } + ``` + +### 评委打分 + +* 需求:在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。 + + 选手的最后得分为:去掉一个最高分和一个最低分后 的4个评委平均值 (不考虑小数部分)。 + +* 思路: + + 1.定义一个数组,用动态初始化完成数组元素的初始化,长度为6 + 2.键盘录入评委分数 + 3.由于是6个评委打分,所以,接收评委分数的操作,用循环 + 4.求出数组最大值 + 5.求出数组最小值 + 6.求出数组总和 + 7.按照计算规则进行计算得到平均分 + 8.输出平均分 + +* 代码实现: + + ```java + public static void main(String[] args) { + // 1.定义一个数组,用动态初始化完成数组元素的初始化,长度为6 + int[] arr = new int[6]; + // 2.键盘录入评委分数 + Scanner sc = new Scanner(System.in); + // 3.由于是6个评委打分,所以,接收评委分数的操作,用循环 + for (int i = 0; i < arr.length; i++) { + System.out.println("请输入第" + (i+1) + "个评委的打分:"); + int score = sc.nextInt(); + if(score >= 0 && score <= 100){ + // 合法的分值 + arr[i] = score; + }else{ + // 非法的分值 + System.out.println("您的打分输入有误, 请检查是否是0-100之间的"); + i--; + } + } + + // 4.求出数组最大值 + int max = arr[0]; + for (int i = 1; i < arr.length; i++) { + if(max < arr[i]){ + max = arr[i]; + } + } + + // 5.求出数组最小值 + int min = arr[0]; + for (int i = 1; i < arr.length; i++) { + if(min > arr[i]){ + min = arr[i]; + } + } + + // 6.求出数组总和 + int sum = 0; + for (int i = 0; i < arr.length; i++) { + sum += arr[i]; + } + + // 7.按照计算规则进行计算得到平均分 + int avg = (sum - max - min ) / 4; + + // 8.输出平均分 + System.out.println(avg); + } + } + ``` + +## 作业: + +1. 闽大举行选美比赛,男生参赛,10个女生当评委,定义一个数组,存放评分,用随机数模拟打分的过程,用程序算出选手的最后得分【去掉一个最高分,再去掉一个最低分,用剩下的分数求平均值】, + +```java +public class D1 { + public static void main(String[] args) { + int[] score = new int [10]; + int max = score[0]; + int min = score[0]; + int sum = 0; + Random s = new Random(); + for (int i = 0;iscore[i]){ + min = score[i]; + } + } + System.out.println("最后得分是"+(((sun-max-min)*0.1)/10)); + + + } + } + +``` -- Gitee