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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Just_Only   /  2013-6-29 20:26  /  5229 人查看  /  70 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


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);
                }
        }

}




点评

结果都不对。。。  发表于 2013-7-6 19:54
回复 使用道具 举报
惭愧啊 之前结果一题没对  但出错不怕,重要的是要知道原因!
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
回复 使用道具 举报
第一题
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;
}
}
思路:先用递归判断是否是素数,然后再判断回文数和水仙花数,然后求和 打印
结果:

回复 使用道具 举报
1234
您需要登录后才可以回帖 登录 | 加入黑马