黑马程序员技术交流社区

标题: ===>送技术分闪亮登场之第二周<===结束 [打印本页]

作者: Just_Only    时间: 2013-6-29 20:26
标题: ===>送技术分闪亮登场之第二周<===结束
本帖最后由 Just_Only 于 2013-7-6 20:01 编辑

{:soso__16865118374220378461_1:}相聚即是缘分,珍惜每分每秒,为了心中梦想,我们永不言弃。
要求:
      1.题目要自己做出来,要写明思路和步骤(可以合在一起){:soso__5462389604067913156_1:}
      2.将程序写的清晰明了,注释到位.
      3.回复的时候把代码和运算后结果的图片一起贴出来,
         不会弄图片的贴出结果来,不要蒙混过关,我会检查的,不合格者不给于技术分哦
      4.需要写出完整代码,不要用几句术语草草了事。
      5.代码放到代码块中,不要压缩包(压缩包没分)
      6.要写注释,没注释的没分...
      7.对于本次活动的题目或是加分,存在异议的可以联系我。。。有奖励的哦...
加分说明:
             题目总共三题,所得技术分是所做题的个数,但是如果所做题精简并且排版较好可能会有一分的技术奖励。

           (说明:如果前期没有完全做完而后续补充上,那么将撤销前期的加分而另行给分,如果有问题请看要求7)
附加:      
       题目不是很难主要是在于综合,每周日更新(持续几周不定)
   
   不说多的啦,上题目的啦,大家踊跃参加的啊,你的支持是我们服务的最大动力哦。
题目:
      1.两个兵乓球队进行比赛,各出三个人。各队选手的编号均为1号,2号,3号,抽签决定比赛名单,有人向队员打听比赛的名单。
         甲队1号说不和乙队的1号比,甲队的3号说不和乙队的1号和3号比,请编程找出两队的赛手名单。
      2.打印出所有三位数中即是水仙数又是回文数的数,如果没有这个数那么输出所有的水仙数。
         水仙数是指一个三位数,其个位数立方和等于本身,例如:153=1[sup]3[/sup]+5[sup]3[/sup]+3[sup]3[/sup]
         回文数是121置换后还是其本身,而132就不是回文数,因为置换后是231。
      3.打印出100到200之间中即不是回文数又不是素数又不是水仙数的所有数的和。

作者: 神之梦    时间: 2013-6-29 20:42
题目感觉还是挺easy的,大家还在等什么呢?占个座位围观{:soso__3409329614010722382_3:}
作者: Just_Only    时间: 2013-6-29 20:44
神之梦 发表于 2013-6-29 20:42
题目感觉还是挺easy的,大家还在等什么呢?占个座位围观 ...

题目不是很难,主要是综合,还有就是活跃大家的积极性,你说的别人看不见的啊,这是只有作者可见的啊
作者: 杨晓燕    时间: 2013-6-29 21:01
喔喔,送分的又来了
作者: Just_Only    时间: 2013-6-29 21:03
杨晓燕 发表于 2013-6-29 21:01
喔喔,送分的又来了

恩恩,题目不是很难,积极写的哦。。。
作者: .netNo1    时间: 2013-6-29 21:49
标题: RE: ===&gt;送技术分闪亮登场之第二周&lt;===
  1. int j1, j2, j3;/*j1是乙1的对手,j2是乙2的对手,j3是乙3的对手*/
  2.             for (j1 = 1; j1 <= 3; j1++)
  3.             {
  4.                 for (j2 = 1; j2 <= 3; j2++)
  5.                 {
  6.                     if (j1 != j2)
  7.                         for (j3 = 1; j3 <= 3; j3++)//两两相比
  8.                         {
  9.                             if (j1 != j3 && j2 != j3)//同一队的不进行比赛
  10.                             {
  11.                                 if (j1 != 1 && j3 != 1 && j3 != 3)//条件判断
  12.                                     Console.WriteLine("乙队的一号对应甲队的{0}号,乙队的二号对应甲队的{1}号,乙队的三号对应甲队的{2}号", j1, j2, j3);

  13.                             }
  14.                         }
  15.                 }
  16.             }
  17.             Console.ReadKey();

  18.             //输出结果为:乙队的一号对应甲队的3号,乙队的二号对应甲队的1号,乙队的三号对应甲队的2号
复制代码

作者: 李九一    时间: 2013-6-29 21:51
求 加分
作者: 王靖远    时间: 2013-6-29 22:04
本帖最后由 王靖远 于 2013-6-29 22:05 编辑
  1. public class Test1{
  2.         public static void main(String [] args){
  3.                 Test1 instance = new Test1();
  4.                 System.out.println("------------------第二题--------------------");
  5.                 instance.printTest2();
  6.                 System.out.println("------------------第三题--------------------");
  7.                 instance.printTest3();
  8.         }
  9.         private  void printTest2(){//打印第二题结果
  10.                 for(int x=100;x<999;x++){
  11.                         if(shuiXianHuaShu(x)&& huiWenShu(x) )
  12.                                 System.out.println(x);
  13.                         else if(shuiXianHuaShu(x))
  14.                                 System.out.println(x);
  15.                 }
  16.         }
  17.         private void printTest3(){//打印第三题结果
  18.                
  19.                 int temp = 0;
  20.                 for(int x=100;x<200;x++){
  21.                         if(!suShu(x) && !huiWenShu(x) && !shuiXianHuaShu(x))
  22.                                 temp += x;
  23.                 }
  24.                 System.out.println(temp);
  25.         }
  26.         
  27.         private boolean suShu(int i ){
  28.                 int count = 1;//初始化一个计数器
  29.                 for(int x=1;x<i;x++){//
  30.                         if(i%x==0)//这个数模从1到自身-1 如果==0计算器+1
  31.                                 count++;
  32.                 }
  33.                 if(count<=2)//计数器小于等于2说明这个数只有1和本身2个因子是素数。
  34.                         return true;
  35.                 else
  36.                         return false;
  37.         }
  38.         
  39.         private boolean huiWenShu(int i){
  40.                 String iString = new String(i+"");
  41.                 char[] chs = iString.toCharArray();
  42.                
  43.                 int i1 = Integer.parseInt(new String(chs[0]+""));
  44.                 int i2 = Integer.parseInt(new String(chs[1]+""));
  45.                 int i3 = Integer.parseInt(new String(chs[2]+""));
  46.                 //以上取出一个数的个位十位百位。
  47.                 StringBuilder iStringBuilder = new StringBuilder();
  48.                 iStringBuilder.append(i3);
  49.                 iStringBuilder.append(i2);
  50.                 iStringBuilder.append(i1);
  51.                 String newIString = new String(iStringBuilder);
  52.                 int newI = Integer.parseInt(newIString);
  53.                 //以上将原数的个位和百位调换并赋值给newI
  54.                 if(i == newI)//判断原数与新数是否相等。
  55.                         return true;
  56.                 else
  57.                         return false;
  58.         }
  59.         private boolean shuiXianHuaShu(int i){
  60.                 String iString = new String(i+"");
  61.                 char[] chs = iString.toCharArray();
  62.                
  63.                 int i1 = Integer.parseInt(new String(chs[0]+""));
  64.                 int i2 = Integer.parseInt(new String(chs[1]+""));
  65.                 int i3 = Integer.parseInt(new String(chs[2]+""));
  66.                 //以上代码取出要判断的数的个位十位百位
  67.                 if((Math.pow(i1, 3)+Math.pow(i2, 3)+Math.pow(i3, 3))==i)//判断
  68.                         return true;
  69.                 else
  70.                         return false;
  71.         }
  72. }
复制代码
只做了第二第三题。第一题做不好。

作者: .netNo1    时间: 2013-6-29 22:05
  1. for (int i = 100; i < 1000; i++) //用i表示三位数
  2.             {
  3.                 int bai = 0; //百位
  4.                 int shi = 0; //十位
  5.                 int ge = 0; //个位
  6.                 int baiyushu = 0; //对百位进行求余后的数字
  7.                 bai = i / 100;
  8.                 baiyushu = i % 100; //两位数
  9.                 shi = baiyushu / 10;
  10.                 ge = baiyushu % 10;
  11.                 if (i == bai * bai * bai + shi * shi * shi + ge * ge * ge &&bai==ge)
  12.                 {
  13.                     Console.Write("回文数:" + i + "\n");
  14.                 }
  15.                 else if (i == bai * bai * bai + shi * shi * shi + ge * ge * ge)
  16.                 {
  17.                     Console.Write("水仙花数:" + i + "\n");
  18.                 }
  19.             }
  20.             Console.ReadKey();

  21.             //输出结果为:
  22.             //水仙花数:153
  23.             //水仙花数:370
  24.             //水仙花数:371
  25.             //水仙花数:407
复制代码

作者: ㄗs:/|丶hearts    时间: 2013-6-29 22:28
  1. package com.java.test;

  2. public class Team {

  3.         /**
  4.          * @param args
  5.          * 两个兵乓球队进行比赛,各出三个人。各队选手的编号均为1号,2号,3号,抽签决定比赛名单,
  6.          * 有人向队员打听比赛的名单。
  7.          * 甲队1号说不和乙队的1号比,甲队的3号说不和乙队的1号和3号比,请编程找出两队的赛手名单。      
  8.          */
  9.         public static void main(String[] args) {
  10.                 // TODO Auto-generated method stub

  11.                 String[] str1 = {"甲1号","甲2号","甲3号"};
  12.                 String[] str2 = {"乙1号","乙2号","乙3号"};
  13.                
  14.                 for(int i = 0; i < 3; i++){
  15.                         for (int j = 0; j < 3; j++) {
  16.                                 //甲1号不和乙1号比
  17.                                 if (str1[i] == "甲1号" && str2[j] == "乙1号" ) {
  18.                                         continue;
  19.                                 }else
  20.                                         //甲3号 不和乙1号和乙3号比
  21.                                         if (str1[i] == "甲3号" && (str2[j] == "乙1号" ||  str2[j] == "乙3号") ){
  22.                                         continue;
  23.                                 }else {
  24.                                         System.out.println(str1[i]+"--"+str2[j]);
  25.                                 }
  26.                                 
  27.                         }
  28.                 }               
  29.         }

  30. }
复制代码

1.png (3.58 KB, 下载次数: 0)

1.png

作者: .netNo1    时间: 2013-6-29 22:44
  1. int sum = 0;//和
  2.             for (int i = 101; i <= 200; i++) //用i表示三位数
  3.             {
  4.                 int bai = 0; //百位
  5.                 int shi = 0; //十位
  6.                 int ge = 0; //个位
  7.                 int baiyushu = 0; //对百位进行求余后的数字
  8.                 bai = i / 100;
  9.                 baiyushu = i % 100; //两位数
  10.                 shi = baiyushu / 10;
  11.                 ge = baiyushu % 10;
  12.                
  13.                 for (int k = 2; k < i; k++)
  14.                 {
  15.                     if (i % k == 0)  //质数
  16.                     {
  17.                         if (i == bai * bai * bai + shi * shi * shi + ge * ge * ge) //水仙花数
  18.                         {
  19.                             break;
  20.                         }
  21.                         else if (bai == ge)  //回文数
  22.                         {
  23.                             break;
  24.                         }
  25.                         else
  26.                             sum += i;
  27.                            
  28.                     }
  29.                     else //素数
  30.                         break;
  31.                 }
  32.             }
  33.             Console.Write("既不是素数又不是回文数又不是水仙花数的总和为:" + sum );
  34.             Console.ReadKey();

  35.             //输出结果为:11900
复制代码

作者: 肥猫    时间: 2013-6-29 22:50
本帖最后由 肥猫 于 2013-6-30 21:53 编辑

题目一:
  1. /*
  2. 题目一:两个兵乓球队进行比赛,各出三个人。各队选手的编号均为1号,2号,3号,抽签决定比赛名单,有人向队员打听比赛的名单。
  3. 甲队1号说不和乙队的1号比,甲队的3号说不和乙队的1号和3号比,请编程找出两队的赛手名单。
  4. author:肥猫
  5. */

  6. public class HomeWork {

  7. public static void main(String[] args){
  8. String[] a = new String[]{"a1","a2","a3"};//定义字符型数组A代表A队,三名队员分别为A1,A2,A3
  9. String[] b = new String[]{"b1","b2","b3"};//B与A相似

  10. for(int x=0;x<a.length;x++){
  11. for(int y=0;y<b.length;y++){//两个FOR循环遍历两个数组
  12. if(x==0&&y==0||x==0&&y==1||x==2&&y==0||x==2&&y==2){//这里是条件,当碰到题目所说情况时直接结束本次循环否则输出比赛名单。
  13. continue;
  14. }
  15. else {
  16. System.out.println(a[x]+":"+b[y]);
  17. break;//这里是保证一名队员只能进行一次比赛,所以需要break。
  18. }
  19. }

  20. }
  21. }
  22. }
复制代码



题目二:
  1. /**
  2. 题目二:打印出所有三位数中即是水仙数又是回文数的数,如果没有这个数那么输出所有的水仙数。
  3. 水仙数是指一个三位数,其个位数立方和等于本身,例如:153=13+53+33
  4. 回文数是121置换后还是其本身,而132就不是回文数,因为置换后是231。
  5. author:肥猫
  6. */

  7. public class Example
  8. {
  9. public static void main(String[] args)
  10. {
  11. for(int i=100;i<=999;i++)//三位数从100-999
  12. {
  13. int geWei,shiWei,baiWei;//定义个位、十位、百位
  14. baiWei=i/100;
  15. shiWei=(i-baiWei*100)/10;
  16. geWei=i-baiWei*100-shiWei*10;
  17. if(i==geWei*geWei*geWei+shiWei*shiWei*shiWei+baiWei*baiWei*baiWei && i==geWei*100+shiWei*10+baiWei*1)//同时满足既是水仙花数又是回文数才输出否则直接跳下一个IF
  18. {
  19. System.out.println(i);
  20. }
  21. else if(i==geWei*geWei*geWei+shiWei*shiWei*shiWei+baiWei*baiWei*baiWei){//若没有数满足上面判断则输出水仙花数
  22. System.out.println(i);
  23. }
  24. }
  25. }
  26. }
复制代码


题目三:
  1. /**
  2. 题目三:打印出100到200之间中即不是回文数又不是素数又不是水仙数的所有数的和。
  3. 思路:逆相思维,题目所求结果就是100到200的数之和减去既是回文数又是素数又水仙数的和。
  4. author:肥猫
  5. */
  6. public class Last
  7. {
  8. public static void main(String[] args)
  9. { int Sum = 0;//Sum为最后结果
  10. int Sum1 = 0;//Sum1是100到200所有数之和
  11. int Sum2 = 0;//Sum2是所有既是水仙数又是素数又是回文数的数之和
  12. for(int i=100;i<=200;i++){
  13. boolean b = false;//定义一个变量B来判断是否为素数,若为true则符合素数.
  14. Sum1+=i;
  15. int geWei,shiWei,baiWei;//定义个位、十位、百位
  16. baiWei=i/100;
  17. shiWei=(i-baiWei*100)/10;
  18. geWei=i-baiWei*100-shiWei*10;
  19. for(int j=2;j<=Math.sqrt(i);j++){
  20. if(i%j==0){
  21. b = false;
  22. break;
  23. }
  24. else{
  25. b=true;
  26. }
  27. if(b==true&&i==geWei*geWei*geWei+shiWei*shiWei*shiWei+baiWei*baiWei*baiWei && i==geWei*100+shiWei*10+baiWei*1){
  28. Sum2+=i;//这整个IF语句是判断是否符合三种数条件的数,若符合则求和.
  29. }
  30. }
  31. }
  32. Sum=Sum1-Sum2;
  33. System.out.println(Sum);
  34. }
  35. }
复制代码


本人菜鸟一枚,刚接触JAVA,答的不好请多谅解,多指教~~.






作者: 杨晓燕    时间: 2013-6-29 22:52
本帖最后由 杨晓燕 于 2013-6-29 22:53 编辑

