前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通过Java实现求水仙花数「建议收藏」

通过Java实现求水仙花数「建议收藏」

作者头像
全栈程序员站长
发布2022-09-08 10:51:17
9480
发布2022-09-08 10:51:17
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

题目:用户输入一个数,判断是否是”水仙花数”,所谓”水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个”水仙花数”,因为153=1的三次方+5的三次方+3的三次方。

  • 1.导包(作为当前类的引用)
代码语言:javascript
复制
import java.util.Scanner;

jdk中封装了一个类Scanner,该类的职责就是接收键盘的输入值,并保存到程序的变量中,体现了程序和用户的交互功能。

  • 2.创建对象
代码语言:javascript
复制
Scanner sc=new Scanner(System.in);//在输入Scanner时,按住回车键会自动导入上面的包
  • 3.对象调用方法来接收输入值
代码语言:javascript
复制
int X=sc.nextInt();//X是用户输入的数
  • 4.先求出各位数上的数字

这里我们需要用到两个运算符:/和%

“/”在数学中是除的意思,但在Java中却是作为一种运算符,用来取整。用法为:比如3/2,在数学中是3/2=1.5,但在Java中3除以2等于1,因为取整,后面的小数0.5会被程序舍弃。 “%”平常是一种百分号,但在Java中也是作为一种运算符,用来取模。用法为:比如10%3为3余1,此时程序生成的结果就是1.

代码语言:javascript
复制
		int a,b,c,sum;//定义几个变量
		a=X/100;//得到百位上的数字
        b=X%100/10;//得到十位上的数字
        c=X%100%10;//取模得到个位上的数字
  • 5.求各位数的立方之和
代码语言:javascript
复制
sum=a*a*a+b*b*b+c*c*c;
  • 6.通过if…else语句判断各位数字立方和是否等于该数本身
代码语言:javascript
复制
		if (sum==X){ 
   //如果用户输入的数x与各位数字立方相等,该数即为水仙花
            System.out.println(X+"是水仙花数" );
        }else如果用户输入的数x与各位数字立方不等,该数就不是水仙花
            System.out.println(X+"不是水仙花数");

完整代码展示如下:

代码语言:javascript
复制
import java.util.Scanner;

public class Narcissus { 
   
    public static void main(String[] args) { 
   
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个数:");
        int X=sc.nextInt();
        int a,b,c,sum;
      
        a=X/100;
        b=X%100/10;
        c=X%100%10;
        
        sum=a*a*a+b*b*b+c*c*c;
        
        if (sum==X){ 
   
            System.out.println(X+"是水仙花数" );
        }else
            System.out.println(X+"不是水仙花数");
    }

测试一下:

代码语言:javascript
复制
请输入一个数:
153
153是水仙花数
请输入一个数:
123
123不是水仙花数

其实,水仙花数也就那么几个,我们不妨用循环求出所有的水仙花数

代码语言:javascript
复制
//要求输入所有的水仙花数(其实就是从100到999之间的,已经给定了的)
public class TestNarcissus { 
   
    public static void main(String[] args) { 
   
        for(int i =100;i<=999;i++) { 
   //保证是一个三位数,这是前提条件
            int a=i/100;
            int b=i%100/10;
            int c=i%100%10;
            int sum=a*a*a+b*b*b+c*c*c;
            if (sum==i){ 
   
                System.out.println(i+"是一个水仙花数");
            }
        }
    }
}
//原理和上面的一样,就是加个for循环

输出一下看看:

代码语言:javascript
复制
153是一个水仙花数
370是一个水仙花数
371是一个水仙花数
407是一个水仙花数

以上就是全部的水仙花数了

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/157114.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档