public class VampireNumber {
private int num1, num2;
public static void main(String[] args) {
VampireNumber vn = new VampireNumber();
vn.printNumber();
}
public void printNumber() {
char[] ch;
//循环得到所有4位数
for(int i = 1000;i < 10000;i++) {
String s = String.valueOf(i);
ch = s.toCharArray();
leftFor(i, ch);
}
}
/**
* 将2个数字合并为一个2位数
* @param num1数字字符char类型
* @param num2数字字符char类型
* @return
*/
public int numConsolidation(char ch1, char ch2) {
String s = \"\" + ch1 + ch2;
return Integer.valueOf(s);
}
/**
* 验证是否为吸血鬼数字
* @param num
* @param num1
* @param num2
* @return
*/
public boolean isVampireNumber(int num, char[] ch) {
num1 = numConsolidation(ch[0], ch[1]);
num2 = numConsolidation(ch[2], ch[3]);
if(num == num1 * num2)
return true;
num1 = numConsolidation(ch[0], ch[1]);
num2 = numConsolidation(ch[3], ch[2]);
if(num == num1 * num2)
return true;
num1 = numConsolidation(ch[1], ch[0]);
num2 = numConsolidation(ch[2], ch[3]);
if(num == num1 * num2)
return true;
num1 = numConsolidation(ch[1], ch[0]);
num2 = numConsolidation(ch[3], ch[2]);
if(num == num1 * num2)
return true;
return false;
}
/**
* 由左边开始对数组循环
*/
public void leftFor(int num, char[] ch) {
for(int i = 1;i < ch.length;i++){
if(i != 1) {
char temp;
temp = ch[1];
ch[1] = ch[i];
ch[i] = temp;
}
if(isVampireNumber(num, ch)) {
System.out.println(num + \" 是吸血鬼数\");
break;
}
}
}
}
我也写了一个……是不是写太多了点……