我不会做啊,好不容易用最笨的办法做出来了,请大家不要笑哦,然后希望版主指出可以改进的地
  1. /*
  2. 需求:打印出所有三位数中即是水仙数又是回文数的数,如果没有这个数那么输出所有的水仙数。
  3. 水仙数是指一个三位数,其个位数立方和等于本身,例如:153=13+53+33
  4. 回文数是121置换后还是其本身,而132就不是回文数,因为置换后是231。
  5. 思路:
  6. 1,要打印所有三位数中既是水仙数又是回文数的数,使用for循环,定义x,从100遍历到999
  7. 2,定义一个容器,把水仙数存起来
  8. 3,判断x是否为水仙数,如果是,存入容器,再判断是否为回文数,如果也是则打印
  9. 4,定义一个自增变量i,初始化为0,每打印一次既是水仙数又是回文数的数,自增一次,如果i=0;
  10. 则打印存入容器的所有水仙数。
  11. */

  12. class Test2_2
  13. {
  14. public static void main(String[] args)
  15. {

  16. StringBuffer sb=new StringBuffer();//定义一个容器,用来存水仙数
  17. int i=0;
  18. int a,b,c,z;
  19. for(int x=100;x<=999;x++)
  20. {
  21. a=x/100;//获取百位数
  22. b=x/10-a*10;//获取十位数
  23. c=x-a*100-b*10;//获取个位数
  24. z=c*100+b*10+a;//将x各位位置置换
  25. if(x==a*a*a+b*b*b+c*c*c)
  26. {
  27. sb.append(x+" ");//是水仙数则,存入容器中,并加上空格,以区分开来

  28. if(x==z)//判断是否为回文数
  29. {
  30. System.out.println(x);
  31. i++;//如果i增加了说明有回文数
  32. }
  33. }

  34. }
  35. if(i==0)//i还是初始值,说明没有回文数
  36. System.out.println(sb);//打印存在容器中的水仙数
  37. }
  38. }
复制代码

2-2.png (3.14 KB, 下载次数: 0)

2-2.png

作者: 杨晓燕    时间: 2013-6-29 22:54
本帖最后由 杨晓燕 于 2013-6-30 09:25 编辑

  1. /*
  2. 需求:打印出100到200之间中即不是回文数又不是素数又不是水仙数的所有数的和。
  3. 思路:
  4. 1,因为是求和,所以定义变量sum记录满足条件的数的和
  5. 2,使用for循环遍历100,到200之间的数
  6. 3,判断该数是否满足以上条件,如果都不满足,则求和
  7. */
  8. class Test2_3
  9. {
  10. public static void main(String[] args)
  11. {
  12. int sum=0;
  13. int a,b,c,s;
  14. for(int i=100;i<=200;i++)
  15. {
  16. a=i/100;//获取百位数
  17. b=i/10-a*10;//获取十位数
  18. c=i-a*100-b*10;//获取个位数
  19. //将x各位位置置换
  20. s=a*a*a+b*b*b+c*c*c;
  21. for(int y=2;y<=i/2;y++)//又定义一个for循环,以便求出x是否为素数
  22. {
  23. if(i%y==0&&a!=c&&i!=s)
  24. {
  25. sum+=i;

  26. break;
  27. }

  28. }
  29. }
  30. System.out.println(sum);

  31. }
  32. }
复制代码
发现昨日的做错了,重新编辑了一下

2-3.png (2.25 KB, 下载次数: 0)

2-3.png

作者: 李九一    时间: 2013-6-29 22:56
  1. /*
  2. * 1.两个兵乓球队进行比赛,各出三个人。各队选手的编号均为1号,2号,3号,抽签决定比赛名单,
  3. * 有人向队员打听比赛的名单。甲队1号说不和乙队的1号比,甲队的3号说不和乙队的1号和3号比,
  4. * 请编程找出两队的赛手名单。`               
  5. * */
  6. package com.itheima;
  7. public class test11 {
  8.         public static void main(String[] args) {
  9.                         char a,b,c;/*a是甲队1号对手,b是甲队2号对手,c甲队3号对手*/
  10.                         for(a='i';a<='k';a++)
  11.                                 for(b='i';b<='k';b++){
  12.                                         if(a!=b)
  13.                                         for(c='i';c<='k';c++){
  14.                                                 if(a!=c&&b!=c){
  15.                                                 if(a!='i'&&c!='i'&&c!='k')
  16.                                                         System.out.println("甲队1号 VS "+a+"\n甲队2号 VS"+b+"\n甲队3号 VS"+c);
  17.                                                
  18.                                         }
  19.                                 }
  20.         }System.out.println("i,j,k分别代表乙队的1,2,3号");
  21.         }
  22. }
复制代码

比赛匹配.jpg (136.98 KB, 下载次数: 0)

结果

结果

作者: 李九一    时间: 2013-6-29 23:23
/*2.打印出所有三位数中即是水仙数又是回文数的数,如果没有这个数那么输出所有的水仙数。
         水仙数是指一个三位数,其个位数立方和等于本身,例如:153=13+53+33
         回文数是121置换后还是其本身,而132就不是回文数,因为置换后是231。
*/
package com.itheima;
public class test12 {
        //判断是否是水仙花数
        public static boolean IsNarcissusNumber(int n){
            int i, j, k;
            i = n / 100;
            j = n / 10%10;
            k = n % 10;
            if (i * i * i + j * j * j + k * k * k == n)
                return true;
            else
                return false;
        }
        //判断是否是回文数
        public static boolean isHuiWenShu(int n){
                 int i, j, k;
           i = n / 100;
           j = n / 10%10;
           k = n % 10;
           if (i  + j *10+ k * 100== n)
               return true;
           else
               return false;
        }

        public static void main(String[] args) {
                for(int i=100;i<1000;i++){
                        if(IsNarcissusNumber(i)&&isHuiWenShu(i))//判断即是水仙数又是回文数的数
                                System.out.print(" "+i);
                        else if(IsNarcissusNumber(i)){//只打印水仙花数
                                System.out.print(" "+i);
                        }
                }
        }
}


水仙花数.jpg (100.44 KB, 下载次数: 0)

水仙花数.jpg

作者: ytblght55    时间: 2013-6-29 23:40

  1. public class Test {

  2. /**
  3. *
  4. 1.两个兵乓球队进行比赛,各出三个人。各队选手的编号均为1号,2号,3号,
  5. 抽签决定比赛名单,有人向队员打听比赛的名单。
  6. 甲队1号说不和乙队的1号比,
  7. 甲队的3号说不和乙队的1号和3号比,请编程找出两队的赛手名单。
  8. 2.打印出所有三位数中即是水仙数又是回文数的数,如果没有这个数那么输出所有的水仙数。
  9. 水仙数是指一个三位数,其个位数立方和等于本身,例如:153=13+53+33
  10. 回文数是121置换后还是其本身,而132就不是回文数,因为置换后是231。
  11. 3.打印出100到200之间中即不是回文数又不是素数又不是水仙数的所有数的和。

  12. * @param args
  13. */
  14. public static void main(String[] args) {
  15. // TODO Auto-generated method stub
  16. System.out.println("这是第一题的要求,比赛的名单");
  17. getVs();//得到比赛的名单
  18. System.out.println("打印即是水仙花又是回数的数,如果没有打印水仙花数");
  19. getNumber();//得到水仙花数或者回数的数
  20. System.out.println("打印100-200不是素数不是回数也不是水仙花数的和");
  21. getSum();//得到要求三的方法
  22. }
  23. //定义2队分别代表甲队成员a,b,c.乙队的选手x,y,z.
  24. //判断比赛的名单,条件是甲队的a不和x进行比赛.甲队的c不和乙队的x,y比
  25. public static void getVs()
  26. { //定义2队分别代表甲队成员a,b,c.乙队的选手x,y,z.
  27. char i,j,k; //定义第三方变量分别表示:i是a的对手,j是b的对手,k是c的对手
  28. for(i='x';i<='z';i++) {//重点就是a,b,c和x,y,z按照ASCII值来看待
  29. for(j='x';j<='z';j++){
  30. if(i!=j) //
  31. for(k='x';k<='z';k++){
  32. if(i!=k && j!=k){ //
  33. if(i!='x' && k!='x'&& k!='z')
  34. System.out.println(" a Vs "+i+"\n b Vs "+j+"\n c Vs "+k);
  35. }
  36. }
  37. }
  38. }
  39. }
  40. /*打印出所有三位数中即是水仙数又是回文数的数,如果没有这个数那么输出所有的水仙数。
  41. 水仙数是指一个三位数,其个位数立方和等于本身,例如:153=13+53+33
  42. 回文数是121置换后还是其本身,而132就不是回文数,因为置换后是231。*/
  43. public static void getNumber()
  44. {
  45. for (int i = 100; i < 999; i++) {//遍历三位数,判断
  46. int a=i%10;//个位数
  47. int b=i/10%10;//十位数
  48. int c=i/10/10%10;//百位数
  49. if (a*a*a+b*b*b+c*c*c==i&&a==c) {//判断又是回数又是水仙花水的数字
  50. System.out.print(i+" ");
  51. }
  52. else if(a*a*a+b*b*b+c*c*c==i){//如果是水仙花数输出
  53. System.out.print(i+" ");
  54. }
  55. }
  56. System.out.println();
  57. }
  58. //打印出100到200之间中即不是回文数又不是素数又不是水仙数的所有数的和。
  59. public static void getSum()
  60. {
  61. int sum=0;//用sum来接收和
  62. loop:for (int i = 100; i <=200; i++) {//遍历100-200之间的数
  63. int a=i%10;//个位数
  64. int b=i/10%10;//十位数
  65. int c=i/10/10%10;//百位数
  66. for (int j = 2; j <i; j++) {//被除数从2到i
  67. if (i%j==0&&a!=c&&a*a*a+b*b*b+c*c*c!=i) {//这些数要满足不是素数不是水仙花数也不是回数
  68. System.out.print(i+" ");
  69. sum+=i;//记录sum的值
  70. continue loop;//跳出内循环到外循环
  71. }
  72. }
  73. }
  74. System.out.println();
  75. System.out.print("满足条件的数的和sum="+sum);
  76. }
  77. }

复制代码
运行的结果完美符合题目的要求!!!!

作者: 李九一    时间: 2013-6-29 23:46
  1. // 3.打印出100到200之间中即不是回文数又不是素数又不是水仙数的所有数的和。
  2. package com.itheima;

  3. public class test13 {
  4.         //判断是否是水仙花数
  5.                 public static boolean IsNarcissusNumber(int n){
  6.                     int i, j, k;
  7.                     i = n / 100;
  8.                     j = n / 10%10;
  9.                     k = n % 10;
  10.                     if (i * i * i + j * j * j + k * k * k == n)
  11.                         return true;
  12.                     else
  13.                         return false;
  14.                 }
  15.                 //判断是否是回文数
  16.                 public static boolean isHuiWenShu(int n){
  17.                          int i, j, k;
  18.                    i = n / 100;
  19.                    j = n / 10%10;
  20.                    k = n % 10;
  21.                    if (i  + j *10+ k * 100== n)
  22.                        return true;
  23.                    else
  24.                        return false;
  25.                 }

  26.         public static void main(String[] args) {
  27.                 int sum=0;
  28.                 for(int i=100;i<=200;i++){
  29.                         if(IsNarcissusNumber(i)||isHuiWenShu(i))
  30.                                 continue;
  31.                                 else
  32.                                 sum+=i;
  33.                 }
  34. System.out.println("100到200之间中即不是回文数又不是素数又不是水仙数的所有数的和"+sum);
  35.         }

  36. }
复制代码

非水仙花和回文数的和.jpg (115.14 KB, 下载次数: 0)

非水仙花和回文数的和.jpg

作者: lou413    时间: 2013-6-29 23:49

运行结果


作者: ytblght55    时间: 2013-6-29 23:54
楼主给分哦亲!!
作者: 傲鸽    时间: 2013-6-30 00:03

作者: 傲鸽    时间: 2013-6-30 00:08
楼主您好,我不知道怎么把帖子设置成仅作者可见
作者: lou413    时间: 2013-6-30 00:25

运行结果


作者: 张海龙    时间: 2013-6-30 13:30
/*
第三题
*/
class number{
        number(int x){
                this.m=x;
        }
        public boolean shuixian(int m){//判断水仙数的函数
                int x=m/100;
                int y=(m%100)/10;
                int z=m%10;
                int n=x*x*x+y*y*y+z*z*z;
                if(m==n)
                        return true;
                else return false;
        }
        public boolean huiwen(int m){//判断回文书的函数
                int x=m/100;
                int y=m%10;
                if(x==y)
                        return true;
                else return false;
        }
        public boolean sushu(int m){
                int n=m/2;
                int singal=0;//设置判断素数标志
                for(int i=2;i<=n;i++){
                        if(m%i==0){
                                singal=1;;
                        }
                }
                if(singal==1)//标志改变,不是素数
                        return false;
                else return true;
        }
        private int m;
}
public class Test4 {
        public static void main(String[] args){
                int sum=0;
        for(int i=100;i<=200;i++){
                number num=new number(i);
                if((num.huiwen(i)==false)&&(num.sushu(i)==false)&&(num.shuixian(i)==false)){
                        sum+=i;
                }
        }
        System.out.println(sum);
        }
}
/*
刚学了面向对像,就用类写了下,第二题
*/
/*
定义一个number类,
*/
class Number{
        Number(int x){
                this.x=x;
        }
        public boolean shuixian(int m){//判断水仙数的函数
                int x=m/100;
                int y=(m%100)/10;
                int z=m%10;
                int n=x*x*x+y*y*y+z*z*z;
                if(m==n)
                        return true;
                else return false;
        }
        public boolean huiwen(int m){//判断回文书的函数
                int x=m/100;
                int y=m%10;
                if(x==y)
                        return true;
                else return false;
        }
        private int x;
}

class Test3 {
        public static void main(String[] args){
                for(int i=100;i<1000;i++){
                Number num=new Number(i);//创建number对象
                if((num.shuixian(i)==true)&&(num.huiwen(i)==true))//判断即是否是水仙数又是回文数的数
                        System.out.println(i);
                else if(num.shuixian(i)==true)//判断是否是水仙数
                        System.out.println(i);
                }
        }

}
我截的图发不上去。怎么办。我第一题不会做,麻烦你把答案发我邮箱809494869@qq.com。我看看,谢谢
作者: vicoooo    时间: 2013-6-30 15:46
  1. import java.util.HashMap;
  2. /*
  3.   1.两个兵乓球队进行比赛,各出三个人。各队选手的编号均为1号,2号,3号,抽签决定比赛名单,有人向队员打听比赛的名单。
  4.          甲队1号说不和乙队的1号比,甲队的3号说不和乙队的1号和3号比,请编程找出两队的赛手名单。
  5. */
  6. public class Test{        
  7.         //HashMap 存储选手被选中状态来做        
  8.         public static void main(String args[]){            
  9.                 String[] m ={"J3","J1","J2"};//甲队-先按提供信息详细程度把他们排好(容易的先入手)            
  10.                 String[] n ={"Y1","Y2","Y3"};//乙队         
  11.                 HashMap<String,Integer> hm = new HashMap<String,Integer>();
  12.                 //存储队员已有对手了吗           
  13.                 //初始都没有对手 ,定义0代表还没有对手         
  14.                 hm.put("J1",0);           
  15.                 hm.put("J2",0);           
  16.                 hm.put("J3",0);            
  17.                 hm.put("Y1",0);            
  18.                 hm.put("Y2",0);           
  19.                 hm.put("Y3",0);            
  20.                 for(int i=0;i<3;i++){               
  21.                         for(int j=0;j<3;j++){  
  22.                                 //甲队1号说不和乙队的1号比
  23.                                 if(i==1&&j==0)
  24.                                         continue;     
  25.                                 //甲队的3号说不和乙队的1号和3号比
  26.                                 if(i==0&&(j==0||j==2))
  27.                                         continue;   
  28.                                 //将没有对手的选手找出
  29.                                 if(hm.get(m[i])==0&&hm.get(n[j])==0){                  
  30.                                         //都没有对手就把他们设成对手                    
  31.                                         //他们的状态改为已有对手                    
  32.                                         hm.remove(m[i]);
  33.                                         //改成已有对手
  34.                                         hm.put(m[i],1);                  
  35.                                         hm.remove(n[j]);  
  36.                                         //改成已有对手
  37.                                         hm.put(n[j],1);                    
  38.                                         System.out.println(m[i]+" vs "+n[j]);               
  39.                                         }           
  40.                                 }      
  41.                         }  
  42.                 }
  43.         }      
