第十四届蓝桥杯集训——JavaC组第五篇——四则运算/(求余/取模)
四则运算
大家都知道,四则运算也就是【+-*/】在计算机中使用这几个符号来代表,但是很多时候计算还会用到(),括号是优先级最高的符号,就跟先算乘除后算加减一样。只要带()的内容肯定是最先运算的。我们在这个规律下才能正确的计算四则运算。
基础运算:
我们根据括号来进行先行计算的,谁被括号括着就先计算谁,下面就是一个示例:
package com.item.action; public class Action { public static void main(String[] args) { int result1=5+6*2; int result2=(5+6)*2; System.out.println("5+6*2="+result1); System.out.println("(5+6)*2="+result2); } }
输出结果:
5+6*2=17
(5+6)*2=22
符号优先级
运算符 |
结合性 |
[ ] . ( ) (方法调用) |
从左向右 |
! ~ ++ -- +(一元运算) -(一元运算) |
从右向左 |
* / % |
从左向右 |
+ - |
从左向右 |
> >>> |
从左向右 |
< >= |
从左向右 |
== != |
从左向右 |
& |
从左向右 |
^ |
从左向右 |
| |
从左向右 |
&& |
从左向右 |
|| |
从左向右 |
?: |
从右向左 |
= |
从右向左 |
计算示例:
package com.item.action; public class Action { public static void main(String[] args) { //计算四则运算 int result=(5+6-(7+8))*9/10; System.out.println(result); } }
自增自减
下面这个示例就很好的解释了自增自减:
package com.item.action; public class Action { public static void main(String[] args) { int i=0; int n=i++;//先赋值后+1 System.out.println(n); int j=0; int m=--j;//先-1再赋值 System.out.println(m); } }
头脑风暴
单单说自增自减很简单,但是做以下的批量化计算呢。并且恶心到【---】三个减号在一起,试试,你还能理解吗?
package com.item.action; public class Action { public static void main(String[] args) { //头脑风暴 int i=0; i++;//1 System.out.println(i); i=++i+2;//4 System.out.println(i); i=--i-1;//2 System.out.println(i); i=i---1;//1 System.out.println(i); } }
头脑风暴解析:
package com.item.action; public class Action { public static void main(String[] args) { //头脑风暴 int i=0; i++;//自身+1,默认赋值 System.out.println(i); i=++i+2;//先+1在+2,相当于i=1+1+2 System.out.println(i); i=--i-1;//先在4的基础上-1,在-1,i=4-1-1 System.out.println(i); i=i---1;//先在2的基础上-1,然后赋值,赋值后再减一,故而不做计算 System.out.println(i);//最终属于是的2-1=1 } }
异常处理
任何数乘以0结果都是0,但是任何数除以0都是无法计算的,我们看一下这个异常:
我们在计算的过程中一定要排出这种情况,因为如果出现了异常就无法进行后续的计算了,因为程序已经【崩溃】停止了。
取模运算%
取模运算也可称称为求余计算。
例如:
10 / 3 = 3 余 1
我们要进行取模运算,实际上获取的是1,也就是余数。
我们可以利用这个方式做一些特殊的运算。
例题:
拆分整数【12345】,并将各个位置上的数字相加,输出最后的结果。
package com.item.action; public class demo1 { public static void main(String[] args) { // TODO Auto-generated method stub int nums=12345; int ge=nums%10; int shi=nums/10%10; int bai=nums/100%10; int qian=nums/1000%10; int wan=nums/10000; int sum=ge+shi+bai+qian+wan; System.out.println(sum); } }
结果:
基础概念
取模运算(“Modulo Operation”)和取余运算(“Remainder Operation ”)两个概念有重叠的部分但又不完全一致。主要的区别在于对负整数进行除法运算时操作不同。取模主要是用于计算机术语中。取余则更多是数学概念。
模运算在数论和程序设计中都有着广泛的应用,奇偶数的判别到素数的判别,从模幂运算到最大公约数的求法,从孙子问题到凯撒密码问题,无不充斥着模运算的身影。
奇偶数
如果%2输出0,就是偶数,输出1就是奇数
package com.item.action; public class demo1 { public static void main(String[] args) { // TODO Auto-generated method stub int num=5; //如果%2输出0,就是偶数,输出1就是奇数 System.out.println(num%2); } }