diff --git "a/29 \350\267\257\347\216\262/20230328 Java\347\273\203\344\271\240.md" "b/29 \350\267\257\347\216\262/20230328 Java\347\273\203\344\271\240.md" new file mode 100644 index 0000000000000000000000000000000000000000..ff5978ff3bcdd4190c639ca8bfb413c2dc0b69db --- /dev/null +++ "b/29 \350\267\257\347\216\262/20230328 Java\347\273\203\344\271\240.md" @@ -0,0 +1,337 @@ +# 笔记 + +## 自动类型转换 + +1.为什么要进行类型转换? + +l**存在不同类型的变量赋值给其他类型的变量** + +2.自动类型转换是什么样的? + +类型范围小的变量,可以直接赋值给类型范围大的变量。 + + + +## 表达式的自动类型转换是 + +1.表达式的自动类型转换是什么样的? + +l**小范围的类型会自动转换成大范围的类型运算。** + +2.表达式的最终结果类型是由谁决定的? + +l**最终类型由表达式中的最高类型决定。** + +3.表达式的有哪些类型转换是需要注意的? + +byte, short ,char是直接转换成int类型参与运算的。 + + + +## 强制类型转换 + +l可以强行将类型范围大的变量、数据赋值给类型范围小的变量。 + +数据类型 变量2 = (数据类型)变量1、数据 + +注意: + +l强制类型转换**可能**造成数据(丢失)溢出; + +浮点型强转成整型,直接丢掉小数部分,保留整数部分返回 + +# 作业 + +## one + +## 1.题目1(训练) + +身高是具有遗传性的,子女的身高和父母的身高有一定的关系。假定,父母和子女的身高遗传关系如下: + + 儿子身高(厘米)=(父亲身高+母亲身高) ×1.08÷2 + + 女儿身高(厘米)=(父亲身高×0.923+母亲身高) ÷2 + +现有父亲身高177 CM,母亲身高165 CM。求子女身高分别预计为多少? + +```java +package com.school.work; + +public class test01 { + public static void main(String[] args) { +// 题目1(训练) +// 身高是具有遗传性的,子女的身高和父母的身高有一定的关系。假定,父母和子女的身高遗传关系如下: +//儿子身高(厘米)=(父亲身高+母亲身高) ×1.08÷2 +// 女儿身高(厘米)=(父亲身高×0.923+母亲身高) ÷2 +// 现有父亲身高177 CM,母亲身高165 CM。求子女身高分别预计为多少? + 方法一: + double father=177.00; + double mother=165.00; + double son=(father+mother)*1.08/2; + double daughter=(father*0.923+mother)*2; + System.out.println("儿子的身高预计为:"son); + System.out.println("女儿的身高预计为:"daughter); + 方法二: + int f=177,m=165; + double boy=(m+f)*1.08/2,girl=(f*0.923+m)/2; + System.out.println("儿子的身高预计为:"+boy); + System.out.println("女儿的身高预计为:"+girl); + + } +} +``` + +## 2. 题目2(训练) + +红茶妹妹有21元钱,她攒了几天钱之后自己的钱比原来的两倍还多三块。绿茶妹妹有24元钱,她攒了几天钱之后自己的钱正好是原来的两倍。那么红茶和绿茶现在的钱一样多,请问对么? + +```java +package com.school.work; + +public class test02 { + public static void main(String[] args) { +// 题目2(训练) +// 红茶妹妹有21元钱,她攒了几天钱之后自己的钱比原来的两倍还多三块。 +// 绿茶妹妹有24元钱,她攒了几天钱之后自己的钱正好是原来的两倍。 +// 那么红茶和绿茶现在的钱一样多,请问对么 + int red=21; + int red1=red*2+3; + int green=24; + int green1=green*2; + System.out.println(red1 == green1); + + +} +``` + +## 3.题目3(综合) + +某小伙想定一份外卖,商家的优惠方式如下:鱼香肉丝单点24元,油炸花生米单点8元,米饭单点3元。订单满30元8折优惠。鱼香肉丝优惠价16元,但是优惠价和折扣不能同时使用。那么这个小伙要点这三样东西,最少要花多少钱? + +```java +package com.school.work; + +public class test03 { + public static void main(String[] args) { +// 题目3(综合) +// 某小伙想定一份外卖,商家的优惠方式如下:鱼香肉丝单点24元,油炸花生米单点8元, +// 米饭单点3元。订单满30元8折优惠。鱼香肉丝优惠价16元,但是优惠价和折扣不能同时使用。 +// 那么这个小伙要点这三样东西,最少要花多少钱? + int fish=24; + int peanut=8; + int rice=3; + int one=(fish+peanut+rice)*0.8; + System.out.println(one); + int fish1=16; + int two=fish1+peanut+rice; + System.out.println(two); + + +} +``` + +# 3.作业 + +## 1.判断一个字符数据是否是数字字符  + +**分析:** + + 1、需要判断一个字符是否是数字字符,首先需要提供一个字符数据 + + 2、字符是否为数字字符: 数字字符的范围 0 - 9 之间都属于数字字符,因此提供的字符只要大于或等于字符0,并且还要下于或等于字符9即可。 + + 3、判断完成之后,打印判断的结果。 + +```java +package com.school.work; + +import java.util.Scanner; + +public class test04 { + public static void main(String[] args) { +//判断一个字符数据是否是数字字符 +//分析: +//1、需要判断一个字符是否是数字字符,首先需要提供一个字符数据 +//2、字符是否为数字字符: 数字字符的范围 0 - 9 之间都属于数字字符,因此提供的字符只要大于或等于字符0,并且还要下于或等于字符9即可。 +//3、判断完成之后,打印判断的结果。 + Scanner sc=new Scanner(System.in); + System.out.println("请输入一个字符,看看是不是数字字符:"); + char a=sc.nextLine().charAt(0); + if(a>=0 & a<=9){ + System.out.println("是数字字符"); + }else { + System.out.println("no!"); + } + + } +} +``` + +## 2.判断一个字符数据是否是字母字符 + +**分析:** + + 1、需要判断一个字符是否是字母字符,首先需要提供一个字符数据 + + 2、字符是否为字母字符: 数字字符的范围 a - z 或者 A - Z 之间都属于字母字符,因此提供的字符只要大于或等于a,并且还要下于或等于z 或者 大于或等于A,并且还要下于或等于Z + + 3、判断完成之后,打印判断的结果。 + +```java +package com.school.work; + +import java.util.Scanner; + +public class test05 { + public static void main(String[] args) { +// 判断一个字符数据是否是字母字符 +// 分析: +// 1、需要判断一个字符是否是字母字符,首先需要提供一个字符数据 +// 2、字符是否为字母字符: 数字字符的范围 a - z 或者 A - Z 之间都属于字母字符, +// 因此提供的字符只要大于或等于a,并且还要下于或等于z 或者 大于或等于A,并且还要下于或等于Z +// 3、判断完成之后,打印判断的结果。 + Scanner sc=new Scanner(System.in); + System.out.println("请输入一个字符,看看是不是字母字符捏:"); + char zifu =sc.nextLine().charAt(0); + if(zifu>='a'& zifu<='z' |zifu>='A'&zifu<='Z' ){ + System.out.println("是"); + }else { + System.out.println("no!"); + } + } +} +``` + +## 3.判断指定的年份是否为闰年,请使用键盘录入 + +**分析:** + + 1、闰年的判断公式为:能被4整除,但是不能被100整除 或者 能被400整除 + + 2、首先需要提供一个需要判断的年份,判断完成之后,打印判断的结果。 + +```java +package com.school.work; + +import java.util.Scanner; + +public class test06 { + public static void main(String[] args) { +// 判断指定的年份是否为闰年,请使用键盘录入 +// 分析: +// 1、闰年的判断公式为:能被4整除,但是不能被100整除 或者 能被400整除 +// 2、首先需要提供一个需要判断的年份,判断完成之后,打印判断的结果。 + Scanner sc=new Scanner(System.in); + int a=sc.nextInt(); + System.out.println("请输入年份:"); + if (a%4==0 && a%100!=0 || a%100==0){ + System.out.println(a+"是闰年"); + }else { + System.out.println(a+"不是闰年"); + + } + } +} +``` + +## 4. 判断一个数字是否为水仙花数,请使用键盘录入 + +水仙花是指3位数字,表示的是每位上的数字的3次幂相加之后的和值和原数相等,则为水仙花数, + +**分析:** + + 如:153 ---> 1×1×*1 + 5*×5×*5 + 3×*3×3 = 153; 就是水仙花数 + + 1、首先需要提供一个需要判断的3位数字,因此需要一个数值 + + 2、判断的过程 + + a) 将3位数字的每一位上的数字拆分下来 + + b) 计算每位数字的3次幂之和 + + C) 用和值 和 原来的数字进行比较 + + D) 打印判断的比较结果即可 + +```java +package com.school.work; + +import java.util.Scanner; + +public class test07 { + public static void main(String[] args) { +// 判断一个数字是否为水仙花数,请使用键盘录入 +// 水仙花是指3位数字,表示的是每位上的数字的3次幂相加之后的和值和原数相等,则为水仙花数, +// 分析: +//如:153 ---> 1×1×1 + 5×5×5 + 3×3×3 = 153; 就是水仙花数 +//1、首先需要提供一个需要判断的3位数字,因此需要一个数值 +//2、判断的过程 +//a) 将3位数字的每一位上的数字拆分下来 +//b) 计算每位数字的3次幂之和 +//C) 用和值 和 原来的数字进行比较 +//D) 打印判断的比较结果即可 + System.out.println("请输入数字:"); + Scanner sc=new Scanner(System.in); + int a=sc.nextInt(); + int ge=a%10; + int shi=a/10%10; + int bai=a/100; + if (ge*ge*ge+shi*shi*shi+bai*bai*bai==a){ + System.out.println("水仙花"); + }else { + System.out.println("不是水仙花"); + } + + } +} +``` + +## 5.判断一个5位数字是否为回文数,使用键盘录入 + +五位数的回文数是指最高位和最低位相等,次高位和次低位相等。如:12321 23732 56665 + +**分析:** + + 1、首先需要提供一个需要判断的5位数字,因此需要一个数值 + + 2、判断的过程 + + a) 将5位数字的万、千、十、个位数拆分出来 + + b) 判断比较万位和个位 、 千位和十位是否相等 + + 3、判断完成之后,打印判断的结果。 + +```java +package com.school.work; + +import java.util.Scanner; + +public class test08 { + public static void main(String[] args) { +// 判断一个5位数字是否为回文数,使用键盘录入 +// 五位数的回文数是指最高位和最低位相等,次高位和次低位相等。如:12321 23732 56665 +// 分析: +//1、首先需要提供一个需要判断的5位数字,因此需要一个数值 +//2、判断的过程 +//a) 将5位数字的万、千、十、个位数拆分出来 +//b) 判断比较万位和个位 、 千位和十位是否相等 +//3、判断完成之后,打印判断的结果。 + System.out.println("请输入五位数字:"); + Scanner sc=new Scanner(System.in); + int a=sc.nextInt(); + int a1=a%10; + int a2=a/10%10; + int a3=a/100%10; + int a4=a/1000%10; + int a5=a/10000; + if (a1==a5 && a2==a4){ + System.out.println("是回文数"); + }else { + System.out.println("菜!"); + } + } +} +``` + diff --git "a/29 \350\267\257\347\216\262/20230404 \344\272\224\344\270\252\345\260\217\351\242\230\347\273\203\344\271\240.md" "b/29 \350\267\257\347\216\262/20230404 \344\272\224\344\270\252\345\260\217\351\242\230\347\273\203\344\271\240.md" new file mode 100644 index 0000000000000000000000000000000000000000..bdc9e9473eeed536bab5b1fc5000d33e5fb48dfd --- /dev/null +++ "b/29 \350\267\257\347\216\262/20230404 \344\272\224\344\270\252\345\260\217\351\242\230\347\273\203\344\271\240.md" @@ -0,0 +1,180 @@ +# 作业 + + + +## 编码题 + +**1.定义一个含有五个元素的数组,并为每个元素赋值,求数组中所有元素的最小值** + +**操作步骤:** + +​ 1.定义5个元素数组 + +​ 2.可以使用初始化数组的两种方式之一为数组元素赋值 + +​ 3.遍历数组求数组中的最小值 + +```java +import java.util.Random; + +public class Work { + public static void main(String[] args) { + //**1.定义一个含有五个元素的数组,并为每个元素赋值,求数组中所有元素的最小值** + //**操作步骤:** + //1.定义5个元素数组 + //2.可以使用初始化数组的两种方式之一为数组元素赋值 + //3.遍历数组求数组中的最小值 + int[] a={8,2,6,4,5};//数组 + int b=a[0]; + for (int i = 0; i < a.length;i++) {//遍历数组 + int c=a[i]; + i = i + 1; + if (b >c) {//判断条件 + b=c; + } + } + System.out.println(b); + } +} +``` + + + +**2.需求:求出数组中索引与索引对应的元素都是奇数的元素** + +**分析:** + +​ 1、遍历数组 + +​ 2、判断索引是否是奇数(索引 % 2 != 0) + +​ 3、判断索引对应的元素是否是奇数(arr[索引] % 2 != 0) + +​ 4、满足条件输出结果 + +```java +public class Work2 { + public static void main(String[] args) { + //**2.需求:求出数组中索引与索引对应的元素都是奇数的元素** + //**分析:** + //1、遍历数组 + //2、判断索引是否是奇数(索引 % 2 != 0) + //3、判断索引对应的元素是否是奇数(arr[索引] % 2 != 0) + //4、满足条件输出结果 + int[] one ={8,9,4,5,6,3,4,5,6,1,5,25,5};//数组 + for (int i = 0; i < one.length ; i++) {//遍历数组 + /* System.out.print(one[i]);//值 + System.out.println(i);//索引*/ + if (i% 2 != 0) {//判断索引是否是奇数 + if (one[i]% 2 != 0 ) {//判断索引对应的元素是否是奇数 + System.out.println(one[i]);//输出结果 + } + } + } + } +} +``` + + + + + +**3.按要求在main方法中完成以下功能:** + +​ a. 定义一个长度为5的int型数组arr,提示用户输入5个1-60之间的数字作为数组元素 + +​ b. 生成2-10(范围包含2和10)之间的随机数num + +​ c. 遍历数组arr,筛选出数组中不是num倍数的元素并输出 + +​ **PS:输入的数组元素范围包括1和60,不需要代码判断** + +```java +import java.util.Random; +import java.util.Scanner; +public class Work3 { + public static void main(String[] args) { + //**3.按要求在main方法中完成以下功能:** + // + //​ a. 定义一个长度为5的int型数组arr,提示用户输入5个1-60之间的数字作为数组元素 + // + //​ b. 生成2-10(范围包含2和10)之间的随机数num + // + //​ c. 遍历数组arr,筛选出数组中不是num倍数的元素并输出 + // + //​ **PS:输入的数组元素范围包括1和60,不需要代码判断** + int[] arr = new int[5];//创建数组 + Random r =new Random();//创建随机数对象 + Scanner sc = new Scanner(System.in);//创建一个键盘输入对象 + int num = r.nextInt(9)+2;//定义num输出随机数值,数组元素范围 2-10(+2指的是从2开始,(9)指的是8个数,(9)+2则为8+2=10,以10结束) + System.out.println("输入5个1-60之间的数字作为数组元素"); + for (int i = 0; i < arr.length; i++) {//循环5次 + System.out.println("请输入第"+(i+1)+"个数字,建议不要写相同的数字!"); + arr[i]=sc.nextInt();//在数组中输入数值 + } + System.out.println("生成的随机数为"+num);//在这里写显示随机数的代码,是因为防止输入者看到随机数后故意写相同的数字 + System.out.println("筛选出数组中不是num倍数的元素"); + for (int i = 0; i