复制代码
答案:
J3 vs Y2
J1 vs Y3
J2 vs Y1
------------------------------------------------
题目二:
  1. import java.util.ArrayList;
  2. import java.util.List;
  3. /*
  4. 2.打印出所有三位数中即是水仙数又是回文数的数,如果没有这个数那么输出所有的水仙数。
  5. */
  6. public class Test02 {

  7.         public static void main(String[] args) {
  8.                 List<Integer> list = fun1();
  9.                 //输出既是回文数又是水仙数的数,如果没有这个数那么输出所有的水仙数
  10.                 if(list.size()!=0){
  11.                         for(Integer i : list){
  12.                                 System.out.println(i);
  13.                         }
  14.                 }else{
  15.                         //输出水仙数
  16.                         shuiXina();
  17.                 }
  18.         }
  19.         //找出所有三位数是水仙数的数 例如:153=1^3+5^3+3^3
  20.         public static void shuiXina(){
  21.                 int a1,a2,a3;
  22.                 for(int i=100;i<1000;i++){
  23.                         a1 = i/100;
  24.                         a2 = i%100/10;
  25.                         a3 = i%10;
  26.                         if(a1*a1*a1+a2*a2*a2+a3*a3*a3==i){
  27.                                 System.out.println(i);
  28.                         }
  29.                 }
  30.         }
  31.         //找出既是水仙数又是回文数的数
  32.         public static List<Integer> fun1(){
  33.                 int a1,a2,a3;       
  34.                 List<Integer> list = new ArrayList<Integer>();
  35.                 for(int i=100;i<1000;i++){
  36.                         a1 = i/100;
  37.                         a2 = i%100/10;
  38.                         a3 = i%10;
  39.                         //既是水仙数又是回文数的数
  40.                         if(a1==a3&&a1*a1*a1+a2*a2*a2+a3*a3*a3==i){
  41.                                 list.add(i);
  42.                         }
  43.                 }
  44.                 return list;
  45.         }
  46. }
复制代码
答案:
153
370
371
407
-------------------------
题目三:
  1. //  3.打印出100到200之间中即不是回文数又不是素数又不是水仙数的所有数的和。
  2. public class Test03 {

  3.         public static void main(String[] args){
  4.                
  5.                 int a1,a2,a3;
  6.                 int sum = 0;
  7.                 for(int i=100;i<=200;i++){
  8.                         a1 = i/100;
  9.                         a2 = i%100/10;
  10.                         a3 = i%10;
  11.                         //既不是回文数又不是素数又不是水仙数--第一步缩小范围,找出既不是回文数又不是水仙数的数
  12.                         if(!(a1==a3||a1*a1*a1+a2*a2*a2+a3*a3*a3==i)){                       
  13.                                 for(int j=2;j<i-1;j++){
  14.                                         //找出又不是素数的数并求和
  15.                                         if(i%j==0){
  16.                                                 System.out.println(i);
  17.                                                 sum += i;
  18.                                                 break;
  19.                                         }
  20.                                 }
  21.                         }
  22.                 }
  23.                 System.out.println("sum="+sum);
  24.         }
  25.        
  26. }
复制代码
答案:
如果包括100和200
sum=11125
如果只包括100
sum=10925
如果都不包括
sum=10825

2013-06-30_154124.jpg (5.78 KB, 下载次数: 0)

2013-06-30_154124.jpg

2013-06-30_154200.jpg (7.41 KB, 下载次数: 0)

2013-06-30_154200.jpg

2013-06-30_154623.jpg (6.05 KB, 下载次数: 0)

2013-06-30_154623.jpg

作者: 王楚鑫    时间: 2013-6-30 18:44
第二题
  1. /*
  2. 需求:打印出所有三位数中即是水仙数又是回文数的数,如果没有这个数那么输出所有的水仙数。
  3.          水仙数是指一个三位数,其个位数立方和等于本身,例如:153=13+53+33
  4.          回文数是121置换后还是其本身,而132就不是回文数,因为置换后是231。
  5. 思路:  1.三位数循环
  6.         2.判断是否是水仙数
  7.         3.若是水仙数,判断是否是回文数,并标识
  8.         4.若存在即是水仙数又是回文数的数,则打印输出,否则保存当前水仙数
  9. */
  10. import javax.swing.JOptionPane;
  11. public class Flower  
  12. {  
  13.         public static boolean sNumber(int i)//定义函数,判断是否是水仙数(水仙数是指一个三位数,其个位数立方和等于本身)
  14.         {
  15.                 int ge,shi,bai;
  16.                 bai=i/100;
  17.                 shi=i%100/10;
  18.                 ge=i%10;
  19.                 if(i==ge*ge*ge+shi*shi*shi+bai*bai*bai)//满足水仙数条件,返回真
  20.                         return true;
  21.                 return false;       
  22.         }
  23.         public static boolean hNumber(int i)//定义函数,判断是否是回文数(回文数是121置换后还是其本身,而132就不是回文数,因为置换后是231)
  24.         {
  25.                 int ge,bai;
  26.                 bai=i/100;
  27.                 ge=i%10;
  28.                 if(ge==bai)
  29.                         return true;//满足回文数条件,返回真
  30.                 return false;
  31.         }  
  32.         public static void main(String args[])  
  33.         {
  34.                 int[] s=new int[1000];//保存水仙数
  35.                 int m=0;//标识水仙数的个数
  36.                
  37.                 int n=0;//标识即是水仙数又是回文数的数的个数

  38.                 for(int i=100;i<1000;i++)
  39.                 {
  40.                         if(sNumber(i))//调用判断是否是水仙花数的函数
  41.                         {
  42.                                 if(hNumber(i))//调用判断是否是回文数的函数
  43.                                 {
  44.                                         System.out.print(i+" ");//把满足条件的数输出
  45.                                         n++;
  46.                                         if(n!=0)
  47.                                                 continue;       
  48.                                 }
  49.                                 s[m++]=i;
  50.                         }         
  51.                 }
  52.                 if(n==0)//如果没有即是水仙数又是回文数的数字,输出所有水仙数
  53.                 {
  54.                         System.out.println("不存在即是水仙数又是回文数的三位数,三位数的水仙数如下:");
  55.                         for(int i=0;i<m;i++)
  56.                                 System.out.print(s[i]+" ");
  57.                 }   
  58.         }  
  59. }
复制代码
第三题
  1. /*
  2. 需求:打印出100到200之间中即不是回文数又不是素数又不是水仙数的所有数的和。
  3. 思路:  1.100到200之间循环
  4.         2.判断是否是水仙数,回文数,素数
  5.         3.同时满足此条件的则累加求和,打印输出
  6. */
  7. import javax.swing.JOptionPane;
  8. public class Sum  
  9. {  
  10.         public static boolean sNumber(int i)//定义函数,判断是否是水仙数(水仙数是指一个三位数,其个位数立方和等于本身)
  11.         {
  12.                 int ge,shi,bai;
  13.                 bai=i/100;
  14.                 shi=i%100/10;
  15.                 ge=i%10;
  16.                 if(i==ge*ge*ge+shi*shi*shi+bai*bai*bai)//满足水仙数条件,返回真
  17.                         return true;
  18.                 return false;       
  19.         }


  20.         public static boolean hNumber(int i)//定义函数,判断是否是回文数(回文数是121置换后还是其本身,而132就不是回文数,因为置换后是231)
  21.         {
  22.                 int ge,bai;
  23.                 bai=i/100;
  24.                 ge=i%10;
  25.                 if(ge==bai)
  26.                         return true;//满足回文数条件,返回真
  27.                 return false;
  28.         }


  29.         public static boolean Prime(int i)//定义函数,判断是否是素数(素数,只能被1和本身整除的数)
  30.         {
  31.                 int j;
  32.                 for(j=2;j<i/2;j++)
  33.                 {
  34.                         if(i%j==0)break;       
  35.                 }
  36.                 if(j>i/2)
  37.                         return true;
  38.                 return false;
  39.         }


  40.         public static void main(String args[])  
  41.         {
  42.                 int sum=0;//保存和

  43.                 for(int i=100;i<200;i++)
  44.                 {
  45.                         if(!sNumber(i) && !hNumber(i) && !Prime(i))//调用函数选择即不是回文数又不是素数又不是水仙数的数累加求和
  46.                         {
  47.                                 //System.out.print(i+" ");
  48.                                 sum+=i;
  49.                         }         
  50.                 }

  51.                 System.out.println("sum="+sum);
  52.                        
  53.         }  
  54. }
复制代码

作者: 王楚鑫    时间: 2013-6-30 21:36
  1. /*
  2. 需求:打印出所有三位数中即是水仙数又是回文数的数,如果没有这个数那么输出所有的水仙数。
  3.          水仙数是指一个三位数,其个位数立方和等于本身,例如:153=13+53+33
  4.          回文数是121置换后还是其本身,而132就不是回文数,因为置换后是231。
  5. 思路:  1.三位数循环
  6.         2.判断是否是水仙数
  7.         3.若是水仙数,判断是否是回文数,并标识
  8.         4.若存在即是水仙数又是回文数的数,则打印输出,否则保存当前水仙数
  9. */
  10. import javax.swing.JOptionPane;
  11. public class Flower  
  12. {  
  13.         public static boolean sNumber(int i)//定义函数,判断是否是水仙数(水仙数是指一个三位数,其个位数立方和等于本身)
  14.         {
  15.                 int ge,shi,bai;
  16.                 bai=i/100;
  17.                 shi=i%100/10;
  18.                 ge=i%10;
  19.                 if(i==ge*ge*ge+shi*shi*shi+bai*bai*bai)//满足水仙数条件,返回真
  20.                         return true;
  21.                 return false;        
  22.         }
  23.         public static boolean hNumber(int i)//定义函数,判断是否是回文数(回文数是121置换后还是其本身,而132就不是回文数,因为置换后是231)
  24.         {
  25.                 int ge,bai;
  26.                 bai=i/100;
  27.                 ge=i%10;
  28.                 if(ge==bai)
  29.                         return true;//满足回文数条件,返回真
  30.                 return false;
  31.         }  
  32.         public static void main(String args[])  
  33.         {
  34.                 int[] s=new int[1000];//保存水仙数
  35.                 int m=0;//标识水仙数的个数
  36.                
  37.                 int n=0;//标识即是水仙数又是回文数的数的个数

  38.                 for(int i=100;i<1000;i++)
  39.                 {
  40.                         if(sNumber(i))//调用判断是否是水仙花数的函数
  41.                         {
  42.                                 if(hNumber(i))//调用判断是否是回文数的函数
  43.                                 {
  44.                                         System.out.print(i+" ");//把满足条件的数输出
  45.                                         n++;
  46.                                         if(n!=0)
  47.                                                 continue;        
  48.                                 }
  49.                                 s[m++]=i;
  50.                         }         
  51.                 }
  52.                 if(n==0)//如果没有即是水仙数又是回文数的数字,输出所有水仙数
  53.                 {
  54.                         System.out.println("不存在即是水仙数又是回文数的三位数,三位数的水仙数如下:");
  55.                         for(int i=0;i<m;i++)
  56.                                 System.out.print(s[i]+" ");
  57.                 }   
  58.         }  
  59. }
复制代码
第三题
  1. /*
  2. 需求:打印出100到200之间中即不是回文数又不是素数又不是水仙数的所有数的和。
  3. 思路:  1.100到200之间循环
  4.         2.判断是否是水仙数,回文数,素数
  5.         3.同时满足此条件的则累加求和,打印输出
  6. */
  7. import javax.swing.JOptionPane;
  8. public class Sum  
  9. {  
  10.         public static boolean sNumber(int i)//定义函数,判断是否是水仙数(水仙数是指一个三位数,其个位数立方和等于本身)
  11.         {
  12.                 int ge,shi,bai;
  13.                 bai=i/100;
  14.                 shi=i%100/10;
  15.                 ge=i%10;
  16.                 if(i==ge*ge*ge+shi*shi*shi+bai*bai*bai)//满足水仙数条件,返回真
  17.                         return true;
  18.                 return false;        
  19.         }


  20.         public static boolean hNumber(int i)//定义函数,判断是否是回文数(回文数是121置换后还是其本身,而132就不是回文数,因为置换后是231)
  21.         {
  22.                 int ge,bai;
  23.                 bai=i/100;
  24.                 ge=i%10;
  25.                 if(ge==bai)
  26.                         return true;//满足回文数条件,返回真
  27.                 return false;
  28.         }


  29.         public static boolean Prime(int i)//定义函数,判断是否是素数(素数,只能被1和本身整除的数)
  30.         {
  31.                 int j;
  32.                 for(j=2;j<i/2;j++)
  33.                 {
  34.                         if(i%j==0)break;        
  35.                 }
  36.                 if(j>i/2)
  37.                         return true;
  38.                 return false;
  39.         }


  40.         public static void main(String args[])  
  41.         {
  42.                 int sum=0;//保存和

  43.                 for(int i=100;i<200;i++)
  44.                 {
  45.                         if(!sNumber(i) && !hNumber(i) && !Prime(i))//调用函数选择即不是回文数又不是素数又不是水仙数的数累加求和
  46.                         {
  47.                                 //System.out.print(i+" ");
  48.                                 sum+=i;
  49.                         }         
  50.                 }

  51.                 System.out.println("sum="+sum);
  52.                         
  53.         }  
  54. }
复制代码
这次能不能看到啊???【挠头】
作者: ytblght55    时间: 2013-6-30 21:41
ytblght55 发表于 2013-6-29 23:54
楼主给分哦亲!!

楼主啊.用字母和数字不都一样吗....... 用字母更直观...数字更不直观 本来想用个二维数组的...
作者: 张海龙    时间: 2013-6-30 21:47
张海龙 发表于 2013-6-30 13:30
/*
第三题
*/

我截的图粘贴不上去
作者: ytblght55    时间: 2013-6-30 21:51
ytblght55 发表于 2013-6-29 23:54
楼主给分哦亲!!

有道理... 问题是怎么遍历这中带中文字的字符串...  
作者: 水。。。海    时间: 2013-7-1 00:26
搞了半天累死我了终于搞完了第一题
  1. /**1.两个兵乓球队进行比赛,各出三个人。各队选手的编号均为1号,2号,3号,抽签决定比赛名单,有人向队员打听比赛的名单。
  2.          甲队1号说不和乙队的1号比,甲队的3号说不和乙队的1号和3号比,请编程找出两队的赛手名单。
  3. */
  4. /*思路:1.把两队的球员分别用连续的字母表示。
  5.                 2.然后通过for循环来判断筛选
  6. */
  7. class BiSai
  8. {
  9.         public static void main(String[] args)
  10.         {
  11.                 char i,j,k;
  12.                 //定义甲队的选手为a b c
  13.                 //乙队的选手为l m n
  14.                 char a='a',b='b',c='c';   
  15.                 char l,m,n;
  16.                
  17.                 for(i='m';i>'l'&&i<'n' ;i++ )    //用第三方变量记录甲队3号要比赛的对手,并且根据ASCII码这几个数在一起来思考
  18.                 {
  19.                         c=i;
  20.                 }
  21.                 for(j='l';j>='l'&&j<='n';j++)
  22.                 {
  23.                         if(j!=c)
  24.                                 a=j;
  25.                 }
  26.                 for(k='l';k>='l'&&k<'n';k++)
  27.                 {
  28.                         if(k!=a&&k!=c)
  29.                         b=k;
  30.                        
  31.                 }
  32.                 System.out.println("a vs "+a+" b vs "+b+" c vs "+c);
  33.         }
  34. }
复制代码
第二题
  1. /**2.打印出所有三位数中即是水仙数又是回文数的数,如果没有这个数那么输出所有的水仙数。
  2.          水仙数是指一个三位数,其个位数立方和等于本身,例如:153=13+53+33
  3.          回文数是121置换后还是其本身,而132就不是回文数,因为置换后是231。
  4. *@author 倪成伟
  5. */
  6. /*
  7. 思路:1.将三位数的各个位取出用变量代替
  8.           2.通过for循环来实现遍历所有三位数
  9.           3.通过StringBuffer来接受所需值
  10. */
  11. class Shu
  12. {
  13.         public static void main(String[] args)
  14.         {
  15.                 int x=1,y,z,s,h,m,n,i=0,a=0;
  16.                 StringBuffer sb=new StringBuffer();
  17.                 StringBuffer sb1=new StringBuffer();                                        //用StringBuffer接受所要值
  18.                 while(x>0&&x<=9)                        //while循环控制百位数
  19.                 {
  20.                         for(y=0;y>=0&&y<10;y++)
  21.                         {
  22.                                 for(z=0;z>=0&&z<10;z++)
  23.                                 {
  24.                                         m=(x*100+y*10+z);      //将xyz转换为三位数付给m
  25.                                         n=(x*x*x+y*y*y+z*z*z);  //三位数各个位三次方后付给n
  26.                                         h=(z*100+y*10+x);                //各位和百位互换后的值付给h
  27.                                         if(m==n&&m==h)                        //判断看是否是所需值
  28.                                         {
  29.                                                 sb.append(m+"  ");
  30.                                         }                                               
  31.                                         if(m==n)
  32.                                         {
  33.                                                 sb1.append(m+"  ");
  34.                                         }
  35.                                 }
  36.                         }
  37.                         x++;
  38.                 }
  39.                 System.out.print("即是水仙数又是回文数的数:");
  40.                 System.out.println(sb);
  41.                 System.out.print("全部水仙数:");
  42.                 System.out.println(sb1);
  43.         }
  44. }
