首页 > 解决方案 > 苦苦挣扎于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"
            }
        }
    }
}

标签: javaparsingmathsplit

解决方案


替换while (isHarshad = false)while (isHarshad == false)甚至更好while (!isHarshad),否则您是在进行分配而不是比较。

替换number = Integer.toString(num++);number = Integer.toString(++num);否则增量发生在分配之后,而不是之前。


推荐阅读