gpt4 book ai didi

java - Head First Java Puzzle4(第 4 章,第 91 页)解释

转载 作者:行者123 更新时间:2023-12-01 21:08:21 25 4
gpt4 key购买 nike

下面是主题谜题的解决方案和输出,我无法理解它是如何工作的。

public class Puzzle4 {
public static void main(String[] args) {

Puzzle4b[] obs = new Puzzle4b[6];
int y = 1;
int x = 0;
int result = 0;

while (x<6) {
obs[x] = new Puzzle4b();
obs[x].ivar = y;
y = y*10;
x = x+1;
}

x = 6;

while (x>0) {
x = x-1;
result = result + obs[x].doStuff(x);
}

System.out.println("result " + result);
}
}

class Puzzle4b {

int ivar;

public int doStuff(int factor) {

if (ivar>100) {
return ivar*factor;
} else {
return ivar*(5-factor);
}
}
}

输出:

result 543345

根据我的理解,第一个 While 循环将运行 6 次(从 x==0 到 x==5)。 y 变量以及“ivar”的值为 1,000,000(我认为这是我出错的地方,但我会继续希望得到纠正)。

第二个 While 循环让我有点困惑。它将运行 6 次,循环的第二行将“x”值传递给 doStuff 方法以使其返回一个值。我得出的结果数字与实际结果不符。

如有任何帮助,我们将不胜感激。如果我的想法是错误的,请告诉我。如果有人想重新格式化我的代码以使其更符合行业标准,那么从一开始就学习良好的习惯会很棒!

最佳答案

这段代码`

 obs[x].ivar = y;
y = y*10;

将导致第一个 ivar = y = 1 然后多个 y因此将是 {1 - 10 - 100 - 1,000 - 10,000 - 100,000}

第二个循环 x 将为 { 5 , 4 , 3 , 2 , 1 , 0 }所以它会像这样开始 result = result+obs[5].doStuff[5];

我猜所有的误解都是元素 1 中的 x 等于元素 5 中的 y并且元素 2 中的 x 将等于元素 4 中的 y,依此类推”,因为 x 正在递增而 y 正在递减

所以事情会像这样

  (ivar > 100 ) 
ivar * (5-factor)
x[3] * y[2] = 1000 * (5-2) = 3000
x[4] * y[1] = 10000 * (5-1) = 40000
x[5] * y [0] = 100000 * (5-0) = 500000

then (ivar < 100)
ivar * factor
x[1] * y [5] = 1 * 5 = 5
x[2] * y [4] = 10 * 4 = 40
x[3] * y [3] = 100 * 3= 300

然后,如果将所有数字加在一起,您将得到输出

关于java - Head First Java Puzzle4(第 4 章,第 91 页)解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41918287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com