复制代码
第三题
  1. /**
  2. *3.打印出100到200之间中即不是回文数又不是素数又不是水仙数的所有数的和。
  3. *@author 倪成伟
  4. */
  5. /*思路:1.通过for循环找出不是素数的数。
  6.                 2.然后建立一个函数确定所需数。
  7.                 3.通过累加计数完成求和。
  8. */
  9. class ShuHe
  10. {
  11.         public static void main(String[] args)
  12.         {
  13.                 int x,sum=0;
  14.                 for(x=100;x<=200;x++)
  15.                 {
  16.                         w:for(int m=2;m<x;m++)                        //用循环来判断是不是素数
  17.                         {
  18.                                 if(x%m==0)
  19.                                 {
  20.                                         sum+=panDuan(x);                //累加计数
  21.                                         break w;                                //选中数后跳出循环
  22.                                 }                               
  23.                         }
  24.                 }
  25.                 System.out.println(sum);
  26.         }
  27.         public static int panDuan(int a)     //定义一个函数输入不是素数的数并判断是不是水仙数和回文数
  28.         {
  29.                 int x,y,z,h,sum=0,n;
  30.                 x=a/100;
  31.                 y=(a-100)/10;
  32.                 z=(a-x*100-y*10);
  33.                 n=(x*x*x+y*y*y+z*z*z);  
  34.                 h=(z*100+y*10+x);                               
  35.                 if(a!=n&&a!=h)
  36.                 sum=a;
  37.                 return sum;                                //返回选定的值
  38.         }                       
  39. }
复制代码

BVO6$FK@U6~C0EI77G~E6IW.jpg (9.28 KB, 下载次数: 0)

BVO6$FK@U6~C0EI77G~E6IW.jpg

作者: ㄗs:/|丶hearts    时间: 2013-7-1 00:44
本帖最后由 ㄗs:/|丶hearts 于 2013-7-1 00:49 编辑

第2题 第3题 放一起了
  1. package com.java.test;

  2. public class NumTest {

  3.         
  4.         /**
  5.          *
  6.          * @param args
  7.          * 2.打印出所有三位数中即是水仙数又是回文数的数,如果没有这个数那么输出所有的水仙数。
  8.          * 水仙数是指一个三位数,其个位数立方和等于本身,例如:153=13+53+33
  9.          * 回文数是121置换后还是其本身,而132就不是回文数,因为置换后是231。
  10.          *
  11.          * 3.打印出100到200之间中即不是回文数又不是素数又不是水仙数的所有数的和。
  12.          *      
  13.          */
  14.         public static void main(String[] args) {
  15.                 // TODO Auto-generated method stub

  16.                 //打印出所有三位数中即是水仙数又是回文数的数,如果没有这个数那么输出所有的水仙数。
  17.                 for(int i = 100; i < 1000; i++){
  18.                         //如果即是水仙数又是回文数  打印该数      否则打印所有水仙数
  19.                         if(isDoffodils(i) && isHuiwen(i)){
  20.                                 System.out.println(i);
  21.                         }else {
  22.                                 //打印所有水仙数
  23.                                 if(isDoffodils(i))
  24.                                         System.out.println(i);
  25.                         }
  26.                                 
  27.                 }
  28.                 System.out.println("---------------------");
  29.                
  30.                 //打印出100到200之间中即不是回文数又不是素数又不是水仙数的所有数的和。
  31.                 int sum = 0;
  32.                 for(int i = 100; i <= 200; i++){
  33.                         
  34.                        //即不是回文数又不是素数又不是水仙数
  35.                       if(!isDoffodils(i) && !isHuiwen(i) && !isPrime(i)){
  36.                            //System.out.println(i);
  37.                            sum += i;
  38.                       }
  39.                 }
  40.                 System.out.println("sum="+ sum );
  41.         }
  42.         //判断一个三位数 是不是 水仙花 数
  43.         public static Boolean isDoffodils(int i){
  44.                 //百位上的数字
  45.                 int x = i/100;
  46.                 //十位上的数字
  47.                 int y = i%100/10;
  48.                 //个位上的数字
  49.                 int z = i%10;
  50.                
  51.                 //如果是水仙花数 返回true  否则返回false
  52.                 if(i == (Math.pow(x, 3)+Math.pow(y, 3)+Math.pow(z, 3)) ){
  53.                         return true;
  54.                 }
  55.                 return false;
  56.         }
  57.         //判断一个三位数 是不是 回文数
  58.         public static Boolean isHuiwen(int i){
  59.                 //百位上的数字
  60.                 int x = i/100;
  61.                 //十位上的数字
  62.                 int y = i%100/10;
  63.                 //个位上的数字
  64.                 int z = i%10;
  65.                
  66.                 //如果是水仙花数 返回true  否则返回false
  67.                 if(i == (z*100 + y*10 + x))
  68.                         return true;
  69.                
  70.                 return false;
  71.         }
  72.         //判断一个数是不是 素数
  73.         //素数只能被1和它本身整除 -- 如果某个大于1小于它的数 能被这个数本身整除,那么这个数就不是素数;反之则是素数
  74.         public static  Boolean isPrime(int i ) {
  75.                 for(int j = 2; j < i; j++){
  76.                         if(i % j == 0){
  77.                                 return false;
  78.                         }
  79.                 }
  80.                 return true;
  81.         }
  82. }
复制代码

QQ图片20130701004300.jpg (6.19 KB, 下载次数: 0)

QQ图片20130701004300.jpg

作者: emos-c    时间: 2013-7-1 10:05
本帖最后由 emos-c 于 2013-7-1 10:15 编辑

用的都是最简单的知识来做的。
2.打印出所有三位数中既是水仙数又是回文数的数,如果没有这个数,那么输出所有的水仙数。
思路
1.首先需要遍历所有的三位数 100-999。用3个变量来表示一个三位数 a*100+b*10+c
2.水仙数:a*a*a+b*b*b+c*c*c=a*100+b*10+c。回文数:a=c
3.当没有既是水仙数又是回文数的数时,输出水仙数。所以要分开判断,当满足既是水仙数又是回文数时,输出打印。如果不能同时满足
时,就把水仙数输出。

  1. <P>class ShuiXianShu
  2. {
  3. public static void main(String[] args)
  4. {
  5. ShuiXian sx=new ShuiXian();
  6. sx.getShuiXianShu();
  7. }
  8. }</P>
  9. <P>class ShuiXian
  10. {
  11. //这其实是一个判断标记,如果既是水仙数又是回文数,该变量将被赋值。如果循环结束后num仍为0,说明没有符合条件的数。
  12. int num=0;
  13. public void getShuiXianShu()
  14. {
  15. int a,b,c;
  16. //通过三个for循环实现用a,b,c三个变量从100到999遍历
  17. for (a=1;a<10 ;a++ )
  18. {
  19. for (b=0;b<10 ;b++ )
  20. {
  21. for (c=0;c<10 ;c++ )
  22. {
  23. //判断是否同时是回文数和水仙数。如果是,就输出打印。也可以分成两次判断,先判断水仙数并用毕老师在进制转换里讲到的StringBuffer,用append方法把水仙数记下来
  24. if (a==c && a*100+b*10+c==a*a*a+b*b*b+c*c*c)
  25. {
  26. num=a*100+b*10+c;
  27. System.out.println(num);
  28. }
  29. }
  30. }
  31. }
  32. //判断如果没有同时满足的数,就只打印水仙数。在这里如果用打印StringBuffer对象把存储的水仙数打印也可以,就不用重新判断了,但是元素之间不会用逗号隔开,所以又判断了一次。
  33. if (num==0)
  34. {
  35. System.out.println("没有既是水仙数又是回文数的数,所有的水仙数");
  36. for (a=1;a<10 ;a++ )
  37. {
  38. for (b=0;b<10 ;b++ )
  39. {
  40. for (c=0;c<10 ;c++ )
  41. {
  42. if (a*100+b*10+c==a*a*a+b*b*b+c*c*c)
  43. {
  44. num=a*100+b*10+c;
  45. System.out.println(num);
  46. }
  47. }
  48. }
  49. }
  50. }
  51. }
  52. }
  53. //输出结果:没有既是水仙数又是回文数的数,所有的水仙数153,370,371,407 </P>
复制代码

3.打印出100到200之间既不是回文数,又不是素数,又不是水仙数的所有数的和。
思路:
1.看到关键词100-200之间,求和,知道要用累加思想,遍历这些数
2.遍历过程中,加入判断语句,如果不是回文数,水仙数或素数,就进行累加动作,并用一个变量记住累加的结果。
3.判断时,需要用3个变量来表示一个三位数 a*100+b*10+c。水仙数:a*a*a+b*b*b+c*c*c=a*100+b*10+c。回文数:a=c
4.素数就是在大于1的自然数中,不能被其它自然数整除的数。判断素数代码较长,需要单独封装成一个函数。
5.最后变量中的数就是所要的结果。把它作为返回值传递给调用者。
  1. class QiuHeTest
  2. {
  3. public static void main(String[] args)
  4. {
  5. QiuHe qh=new QiuHe();
  6. System.out.println("它们的和是"+qh.getSum());
  7. }
  8. }
  9. class QiuHe
  10. {
  11. int a,b,c;
  12. public int getSum()
  13. {
  14. int sum=0;
  15. //通过三个for循环实现用a,b,c三个变量从100到200遍历
  16. for (a=1;a<=2;a++ )
  17. {
  18. for (b=0;b<10 ;b++ )
  19. {
  20. for (c=0;c<10 ;c++ )
  21. {
  22. //分别判断该数值是否为回文数,水仙数和素数。素数调用了单独的方法。如果满足不是以上三者,就进行累加。
  23. if (a!=c && a*100+b*10+c!=a*a*a+b*b*b+c*c*c && SuShu(a,b,c))
  24. sum=sum+a*100+b*10+c;
  25. }
  26. }
  27. }
  28. return sum;
  29. }
  30. //判断100到200之间的一个数是不是素数,就先要把这个数传进来
  31. public boolean SuShu(int a,int b,int c)
  32. {
  33. int x=a*100+b*10+c;
  34. for (int y=2;y<x ;y++ )
  35. {
  36. if (x%y==0)
  37. return false;
  38. }
  39. return true;
  40. }

  41. }
  42. //输出结果:它们的和是 6460</P>
复制代码





作者: 殷挥笔    时间: 2013-7-1 10:09
  1. package Demo;

  2. public class DemoTi1 {

  3.         /**
  4.          * @param args
  5.          */
  6.         /*
  7.          * 最终对战:
  8.          *         甲1-乙3
  9.                 甲2-乙1
  10.                 甲3-乙2
  11.          */
  12.         static String[] team1 = {"甲1","甲2","甲3"};
  13.         static String[] team2 = {"乙1","乙2","乙3"};
  14.         public static void main(String[] args) {
  15.         System.out.println("最终的对阵情况为:");
  16.                 for(int i =0;i< team1.length;i++){
  17.                         for(int j = 0;j <team2.length;j++){
  18.                                 if((team1[i] =="甲1" && team2[j]=="乙1")||(team1[i] =="甲1" && team2[j]=="乙2")){
  19.                                         continue;
  20.                                 }else if((team1[i] =="甲2" && team2[j]=="乙2")||(team1[i] =="甲2" && team2[j]=="乙3")){
  21.                                         continue;
  22.                                 }else if((team1[i] =="甲3" && team2[j]=="乙1")||(team1[i] =="甲3" && team2[j]=="乙3")){
  23.                                         continue;
  24.                                 }else{
  25.                                         System.out.println(team1[i] + " vs " + team2[j]);
  26.                                 }
  27.                         }
  28.                 }
  29.          }
  30. }
复制代码
运行结果为:

最终的对阵情况为:
甲1 vs 乙3
甲2 vs 乙1
甲3 vs 乙2
作者: 殷挥笔    时间: 2013-7-1 10:42
  1. package Demo;

  2. public class DemoTi2 {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) {
  7.                 // TODO Auto-generated method stub
  8.                         for(int i=100;i<=999;i++){  
  9.                                         if(ShuiXian(i)==true && HuiWen(i)==true){
  10.                                                 System.out.println("既是水仙数又为回文数的数:"+i);
  11.                                         }else if(ShuiXian(i)==true){
  12.                                                 System.out.println("水仙数:"+i);
  13.                                         }
  14.                         }
  15.         }
  16.         public static boolean ShuiXian(int x){  
  17.                         int i,j,k;
  18.                         i = x/100;
  19.                         j = x%100/10;
  20.                         k = x%10;
  21.                         if(x==i*i*i+j*j*j+k*k*k){
  22.                                 return true;  
  23.                         }else{
  24.                         return false;
  25.                         }
  26.         }
  27.         public static boolean HuiWen(int x){
  28.                         int i,j,k;
  29.                         i = x/100;
  30.                         j = x%100/10;
  31.                         k = x%10;
  32.                         int[] b = new int[]{k,j,i};
  33.                         if(x == k*100+j*10+i){
  34.                                 return true;
  35.                         }else{
  36.                                 return false;
  37.                         }
  38.         }
  39. }
复制代码
输出结果为:
水仙数:153
水仙数:370
水仙数:371
水仙数:407
作者: 殷挥笔    时间: 2013-7-1 11:34
  1. package Demo;

  2. public class DemoTi3 {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) {
  7.                 // TODO Auto-generated method stub
  8.                 int He = 0;
  9.                 for(int i=100;i<=200;i++){
  10.                         if(SuShu(i) == false && ShuiXian(i) == false && HuiWen(i) ==false){
  11.                                 He += i;
  12.                         }
  13.         }
  14.                 System.out.println("和为:"+He);
  15. }
  16.         public static boolean ShuiXian(int x){  
  17.                 int i,j,k;
  18.                 i = x/100;
  19.                 j = x%100/10;
  20.                 k = x%10;
  21.                 if(x==i*i*i+j*j*j+k*k*k){
  22.                         return true;  
  23.                 }else{
  24.                 return false;
  25.         }
  26. }
  27.         public static boolean HuiWen(int x){
  28.                 int i,j,k;
  29.                 i = x/100;
  30.                 j = x%100/10;
  31.                 k = x%10;
  32.                 int[] b = new int[]{k,j,i};
  33.                 if(x == k*100+j*10+i){
  34.                         return true;
  35.                 }else{
  36.                         return false;
  37.                 }
  38.         }
  39.         public static boolean SuShu(int i){
  40.                 int j;
  41.                 boolean fag = false;

  42.                 for (j = 2; j < i; j++){

  43.                 if (i % j== 0){
  44.                         break;
  45.                         }
  46.                 }
  47.                 if(j<i){
  48.                 }
  49.                 else{
  50.                 fag = true;
  51.                         }
  52.                
  53.                 return fag;
  54.         }
  55. }
