private int a = 0;//符合条件的个数
private int i = 1;
private int b = 0;//中间变量,方便进行int类型和String类型的变换
private String str = "";
private boolean next = true;//判断是否符合条件
/**
* 连续输出符合7的倍数或包含7的数
* @param m 要求需要满足的次数
* @return 返回0时表示不存在这样的数据
*/
public int number (int m)
{
while(a != m){
b = 0;
str = i + "";
if(i % 7 == 0){//7的倍数
a = a + 1;
b = i + 1;//当前数的下一个数
str = b + "";
way(0, m);
}else if(str.contains("7")){//含7的数
a = a + 1;
b = i + 1;
str = b + "";
way(1, m);
}else{
a = 0;
}
// System.out.println("得到的a的值:" + a);
i++;
}
if(m == 0){
return 0;
}else{
return i - m;
}
}
/**
* 判断下一个数是否符合条件
* @param choice 前一个是7的倍数还是含有7的数,0:前一个是7的倍数;1:前一个是含有7的数
* @param m
*/
public void way(int choice, int m)
{
if(choice == 0){//前一个是7的倍数
//System.out.println("7的倍数:" + i);
while(next){
if(str.contains("7")){//含7的数
a = a + 1;
b = b + 1;
str = b + "";
// System.out.println("含7的数:" + b);
way(1, m);
}else{
next = false;
}
if(a == m){
next = false;
}
}
}else{//前一个是含7的数
//System.out.println("含7的数:" + i);
while(next){
if(b % 7 == 0){//7的倍数
a = a + 1;
b = b + 1;
str = b + "";
// System.out.println("7的倍数:" + b);
way(0, m);
}else if(str.contains("7")){//含7的数
a = a + 1;
b = b + 1;
str = b + "";
// System.out.println("含7的数:" + b);
way(1, m);
}else{
next = false;
}
if(a == m){
next = false;
}
}
}
}