java输出水仙花数的运行没问题,结果数量不太对

输出水仙花数,代码运行没有问题,但是运行的结果少了许多,不知道是哪里有问题。

img

c = i % 10
取个位的时候应该对10取余,取出个位, 而不是对100取余。
现在代码里是对100取余,c是两位数,会缩小结果的范围。

c=i%10

第9行求个位数错了,个位数应该是原数字对10取余数,改为 c = i % 10。

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7532065
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:JAVA基础-水仙花数,完数,质数。
  • 除此之外, 这篇博客: java小算法 逢七过 水仙花数 逆序数值中的 2. 水仙花数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • /*
    10. 判断一个三位数是否是水仙花数,如果是,输出YES,如果不是,输出NO
    	说明: 水仙花就是一个数的每个数字的立方和等于它本身的数, 例如 153就是一个水仙
    	花数 1*1*1+5*5*5+3*3*3=153
    */
    import java.util.Scanner;
    
    class HomeWork10 {
    	public static void main(String[] args) {
    		
    		int num = 0;
    		int a = 0;
    		int b = 0;
    		int c = 0;
    		Scanner input = new Scanner(System.in);
    		
    		System.out.println("请输入一个三位数:");
    		num = input.nextInt();
    		
    		a = num % 10;							//取个位
    		b = num / 10 % 10;						//取十位
    		c = num / 100;							//取百位
    		
    		if (num == a * a * a + b * b * b + c * c * c) {
    			System.out.println("YES");
    		} else {
    			System.out.println("NO");
    		}
    	}
    }
    /*
    输出结果:
    
    D:\MyJavaCode\java day004 switch与while dowhile循环结构>java HomeWork10
    请输入一个三位数:
    153
    YES
    
    D:\MyJavaCode\java day004 switch与while dowhile循环结构>java HomeWork10
    请输入一个三位数:
    111
    NO
    */
    
  • 您还可以看一下 沙利穆老师的由浅入深学Java课程中的 水仙花数小节, 巩固相关知识点