实训经验分享day06

本文记录了一天的学习内容,包括C51控制器和红外传感器的寻迹小车项目,贪心算法中的0/1背包问题,编程中封装性的概念以及如何通过方法减少耦合度,二分查找的实现。此外,讲解了Java中的Scanner类用于用户输入,Random类生成随机数,以及if...else和switch语句的使用。作者还表达了对长代码和论文写作的兴趣,并展示了几个for循环的编程练习例子。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、课前分享/*------------------------------------------------------*/

早:
寻迹小车:控制器(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;
			}
			
		}
		
	}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值