java - 苦苦挣扎于harshad算法?为什么没有输出?
问题描述
哈哈德数是可以被其数字之和整除的数。例如,24 是 Harshad 数,因为 24 / (2 + 4) = 4。例如,23 不是 Harshad 数,因为 23 / (2 + 3) = 一些小数。这是我尝试提示用户输入整数,检查所述整数是否为 Harshad 数,以及是否输出;如果没有,请继续将数字增加 1,直到找到要输出的数字。
import java.io.*;
public class harshad {
public static void main(String[] args) throws NumberFormatException, IOException {
// TODO Auto-generated method stub
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String number = reader.readLine(); // "23"
boolean isHarshad = false;
while (isHarshad = false) {
int sum = 0;
String[] parts = number.split(""); // ["2", "3"]
int num = Integer.parseInt(number); // 23
for (int i = 0; i < parts.length; i++) {
sum += Integer.parseInt(parts[i]); // 5
}
if (num % sum == 0) { // clean division
System.out.println(num); // should work for number 24
isHarshad = true; // break loop
} else {
number = Integer.toString(num++); // "24"
}
}
}
}
解决方案
替换while (isHarshad = false)
为while (isHarshad == false)
甚至更好while (!isHarshad)
,否则您是在进行分配而不是比较。
替换number = Integer.toString(num++);
为number = Integer.toString(++num);
否则增量发生在分配之后,而不是之前。
推荐阅读
- python - Word2Vec Skipgrams - 夫妻应该跨越句子吗?
- angular - Angular 模板驱动表单中的自定义验证不会更新表单状态
- macros - 合并 .root 文件导致合并文件的副本
- eclipse - 与 Eclipse 集成的外部/USB 控制器
- apache - mod_rewrite - 某些页面的 HTTP 到 HTTPS 保持预先存在的重写规则
- tensorflow - 在更快的 rcnn 模型中调整 first_stage_anchor_generator
- python - 使用 Python 对原始信号应用合适的巴特沃斯滤波器
- html - CSS 文本溢出属性
- c++ - 使用哪种模式来通过添加基类的新子类来执行新代码?
- ruby-on-rails - 提供 Rails 内容托管字段的最佳实践?