复制代码
运行结果为:
和为:11125
作者: longlangcx    时间: 2013-7-1 13:18
第一题:
  1. /*
  2. *  题目:        两个兵乓球队进行比赛,各出三个人。各队选手的编号均为1号,2号,3号,抽签决定比赛名单,
  3. *                  有人向队员打听比赛的名单。甲队1号说不和乙队的1号比,甲队的3号说不和乙队的1号和3号比,
  4. *                  请编程找出两队的赛手名单。         
  5. *  
  6. *  思路:        寻找对战名单,相当于确定一组数据对,但甲队的人员顺序是一定的,最终目的就是要寻找对应的
  7. *                  乙队人员的出战顺序。相当于将三个不同的数按一定顺序填入到三个坑中。填入的条件首先肯定是
  8. *                  要保证三个数各不相同,相当于对1,2,3三个数进行全排列。满足了各不相同的条件,还要满足题目
  9. *                  所给的条件,即在全排列中将第一个坑里为1的,和第三个坑里为1或3的排除掉,剩下的那组数就是名单。
  10. *  
  11. *  步骤:        首先定义a,b,c三个变量(相当于三个坑)分别用于存放甲队1、2、3号球员的对手。
  12. *                  然后通过循环枚举出可能值往里面填数。填的过程中排除a、b、c三者各不相等
  13. *                  并且保证a != 1, c!= 1和3.剩下的就是乙队可能的出战顺序。
  14. */

  15. public class VsList {

  16.         public static void main(String[] args) {
  17.                 int a, b, c;                                                        //a, b, c分别用于存储甲队1、2、3号球员的对手编号
  18.                 for(a = 1; a <= 3; a++){       
  19.                         for(b = 1; b <= 3; b++){                                                        //先对a,b的取值进行枚举
  20.                                 if(a != b){                                                                                //为true表示甲队一号二号球员的对手不同                                               
  21.                                         for(c = 1; c <= 3; c++){                                        //枚举c的取值
  22.                                                 if(a != c && b != c){                                        //至此为true表示甲队三名球员对手各不相同
  23.                                                         if(a != 1 && c != 1 && c != 3){                //队友特殊条件判断
  24.                                                                 System.out.println("甲队1号 vs 乙队" + a + "号");
  25.                                                                 System.out.println("甲队2号 vs 乙队" + b + "号");
  26.                                                                 System.out.println("甲队3号 vs 乙队" + c + "号");
  27.                                                         }
  28.                                                 }
  29.                                         }
  30.                                 }       
  31.                         }
  32.                 }
  33.         }
  34. }/* Output:
  35. 甲队1号 vs 乙队3号
  36. 甲队2号 vs 乙队1号
  37. 甲队3号 vs 乙队2号
  38. *///:~
复制代码
第二题:

  1. /*
  2. *         题目:        打印出所有三位数中即是水仙数又是回文数的数,如果没有这个数那么输出所有的水仙数。
  3. *                         水仙数是指一个三位数,其个位数立方和等于本身,例如:153=13+53+33
  4. *                         回文数是121置换后还是其本身,而132就不是回文数,因为置换后是231。
  5. *  
  6. *  
  7. *         思路:        1.既然是在所有三位数中选择,且判断方式没有简单规律需要一个数一个数的判断,那么就要考虑
  8. *                         进行一次从100~999之间的遍历,每个数分别判断是否为水仙数或回文数
  9. *                        
  10. *                         2.判断水仙数和回文数都是对3位数中各位数进行操作,因此需要提取出三位数的各数位上的值
  11. *        
  12. *                         3.题目要求没有二者皆是的才打印水仙数。那么在遍历过程中,无法判断是否打印,要在遍历结束后
  13. *                         才知道是否包含有二者皆是的数。因此需要对水仙花数进行保存,并且记录下是否包含二者皆是的数。
  14. *
  15. *
  16. *         步骤:        先弄3个int变量准备好保存百位、十位、个位的处理结果(只在循环里有用,放for里了)
  17. *                         保存水仙数使用ArrayList(因数量未知)
  18. *                         定义一个int计数器用来记录水仙数的个数,这个只是为了确定是否有,所以定义个boolean也行
  19. *                         之后弄个循环开始遍历,提取数位可以用数学方法,也可以借助字符串,这里用了前者
  20. *                         剩下的就没啥好说的了,各种if判断下条件选择输出内容就OK了
  21. */                       

  22. import java.util.ArrayList;

  23. public class FindNum {
  24.         public static void main(String[] args) {

  25.                 ArrayList<Integer> shuiXianList = new ArrayList<Integer>(); //用于存储水仙数
  26.                 int count = 0;                                                                 //记录既是水仙数又是回文数的数的个数
  27.                 for(int i = 100, a, b, c; i < 1000; i++){        //a,b,c用于保存百位、十位、个位的处理结果
  28.                         a = (int)Math.pow(i / 100, 3);                        //取出百位值做立方运算
  29.                         b = (int)Math.pow(i % 100 / 10, 3);                //取出十位值做立方运算
  30.                         c = (int)Math.pow(i % 10, 3);                        //取出个位值做立方运算
  31.                         if (i == a + b + c){                                       
  32.                                 if(a == c){                                                        //两数的立方相等说明两数相等
  33.                                         System.out.println(i + "既是水仙数又是回文数");
  34.                                         count++;                                                //一个回文水仙计数器
  35.                                 }
  36.                                 shuiXianList.add(i);                                       
  37.                         }
  38.                 }
  39.                 if(count == 0){                                                                //通过判断计数器是否正值确定是否有回文水仙数
  40.                         System.out.println("没有找到既是水仙数又是回文数的数");
  41.                         System.out.println("水仙数有:");
  42.                         for(int i : shuiXianList){                                //foreach循环,遍历ArrayList
  43.                                 System.out.println(i);
  44.                         }
  45.                 }
  46.         }
  47. }/* Output:
  48. 153
  49. 370
  50. 371
  51. 407
  52. *///:~
复制代码
第三题 :
  1. /*
  2. *        题目: 打印出100到200之间中即不是回文数又不是素数又不是水仙数的所有数的和。
  3. *          
  4. *        思路:        回文数--个位百位相同
  5. *                        水仙数--各位的三次方之和等于本身             
  6. *                        素数----除1、本身外,无法被其他整数整除
  7. *                        设置一个累加器,每找到一个符号要求的,就加进去
  8. *                        遍历100~200之间的每一个数,然后分别验证其是否为素数、回文、水仙,如果都不是即符合要求
  9. *                        素数的判断:每取一个数i就用从2到Math.sqrt(i)之间的整数对其取模,模全不为0即为素数
  10. *                        其他两种的判断参考题目2
  11. *
  12. *
  13. *         步骤:        为了方便,依然定义3个int来保存各位上的值,用于判断回文和水仙时用。
  14. *                         弄个for遍历100~200
  15. *                         对每个数进行3次判别,其中素数的判别还需再用一次for遍历
  16. *                         三个判断都不是,加之               
  17. */

  18. public class FindNum2 {
  19.         public static void main(String[] args) {
  20.                 int sum = 0;
  21.                 for(int i = 100, a, b, c; i <= 200; i++){        //a,b,c用于保存百位、十位、个位
  22.                         a = (int)Math.pow(i / 100, 3);                       
  23.                         b = (int)Math.pow(i % 100 / 10, 3);               
  24.                         c = (int)Math.pow(i % 10, 3);                        //取出百、十、个位值做立方运算
  25.                         if (a != c){                                                        //为true说明不是回文数
  26.                                 if(i != a + b + c){                                        //为true说明也不是水仙数
  27.                                         for(int j = 2; j <= (int)Math.sqrt(i); j++){        //遍历小于i的平方根的整数
  28.                                                 if(i % j == 0){                                                //被整除说明不是素数
  29.                                                         sum += i;                                                //结果丢入累加器
  30.                                                         break;                                                        //继续测试下一个目标数
  31.                                                 }
  32.                                         }                               
  33.                                 }
  34.                         }       
  35.                 }
  36.                 System.out.println("100到200之间中既不是回文数又不是素数又不是水仙数的所有数的和为" + sum);
  37.         }
  38. }/* Output:
  39. 100到200之间中既不是回文数又不是素数又不是水仙数的所有数的和为11125
  40. *///:~
复制代码
论坛使用很菜~,输出结果也很简单,就不截图了,直接注释在了每段代码结尾处~~

作者: java.love    时间: 2013-7-1 16:20
  1. /*
  2. 2.打印出所有三位数中即是水仙数又是回文数的数,如果没有这个数那么输出所有的水仙数。
  3. 水仙数是指一个三位数,其个位数立方和等于本身,例如:153=13+53+33
  4. 回文数是121置换后还是其本身,而132就不是回文数,因为置换后是231。
  5. */
  6. class Test2
  7. {
  8. public static void main(String[] args)
  9. {
  10. System.out.print("所有的水仙数:");
  11. for(int i=100;i<1000;i++)
  12. {
  13. if(isSxh(i)==true&&isHw(i)==true)
  14. System.out.println("即是水仙数又是回文数的数"+i);
  15. else if(isSxh(i)==true)
  16. System.out.print(i+" ");
  17. }
  18. }
  19. public static boolean isSxh(int x)
  20. {
  21. int i,j,k;
  22. i=x/100;//求x的百位上的数
  23. j=x%100/10;//求x的十位上的数
  24. k=x%10;//求x的个位上的数
  25. if(x==i*i*i+j*j*j+k*k*k)//判断是否为水仙数
  26. return true;
  27. else
  28. return false;
  29. }
  30. public static boolean isHw(int x)
  31. {
  32. int i,j,k;
  33. i=x/100;//求x的百位上的数
  34. j=x%100/10;//求x的十位上的数
  35. k=x%10;//求x的个位上的数
  36. if(x==k*100+j*10+i)//判断x是否为回文
  37. return true;
  38. else
  39. return false;

  40. }
  41. }
复制代码

  1. <P> </P>
复制代码
/*
3.打印出100到200之间中即不是回文数又不是素数又不是水仙数的所有数的和。
*/
class Test3
{
public static void main(String[] args)
{
  int sum=0;
  for(int i=100;i<=200;i++)
  {
   if(isSushu(i)==false&&isSxh(i)==false&&isHw(i)==false)
    sum=sum+i;//累加求和
   //System.out.println("所有数"+i);
  }
  System.out.println("所有数的和:"+sum);
}
public static boolean isSushu(int x)
{//判断是否为素数
  int i,j;
  for(i=2;i<x;i++)
  {
   if(x%i==0)
    break;
  }
  if(i>=x)
   return true;
  else
   return false;
}
public static boolean isSxh(int x)
{//判断是否为水仙数
  int i,j,k;
  i=x/100;//求x的百位上的数
  j=x%100/10;//求x的十位上的数
  k=x%10;//求x的个位上的数
  if(x==i*i*i+j*j*j+k*k*k)//判断是否为水仙数
   return true;
  else
   return false;
}
public static boolean isHw(int x)
{//判断是否为回文
  int i,j,k;
  i=x/100;//求x的百位上的数
  j=x%100/10;//求x的十位上的数
  k=x%10;//求x的个位上的数
  if(x==k*100+j*10+i)//判断x是否为回文
   return true;
  else
   return false;
}
}


作者: .netNo1    时间: 2013-7-1 19:21
  1. int y1, y2, y3;/*y1是甲1的对手,y2是甲2的对手,y3是甲3的对手*/
  2.             for (y1 = 1; y1 <= 3; y1++)
  3.             {
  4.                 for (y2 = 1; y2 <= 3; y2++)
  5.                 {
  6.                     if (y1 != y2)
  7.                         for (y3 = 1; y3 <= 3; y3++)//两两相比
  8.                         {
  9.                             if (y1 != y3 && y2 != y3)//同一队的不进行比赛
  10.                             {
  11.                                 if (y1 != 1 && y3 != 1 && y3 != 3)//条件判断
  12.                                     Console.WriteLine("甲队的一号对应乙队的{0}号,甲队的二号对应乙队的{1}号,甲队的三号对应乙队的{2}号", y1, y2, y3);

  13.                             }
  14.                         }
  15.                 }
  16.             }
  17.             Console.ReadKey();

  18.             //输出结果为:甲队的一号对应乙队的3号,甲队的二号对应乙队的1号,甲队的三号对应乙队的2号
复制代码

作者: .netNo1    时间: 2013-7-1 19:41
  1. int sum = 0;//和
  2.             for (int i = 101; i <= 200; i++) //用i表示三位数
  3.             {
  4.                 int bai = 0; //百位
  5.                 int shi = 0; //十位
  6.                 int ge = 0; //个位
  7.                 int baiyushu = 0; //对百位进行求余后的数字
  8.                 bai = i / 100;
  9.                 baiyushu = i % 100; //两位数
  10.                 shi = baiyushu / 10;
  11.                 ge = baiyushu % 10;


  12.                 for (int k = 2; k < i; k++)
  13.                 {
  14.                     if (i % k == 0)  //质数
  15.                     {
  16.                         if (i == bai * bai * bai + shi * shi * shi + ge * ge * ge) //水仙花数
  17.                         {
  18.                             continue;
  19.                         }
  20.                         else if (bai == ge)  //回文数
  21.                         {
  22.                             continue;
  23.                         }
  24.                         else
  25.                             sum += i;

  26.                     }
  27.                     else //素数
  28.                         continue;
  29.                 }
  30.             }
  31.             Console.Write("既不是素数又不是回文数又不是水仙花数的总和为:" + sum);
  32.             Console.ReadKey();

  33.             //输出结果为:61275
复制代码

作者: 黄少海    时间: 2013-7-1 22:16
  1. /** 题目1.两个兵乓球队进行比赛,各出三个人。各队选手的编号均为1号,2号,3号,抽签决定比赛名单,有人向队员打听比赛的名单。
  2.          甲队1号说不和乙队的1号比,甲队的3号说不和乙队的1号和3号比,请编程找出两队的赛手名单。
  3. *
  4. *思路:
  5. * 1:甲队各队选手的编号均为1号,2号,3号。可以用一个外循环来实现。其中x范围为1到3,分别代表选手号码。
  6. * 2:一队同理用一个内循环来实现。变量用y来表示。
  7. * 3:根据已知条件找出两队的赛手名单在内循环分别用条件语句进行判断
  8.        
  9. */

  10. package exercises;

  11. public class dfdfd {


  12.         public static void main(String[] args) {
  13.                 // TODO Auto-generated method stub
  14.                
  15.                
  16.                 System.out.println("甲队赛手名单:1;2;3;");
  17.                 for(int x=1; x<=3; x++){  //变量x的范围代表的是甲队比赛选手
  18.                         for(int y=1; y<=3; y++){ //变量y的范围代表的是乙队比赛选手
  19.                        
  20.                                 if(x==1 && y==3 ) //判断甲队1号的对手
  21.                                         System.out.print("乙队赛手名单:"+y+";");       
  22.                                 if(x==2 && y==1) //判断甲队2号的对手
  23.                                         System.out.print(y+";");
  24.                                 if(x==3 && y==2) //判断甲队3号的对手
  25.                                         System.out.println(y+";");
  26.                         }
  27.                 }
  28.         }

  29. }
复制代码

第一道题结果.png (6.65 KB, 下载次数: 0)

第一道题结果.png

作者: 宋智超    时间: 2013-7-1 22:46
以下是第一题的代码
class  diyiti
{
      public static void main(String[] args)
      {
           int j,y;     //定义两个变量,j代表甲队,其中的数值1代表1号,如j=1表示为甲队一号。                                       
           for (j=1;j<4;j++)     //控制甲队循环
           {
                for (y=1;y<4;y++)        //控制乙队循环
                {
                   boolean temp=!((j==1&&y==1)||((j==3)&&(y==1))||((j==3)&&(y==3)));       //声明甲队1号说不和乙队的1号比,甲队的3号说不和乙队的1号和3号比
                   if (temp)        //对对比的结果进行判断,若符合条件则进行下面语句
                {
                   System.out.println("甲队的"+j+"号 VS 乙队的"+y+"号");       //输出对比结果
                }
                }
          }
     }
}

下图是运行的结果



作者: 宋智超    时间: 2013-7-1 23:29
以下是第二题代码
class dierti
{
        public static void main(String[] args)
        {
              int g=0,s=0,b=1,num,num1,num2;                //定义变量,g代表个位,s代表十位,b代表百位。。。
              for (b=1;b<10;b++)
              {
                for (s=0;s<10;s++)
                {
                        for (g=0;g<10;g++)                    //上部分代码作用为对100到999的数字进行循环
                        {
                              num=g+s*10+b*100;                 //num代表现在所循环的数字
                              num1=b+s*10+g*100;
                              num2=g*g*g+s*s*s+b*b*b;
                              boolean x,y;
                              x=(num==num1);
                              y=(num==num2);                    //对所循环的数字进行判断,x=ture说明是回文数,y=ture说明是水仙花数
                              if (x&y)                          //判断是否即是回文数也是水仙花数,如果是则打印
                               {
                                      System.out.println(num+"即是回文数也是水仙花数");
                                }
     
                              else if (y)                       //若次数不能同时即是回文数也是水仙花数,则判断是否是水仙花数,如果是则打印
                               {
      
                                      System.out.println(num+"是水仙花数");
                                }

                                          }
                                  }
                              }
  
                        }
                }
