黑马程序员技术交流社区

标题: 提问 : 由0到7这几个数字所组成的说有奇数,打印出来 [打印本页]

作者: 惜缘1989    时间: 2016-3-3 23:42
标题: 提问 : 由0到7这几个数字所组成的说有奇数,打印出来
求大神 解决   

作者: 就是我    时间: 2016-3-4 09:21
题意不清,你的意思应该是有且只有0-7八个数字吧?
作者: 惜缘1989    时间: 2016-3-4 22:50
就是我 发表于 2016-3-4 09:21
题意不清,你的意思应该是有且只有0-7八个数字吧?

0 ,1,2,3,4,5,6,7这八个数字能组成的所有奇数
作者: 就是我    时间: 2016-3-5 17:29
..................
末尾是奇数的都是奇数
11
111
1111
''''''''''''
这算奇数吗?   1是这八个数字中的吗,无限个,你让人怎么做
作者: 惜缘1989    时间: 2016-3-5 19:45
就是我 发表于 2016-3-5 17:29
..................
末尾是奇数的都是奇数
11

这几个数字不能重复
作者: 就是我    时间: 2016-3-5 23:44
说一下我的思路
首先定义一个正则表达式String regex="[1-7][0-7]{0,7}";初步删选条件
然后for循环遍历从1到76543210
找出所有奇数
在已找出的数中找出所有满足正则的数
然后对于每个数进行取各个位,循环比较(通过for循环嵌套),由于同位有一次比较,会有一次相同,设置一个标志位,记录嵌套for循环中比较相等的次数,次数如果超过该数的长度,则不满足条件
将满足条件的数加入到集合中,最后在打印出来
作者: 就是我    时间: 2016-3-6 22:35
package com.heima.test;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.TreeSet;

import javax.management.relation.RelationServiceNotRegisteredException;

public class Test1 {

        public static void main(String[] args) {
                ArrayList<String> list=new ArrayList<>();
                String regex="[1-7][0-7]{0,7}";
                TreeSet<Character>ts=new TreeSet<>();
                for(Integer i=76540000;i<76543210;i++){
                        if( (!(i%2==0)) && i.toString().matches(regex) ){
                        char[]arr=i.toString().toCharArray();
                         for(int j=0;j<arr.length;j++){
                                 ts.add(arr[j]);
                         }
                         if(ts.size()==arr.length){
                                 list.add(i.toString());
                         }
               
                         ts.clear();       
                }       
                }
                System.out.println(list);
}
}
//功能已经实现了,但是数据量还是比较大,计算机扛不住,打印出来的是一位到八位所有满足条件的数
作者: 就是我    时间: 2016-3-6 22:38
如果只是算8位数满足条件的,可以将int i=1改查 int i=10234567;




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