大家好,又见面了,我是你们的朋友全栈君。
题目:用户输入一个数,判断是否是”水仙花数”,所谓”水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个”水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
import java.util.Scanner;
jdk中封装了一个类Scanner,该类的职责就是接收键盘的输入值,并保存到程序的变量中,体现了程序和用户的交互功能。
Scanner sc=new Scanner(System.in);//在输入Scanner时,按住回车键会自动导入上面的包
int X=sc.nextInt();//X是用户输入的数
这里我们需要用到两个运算符:/和%
“/”在数学中是除的意思,但在Java中却是作为一种运算符,用来取整。用法为:比如3/2,在数学中是3/2=1.5,但在Java中3除以2等于1,因为取整,后面的小数0.5会被程序舍弃。 “%”平常是一种百分号,但在Java中也是作为一种运算符,用来取模。用法为:比如10%3为3余1,此时程序生成的结果就是1.
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){
//如果用户输入的数x与各位数字立方相等,该数即为水仙花
System.out.println(X+"是水仙花数" );
}else如果用户输入的数x与各位数字立方不等,该数就不是水仙花
System.out.println(X+"不是水仙花数");
完整代码展示如下:
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+"不是水仙花数");
}
测试一下:
请输入一个数:
153
153是水仙花数
请输入一个数:
123
123不是水仙花数
其实,水仙花数也就那么几个,我们不妨用循环求出所有的水仙花数
//要求输入所有的水仙花数(其实就是从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循环
输出一下看看:
153是一个水仙花数
370是一个水仙花数
371是一个水仙花数
407是一个水仙花数
以上就是全部的水仙花数了
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/157114.html原文链接:https://javaforall.cn