以下是第二题的运行结果   PS:从EditPlus从直接考过来代码全乱了……最后还是用空格排版……好幸苦……



作者: 宋智超    时间: 2013-7-2 00:20
本帖最后由 宋智超 于 2013-7-2 00:21 编辑

第三题代如下:
  1. class disanti
  2. {
  3. public static void main(String[] args)
  4. {
  5. int g=0,s=0,b=1,num,num1,num2,sum=200; //定义变量,g代表个位,s代表十位,b代表百位。。。
  6. for (b=1;b<2;b++)
  7. {
  8. for (s=0;s<10;s++)
  9. {
  10. for (g=0;g<10;g++) //上部分代码作用为对100到999的数字进行循环
  11. {
  12. num=g+s*10+b*100; //num代表现在所循环的数字
  13. num1=b+s*10+g*100;
  14. num2=g*g*g+s*s*s+b*b*b;
  15. boolean x,y,z=true,j;
  16. for (int a=2;a<num;a++)
  17. {
  18. if (num%a==0)
  19. {
  20. z=false;
  21. break;
  22. }
  23. }
  24. x=!(num==num1);
  25. y=!(num==num2); //对所循环的数字进行判断,x=ture说明不是是回文数,y=ture说明不是是水仙花数,!z=ture说明不是素数。
  26. j=x&&y&&(!z); //声明既不是素数也不是回文数也不是水仙花数
  27. if (j) //判断是否符合求和条件,如果符合则对其进行求和
  28. {
  29. sum=sum+num;
  30. }
  31. }
  32. }
  33. }
  34. System.out.println("100~200之间即不是回文数又不是素数又不是水仙数的所有数的和为:"+sum); //输出求和结果
  35. }
  36. }
复制代码
第三题运行结果如下:

新手一枚,所做三道题代码较为繁琐,已有优化思路。


作者: 宋智超    时间: 2013-7-2 00:23
为什么我每次粘过来的代码全乱了呢?
作者: 黄少海    时间: 2013-7-2 00:26
  1. /**打印出所有三位数中即是水仙数又是回文数的数,如果没有这个数那么输出所有的水仙数。
  2.          水仙数是指一个三位数,其个位数立方和等于本身,例如:153=1*1*1+5*5*5+3*3*3
  3.          回文数是121置换后还是其本身,而132就不是回文数,因为置换后是231。
  4. *
  5. *思路:
  6. * 1:从题中可以看出被判断的数为一个3位数。可以用3个变量x、y、z分别来代表他的百位、十位、个位。 用变量value代表它的值。
  7. *         (1)百位提取 :用vlaue除以100取整;
  8. *         (2)十位提取:用vlaue除以10取整在除以10取余数
  9. *        (3) 个位取整:用vlaue除以10取余数;
  10. * 2:打印出所有三位数中即是水仙数又是回文数的数。3位数值范围为100-999 定义for循环来实现在进行逐个判断.
  11. *           首先判断是否是水仙数,如果是存入一个数组arr数组中。在对该数是否是一个回文数。如果是直接输出该数。
  12. *
  13. * 3:如果即是水仙数又是回文数的数不存在。定义一个boolean isExist来判断是否存在。false表示水仙数又是回文数的数不存在。
  14. */

  15. package exercises;

  16. public class Exercises_02 {

  17.         public static void main(String[] args) {
  18.                 // TODO Auto-generated method stub
  19.                
  20.                 int x = 0;//百位
  21.                 int y = 0;//十位
  22.                 int z = 0;//个位
  23.                 boolean isExist = false;//即是水仙数又是回文数的数不存在
  24.                 int [] arr = new  int [999];//存放所有的水仙数
  25.                 int index=0;
  26.                
  27.                 for(int value=100; value<=999; value++){
  28.                         x = value/100;
  29.                         y = (value/10) % 10;
  30.                         z = value%10;//提取个位十位百位
  31.                         if(x*x*x+y*y*y+z*z*z==value ){//判断是否是一个水仙数。如果是存入数组arr中
  32.                                 arr[index]=value;
  33.                                 index++;
  34.                                 if(x==z){//判断这个数是否是水仙数又是回文数
  35.                                         System.out.println("即是水仙数又是回文数的值"+value);
  36.                                         isExist = true;//即是水仙数又是回文数的数存在
  37.                                 }
  38.                         }
  39.                 }
  40.                
  41.                
  42.                 if(isExist==false){//如果没有这个数那么输出所有的水仙数
  43.                         System.out.println("即是水仙数又是回文数不存在"+"\r\n"+"所有的水仙数是");
  44.                         printArr(arr,index);
  45.                 }
  46.         }
  47.         /**打印一个int类型数组的内容.格式是[1;2;3;4;......]
  48.          * @param arr 接受一个int类型的数组。
  49.          * @param index 接受一个int类型的数值表示要打印的个数
  50.          */
  51.         public static void printArr(int[] arr, int index){
  52.                 System.out.print("[");
  53.                 for(int x=0; x<index; x++)
  54.                         if(x<index-1)
  55.                         System.out.print(arr[x]+";");
  56.                         else
  57.                                 System.out.println(arr[x]+"]");
  58.                 }
  59.        

  60. }
复制代码
请版主看看 这边代码哪里可以简化。

第二题.png (6.82 KB, 下载次数: 0)

第二题.png

作者: mulua    时间: 2013-7-2 09:10
  1. package huodong;
  2. import java.lang.Math ;

  3. public class Shui
  4. {
  5.         public static void main(String[] args)
  6.         {
  7.                 //调用函数
  8.                 shuixian();
  9.         }
  10.         public static int shuixian()
  11.         {
  12.                 StringBuilder x=new StringBuilder();
  13.                 StringBuilder y=new StringBuilder();
  14.                 //遍历100-999之间的数查找水仙数
  15.                 for (int i = 100; i < 1000; i++)
  16.                 {
  17.                        
  18.                         int arr[]=new int[3];
  19.                         int m = i;
  20.                         //将整数的各个位上的数取出来
  21.                         for (int j=0; j <3; j++)
  22.                         {

  23.                                 arr[j]=m%10;
  24.                                
  25.                                 m=m/10;
  26.                                
  27.                         }
  28.                         Double sum=Math.pow(arr[0],3)+Math.pow(arr[1],3)+Math.pow(arr[2],3);
  29.                         //判断是否是水仙数
  30.                         if (i==sum)
  31.                         {
  32.                                 //是水仙数的话存起来
  33.                                 y.append(i);
  34.                                 y.append("|");
  35.                
  36.                                 int xin=arr[0]*100+arr[1]*10+arr[2];
  37.                                 //判断是否既是水仙数又是回文数
  38.                                 if (xin==i)
  39.                                 {
  40.                                         System.out.println("既是水仙数又是回文数的数:"+i);
  41.                                         //是的话存起来
  42.                                         x.append(i);
  43.                                        
  44.                                 }
  45.                         }
  46.                        
  47.                        
  48.                 }
  49.                 //判断是否存在既是水仙数又是回文数的数
  50.                 if (x.length()==0)
  51.                 {
  52.                         System.out.println("没有发现既是水仙数又是回文数的数");
  53.                         //输出水仙数
  54.                         String str=y.toString();
  55.                         System.out.println("水仙数字:"+str);       
  56.                 }
  57.                 else
  58.                 {
  59.                         String str1=x.toString();
  60.                         System.out.println("既是水仙数又是回文数的数"+str1);
  61.                 }
  62.                 return 0;
  63.                
  64.         }
  65. }
复制代码

作者: 黄少海    时间: 2013-7-2 11:02
本帖最后由 黄少海 于 2013-7-2 11:04 编辑
  1. /**题目3:打印出100到200之间中即不是回文数又不是素数又不是水仙数的所有数的和。
  2. *
  3. * 思路:
  4. * 根据题意可以得出。涉及到的变量有即不是回文数又不是素数又不是水仙数的所有数的和 用int类型的变量s来表示,
  5. * 100到200范围的数值用int类型的变量num来表示。采用for循环从100逐个进行条件判断。
  6. *
  7. */
  8. package exercises;

  9. public class Exercises_03 {

  10.         public static void main(String[] args) {
  11.                 // TODO Auto-generated method stub
  12.                 int s = 0; //即不是回文数又不是素数又不是水仙数的所有数的和
  13.                 for(int num=100; num<=200;num++){ //100到200范围的数值逐个进行判断
  14.                         if(isShuixian(x)==false & isHuiWen(x)==false & isPrime(x)==false){
  15.                                 //调用水仙数、回文数、素数的判定方法
  16.                                 
  17.                                 s += num;
  18.                         }
  19.                 }
  20.                
  21.                 System.out.println("100到200之间中即不是回文数又不是素数又不是水仙数的所有数的和为:"
  22.                 +"\r\n"+s);//输出结果
  23.                
  24.                
  25.         }
  26.         /**回文数的判断
  27.          * @param value 接受一个int类型的值
  28.          * @return true 代表该值是一个回文数。
  29.          *                    false 代表该值不是回文数。n
  30.          */                  
  31.         private static boolean isHuiWen(int value) {
  32.                 // TODO Auto-generated method stub
  33.                 int x = 0;//百位
  34.                 int y = 0;//十位
  35.                 int z = 0;//个位
  36.                 x = value/100;
  37.                 y = (value/10) % 10;
  38.                 z = value%10; //提取个位十位百位
  39.                
  40.                 if(x==z){//判断这个数是否是是回文数
  41.                         return true;
  42.                 }
  43.                 return false;
  44.         }
  45.         /**素数的判断
  46.          * @param value 接受一个int类型的值
  47.          * @return true 代表该值是一个素数。
  48.          *                    false 代表该值不是素数。
  49.          */
  50.         private static boolean isPrime(int value) {
  51.                 // TODO Auto-generated method stub
  52.                 for(int i=2; i<=value/2; i++){
  53.                         if(value%i==0){
  54.                                 return false;
  55.                         }
  56.                 }
  57.                 return true;
  58.         }
  59.         /**水仙数的判断
  60.          * @param value 接受一个int类型的值
  61.          * @return true 代表该值是一个水仙数。
  62.          *                    false 代表该值不是水仙数。
  63.          */
  64.         private static boolean isShuixian(int value) {
  65.                 // TODO Auto-generated method stub
  66.                 int x = 0;//百位
  67.                 int y = 0;//十位
  68.                 int z = 0;//个位
  69.                 x = value/100;
  70.                 y = (value/10) % 10;
  71.                 z = value%10; //提取个位十位百位
  72.                
  73.                 if(x*x*x+y*y*y+z*z*z==value ){//判断是否是一个水仙数。
  74.                         return true;
  75.                 }
  76.                 return false;
  77.         }


  78.         
  79. }
复制代码

题目3结果.png (7.43 KB, 下载次数: 0)

题目3结果.png

作者: 王楚鑫    时间: 2013-7-2 13:45
第一题
  1. /*
  2. 需求:两个兵乓球队进行比赛,各出三个人。各队选手的编号均为1号,2号,3号,抽签决定比赛名单,有人向队员打听比赛的名单。甲队1号说不和乙队的1号比,甲队的3号说不和

  3. 乙队的1号和3号比,请编程找出两队的赛手名单。
  4. 思路:  1.定义三个变量i,j,k为乙队三名队员,保存i是甲队1号的对手,j是甲队2号的对手,k是甲队3号的对手

  5. --------------------------------
  6. 甲        i        j        k

  7. a        0                0
  8. --------------------------------
  9. b
  10. --------------------------------
  11. c                        0
  12. --------------------------------


  13.         2.按题目要求进行嵌套循环,同时满足题目要求时即为最终结果
  14. */


  15. public class Game{                                                
  16.   public static void main(String[] args) {              
  17.      
  18.         char i,j,k;//定义三个变量i,j,k为乙队三名队员,保存i是甲队1号的对手,j是甲队2号的对手,k是甲队3号的对手

  19.         for(i='a'; i<='c'; i++)                //乙队三名队员按1,2,3号顺序分别标记为a,b,c
  20.         {                               
  21.                 if(i!='a')                //条件1:甲队1号说不和乙队的1号比
  22.                 {
  23.                             for(k='a'; k<='c'; k++)               
  24.                                 if(k!='a'&&k!='c')        //甲队的3号说不和乙队的1号和3号比
  25.                                 {
  26.                                             for(j='a'; j<='c'; j++)
  27.                                                 if(i!=j&&j!=k&&k!=i)        
  28.                                                         System.out.println("甲队1号的对手是"+i+"\t"+"甲队2号的对手是"+j+"\t"+"甲队3号的对手是"+k+"\t");
  29.                         }
  30.                 }
  31.         }

  32.   }
  33. }
复制代码
第二题
  1. /*
  2. 需求:打印出所有三位数中即是水仙数又是回文数的数,如果没有这个数那么输出所有的水仙数。
  3.          水仙数是指一个三位数,其个位数立方和等于本身,例如:153=13+53+33
  4.          回文数是121置换后还是其本身,而132就不是回文数,因为置换后是231。
  5. 思路:  1.三位数循环
  6.         2.判断是否是水仙数
  7.         3.若是水仙数,判断是否是回文数,并标识
  8.         4.若存在即是水仙数又是回文数的数,则打印输出,否则保存当前水仙数
  9. */
  10. import javax.swing.JOptionPane;
  11. public class Flower  
  12. {  
  13.         public static boolean sNumber(int i)//定义函数,判断是否是水仙数(水仙数是指一个三位数,其个位数立方和等于本身)
  14.         {
  15.                 int ge,shi,bai;
  16.                 bai=i/100;
  17.                 shi=i%100/10;
  18.                 ge=i%10;
  19.                 if(i==ge*ge*ge+shi*shi*shi+bai*bai*bai)//满足水仙数条件,返回真
  20.                         return true;
  21.                 return false;       
  22.         }
  23.         public static boolean hNumber(int i)//定义函数,判断是否是回文数(回文数是121置换后还是其本身,而132就不是回文数,因为置换后是231)
  24.         {
  25.                 int ge,bai;
  26.                 bai=i/100;
  27.                 ge=i%10;
  28.                 if(ge==bai)
  29.                         return true;//满足回文数条件,返回真
  30.                 return false;
  31.         }  
  32.         public static void main(String args[])  
  33.         {
  34.                 int[] s=new int[1000];//保存水仙数
  35.                 int m=0;//标识水仙数的个数
  36.                
  37.                 int n=0;//标识即是水仙数又是回文数的数的个数

  38.                 for(int i=100;i<1000;i++)
  39.                 {
  40.                         if(sNumber(i))//调用判断是否是水仙花数的函数
  41.                         {
  42.                                 if(hNumber(i))//调用判断是否是回文数的函数
  43.                                 {
  44.                                         System.out.print(i+" ");//把满足条件的数输出
  45.                                         n++;
  46.                                         if(n!=0)
  47.                                                 continue;       
  48.                                 }
  49.                                 s[m++]=i;
  50.                         }         
  51.                 }
  52.                 if(n==0)//如果没有即是水仙数又是回文数的数字,输出所有水仙数
  53.                 {
  54.                         System.out.println("不存在即是水仙数又是回文数的三位数,三位数的水仙数如下:");
  55.                         for(int i=0;i<m;i++)
  56.                                 System.out.print(s[i]+" ");
  57.                 }   
  58.         }  
  59. }
