A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 秦文强 中级黑马   /  2015-1-23 22:42  /  1467 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class  For
{
        public static void main(String[] args)
        {
                for (int x=100;x<=999 ;x++ )
                {
                        int ge=x%10;
                        int shi=x/10%10;
                        int bai=x/10/10%10;
                        if (ge*ge*ge+shi*shi*shi+bai*bai*bai==x)
                        {
                                System.out.println(x);
                        }
                }
               
        }
}

11 个回复

倒序浏览
你好 注释能加一下吗  完全不知道表达是什么意思啊   
这里为什么这么写呢?
int ge=x%10;
int shi=x/10%10;
int bai=x/10/10%10;
回复 使用道具 举报
我为你着迷 发表于 2015-1-24 16:41
你好 注释能加一下吗  完全不知道表达是什么意思啊   
这里为什么这么写呢?
int ge=x%10;

分别取得这个数的百位,十位,个位
回复 使用道具 举报
我喜欢写成这样
/*
* 打印1~10000水仙花数
*
* 思路:写一个无返回值,需要一个int参数方法的Test,里面做一个FOR循环,对传入的数就是循环的次数
* 水仙花数说的是一百到999之间的数才有
* 然后在打印每一个数时都进行一次判断,进行拆分出个,十,百位,然后每一个的三次方加起来是不是与这个数一致
* 是则打印了来
* */

public class demo01 {
        public static void main(String[] args) {
                Test(100);
        }
       
        public static void Test(int i){
                for (int a=i;a<=999;a++){
                        int hun=a/100;
                        int top=a%100/10;
                        int num=a%100%10;
                        int hunX=(int)Math.pow(hun, 3);
                        int topX=(int)Math.pow(top, 3);
                        int numX=(int)Math.pow(num, 3);
                        if(a==(hunX+topX+numX)){
                                System.out.print(a+"\t");
                        }
                }
        }
}
回复 使用道具 举报
Dragon_Free 发表于 2015-1-24 16:44
分别取得这个数的百位,十位,个位

不过这样就可以取出百位,十位,个位 了嘛   这是怎么想出来的呢 我完全想不出来啊  
回复 使用道具 举报
我为你着迷 发表于 2015-1-24 16:52
不过这样就可以取出百位,十位,个位 了嘛   这是怎么想出来的呢 我完全想不出来啊   ...

你可以将这个int num=a%100%10;自己算一遍,你要知道每个运算符运算完后它的结果是什么?
百位:a/100========658/100返回一个int不就是6了?int num=a%100%10;同上一样,a%100===================685%100=85同理得就可得到个位了
回复 使用道具 举报
Dragon_Free 发表于 2015-1-24 16:56
你可以将这个int num=a%100%10;自己算一遍,你要知道每个运算符运算完后它的结果是什么?
百位:a/100=== ...

谢谢你啊
回复 使用道具 举报

不用,当自己重看了一遍了
回复 使用道具 举报
Dragon_Free 发表于 2015-1-24 17:25
不用,当自己重看了一遍了

其实我还是有点不明白 你百位是这么写的int hun=a/100;    十位是这么写的 int top=a%100/10;    如果百位写成十位这样的 int top=a%100/10;    不是也可以得到的嘛     另外a/100========658/100返回一个int不就是6了?  这里返回6了有什么关系吗?
回复 使用道具 举报
我为你着迷 发表于 2015-1-24 17:34
其实我还是有点不明白 你百位是这么写的int hun=a/100;    十位是这么写的 int top=a%100/10;    如果百 ...

如果你的百位写成:top=a%100/10;,那会是什么结果?例如:687%100=87,87/10=8这拿到是十位,不是百位。。。运算符结果是什么想一下就是了,还有返回6,6不就是要返回百位上的数吗?我不是写了注释?

评分

参与人数 1黑马币 +50 收起 理由
我为你着迷 + 50

查看全部评分

回复 使用道具 举报
Dragon_Free 发表于 2015-1-24 17:41
如果你的百位写成:top=a%100/10;,那会是什么结果?例如:687%100=87,87/10=8这拿到是十位,不是百位。 ...

奥{:3_65:}{:3_65:}{:3_65:}
回复 使用道具 举报

没事,不是很清楚的话, 自己用代码运行一次,看看结果就行,一步一步改过来就好
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马