西西弗斯数是一个简单的黑洞数,也是十分有趣
任意输入一个数字,尽量越长越好,统计其中奇数和偶数的个数,统计数字总长度,这三个数拼起来就得到一个新的数字,例如,“奇数个数”+“偶数个数”+“总个数”。之后再对其做同样统计,数次之后 ,总得到一个固定的数字是,123。这就是西西弗斯数。
import java.util.Scanner;
import java.util.regex.Pattern;
public class XXFS {
public static void main(String[] args) {
String s = null;
try (Scanner sc = new Scanner(System.in)) {
System.out.print("Input a string:");
s = sc.next();
if (!Pattern.compile("^[0-9]*$").matcher(s).matches()) {//如果不是纯数字,则抛异常
throw new Exception();
}
} catch (Exception e) {
System.out.println(e.getMessage());
return;
}
int odd, even, length;
while (!"123".equals(s)) {
final StringBuilder bud = new StringBuilder();
odd = even = 0;
length = s.length();
for (int i = 0; i < length; i++) {
int n = s.charAt(i);
if (n % 2 == 0) {//如果是偶数
even++;
} else {
odd++;
}
}
s = bud.append(even).append(odd).append(length).toString();//按偶数个数-奇数个数-总个数排列
System.out.println(s);
}
}
}