‘/’ 和 ‘%’ 在编程中的作用【附加练习题】

‘/’和‘%’在编程中有非常重要的作用,使用它们可以说是在使用一种简单算法,不仅易于理解,而且会极大的减少你的代码量,让你的程序看起来高级一点点🤪

/ 除

我们通常都是除10的倍数,比如‘10’只有一个0,那么 ‘/10’的含义就是除去后面1位

‘/100’有两个0,那么‘/100’就是除去后面2位

‘/1000’有三个0,那么‘/1000’就是除去后面3位

10086 / 10 = 1008
10086 / 100 = 100
10086 / 1000 = 10
10086 / 10000 = 1

% 取余

%10的 倍数

取余和除刚好相反,除是除去后面几位(通常除10的倍数),而取余则是保留后面几位数(通常对10取余)

同样,比如‘%10’,10只有一个0,‘%10’的含义就是保留最后1位

‘%100’,100有两个0,那么‘%100’的含义就是保留最后2位

‘%1000’,1000有三个0,那么‘%100’的含义就是保留最后3位

12345 % 10 = 5
12345 % 100 = 45
12345 % 1000 = 345
12345 % 10000 = 2345

%非10的倍数的数

这个也十分重要了,通常我们会在循环中遇到:

比如,我们有1个Task[] 数组,它有3个Task对象,我们需要在接下来的10次循环中每次调用一个Task任务。也就是说写一个for循环,循环10次,每一次循环轮流执行这三个中的一个任务(调用它的run方法)

Task[] tasks = new Task[3]; //创建三个任务
for (int i=0;i<10;i++){
    tasks[i] = new Task();//实例化对象才能调用它的方法
    tasks[i].run();//执行任务
}

但是我们会发现,当循环到第4次的时候,tasks[3] 它根本不存在,这个时候,就需要我们使用 % 了!!!

Task[] tasks = new Task[3]; //创建三个任务
int nums = i%tasks.length();//任务的数量
for (int i=0;i<10;i++){
    tasks[i%nums] = new Task();//实例化对象才能调用它的方法
    tasks[i%nums].run();//执行任务
}

我们模拟一下这10次循环

//我们有3个任务:tasks[0],tasks[1],tasks[2]
 
tasks[0%3] //这次执行的是tasks[0]
tasks[1%3] //这次执行的是tasks[1]
tasks[2%3] //这次执行的是tasks[2]
tasks[3%3] //这次执行的是tasks[0]
tasks[4%3] //这次执行的是tasks[1]
tasks[5%3] //这次执行的是tasks[2]
tasks[6%3] //这次执行的是tasks[0]
tasks[7%3] //这次执行的是tasks[1]
tasks[8%3] //这次执行的是tasks[2]
tasks[9%3] //这次执行的是tasks[0]

显然这样比使用比如队列(不断出队、入队)要简单多了吧😎😎😎

练习题

蓝桥杯-数列求值

发表评论