有不懂问我,代码合乎要求,因为一直敲到夜里实在不想写注释了,就这样了。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);
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];
public void printNumbers(){
for(int i=0;i<10000000;i++){
System.out.println(String.format("%07d", i));
}
}
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]);
}}
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);
//输入你想要得到的和值 }}