水仙花数的统计问题统计结果为零?

运行出来是零 代码也没报错 不知道哪里出了问题

import java.util.Scanner;

public class x{
    public static void main(String[] args) {
        int count = 0;
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入范围的较小三位数:");
        int min = sc.nextInt();
        System.out.println("请输入范围的较大三位数:");
        int max = sc.nextInt();
        for(int i = 0; i >=min & i <= max;i++){
            int a = i%10;
            int b = i/10%10;
            int c = i/100;
            if(a*a*a + b*b*b + c*c*c == i){
                count++;
            }
        }
        System.out.println("水仙花数的个数是"+ count);
    }
}


是&&不是&

for(int i = 0; i >=min & i <= max;i++){
改为
for(int i = min; i <= max;i++){

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7595738
  • 你也可以参考下这篇文章:C语言“水仙花数”是一个正三位数,他的个位十位百位的立方和等于他本身
  • 您还可以看一下 姜雪伟老师的算法与游戏实战技术课程中的 固定流水线算法实战应用小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    问题解决方案:

    问题出在代码中的计算部分。在原始代码中,使用的是数组来存储输入的区间内的数值,然后逐个计算每个数值是否为水仙花数。但是这种方法存在问题,每次判断都需要遍历整个数组。所以即使输入区间内有水仙花数,也无法得到正确的结果。

    解决这个问题需要对代码进行优化。可以采用循环遍历的方式,逐个判断数字是否是水仙花数。

    下面是优化后的代码示例:

    #include <stdio.h>
    
    int isNarcissisticNumber(int num);
    
    int main() {
        int m, n;
        printf("请输入检测是否水仙花的区间的值:\t");
        scanf("%d%d", &m, &n);
    
        int count = 0;
        for (int i = m; i <= n; i++) {
            if (isNarcissisticNumber(i)) {
                printf("%d\t", i);
                count++;
            }
        }
    
        if (count == 0) {
            printf("在区间[%d, %d]内没有水仙花数\n", m, n);
        }
    
        return 0;
    }
    
    int isNarcissisticNumber(int num) {
        int a = num / 100;     // 取百位
        int b = num % 100 / 10;   // 取十位
        int c = num % 10;       // 取个位
    
        if (num == a * a * a + b * b * b + c * c * c)
            return 1;
        else
            return 0;
    }
    

    这个示例中,我们使用了isNarcissisticNumber函数来判断一个数字是否是水仙花数。在主函数中,我们对输入的区间进行遍历,逐个判断并输出水仙花数。

    同时在输出部分,我们加入了一个计数器count,用来判断是否有水仙花数存在。如果count为0,说明在输入的区间内没有水仙花数。

    希望这个解决方案能够帮到你。如果还有任何问题,请随时向我提问。