java经典练习题
题目:
打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。(例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。 )
程序分析:
利用for循环控制100-999个数,每个数分解出个位,十位,百位。
public static void main(String[] args) {
int count=0;
for (int i = 100; i <=999 ; i++) {
int ge = i%10;
int shi = i/10%10;
int bai = i/10/10;
if (Math.pow(ge,3)+Math.pow(shi,3)+Math.pow(bai,3) == i){
System.out.println(i);
count++;
}
}
System.out.println("共有"+count+"个水仙花数");
System.out.println(3^3);//这行是为了告诉你们这不是次幂的运算
}
题目讲解:(如何获取对应位置上的数字)
首先我们要复习以下除于(/) 和除余(%),他们两个区别在于一个在于舍弃余数,一个在于取余数,恰巧相反。(例如:17%10得7;而17/10则得1。)
1.获取个位上的数:
循环数(i)%10;
2.获取十位上得数:
循环数(i)/10%10;
3.获取百位上得数字:
循环数(i)/10/10;
…以此类推可获取个各种数字位置上的对应数字。
接下来我们需要了解Math工具类的一种方法:
Math.pow(9,3) 可以看成数学里的9的3次方(9^3这个在java里不是计算次方而是位运算)
程序运行结果:
153
370
371
407
共有4个水仙花数
0