diff --git "a/37 \347\216\213\346\231\264/.2022.12.6\345\205\263\344\272\216\345\276\252\347\216\257.md" "b/37 \347\216\213\346\231\264/.2022.12.6\345\205\263\344\272\216\345\276\252\347\216\257.md" new file mode 100644 index 0000000000000000000000000000000000000000..8d113091fbc2288a8aa6974902bb9b599aaab11a --- /dev/null +++ "b/37 \347\216\213\346\231\264/.2022.12.6\345\205\263\344\272\216\345\276\252\347\216\257.md" @@ -0,0 +1,139 @@ +- ### for循环 + +格式 + +```java +for (初始化语句;条件判断语句;条件控制语句) { +循环体语句; +} +``` + +需求:求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); + } +} +``` + + + +- #### while循环 + + 格式 + +```java +初始化语句; +while (条件判断语句) { +循环体语句; +条件控制语句; +} +``` + +示例代码: + +```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++; + } + } +} +``` + + + +- #### 循环语句-dowhile循环 + +```java +初始化语句; +do { +循环体语句; +条件控制语句; +}while(条件判断语句); +``` + +示例代码: + +```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) + } +} +``` + +- #### 三种循环的区别 + +1. for循环和while循环先判断条件是否成立,然后决定是否执行循环体(先判断后执行) do...while +2. 循环先执行一次循环体,然后判断条件是否成立,是否继续执行循环体(先执行后 判断) + +- ###### for循环和while的区别 + +1. 条件控制语句所控制的自增变量,因为归属for循环的语法结构中,在for循环结束后,就不能 再次被访问到了 +2. 条件控制语句所控制的自增变量,对于while循环来说不归属其语法结构中,在while循环结束 后,该变量还可以继续使用 + +- ###### 死循环(无限循环)的三种格式 + +1. for(;;){} + +2. while(true){} + +3. do {} while(true); + + 格式: + +```java +for死循环格式 : +for(;;){ +} +while死循环格式 : +while(true){ +} +do..while死循环格式 : +do{ +}while(true); +``` + diff --git "a/37 \347\216\213\346\231\264/2022.12.2 \345\205\263\344\272\216switch\345\222\214if.md" "b/37 \347\216\213\346\231\264/2022.12.2 \345\205\263\344\272\216switch\345\222\214if.md" new file mode 100644 index 0000000000000000000000000000000000000000..0d17c6166d6607c6787298eb60e2832877829082 --- /dev/null +++ "b/37 \347\216\213\346\231\264/2022.12.2 \345\205\263\344\272\216switch\345\222\214if.md" @@ -0,0 +1,344 @@ +- ### 作业 + + 某市不同车牌的出租车3千米的起步价和计费分别为:夏利3元,3千米以外,2.1元/千; + 富康4元,3千米以外,2.4元/千米;桑塔纳5元,3千米以外,2.7元/千米。编程实现从键盘 + 输入乘车的车型及行车千米数,输出应付车费。 + + ```java + import java.util.Scanner; + public class x { + public static void main(String[] args) { + int line; + float m; + Scanner sc=new Scanner(System.in); + System.out.println("夏利请输入"+1+"富康请输入"+2+"桑塔纳请输入"+3); + System.out.println("请输入你的车型"); + System.out.println("请输入你的路程值"); + line=sc.nextInt(); + m= sc.nextFloat(); + switch (line){ + case 1: + if (m<=3){ + System.out.println("车费为:"+(m*3)+"元"); + }else { + System.out.println("车费为:"+((m-3))*2.1+3*3)+"元"); + } + break; + case 2: + if (m<=3){ + System.out.println("车费为:"+(m*4)+"元"); + }else { + System.out.println("车费为:"+((m-3)*2.4+3*4)+"元"); + } + break; + case 3: + if (m<=3){ + System.out.println("车费为:"+(m*5)+"元"); + }else { + System.out.println("车费为:"+((m-3)*2.7+3*5)+"元"); + } + } + + } + } + ``` + + + +编写一个程序,根据用户输入的一个字符,判断该字符是不是字母,如果是字母,判断该字母是声母还是韵母,是大写字母还是小写字母;如果不是字母,则输出“你输入的字符不是字母” + +```java +import java.util.Scanner; +public class z { + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + System.out.println("请输入一个字符"); + char x = sc.next().charAt(0); + //a-z 97-122 + //A-Z 65-90 + if(x>=97 && x<=122 || x>=65 && x<=90) { + if (x >= 97 && x <= 122) { + System.out.println("该字母是小写字母"); + } else { + System.out.println("该字母是大写字母"); + } + switch (x) { + case 'a': + System.out.println("韵母"); + break; + case 'e': + System.out.println("韵母"); + break; + case 'i': + System.out.println("韵母"); + break; + case 'o': + System.out.println("韵母"); + break; + case 'u': + System.out.println("韵母"); + break; + case 'A': + System.out.println("韵母"); + break; + case 'B': + System.out.println("韵母"); + break; + case 'I': + System.out.println("韵母"); + break; + case 'O': + System.out.println("韵母"); + break; + case 'U': + System.out.println("韵母"); + break; + default: + System.out.println("声母"); + break; + } + }else { + System.out.println("你输入的不是字母"); + } + } +} +``` + +使用switch和if语句算出今天是今年的第几天(提示:以3月3日为例,应该先把前两个月的天数加起来,然后再加上3天即为本年的第几天;需要考虑闰年的情况,如果输入的年份是闰年且输入的月份大于或等于3,需要多加1天)。 + +```java +import java.util.Scanner; + +public class b { + public static void main(String[] args) { + Scanner sc =new Scanner(System.in); + System.out.println("请输入年份:"); + int year = sc.nextInt(); + if (year<=0){ + System.out.println("输入的年份有误"); + }else { + System.out.println("请输入月份:"); + int m = sc.nextInt(); + if (!(m>=1&&m<=12)){ + System.out.println("输入的月份有误"); + }else{ + System.out.println("请输入日期:"); + int day = sc.nextInt(); + if (!(day>=1 && day <=31)){ + System.out.println("输入的日期有误"); + }else { + int result = 0; + int two; + if (year%4==0 && year%100!=0 || year%400==0){ + two = 29; + }else { + two = 28; + } + switch (m){ + case 1: + result = day ; + break; + case 2: + result = 31 + day ; + break; + case 3: + result = 31 + two + day ; + break; + case 4: + result = 31*2 + two + day ; + break; + case 5: + result= 31*2 + 30 + two + day ; + break; + case 6: + result = 31*3 + two + 30 + day ; + break; + case 7: + result= 31*3 + two + 30 *2 + day ; + break; + case 8: + result = 31*4 + two + 30*2 + day ; + break; + case 9: + result = 31*5 + two + 30*2 + day ; + break; + case 10: + result = 31*5 + two +30*3 + day ; + break; + case 11: + result = 31*6 + two + 30*3 + day ; + break; + case 12: + result = 31*6 + two + 30*4 +day ; + break; + } + System.out.println(year+"年的"+m+"月"+day +"日是今年的第"+result+"天"); + } + } + } + } +} +``` + + + +------ + + + +- ### 笔记 + +#### 分支结构之if语句 + +###### 格式(第一种) + +```java +格式: +if (关系表达式) { + 语句体; +} +``` + +示例: + +```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("结束"); + } +} +``` + +###### 格式(第二种) + +```JAVA +格式: +if (关系表达式) { + 语句体1; +} else { + 语句体2; +} +``` + +示例: + +```java +public class Demo2If { + public static void main(String[] args) { + // 程序判断一个数, 是奇数还是偶数 + int num = 9; + + if(num % 2 == 0){ + System.out.println("偶数"); + }else{ + System.out.println("奇数"); + } + } +} +``` + +###### 格式(第三种) + +```java +格式: +if (关系表达式1) { + 语句体1; +} else if (关系表达式2) { + 语句体2; +} +… +else { + 语句体n+1; +} +``` + +示例: + +​ 定义一个在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("成绩有误!"); + } + } +} +``` + +### 1. switch语句 + +格式 + +```java +switch (表达式) { +case 1: +语句体1; +break; +case 2: +语句体2; +break; +... +default: +语句体n+1; +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; + } + } +} +``` diff --git "a/37 \347\216\213\346\231\264/2022.12.8Random\345\222\214\346\225\260\347\273\204.md" "b/37 \347\216\213\346\231\264/2022.12.8Random\345\222\214\346\225\260\347\273\204.md" new file mode 100644 index 0000000000000000000000000000000000000000..78b494558c98651380563adb7a74833791f6f829 --- /dev/null +++ "b/37 \347\216\213\346\231\264/2022.12.8Random\345\222\214\346\225\260\347\273\204.md" @@ -0,0 +1,151 @@ +- ### 作业 + +猜数字 + +```java +import java.util.Random; +import java.util.Scanner; + +public class z { + public static void main(String[] args) { + Random ran = new Random(); + Scanner sc= new Scanner(System.in); + int numb = ran.nextInt(100); + while (true) { + System.out.println("请输入一个数字"); + int num = sc.nextInt(); + if(num>numb) { + System.out.println("你输入的数字大了"); + }else if(nummax){ + max=arr[i]; + } + } + System.out.println("max为:"+max); + } + +} +``` + +数组交换 + +```java +import java.util.Arrays; +import java.util.Random; + +public class z { + public static void main(String[] args) { + int [] arr={30,45,89,72,23}; + Random ran = new Random(); + System.out.println(Arrays.toString(arr)); + for (int i=1;i< arr.length;i++){ + int a = ran.nextInt(arr.length); + int b = ran.nextInt(arr.length); + int c = arr[a]; + arr[a]=arr[b]; + arr[b]=c; + } + System.out.println(Arrays.toString(arr)); + } +} +``` + +------ + +- ### 笔记 + +#### Random产生随机数 + +示例代码: + +```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); + } + } +} +``` + +#### 数组 + +##### 动态初始化 + +数组动态初始化就是只给定数组的长度,由系统给出默认初始化值 + +代码: + +```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); + + } +} +``` +