复制代码
第三题
  1. /*
  2. 需求:打印出100到200之间中即不是回文数又不是素数又不是水仙数的所有数的和。
  3. 思路:  1.100到200之间循环
  4.         2.判断是否是水仙数,回文数,素数
  5.         3.同时满足此条件的则累加求和,打印输出
  6. */
  7. import javax.swing.JOptionPane;
  8. public class Sum  
  9. {  
  10.         public static boolean sNumber(int i)//定义函数,判断是否是水仙数(水仙数是指一个三位数,其个位数立方和等于本身)
  11.         {
  12.                 int ge,shi,bai;
  13.                 bai=i/100;
  14.                 shi=i%100/10;
  15.                 ge=i%10;
  16.                 if(i==ge*ge*ge+shi*shi*shi+bai*bai*bai)//满足水仙数条件,返回真
  17.                         return true;
  18.                 return false;       
  19.         }


  20.         public static boolean hNumber(int i)//定义函数,判断是否是回文数(回文数是121置换后还是其本身,而132就不是回文数,因为置换后是231)
  21.         {
  22.                 int ge,bai;
  23.                 bai=i/100;
  24.                 ge=i%10;
  25.                 if(ge==bai)
  26.                         return true;//满足回文数条件,返回真
  27.                 return false;
  28.         }


  29.         public static boolean Prime(int i)//定义函数,判断是否是素数(素数,只能被1和本身整除的数)
  30.         {
  31.                 int j;
  32.                 for(j=2;j<i/2;j++)
  33.                 {
  34.                         if(i%j==0)break;       
  35.                 }
  36.                 if(j>i/2)
  37.                         return true;
  38.                 return false;
  39.         }


  40.         public static void main(String args[])  
  41.         {
  42.                 int sum=0;//保存和

  43.                 for(int i=100;i<200;i++)
  44.                 {
  45.                         if(!sNumber(i) && !hNumber(i) && !Prime(i))//调用函数选择即不是回文数又不是素数又不是水仙数的数累加求和
  46.                         {
  47.                                 //System.out.print(i+" ");
  48.                                 sum+=i;
  49.                         }         
  50.                 }

  51.                 System.out.println("sum="+sum);
  52.                        
  53.         }  
  54. }
复制代码
运行结果


第二周.jpg (28.15 KB, 下载次数: 0)

第二周.jpg

作者: liujkh123    时间: 2013-7-2 16:43
解题思路都在代码里边
第一题:
代码
  1. /**
  2. * 题目1:思路就是将甲乙两队分别看成一个集合,然后对集合进行迭代,因为计算机看不懂题目,那只能我们认为的对迭代过程进行设计
  3. * 迭代的过程中,首先找到甲队第三个选手,然后再对乙迭代,找到乙中既不是1也不是3的选手,找到之后,将这两个选手信息存入HashMap集合中
  4. * 并删除原来甲乙集合中的信息,这样就题目再给的条件又可以找到下一个配对组合了。
  5. */

  6. package test;

  7. import java.util.ArrayList;
  8. import java.util.HashMap;
  9. import java.util.Iterator;
  10. import java.util.List;

  11. public class TwoTeamDemo {
  12.         public static void main(String[] args) {
  13.                 List<Integer> listA = new ArrayList<Integer>();
  14.                 List<Integer> listB = new ArrayList<Integer>();

  15.                 listA.add(1);
  16.                 listA.add(2);
  17.                 listA.add(3);

  18.                 listB.add(1);
  19.                 listB.add(2);
  20.                 listB.add(3);

  21.                 HashMap<String, String> nameList = new HashMap<String, String>();

  22.                 int a, b = 0;
  23.                
  24.                 while (listA.size() != 0) {//只要集合中还有未配对的,就要进行下面的配对代码
  25.                         for (Iterator<Integer> it = listA.iterator(); it.hasNext();) {
  26.                                 a = it.next();
  27.                                 if (a == 3) {//因为甲的第三个选手的对手最明确,应该从第三个选手开始配对
  28.                                         for (Iterator<Integer> it2 = listB.iterator(); it2
  29.                                                         .hasNext();) {
  30.                                                 b = it2.next();
  31.                                                 if (b != 1 && b != 3) {
  32.                                                         nameList.put("A:" + a, "B:" + b); //把配对信息记录到map里边
  33.                                                         it2.remove();//配对完成的选手从集合中去除
  34.                                                 }
  35.                                         }
  36.                                         it.remove();//配对完成的选手从集合中去除
  37.                                 } else if (a == 1 && listA.size() < 3) {//第三个选手配对完了之后,才开始配对第一个有条件的选手
  38.                                         for (Iterator<Integer> it2 = listB.iterator(); it2
  39.                                                         .hasNext();) {
  40.                                                 b = it2.next();
  41.                                                 if (b != 1) {
  42.                                                         nameList.put("A:" + a, "B:" + b);
  43.                                                         it2.remove();
  44.                                                 }
  45.                                         }
  46.                                         it.remove();
  47.                                 } else if (a == 2 && listA.size() < 2) {//最后剩下的就相互配对了
  48.                                         for (Iterator<Integer> it2 = listB.iterator(); it2
  49.                                                         .hasNext();) {
  50.                                                 b = it2.next();
  51.                                                 nameList.put("A:" + a, "B:" + b);
  52.                                                 it2.remove();
  53.                                         }

  54.                                         it.remove();
  55.                                 }
  56.                         }
  57.                 }
  58.                
  59.                 System.out.println(nameList);//输出配对信息

  60.         }
  61. }
复制代码
结果:
{A:3=B:2, A:1=B:3, A:2=B:1}

第二题:
代码
  1. /**
  2. * 这个题目就先弄个循环从100到1000(不包括1000),循环判断这里边的数是不是水仙数,如果是水仙数就继续判断是不是回文数
  3. * 在判断是水仙数的时候,就把它存到水仙数的集合中,是回文数,就把它存到既是水仙数又是回文数的集合中
  4. */
  5. package test;

  6. import java.util.ArrayList;

  7. public class IsOrNot {
  8.         private static ArrayList<Integer> shuiXnum = new ArrayList<Integer>();//用来装水仙数的集合
  9.         private static ArrayList<Integer> huiwenNumAndSX = new ArrayList<Integer>();//用来装水仙数回文数的集合

  10.         public static void main(String[] args) {
  11.                 for(int i=100; i<1000; i++){//用循环来一次判断100到999
  12.                         if(isShuixian(i)){
  13.                                 isHuiwen(i);
  14.                         }
  15.                 }
  16.                
  17.                 if(huiwenNumAndSX.size() == 0){//判断有没有又是水仙又是回文的数,然后输出
  18.                         System.out.println("只有水仙数:" + shuiXnum);
  19.                 }else
  20.                         System.out.println("既是回文又是水仙数:" + huiwenNumAndSX);
  21.                
  22.         }
  23.        
  24.         public static boolean isShuixian(int i){//判断是否为水仙数,怎么判断的就省去说了
  25.                 int sum = 0;
  26.                 int temp1 = i;
  27.                 while(i!= 0){                       
  28.                         sum = (i%10) * (i%10) * (i%10) + sum;
  29.                         i = i/10;
  30.                 }               
  31.                 if(sum == temp1){
  32.                         shuiXnum.add(temp1);
  33.                         return true;
  34.                 }
  35.                 return false;
  36.         }
  37.        
  38.         public static boolean isHuiwen(int i){//判断是否为回文数,怎么判断的也不说了,有返回值可以方便调试
  39.                 int temp = i;
  40.                 int sum = 0;
  41.                 while(temp != 0){
  42.                         sum = sum*10 + temp%10;
  43.                         temp = temp/10;
  44.                 }
  45.                
  46.                 if(sum == i){
  47.                         huiwenNumAndSX.add(i);
  48.                         return true;
  49.                 }
  50.                 return false;
  51.         }

  52. }
复制代码
结果:
只有水仙数:[153, 370, 371, 407]

第三题:
代码
  1. /**
  2. * 因为只要判断100到200之间的素数,所以这个判断素数的方法可以写得简单点。
  3. * 思路就是100到200循环,每个数都要判断既不是水仙又不是回文又不是素数,满足条件就加起来。
  4. */
  5. package test;

  6. public class GetSum {

  7.         public static void main(String[] args) {
  8.                 int sum = 0;
  9.                 int line = 10;  //这个变量时用来控制每行输出多少个数的
  10.                 for(int i=100; i<=200; i++){
  11.                         if(!isHuiwen(i) && !isPrime(i) && !isShuixian(i)){//判断既不是回文又不是素数又不是水仙数, &&是个短路的运算符,这里的效果还算很高的
  12.                                 System.out.print(i + "  "); //把满足条件的数都打印出来
  13.                                 line --;
  14.                                 if(line == 0){
  15.                                         System.out.println();
  16.                                         line = 10;
  17.                                 }
  18.                                 sum = sum + i;
  19.                         }                               
  20.                 }
  21.                
  22.                 System.out.println("合计:" + sum);
  23.         }
  24.        
  25.         public static boolean isShuixian(int i){//判断是否为水仙数,怎么判断的就省去说了
  26.                 int sum = 0;
  27.                 int temp1 = i;
  28.                 while(i!= 0){                       
  29.                         sum = (i%10) * (i%10) * (i%10) + sum;
  30.                         i = i/10;
  31.                 }               
  32.                 if(sum == temp1){
  33.                         return true;
  34.                 }
  35.                 return false;
  36.         }
  37.        
  38.         public static boolean isHuiwen(int i){//判断是否为回文数,怎么判断的也不说了,有返回值可以方便调试
  39.                 int temp = i;
  40.                 int sum = 0;
  41.                 while(temp != 0){
  42.                         sum = sum*10 + temp%10;
  43.                         temp = temp/10;
  44.                 }
  45.                
  46.                 if(sum == i){
  47.                         return true;
  48.                 }
  49.                 return false;
  50.         }
  51.        
  52.         public static boolean isPrime(int i){//判断是否为素数了,因为只要判断100到200,所以代码比较简单
  53.                 for(int j=2; j<=i/2; j++){
  54.                         if(i%j == 0 ){
  55.                                 return false;                               
  56.                         }
  57.                 }
  58.                
  59.                 return true;
  60.         }

  61. }
复制代码
结果:
100  102  104  105  106  108  110  112  114  115  
116  117  118  119  120  122  123  124  125  126  
128  129  130  132  133  134  135  136  138  140  
142  143  144  145  146  147  148  150  152  154  
155  156  158  159  160  162  164  165  166  168  
169  170  172  174  175  176  177  178  180  182  
183  184  185  186  187  188  189  190  192  194  
195  196  198  200  合计:11125


作者: mulua    时间: 2013-7-4 10:55
  1. package huodong;
  2. /**题目
  3. * 两个兵乓球队进行比赛,各出三个人。各队选手的编号均为1号,2号,3号,抽签决定比赛名单,有人向队员打听比赛的名单。
  4.          甲队1号说不和乙队的1号比,甲队的3号说不和乙队的1号和3号比,请编程找出两队的赛手名单。
  5. *
  6. *思路
  7. *设甲队三名队员为A,B,C;
  8. *  乙队单名队员为X,Y,Z;
  9. *因为加队的C和A号有条件限制,所以让C好和A号先选
  10. *通过分析c只能和Y比赛     A只能和z比赛   B只能和x比赛
  11. *通过三层循环让甲队的C  A B 一次挑选自己的对手
  12. *
  13. */
  14. public class PingPang {
  15.         public static void main(String[]args){
  16.         char i,j,k;  // i是a的对手,j是b的对手,k是c的对手
  17.         for(i='X';i<='Z';i++)
  18.         {
  19.                 for(j='X';j<='Z';j++){
  20.                     if(i!=j)
  21.                     for(k='X';k<='Z';k++){
  22.                         if(i!=k && j!=k){
  23.                             if(i!='X' && k!='X'&& k!='Z')//甲队的C不和乙队的X和Z比赛
  24.                             {
  25.                             System.out.println("--比赛安排--");
  26.                             System.out.println(" A 和"+i+" 比赛");
  27.                             System.out.println(" B 和"+j+" 比赛");
  28.                             System.out.println(" C 和"+k+" 比赛");
  29.                             }
  30.                         }
  31.                     }
  32.                 }
  33.         }
  34.     }
  35. }
复制代码


作者: 王楚鑫    时间: 2013-7-5 06:37
弱弱的问一句、这个还给不给加分了?再不加这周就快过去了、、49#的没给分呢{:soso_e149:}
作者: liguangcaiup    时间: 2013-7-5 17:36
  1. public class test {
  2.         // 1.两个兵乓球队进行比赛,各出三个人。各队选手的编号均为1号,2号,3号,抽签决定比赛名单,有人向队员打听比赛的名单。
  3.         // 甲队1号说不和乙队的1号比,甲队的3号说不和乙队的1号和3号比,请编程找出两队的赛手名单。
  4.         // 2.打印出所有三位数中即是水仙数又是回文数的数,如果没有这个数那么输出所有的水仙数。
  5.         // 水仙数是指一个三位数,其个位数立方和等于本身,例如:153=13+53+33
  6.         // 回文数是121置换后还是其本身,而132就不是回文数,因为置换后是231。
  7.         // 3.打印出100到200之间中即不是回文数又不是素数又不是水仙数的所有数的和。

  8.         public static void main(String[] args) {
  9.                 System.out.println("第1题");
  10.                 test1();
  11.                 System.out.println("第2题");
  12.                 test2();
  13.                 System.out.println("第3题");
  14.                 test3();
  15.         }

  16.         static void test1() {
  17.                 int[] A = new int[3]; // A[0],A[1],A[2]表示甲队1,2,3球员。其值表示乙队对手编号。
  18.                 int i, j, k;
  19.                 for (i = 1; i <= 3; i++)
  20.                         for (j = 1; j <= 3; j++) {
  21.                                 // 甲队1号和甲队2号对手不重
  22.                                 if (i != j)
  23.                                         for (k = 1; k <= 3; k++) {
  24.                                                 // 甲队1号和甲队3号对手不重,甲队2号和甲队3号对手不重
  25.                                                 if (i != k && j != k) {
  26.                                                         // 甲队1号说不和乙队的1号比,甲队的3号说不和乙队的1号和3号比
  27.                                                         if (i != 'x' && k != 'x' && k != 'z') {
  28.                                                                 A[0] = i;
  29.                                                                 A[1] = j;
  30.                                                                 A[2] = k;
  31.                                                         }
  32.                                                 }
  33.                                         }
  34.                         }
  35.                 System.out.println("甲队1 VS 乙队" + A[0]);
  36.                 System.out.println("甲队2 VS 乙队" + A[1]);
  37.                 System.out.println("甲队3 VS 乙队" + A[2]);
  38.         }

  39.         static void test2() {
  40.                 boolean hasShuixian = false; // 标志是否有水仙数
  41.                 ArrayList<Integer> huiWunNums = new ArrayList<Integer>(); // 记录回文数
  42.                 for (int i = 100; i < 1000; i++) {
  43.                         if (shuiXian(i) && huiWun(i)) {
  44.                                 System.out.println(i);
  45.                                 hasShuixian = true;
  46.                                 continue;
  47.                         }
  48.                         if (huiWun(i))
  49.                                 huiWunNums.add(i);
  50.                 }
  51.                 int j = 0;
  52.                 if (!hasShuixian)
  53.                         for (Integer i : huiWunNums) {
  54.                                 if (j == 10) { // 控制每行打印10个数字
  55.                                         System.out.println();
  56.                                         j = 0;
  57.                                 }
  58.                                 System.out.print(i + "  ");
  59.                                 j++;
  60.                         }
  61.         }

  62.         static void test3() {
  63.                 int sum = 0;
  64.                 for (int i = 100; i <= 200; i++) {
  65.                         if (!shuiXian(i) && !huiWun(i) && !shuShu(i))
  66.                                 sum += i;
  67.                 }
  68.                 System.out.println();
  69.                 System.out.println(sum);
  70.         }

  71.         // 判断是否水仙数
  72.         static boolean shuiXian(int num) {
  73.                 char[] A = String.valueOf(num).toCharArray(); // int转换为char[]
  74.                 return num == (int) (Math.pow(A[0], 3) + Math.pow(A[1], 3) + Math.pow(
  75.                                 A[2], 3));
  76.         }

  77.         // 判断是否回文数
  78.         static boolean huiWun(int num) {
  79.                 char[] A = String.valueOf(num).toCharArray(); // int转换为char[]
  80.                 for (int i = 0; i < A.length / 2; i++) {
  81.                         if (A[i] == A[A.length - 1 - i])
  82.                                 continue;
  83.                         else
  84.                                 return false;
  85.                 }
  86.                 return true;
  87.         }

  88.         static boolean shuShu(int num) { // 判断是否是素数
  89.                 if (2 == num)
  90.                         return true;
  91.                 for (int i = 2; i < Math.sqrt(num); i++) {
  92.                         if (num % i == 0)
  93.                                 return false;
  94.                 }
  95.                 return true;
  96.         }

  97. }
