水仙花数定义是每位的三次方的和等于它本身,如153.370.371.407
详细请看百度:水仙花数 要求接收用户输入的数字,进行判断

package laozhu;

import java.util.Arrays;
import java.util.Scanner;

public class NarcissisticNumber {
    //接收用户录入判断是否是水仙花数
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        System.out.println("请随机输入一个数:");
        int input1=input.nextInt();
        int a[]=new int[input1];
        int b=1;
        for (int i = 1; i < input1;i*=10) {//我这让用户输入的数字按照十百千的进入数组
            a[b]=(input1/(10*i))%10;//算出十位往后的每位数字放入数组
            b++;
            if((input1/(10*i))%10==0&&input1/(10*i)==0){//判断条件,一旦大于这个数的范围取余数和商都是0,满足跳出就行了
                break;
            }
        }
        int c[]= Arrays.copyOf(a,b-1);
        c[0]=input1%10;//手动给数组第一个元素赋值个位
        System.out.println(Arrays.toString(c));
        //我知道数组长度不就知道数字长度
        //写个判断水仙花数
        int sum=0;
        for (int i = 0; i <c.length; i++) {
            sum+=c[i]*c[i]*c[i];
        }
        if(sum==input1){
            System.out.println("这是个水仙花数");
        }else{
            System.out.println("这不是个水仙花数");
        }
    }

因为数组长度我直接用的用户输入的数字,有瑕疵的是数组长度默认类型只能是int,所以不能用double来定义,让判断范围更广,用户输入的数字也只能在int范围内,我也没有去写判断用户输入值必须是int类型的方法,有问题可以评论提醒我。