解决方案 »

  1.   


    public void printNumbers(){
    for(int i=0;i<10000000;i++){
    System.out.println(String.format("%07d", i));
    }
    }
      

  2.   

    我给楼主提供个思路,仅供参考,我用的是8位数,9位数时间较长,但原理一样
    package test;
    public class Mytest {
    public static void main(String[] args) {
    int a[]=new int[9*9*9*9*9*9*9*9];//8位数
    int i,temp,ii=0;
    boolean flag=true;
    String ss="";
    char[] cc;
    int len=100000000-11111111;
    for(i=0;i<len;i++){
    flag=true;
    temp=i+11111111;
    ss=String.valueOf(temp);
    cc= ss.toCharArray();
    for(int j=0;j<ss.length();j++){
    if(cc[j]=='0')
    flag=false;
    }
    if(flag){
    a[ii++]=temp;

    }
    }
    System.out.println(a[0]);
    System.out.println(a[ii-1]);

    }}
      

  3.   

    有不懂问我,代码合乎要求,因为一直敲到夜里实在不想写注释了,就这样了。package Applet;import java.util.ArrayList;public class T {
    public static void getAllDataNotNeed(){
    String saveDataToString;
    ArrayList<String> allDataNoNeed=new ArrayList();
    for(int i=1111111;i<=1119999;i++){
    int[] digitalMumber=new int[7];
    int[] arr=new int[9];
    saveDataToString=String.valueOf(i);
    int count=0;
    for(int j=0;j<saveDataToString.length();j++){
    digitalMumber[j]=(int)saveDataToString.charAt(6-j)-48;
    // you should care there
    if(digitalMumber[j]!=0){
    count++;
    }
    }
    if(count!=7){
    allDataNoNeed.add(saveDataToString);

    }else{
    for(int j=0;j<saveDataToString.length();j++){
    arr[digitalMumber[j]-1]++;
    if(arr[digitalMumber[j]-1]>2){
    allDataNoNeed.add(saveDataToString);
    break; }
    }
    }
    } for(int k=0;k<allDataNoNeed.size();k++){
    //System.out.println(1);
    System.out.println(allDataNoNeed.get(k));
    }
    }
    public static void getValueWanted(int valueWanted){
    String saveDataToString;
    for(int i=1111111;i<=1119999;i++){
    int[] digitalMumber=new int[7];
    int[] arr=new int[9];
    saveDataToString=String.valueOf(i);

    int sum=0;
    int count=0;
    for(int j=0;j<saveDataToString.length();j++){
    digitalMumber[j]=(int)saveDataToString.charAt(6-j)-48;
    // you should care there
    if(digitalMumber[j]!=0){
    count++;
    }
    }
    if(count==7){
    for(int j=0;j<saveDataToString.length();j++)
    sum+=digitalMumber[j];

    }
    if(sum==valueWanted){
    System.out.println("sum is "+valueWanted+" : "+saveDataToString);
    }
    }
    }
    public static void main(String[] args){
    // String s="1231231";
    // System.out.println((int)s.charAt(2)-48);
    getAllDataNotNeed();
    //输出所有不需要的组合
    //因为需要的组合太多只能以相反的代替
    getValueWanted(34);
    //输入你想要得到的和值 }}