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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

{:3_47:}{:3_47:}问:有六个数 0,1,2,3,4,5 取其中的任意三个数组成一个能被5整除的数,如120,125,135,130,并把所有符合条件的三位数打印出来。{:3_47:}{:3_47:}

6 个回复

倒序浏览

  1. import java.util.*;

  2. public class MainTest {

  3.         public static void main(String[] args) {
  4.                 // TODO Auto-generated method stub

  5.                 Test.getNum();
  6.         }

  7. }

  8. class Test {
  9.         public static void getNum() {
  10.                 int n = 0;
  11.                 for (int i = 1; i <= 5; i++) {                                //百位上的数 从1开始
  12.                         for (int j = 0; j <= 5; j++) {                        //十位上的数
  13.                                 if (i != j) {                                                //不与百位数相同
  14.                                         for (int k = 0; k <= 5; k++) {        //个位上的数
  15.                                                 if (i != k && j != k) {                //不与百位、十位数相同
  16.                                                         n = i * 100 + j * 10 + k;
  17.                                                         if (n % 5 == 0)                        //能否被五整除
  18.                                                                 System.out.print(n+"\t");
  19.                                                 }
  20.                                         }
  21.                                 }
  22.                         }
  23.                 }

  24.         }
  25. }
复制代码
回复 使用道具 举报
不系之舟王 来自手机 中级黑马 2014-9-28 09:24:32
藤椅
没在电脑旁,想了一下,用三个for循环吧,最外层从1开始,其余的应该不难吧
回复 使用道具 举报

如果取其中的任意5个数组成一个能被5整除的数,要多少个for循环{:3_47:}
回复 使用道具 举报
好给力的题
回复 使用道具 举报
354620815 发表于 2014-9-28 21:36
如果取其中的任意5个数组成一个能被5整除的数,要多少个for循环

有什么最优的办法吗?我刚开始学只想到了FOR循环
回复 使用道具 举报
郑飞 高级黑马 2014-9-29 06:38:28
7#
354620815 发表于 2014-9-28 21:36
如果取其中的任意5个数组成一个能被5整除的数,要多少个for循环

给你递归{:3_47:}
  1. import java.util.ArrayList;
  2. import java.util.Collections;
  3. //有六个数 0,1,2,3,4,5 取其中的任意三个数组成一个能被5整除的数,如120,125,135,130,并把所有符合条件的三位数打印出来
  4. class Test
  5. {
  6.         static ArrayList<String> myList = new ArrayList<String>();
  7.         public static void main(String[] args)
  8.         {
  9.                 ArrayList<String> src = new ArrayList<String>();//初始化src
  10.                 src.add("0");
  11.                 src.add("1");
  12.                 src.add("2");
  13.                 src.add("3");
  14.                 src.add("4");
  15.                 src.add("5");
  16.                 System.out.println("所有3位数:");
  17.                 addNum(src,new ArrayList<String>(),3);//主方法: 结果是把全排列数据加入到myList
  18.                 printList(myList);//打印myList
  19.                 //最后一步不封装方法了
  20.                 System.out.println("最终结果:");
  21.                 for(String s : myList)
  22.                 {
  23.                         int i = Integer.parseInt(s);
  24.                         if(i>99&&i%5==0)//三位数  除5不余
  25.                                 System.out.print(s+" ");
  26.                 }
  27.         }
  28.         //此方法返回位数为numCount的所有数字组合
  29.         public static void addNum(ArrayList<String> src,ArrayList<String> dest,int numCount)
  30.         {
  31.                 ArrayList<String> tempsrc = new ArrayList<String>(src.subList(0, src.size()));//初始化临时src集合
  32.                 tempsrc.removeAll(dest);//扣除已经被移到目标集合中的元素
  33.                 for(int i =0;i<tempsrc.size();i++)
  34.                 {
  35.                         ArrayList<String> temp = new ArrayList<String>(dest.subList(0, dest.size()));//初始化临时desc集合
  36.                         temp.add(tempsrc.get(i));//移动一个元素
  37.                         if(temp.size()==numCount)
  38.                         {
  39.                                 putIntoList(temp);//收集全排列集合
  40.                         }
  41.                         if(temp.size()<numCount)//控制需要获得数字的位数
  42.                         addNum(src,temp,numCount);//递归 每次进入方法数字位数加1
  43.                 }
  44.         }
  45.         public static void putIntoList(ArrayList<String> list)
  46.         {
  47.                 StringBuilder sb = new StringBuilder();
  48.                 for(String t : list)
  49.                         sb.append(t);
  50.                 myList.add(sb.toString());
  51.         }
  52.         public static void printList(ArrayList<String> list)
  53.         {
  54.                 for(String str : list)
  55.                         System.out.print(str+" ");
  56.                 System.out.println();
  57.         }
  58. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马