java - 范围内的每个数字都应该能被 n 整除
问题描述
在这里我需要检查数字中的每个数字是否可以被 3 整除,这意味着当我输入 20 和 40 时,代码需要验证 20 到 40 之间数字的每个数字,它应该显示30,33,36,39
我试图做的是获取代码的最后一位数字并检查它是否可整除,我陷入了困境
class Main
{
public static void main(String[] args) {
System.out.println("Enter the range for shipment numbers :");
int n;
int Duplicate = 0;
int count = 0;
Scanner sc = new Scanner(System.in);
int range1 = sc.nextInt();
int range2 = sc.nextInt();
for(int i = range1; i <= range2; i++){
int num = i;
int length = String.valueOf(i).length();
Duplicate = 0;
for(int j = 1; j <= length; j++)
{
n = num % 10;
num = num / 10;
if(n % 3 == 0 && i % 3 == 0 ){
Duplicate = Duplicate+1;
count = count+1;
System.out.println(rep);
if (Duplicate <= 1)
System.out.println(i);
}
}
if (count <= 0)
System.out.println("Shipment numbers unavailable");
if (count <= 0)
break;
}
}
}
解决方案
为了检查每个数字是否能被 3 整除,您可以用以下代码替换循环。它只是将数字从右向左移动,并使用布尔值来记住到目前为止遇到的所有数字是否都可以通过使用逻辑 AND 被 3 整除。
for (int i = range1; i <= range2; i++) {
int num = i;
boolean isDivisible = true;
while (num > 0) {
// get last (rightmost) digit to inspect
int n = num % 10;
isDivisible = isDivisible && (n % 3 == 0);
// integer-divide by 10 to prepare for next round
num = num / 10;
}
if (isDivisible) {
System.out.println(i);
}
}
所示代码的一个弱点是,就像您的原始代码一样,它会查看整个数字,一旦不满足可被 3 整除的标准,它就可以退出,但这很容易修复。
推荐阅读
- json - 如何通过主键将嵌套的 JSON 索引连接到 SQL 中的多行
- php - Woocommerce 下拉屏幕,添加到购物车挂钩
- kubernetes - Kubernetes 提供垃圾外部 ip
- logstash - 从谷歌云存储有选择地下载堆栈驱动程序日志
- python - 为什么 Anaconda 发行版不能在 Windows 10 64 位上运行?
- firebase - 部署调度器云函数(function Failed to create function "function_name"--- HTTP Error: 400, The request has errors)
- python - 如何更改图像位深?还有什么其他包替换了不推荐使用的函数 imageop.grey2grey4?
- android - java.nio.file.InvalidPathException: Trailing char < > at index 10: res/raw/?
- c# - 在 C# 中使用 Jquery 正则表达式
- android - 在 Xml 中声明的 Fragment 中的 Fragment