水仙花数定义是每位的三次方的和等于它本身,如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类型的方法,有问题可以评论提醒我。