10000到99999之间找出所有只有两个不同数字的数,怎么写条件语句啊?
比如10011 22332  78777
不使用正则表达式
不计较运行效率,当然越快越好

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【jayray007】截止到2008-07-30 15:44:00的历史汇总数据(不包括此帖):
    发帖的总数量:7                        发帖的总分数:357                      每贴平均分数:51                       
    回帖的总数量:47                       得分贴总数量:14                       回帖的得分率:29%                      
    结贴的总数量:7                        结贴的总分数:357                      
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    敬礼!

    取消马甲机器人,请点这里:http://www.java2000.net/mycsdn/robotStop.jsp?usern=jayray007
      

  2.   

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    for(int i=10000;i<99999;i++)
    {
    String str=String.valueOf(i);
    HashSet set=new HashSet();
    for(int j=0;j<str.length();j++)
    {
    set.add(str.charAt(j));
    }
    if(set.size()==2)
    {
    System.out.println(i);
    }
    }
    }
    接分
      

  3.   

    public class NumberCompare { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    for(int i=10000;i<100000;i++){
    if(judge(i))
    System.out.println(i);
    }
    }
    public static boolean judge(int i){
    char[] chars=Integer.toString(i).toCharArray();
    java.util.Map map=new java.util.HashMap();
    for(int index=0;index<chars.length;index++){
    map.put(new Character(chars[index]), null);
    }
    if(map.size()==2)
    return true;
    return false;
    }
    }
    利用HashMap的中键值的唯一性判断,但是性能不如利用排列组合进行判断的方法
      

  4.   


    public class TwoSameNumber {
    public boolean isTwoNumber(int number) {
    HashSet<Integer> set = new HashSet<Integer>();
    int[] array = this.number2Array(number);
    for(int num : array) {
    set.add(num);
    }
    if(set.size()==2) return true;
    return false;
    }

    private int[] number2Array(int number) {
    String numString = String.valueOf(number);
    int[] array = new int[numString.length()];
    for(int i=0;i<numString.length();i++) {
    array[i] = Integer.parseInt(numString.substring(i, (i+1)));
    }
    return array;
    }

    public static void main(String[] args) {
    TwoSameNumber number = new TwoSameNumber();
    for(int i=10000;i<=99999;i++) {
    if(number.isTwoNumber(i)) System.out.println(i);
    }
    }}
      

  5.   

    long begin=System.currentTimeMillis();
    for(int i=10000;i<=99999;i++)
    {
    char [] aa=(i+"").toCharArray();
    int count=0;
                for(int j=1;j<5;j++)
                {
                 if(aa[0]!=aa[j])
                 {
                 count++;
                 }
                 if(count>1)
                 {
                 break;
                 }
                }
             if(count==1)
             {
             System.out.println(i); 
             }
    }
    long end=System.currentTimeMillis();
    System.out.println(end-begin);
      

  6.   

    一个想法:取各位的数字遍历其他数字位求差值,如果差值只有1个or2个值,正常,是要求的结果;如果出现差值大于等于3个值,则排除该数?反正LZ不要求效率,呵呵。不知道想法有没有问题,欢迎大家讨论。
      

  7.   


    解决
    也要感谢提供其他方法的朋友
    import java.util.ArrayList;
    import java.util.List;
    public class Temp {
    public static void main(String[] args) {
    List list = new ArrayList();
            for (int i = 10000; i <= 99999; i++) {
                int j = i;
                String binaryString = Integer.toString(j, 10);
                for (int k = 0; k < binaryString.length(); k++) {
                    String digital = binaryString.substring(k, k + 1);
                 System.out.println(digital);
                    if (!list.contains(digital)) {
                        list.add(digital);
        }
                }
                if (list.size() == 2) {
                    System.out.println("Bingo! " + j);
                }            
                list.clear();
            } }
    }
      

  8.   

    明显得用排列组合来做,用For是最笨的办法,真正在项目开发中,这样做肯定不行的.引用 2 楼 fosjos 的回复:
    0-9取出2个不同数字 然后2^5排列,判断开头是否是0 最后根据 个数 <=2 还是 个数==2 ? 
    排除全部相同的11111,22222,33333,... 
     支持!!这个的