面试题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;

 

posted @ 2018-12-19 20:40  正能量教官  阅读(635)  评论(0编辑  收藏  举报