求精简的代码
import java.util.*;
public class jiuwushu {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个四位的整数:");
int M = sc.nextInt();
int F = F(M);
if (F != 0) {
System.out.println(F);
}
System.out.println("----------------------------");
List<Integer> list = TotalM();
System.out.println("九五数中F(M)能被8整除的所有M为");
for (Integer integer : list) {
System.out.print(integer);
System.out.print(" ");
}
}
/**
* 判断该数是否为九五数,
* 九五数:返回 F(M)
* 非九五数和输入错误:返回 0
* 详细版
*
* @param M
* @return
*/
public static int F(int M) {
if (M >= 10000 || M <= 999) {
System.out.println("你输入的数字有误");
return 0;
} else {
Map<String, Integer> wei = wei(M);
int geWei = wei.get("geWei");
int shiWei = wei.get("shiWei");
int baiWei = wei.get("baiWei");
int qianWei = wei.get("qianWei");
if (qianWei + baiWei == 9 && shiWei + geWei == 5) {
System.out.println("该数字为九五数");
int newM = qianWei * 10 + shiWei * 1000 + baiWei + geWei * 100;
int F = (M - newM) / 99;
return F;
} else {
if (qianWei + baiWei == 9) {
System.out.println("该数字不是九五数,原因是个位加十位不等于5");
} else if (shiWei + geWei == 5) {
System.out.println("该数字不是九五数,原因是百位加千位不等于9");
} else {
System.out.println("该数字不是九五数,原因是个位加十位不等于5,并且百位加千位不等于9");
}
return 0;
}
}
}
/**
* 判断该数是否为九五数,
* 九五数:返回 F(M)
* 非九五数和输入错误:返回 0
* 简略版,针对第二题
*
* @param M
* @return
*/
public static int jiuWu(int M) {
Map<String, Integer> wei = wei(M);
int geWei = wei.get("geWei");
int shiWei = wei.get("shiWei");
int baiWei = wei.get("baiWei");
int qianWei = wei.get("qianWei");
if (qianWei + baiWei == 9 && shiWei + geWei == 5) {
int newM = qianWei * 10 + shiWei * 1000 + baiWei + geWei * 100;
int F = (M - newM) / 99;
return F;
}
return 0;
}
public static Map<String, Integer> wei(int M) {
Map<String, Integer> map = new HashMap<String, Integer>();
int geWei = M % 10;
int shiWei = M / 10 % 10;
int baiWei = M / 100 % 10;
int qianWei = M / 1000;
map.put("geWei", geWei);
map.put("shiWei", shiWei);
map.put("baiWei", baiWei);
map.put("qianWei", qianWei);
return map;
}
/**
* 判断1000-9999中所有满足九五数的,并满足F(M)能被8整出
* 返回List集合
*
* @return
*/
public static List<Integer> TotalM() {
List<Integer> Ms = new ArrayList<Integer>();
for (int i = 1000; i <= 9999; i++) {
int F = jiuWu(i);
if (F != 0) {
if (F % 8 == 0) {
Ms.add(i);
}
}
}
return Ms;
}
}