首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在哈沙德算法中挣扎?为什么没有输出?

在哈沙德算法中挣扎?为什么没有输出?
EN

Stack Overflow用户
提问于 2021-01-25 04:09:26
回答 1查看 59关注 0票数 1

哈沙德数是一个可以被它的数字之和平均整除的数。例如,24是哈沙德数,因为24 / (2 + 4) = 4。例如,23不是哈沙德数,因为23 / (2 + 3) =某个小数。这是我试图提示用户输入一个整数,检查所述整数是否为Harshad数,如果不是,则继续将该数加1,直到找到一个要输出的数。

代码语言:javascript
复制
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"
            }
        }
    }
}
EN

回答 1

Stack Overflow用户

发布于 2021-01-25 04:16:24

while (isHarshad = false)替换为while (isHarshad == false)或更好的while (!isHarshad),否则您将进行赋值而不是比较。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65875393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档