复制代码
第1题
甲队1 VS 乙队3
甲队2 VS 乙队2
甲队3 VS 乙队1
第2题
101  111  121  131  141  151  161  171  181  191  
202  212  222  232  242  252  262  272  282  292  
303  313  323  333  343  353  363  373  383  393  
404  414  424  434  444  454  464  474  484  494  
505  515  525  535  545  555  565  575  585  595  
606  616  626  636  646  656  666  676  686  696  
707  717  727  737  747  757  767  777  787  797  
808  818  828  838  848  858  868  878  888  898  
909  919  929  939  949  959  969  979  989  999  
第3题
11109
作者: chslzj    时间: 2013-7-6 10:15
  1. import java.util.ArrayList;
  2. import java.util.HashMap;
  3. import java.util.HashSet;
  4. import java.util.Iterator;
  5. import java.util.List;
  6. import java.util.Set;



  7. /**
  8. *
  9. */

  10. /**
  11. * @author Administrator
  12. *
  13. */
  14. public class Exam {
  15.         public static void nameList(){
  16.                 int[] arrays=new int[]{1,2,3};//乙队队员
  17.                 boolean[] flags=new boolean[]{false,false,false};//乙队队员是否已经被选中
  18.                 for(int i=0;i<3;i++)//找到乙队中不是1号也不是3号的队员
  19.                         if(arrays[i]!=1&&arrays[i]!=3)
  20.                         {
  21.                                 System.out.println("甲队3号选手的对手是乙队"+arrays[i]+"号");
  22.                                 flags[i]=true;//2号队员被选中
  23.                         }
  24.                 for(int i=0;i<3;i++)//乙队中不是一号且没有被选中的队员
  25.                         if(arrays[i]!=1&&!flags[i])
  26.                         {
  27.                                 System.out.println("甲队1号选手的对手是乙队"+arrays[i]+"号");
  28.                                 flags[i]=true;//3号队员被选中
  29.                         }               
  30.                 for(int i=0;i<3;i++)//乙队中没有被选中的队员
  31.                         if(!flags[i])
  32.                         {
  33.                                 System.out.println("甲队2号选手的对手是乙队"+arrays[i]+"号");
  34.                                 flags[i]=true;//1号队员被选中
  35.                         }
  36.         }

  37.         /**
  38.         @function:
  39.          * @data:2013-7-6上午10:02:11
  40.          * @author csl
  41.          */
  42.         private static void question3() {       
  43.                 int sum=0;
  44.                 for(int i=100;i<=200;i++)
  45.                 {
  46.                         int hundred=i/100;
  47.                     int ten=i/10-hundred*10;
  48.                     int one=i%10;
  49.                     if(!check1(hundred,ten,one,i)&&!check2(hundred,one)&&!check3(i))//即不是回文数又不是素数又不是水仙数
  50.                             sum+=i;
  51.                 }
  52.                 System.out.println("第三题的答案是:"+sum);
  53.         }
  54.         /**
  55.         @function:
  56.          * @data:2013-7-6上午10:05:15
  57.          * @author chenyanli
  58.          * @param i
  59.          * @ 判断是否为素数
  60.          */
  61.         private static boolean check3(int i) {
  62.                 for(int j=2;j<i/2;j++)
  63.                         if(i%j==0)
  64.                                 return false;
  65.                 return true;
  66.         }
  67.         /**
  68.         @function:
  69.          * @data:2013-7-6上午9:42:50
  70.          * @author csl
  71.          */
  72.         private static void question2() {
  73.                 List<Integer> list=new ArrayList<Integer>();//水仙数存储
  74.                 List<Integer> list1=new ArrayList<Integer>();//水仙数和回文数
  75.                 for(int i=100;i<1000;i++){
  76.                         int hundred=i/100;
  77.                         int ten=i/10-hundred*10;
  78.                         int one=i%10;
  79.                         if(check1(hundred,ten,one,i)){//是否水仙数
  80.                                 list.add(i);
  81.                                 if(check2(hundred,one))//是否回文数
  82.                                         list1.add(i);
  83.                         }
  84.                 }
  85.                 if(!list1.isEmpty())
  86.                         for(int i :list1)
  87.                                 System.out.println(i);
  88.                 else
  89.                         for(int i :list)
  90.                                 System.out.println(i);
  91.                
  92.         }
  93.         /**
  94.         @function:
  95.          * @data:2013-7-6上午9:55:12
  96.          * @author chenyanli
  97.          * @param hundred
  98.          * @param one
  99.          * 判断是否为回文数
  100.          */
  101.         private static boolean check2(int hundred, int one) {
  102.                 return hundred==one;
  103.         }
  104.         /**
  105.         @function:
  106.          * @data:2013-7-6上午9:51:07
  107.          * @author chenyanli
  108.          * @param hundred
  109.          * @param ten
  110.          * @param one
  111.          *
  112.          * 判断是否为水仙数
  113.          */
  114.         private static boolean check1(int hundred, int ten, int one,int i) {
  115.                 int sum=one*one*one+ten*ten*ten+hundred*hundred*hundred;
  116.                 return sum==i;
  117.         }
  118.         public static void main(String[] args) {
  119.                 nameList();//第一题
  120.                 System.out.println("第二题答案");
  121.                 question2();//第二题
  122.                 question3();//第三题
  123.         }

  124. }
复制代码
运行结果为:
甲队3号选手的对手是乙队2号
甲队1号选手的对手是乙队3号
甲队2号选手的对手是乙队1号
第二题答案
153
370
371
407
第三题的答案是:11125
作者: 29198102shihao    时间: 2013-7-6 15:42
C:\Users\shilinhu\Desktop\截图01.jpg
C:\Users\shilinhu\Desktop\截图00.jpg
作者: 29198102shihao    时间: 2013-7-6 15:42
图片怎么贴啊?
作者: 29198102shihao    时间: 2013-7-6 15:45
第二题代码:

public class Test2 {

        /**
         * 第二题
         */
       
       
        public static void main(String[] args) {
                int number=0;
                int verseNumber=0;
                boolean flag=false;
                for(int i=1;i<10;i++)
                {
                        for(int j=0;j<10;j++)
                        {
                                for(int k=0;k<10;k++)
                                {
                                        number=i*100+j*10+k;
                                        verseNumber=k*100+j*10+i;
                                        if(number==verseNumber&&(Math.pow(i, 3)+Math.pow(j, 3)+Math.pow(k, 3))==number)
                                        {
                                                flag=true;
                                                System.out.println("即是水仙数又是回文数的数");
                                                System.out.println(number);
                                        }
                                }
                        }
                }

               
                if(!flag)
                {
                        System.out.println("水仙花数有");
                        System.out.println(number);
                }
        }

}


运行结果

截图01.jpg (67.4 KB, 下载次数: 0)

第一题代码

第一题代码

截图00.jpg (24.64 KB, 下载次数: 0)

第一题运行结果

第一题运行结果

截图02.jpg (27.47 KB, 下载次数: 0)

第2题运行结果

第2题运行结果

作者: 29198102shihao    时间: 2013-7-6 15:48

public class Test2 {

        /**
         * 第二题
         */
       
        第二题代码
        public static void main(String[] args) {
                int number=0;
                int verseNumber=0;
                boolean flag=false;
                for(int i=1;i<10;i++)
                {
                        for(int j=0;j<10;j++)
                        {
                                for(int k=0;k<10;k++)
                                {
                                        number=i*100+j*10+k;
                                        verseNumber=k*100+j*10+i;
                                        if(number==verseNumber&&(Math.pow(i, 3)+Math.pow(j, 3)+Math.pow(k, 3))==number)
                                        {
                                                flag=true;
                                                System.out.println("即是水仙数又是回文数的数");
                                                System.out.println(number);
                                        }
                                }
                        }
                }

               
                if(!flag)
                {
                        System.out.println("水仙花数有");
                        System.out.println(number);
                }
        }

}





作者: liguangcaiup    时间: 2013-7-6 21:44
惭愧啊 之前结果一题没对  但出错不怕,重要的是要知道原因!
debug了下:
第一题 是因为头开始用xyz表示乙队了后来想都可以用数字,循环的xyz改了下面条件忘了。
          原程序if (i != ‘x’ && k != ‘y’ && k != ‘z’)改为if (i != 1 && k != 1 && k != 3)就行了。
第二题 要求打印如果没有这个数那么输出所有的水仙数。 我给打印回文数了。。。
          原程序if (huiwen(i))  huiWenNums.add(i);改为if (shuiXian(i))   shuiXianNums.add(i);
第三题  判断素数循环条i <Math.sqrt(num)  改为for (int i = 2; i <= Math.sqrt(num); i++),这个导致少了一个169=13*13 的数字
总结:虽然思路对,但是小错误导致大问题。要多练,多测试。共勉!
  1. package com.share.eclipse;

  2. import java.awt.List;
  3. import java.util.ArrayList;

  4. import org.junit.Test;

  5. public class test {
  6.         // 1.两个兵乓球队进行比赛,各出三个人。各队选手的编号均为1号,2号,3号,抽签决定比赛名单,有人向队员打听比赛的名单。
  7.         // 甲队1号说不和乙队的1号比,甲队的3号说不和乙队的1号和3号比,请编程找出两队的赛手名单。
  8.         // 2.打印出所有三位数中即是水仙数又是回文数的数,如果没有这个数那么输出所有的水仙数。
  9.         // 水仙数是指一个三位数,其个位数立方和等于本身,例如:153=13+53+33
  10.         // 回文数是121置换后还是其本身,而132就不是回文数,因为置换后是231。
  11.         // 3.打印出100到200之间中即不是回文数又不是素数又不是水仙数的所有数的和。

  12.         public static void main(String[] args) {
  13.                 System.out.println("第1题");
  14.                 test1();
  15.                 System.out.println("第2题");
  16.                 test2();
  17.                 System.out.println();
  18.                 System.out.println("第3题");
  19.                 test3();
  20.         }

  21.         static void test1() {
  22.                 int[] A = new int[3]; // A[0],A[1],A[2]表示甲队1,2,3球员。其值表示乙队对手编号。
  23.                 int i, j, k;
  24.                 for (i = 1; i <= 3; i++)
  25.                         for (j = 1; j <= 3; j++) {
  26.                                 // 甲队1号和甲队2号对手不重
  27.                                 if (i != j)
  28.                                         for (k = 1; k <= 3; k++) {
  29.                                                 // 甲队1号和甲队3号对手不重,甲队2号和甲队3号对手不重
  30.                                                 if (i != k && j != k) {
  31.                                                         // 甲队1号说不和乙队的1号比,甲队的3号说不和乙队的1号和3号比
  32.                                                         if (i != 1 && k != 1 && k != 3) {
  33.                                                                 A[0] = i;
  34.                                                                 A[1] = j;
  35.                                                                 A[2] = k;
  36.                                                         }
  37.                                                 }
  38.                                         }
  39.                         }
  40.                 System.out.println("甲队1 VS 乙队" + A[0]);
  41.                 System.out.println("甲队2 VS 乙队" + A[1]);
  42.                 System.out.println("甲队3 VS 乙队" + A[2]);
  43.         }

  44.         static void test2() {
  45.                 boolean flag = false; // 标志是否有水仙数&&回文
  46.                 ArrayList<Integer> shuiXianNums = new ArrayList<Integer>(); // 记录回文数
  47.                 for (int i = 100; i < 1000; i++) {
  48.                         if (shuiXian(i) && huiWun(i)) {
  49.                                 System.out.println(i);
  50.                                 flag = true;
  51.                                 continue;
  52.                         }
  53.                         if (shuiXian(i))
  54.                                 shuiXianNums.add(i);
  55.                 }
  56.                 int j = 0;
  57.                 if (!flag)
  58.                         for (Integer i : shuiXianNums) {
  59.                                 if (j == 10) { // 控制每行打印10个数字
  60.                                         System.out.println();
  61.                                         j = 0;
  62.                                 }
  63.                                 System.out.print(i + "  ");
  64.                                 j++;
  65.                         }
  66.         }

  67.         static void test3() {
  68.                 int sum = 0;
  69.                 int j = 0;
  70.                 for (int i = 100; i <= 200; i++) {
  71.                         if (!shuiXian(i) && !huiWun(i) && !shuShu(i)) {
  72.                                 System.out.print(i + "  ");
  73.                                 j++;
  74.                                 if (j == 10) {
  75.                                         System.out.println();
  76.                                         j = 0;
  77.                                 }
  78.                                 sum += i;
  79.                         }
  80.                 }
  81.                 System.out.println("总的::"+sum);
  82.         }

  83.         // 判断是否水仙数
  84.         static boolean shuiXian(int num) {
  85.                 char[] A = String.valueOf(num).toCharArray(); // int转换为char[]
  86.                 int baiWei = A[0] - '0';
  87.                 int shiWei = A[1] - '0';
  88.                 int geWei = A[2] - '0';
  89.                 return num == (int) (Math.pow(baiWei, 3) + Math.pow(shiWei, 3) + Math.pow(geWei, 3));
  90.         }

  91.         // 判断是否回文数
  92.         static boolean huiWun(int num) {
  93.                 char[] A = String.valueOf(num).toCharArray(); // int转换为char[]
  94.                 for (int i = 0; i < A.length / 2; i++) {
  95.                         if (A[i] == A[A.length - 1 - i])
  96.                                 continue;
  97.                         else
  98.                                 return false;
  99.                 }
  100.                 return true;
  101.         }

  102.         static boolean shuShu(int num) { // 判断是否是素数
  103.                 if (2 == num)
  104.                         return true;
  105.                 for (int i = 2; i <= Math.sqrt(num); i++) {
  106.                         if (num % i == 0)
  107.                                 return false;
  108.                 }
  109.                 return true;
  110.         }

  111. }
复制代码
第1题
甲队1 VS 乙队3
甲队2 VS 乙队1
甲队3 VS 乙队2
第2题
153  370  371  407  
第3题
100  102  104  105  106  108  110  112  114  115  
116  117  118  119  120  122  123  124  125  126  
128  129  130  132  133  134  135  136  138  140  
142  143  144  145  146  147  148  150  152  154  
155  156  158  159  160  162  164  165  166  168  
169  170  172  174  175  176  177  178  180  182  
183  184  185  186  187  188  189  190  192  194  
195  196  198  200  总的::11125
作者: ゞ傀儡鮭鮭ぃ    时间: 2013-7-7 02:25
第一题
import java.util.*;
class ten{
    public static void main(String [] args)
{
        int i,j,k;   /*i是甲队1号的对手,j是甲队2号的对手,k是甲队3号的对手*/
String[] num = {"乙队1号","乙队2号","乙队3号"};
        for(i=0;i<=2;i++)
        for(j=0;j<=2;j++){
            if(i!=j)
            for(k=0;k<=2;k++){
                if(i!=k && j!=k){
                    if(i!=0 && k!=0 && k!=2 ) /*甲队1号说不和乙队的1号比,甲队的3号说不和乙队的1号和3号比*/
                    System.out.println(" 甲队1号   Vs   "+num+"\n 甲队2号   Vs   "+num[j]+"\n 甲队3号   Vs   "+num[k]);
                }
            }
        }
    }
}
运算结果:


第二题

class eleven
{
public static void main(String[] agrs)
{
int n=0;
for (int i = 100; i <=999; i++) //求出三位数
{
int a = i / 100;
int b = i / 10 % 10;
int c = i % 10;
if (Math.pow(a, 3) + Math.pow(b, 3) + Math.pow(c, 3) == i&&a==c)//如果同时水仙花和回文数
{
n+=1;
System.out.println("水仙花和回文数 : " +i);}
if(Math.pow(a, 3) + Math.pow(b, 3) + Math.pow(c, 3) == i&&n==0)//如果不存在回文数,直接打印水仙花数
System.out.println("水仙花数 : " +i);
  }
}
}
运算结果:

第三题

class twelve
{
public static void main(String [] args)
{
int s=0;                       
  for(int i = 100;i<=200;i++)//for循环 100-200间的所有素数(质数)
{
   if(isZhiShu(i)==false)
{
//调用isZhiShu(int number)方法,返回true
int a = i / 100;
int b = i / 10 % 10;
int c = i % 10;
if (Math.pow(a, 3) + Math.pow(b, 3) + Math.pow(c, 3) != i||a!=c)//如果同时不是水仙花或者回文数
{
s+=i;//求和
}
   }
  }
System.out.println("总和" +s);//打印出100到200之间中即不是回文数又不是素数又不是水仙数的所有数
的和
}
public static boolean isZhiShu(int number)
{
//判断是否是质数的方法
  if(number==1)
{
   return false;
  }
  for(int i = 2;i<number;i++)
{
   if(number%i == 0)
{
    return false;
   }
  }
  return true;
}
}
思路:先用递归判断是否是素数,然后再判断回文数和水仙花数,然后求和 打印
结果:






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2