public class Puzzle4 {
public static void main(String[] args) {
Puzzle4b[] obs = new Puzzle4b[6]; //创建对象数组,里面有6个对象
//变量初始化
int y = 1;
int x = 0;
int result = 0;
while (x < 6) {
//循环给每个obs设置初值
obs[x] = new Puzzle4b();
obs[x].ivar = y;
y = y * 10;
x = x + 1;
}
x = 6;
while (x > 0) {
//从obs[5]开始逆向进行循环
x = x - 1;
result = result + obs[x].doStuff(x);//把x作为参数调用doStuff()方法
}
System.out.println("result " + result);
}
}
class Puzzle4b {
int ivar;
public int doStuff(int factor) { //返回int类型
if (ivar > 100) {
//通过x递减和ivar>100来输出高三位的543
return ivar * factor;
}
else {
//通过5-factor来输出低三位的345
return ivar * (5 - factor);
}
}
}
//运行结果:
result 543345
第一个while循环把每个obs对象的ivar的值设置为1-100000依次*10。
类Puzzle4b中的doStuff方法通过if语句来控制高三位和低三位的不同输出。
第二个while循环将x从5依次递减,结合doStuff方法输出result:543345。