介绍
取模运算符(Modulo operator)是一种数学运算符,用于计算两个数相除后的余数。该运算符用符号 % 表示。在 Java 中,取模运算符返回第一个数除以第二个数后的余数。本实验将引导你了解该运算符的一些使用场景。
取模运算符示例
在这一步中,我们将了解取模运算符的基本语法,以及如何在整数和浮点数变量中使用它。我们还将看到它如何处理负数。
- 使用
touch命令创建一个名为ModuloOperatorDemo.java的新文件。 - 在文本编辑器(如
nano)中打开该文件。 - 将以下代码添加到文件中:
public class ModuloOperatorDemo
{
public static void main(String[] args)
{
System.out.println("10 % 3 = " + 10 % 3);
System.out.println("3 % 10 = " + 3 % 10);
System.out.println("10.0 % 3.0 = " + 10.0 % 3.0);
System.out.println("10.0 % 3 = " + 10.0 % 3);
System.out.println("-10 % 3 = " + -10 % 3);
}
}
- 保存文件并退出文本编辑器。
- 使用命令
javac ModuloOperatorDemo.java编译代码。 - 使用命令
java ModuloOperatorDemo运行代码。 - 代码应输出以下内容:
10 % 3 = 1
3 % 10 = 3
10.0 % 3.0 = 1.0
10.0 % 3 = 1.0
-10 % 3 = -1
取模运算符的必要性
在这一步中,我们将讨论在使用除法运算符时为什么需要取模运算符。
- 在文本编辑器中打开
ModuloOperatorDemo.java文件。 - 删除现有代码并替换为以下代码:
public class ModuloOperatorDemo
{
public static void main(String[] args)
{
int dividend = 10;
int divisor = 3;
int remainder = dividend - (divisor * (dividend/divisor));
System.out.print("The remainder is: " + remainder);
}
}
- 保存文件并退出文本编辑器。
- 使用命令
javac ModuloOperatorDemo.java编译代码。 - 使用命令
java ModuloOperatorDemo运行代码。 - 代码应输出以下内容:
The remainder is: 1
当被除数或除数不是整数时
在这一步中,我们将了解取模运算符如何处理小数。
- 在文本编辑器中打开
ModuloOperatorDemo.java文件。 - 删除现有代码并替换为以下代码:
public class ModuloOperatorDemo
{
public static void main(String[] args)
{
double dividend = 10;
int divisor = 3;
double remainder = dividend - (divisor * (dividend/divisor));
System.out.print("The remainder is: " + remainder);
}
}
- 保存文件并退出文本编辑器。
- 使用命令
javac ModuloOperatorDemo.java编译代码。 - 使用命令
java ModuloOperatorDemo运行代码。 - 代码应输出以下内容:
The remainder is: 0.0
- 将文件中的代码修改如下:
public class ModuloOperatorDemo
{
public static void main(String[] args)
{
double dividend = 10;
int divisor = 3;
double remainder = dividend % divisor;
System.out.print("The remainder is: " + remainder);
}
}
- 保存文件并退出文本编辑器。
- 使用命令
javac ModuloOperatorDemo.java重新编译代码。 - 使用命令
java ModuloOperatorDemo运行代码。 - 代码现在应输出以下内容:
The remainder is: 1.0
取模运算符引发的 ArithmeticException
在这一步中,我们将了解当除数为零时,取模运算符如何抛出异常。
- 在文本编辑器中打开
ModuloOperatorDemo.java文件。 - 删除现有代码并替换为以下代码:
public class ModuloOperatorDemo
{
public static void main(String[] args)
{
System.out.print("The remainder is: " + 10 % 0);
}
}
- 保存文件并退出文本编辑器。
- 使用命令
javac ModuloOperatorDemo.java编译代码。 - 使用命令
java ModuloOperatorDemo运行代码。 - 代码应抛出
ArithmeticException异常,如下所示:
Exception in thread "main" java.lang.ArithmeticException: / by zero
at ModuloOperatorDemo.main(ModuloOperatorDemo.java:3)
查找偶数
在这一步中,我们将了解如何使用取模运算符来检查一个数是偶数还是奇数。
- 在文本编辑器中打开
ModuloOperatorDemo.java文件。 - 删除现有代码并替换为以下代码:
public class ModuloOperatorDemo
{
public static void main(String[] args)
{
int[] arr = {7, 5, 2, 4, 6, 19, 18, 25, 22};
for(int i=0; i<arr.length; i++)
{
int num = arr[i];
if((num % 2) == 0)
System.out.println(num + " is even.");
else
System.out.println(num + " is NOT even.");
}
}
}
- 保存文件并退出文本编辑器。
- 使用命令
javac ModuloOperatorDemo.java编译代码。 - 使用命令
java ModuloOperatorDemo运行代码。 - 代码应输出以下内容:
7 is NOT even.
5 is NOT even.
2 is even.
4 is even.
6 is even.
19 is NOT even.
18 is even.
25 is NOT even.
22 is even.
将秒数转换为分钟和秒数
在这一步中,我们将了解如何使用取模运算符将秒转换为分钟和秒。
- 在文本编辑器中打开
ModuloOperatorDemo.java文件。 - 删除现有代码并替换为以下代码:
public class ModuloOperatorDemo
{
public static void main(String[] args)
{
int seconds = 401;
int minutes = seconds / 60;
int remainingSeconds = seconds % 60;
System.out.print(seconds + " seconds is equal to " + minutes +" minutes " + remainingSeconds + " seconds");
}
}
- 保存文件并退出文本编辑器。
- 使用命令
javac ModuloOperatorDemo.java编译代码。 - 使用命令
java ModuloOperatorDemo运行代码。 - 代码应输出以下内容:
401 seconds is equal to 6 minutes 41 seconds
提取整数的各个数字
在这一步中,我们将了解如何使用取模运算符从数字中提取各个数字。
- 在文本编辑器中打开
ModuloOperatorDemo.java文件。 - 删除现有代码并替换为以下代码:
public class ModuloOperatorDemo
{
public static void main(String[] args)
{
int num = 7912064;
while(num > 0)
{
int lastDigit = num % 10;
num = num / 10;
System.out.print(lastDigit + " ");
}
}
}
- 保存文件并退出文本编辑器。
- 使用命令
javac ModuloOperatorDemo.java编译代码。 - 使用命令
java ModuloOperatorDemo运行代码。 - 代码应输出以下内容:
4 6 0 2 1 9 7
每隔 n 次重复执行某操作
在这一步中,我们将了解如何使用取模运算符每隔 n 次重复执行某个操作。
- 在文本编辑器中打开
ModuloOperatorDemo.java文件。 - 删除现有代码并替换为以下代码:
public class ModuloOperatorDemo
{
public static void main(String[] args)
{
for(int i = 1; i <= 30; i++)
{
if(i % 5 == 0)
System.out.println("Do Something");
}
}
}
- 保存文件并退出文本编辑器。
- 使用命令
javac ModuloOperatorDemo.java编译代码。 - 使用命令
java ModuloOperatorDemo运行代码。 - 代码应输出以下内容:
Do Something
Do Something
Do Something
Do Something
Do Something
Do Something
将数字限制在特定范围内
在这一步中,我们将了解如何使用取模运算符将数字限制在特定范围内。
- 在文本编辑器中打开
ModuloOperatorDemo.java文件。 - 删除现有代码并替换为以下代码:
public class ModuloOperatorDemo
{
public static void main(String[] args)
{
String[] dayNames = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};
int dayOfTheMonth1 = 21;
String dayName1 = dayNames[(dayOfTheMonth1 - 1) % 7];
int dayOfTheMonth2 = 12;
String dayName2 = dayNames[(dayOfTheMonth2 - 1) % 7];
System.out.println(dayOfTheMonth1 + " occurs on " + dayName1);
System.out.println(dayOfTheMonth2 + " occurs on " + dayName2);
}
}
- 保存文件并退出文本编辑器。
- 使用命令
javac ModuloOperatorDemo.java编译代码。 - 使用命令
java ModuloOperatorDemo运行代码。 - 代码应输出以下内容:
21 occurs on Sunday
12 occurs on Friday
使一个数能被另一个数整除
在这一步中,我们将了解如何使用取模运算符使一个数能被另一个数完全整除。
- 在文本编辑器中打开
ModuloOperatorDemo.java文件。 - 删除现有代码并替换为以下代码:
public class ModuloOperatorDemo
{
public static void main(String[] args)
{
int X = 291;
int Y = 17;
int remainder = X % Y;
X = X - remainder;
System.out.println("The minimum number to subtract is: " + remainder);
System.out.println("The number after subtraction is: " + X);
}
}
- 保存文件并退出文本编辑器。
- 使用命令
javac ModuloOperatorDemo.java编译代码。 - 使用命令
java ModuloOperatorDemo运行代码。 - 代码应输出以下内容:
The minimum number to subtract is: 2
The number after subtraction is: 289
总结
取模运算符是一种数学运算符,用于计算两个数相除后的余数。在本实验中,我们介绍了取模运算符的多种应用场景,例如检查一个数是否为偶数、将秒数转换为分钟和秒、提取数字的各个位数、每隔 n 次重复执行某个操作、将数字限制在特定范围内,以及使一个数能被另一个数完全整除。需要注意的是,在使用取模运算符时,除数不能为零,否则会抛出 ArithmeticException 异常。



