与harshad算法斗争?为什么没有输出?



harshad数是能被其位数之和整除的数。例如,24是一个哈沙德数,因为24/(2 + 4)= 4。例如,23不是哈沙德数,因为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);,否则增量发生在赋值之后,而不是之前。

最新更新