一、课前分享/*------------------------------------------------------*/
早:
寻迹小车:控制器(c51),传感器(红外),执行器
贪心算法:每次都寻找最优解,0/1背包问题三种解法-重量,价值,价值密度
中:封装性-用方法将代码封装起来,
[修饰符] 方法返回值类型 方法名(形参){方法体 返回值}
耦合度:降低代码之间的依赖关系。提高代码的可重用性,可扩展性,执行效率
二分查找:在有序数组中找到对应的元素
循环条件(左下标<右下标)
晚:今天没有晚自习,耶~
二、上课内容/*------------------------------------------------------*/
上午:
首先讲了引用数据类型变量创建方式
引用数据类型 变量名 = new 引用数据类型();
然后讲了Scanner类,它是用于接受用户输入的。首先创建对象Scanner sc = new Scanner(System.in);
然后调用nextInt(),nextChar()等方法接收数据,用next();来接收字符串,这两种方式从第一个有效字符(不含空格)开始,到最后一个有效字符(遇到空格停止接收),然后遇到回车符结束。如果需要接收空格则要用到nextLine()方法,这个方法使用前必须先使用一个nextLine()接收前面接收数据时遗留的数据(空格后的字符,回车符...)。nextLine()接收一整行数据。还有一点就是Scanner有一个close()方法用于关闭Scanner,但是它必须在你确定程序后面不在使用Scanner类后再调用,因为一旦关闭了,即使再创建一个Scanner类也无法读取输入了。
第二个是Random类,它是用于生成随机数的。比如nextInt(),nextDouble()。左闭右开区间。nextInt(7-3+1)+3生成[3,7];
然后讲了if...else语句和三目运算符
下午:
讲了switch语句.基本格式:
switch(表达式){
case 1:
case 2:
default:
}
这是jdk11即以前的写法,表达式类型要求是(byte,short,int,char,enum,String)然后要注意穿透,在分支后加上break可以结束语句,防止穿透。
在jdk14以后可以使用->来代替:,这样可以不用写break语句也能防止穿透。还可以在一个case后面写多个值。switch语句可以开始返回值,例如String str = switch(){};每个分支都要有返回值,如果需要再进行返回值之外的操作可以在代码块中使用yield关键字来代表返回值,如:yield 返回值。
三、心得体会/*------------------------------------------------------*/
今天学习的内容开始有点难度了,有些内容之前都没注意到过,所以上课注意力也比之前集中了,感觉还行。然后今天晚上回来看到别人写的一千五百多行python代码感觉好厉害,我自己也很少写过这么长的,之前我做的图书管理系统和时间片轮转算法应该是有千行以上的,但是可惜都没有完成,好想找时间将这两个项目完成。今天还突然有了写论文的想法,b站上看了一些相关的视频,了解到发表一篇sci需要三到四个月左右的时间,哦~,距离考研也是这么久,难道?!,老天让我现在写论文?后面再多了解了解^_^
今天还想到了一句treepomelo的至理名言“不管以后有没有钱,我能玩几年算几年”^~^
最后是今天敲的代码
/*
* for循环练习
*/
public class Class022_ForPractice {
public static void main(String[] args) {
//求1-100的和,求1-100的偶数和,求1-100的奇数和
int sum1 = 0;
int sum2 = 0;
int sum3 = 0;
for(int i=1;i<=100;i++){
sum1+=i;
if(i%2==0)
sum2+=i;
else sum3+=i;
}
System.out.println(sum1);
System.out.println(sum2);
System.out.println(sum3);
System.out.println("-----------------------------------------");
//1-50当中能被4整除的数的和
int sum4 = 0;
for(int i=1;i<=50;i++){
if(i%4==0)
sum4+=i;
}
System.out.println(sum4);
System.out.println("-----------------------------------------");
//求出 1-100当中既能被3整除又能被5整除还能被2整除的和
int sum5 = 0;
for(int i=1;i<=100;i++){
if(i%3==0&&i%2==0&&i%5==0)
sum5+=i;
}
System.out.println(sum5);
System.out.println("-----------------------------------------");
//求出 1-100当中能被3整除或者能被5整除或者能被2整除的和
int sum6 = 0;
for(int i=1;i<=100;i++){
if(i%3==0||i%5==0||i%2==0)
sum6+=i;
}
System.out.println(sum6);
System.out.println("-----------------------------------------");
//求5的阶乘 5! 5*4*3*2*1
int n = 1;
for(int i = 5;i>=1;i--){
n*=i;
}
System.out.println(n);
System.out.println("-----------------------------------------");
//请找出[100,300]之间能被5整除的所有数,每行输出8个数
int count=0;
for(int i=100;i<=300;i++){
if(i%5==0){
System.out.print(i+" ");
count++;
}
if(count==8)
{
System.out.println();
count=0;
}
}
System.out.println();
System.out.println("-----------------------------------------");
//请找出[100,300]之间能被5整除的所有数,每行输出8个数,每两个数之间用逗号隔开 100,105,110,115,120,125,130,135
count=0;
for(int i=100;i<=300;i++){
if(i%5==0){
System.out.print(i+",");
count++;
}
if(count==8)
{
System.out.println();
count =0;
}
}
}
}