**题目描述:**5这个数字,如果一个数在十进制表示下数字5出现了不少于5次,则是一个幸运数。例如,55555、152****55565就是幸运数;输入一个正整数,输出它的最小幸运数。
法一:
整数型数字转换为字符串
import java.util.*;
public class test10 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个正整数:");
int n=sc.nextInt();
int counter = 0;
int res = n+1;
// 整形数字转换为字符串,可利用字符串的indexOf得到包含字符
String str1 = Integer.toString(res);
String str2="5";
// 初始要考虑"5"的个数已经超过5,只需加1即是最小幸运数
counter = countStr(str1, str2);
// "5"的个数不足5的情况
while (counter != 5 && counter < 5) {
res++;
str1 = Integer.toString(res);
counter = countStr(str1, str2);
}
System.out.println(counter);
System.out.println(n);
System.out.println(n+"的最小幸运数为:"+res);
// System.out.println(res);
}
//递归函数
private static int countStr(String str1, String str2) {
int counter = 0;
int index = 0;
while ((index = str1.indexOf(str2, index)) != -1) {
// index=index+str2.length();
// public int indexOf(int ch, int fromIndex):
// 返回从 fromIndex 位置开始查找指定字符在字符串中第一次出现处的索引,
// 如果此字符串中没有这样的字符,则返回 -1。
index++;
counter++;
}
return counter;
}
}
法二:
直接取余
public class test9 {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个正整数:");
int n=sc.nextInt();
int count=0;
int res=n;
while (count!=5){
res++;
count=Lucky(res);
}
System.out.println("大于"+n+"的最小幸运数为:"+res);
}
public static int Lucky(int res){
int count=0;
while (res!=0){
if(res%10==5) count++;
res=res/10;
}
return count;
}
}