面试题4,打印出100-999所有的“水仙花数”。
提示:水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。
(例如:1^3 + 5^3+ 3^3 = 153)
package 面试; /** * 水仙花数 * @author liugang * @create 2018/12/19 20:07 **/ public class Shuixianhua { public static void main(String[] args) { int a,b,c; for(int i=100;i<999;i++){ a = i%10; b = (i/10)%10; c = i/100; if (a*a*a+b*b*b+c*c*c==i){ System.out.println("水仙花数:"+i); } } // int i = 137; // System.out.println(137%10); } }
怎么求个位数和十位数和百位数呢
a = Integer.parseInt(String.valueOf(i).substring(0,1)); b = Integer.parseInt(String.valueOf(i).substring(1,2));; c = i%100;
我之前是这样弄,但发现只打印了407,取的有问题
c取的问题,个位数的值,应该是i%10这样取
int i=137; //取个位数 7 = 137-130;130是可以被10整除的,所以可以这样取 int c = i%10;
//取十位数 37 = 137-100;直接是先除10,降到两位数,然后再除10取模 int b = (i/10)%10;
//取百位数 直接除100就ok了; int a = i/100;