编写代码计算数组中所有偶数的平均值.用pharo smalltalk语言



在Pharo Smalltalk中解决评估,请以whileTrue:do两种方式循环整个代码

这是我试过的,但它给了我一个错误的答案。

| x y z count elem sum |
x := #(84 45 54).
sum := 0.
z := 1.
y := x size.
elem := x at: z.
[z < y] whileTrue: [ elem even ifTrue: [sum := sum + elem.]. z := z + 1.].
Transcript clear.
Transcript show: sum.

Yes是错误的,因为"总是一样的。

你必须这样做:

| x y z count elem sum |
x := #(84 45 54 ).
sum := 0.
z := 1.
y := x size.
[z <= y] whileTrue: [ 
elem := x at: z.
elem even ifTrue: [sum := sum + elem.]. z := z + 1.
].
Transcript clear.
Transcript show: sum.

或更简洁的

| x |
x := #(84 45 54 ).
sum := 0.
x do:[:each | each even ifTrue: [sum := sum + each.].].
Transcript clear.
Transcript show: sum.

| x |
x := #(84 45 54 ).
sum := x inject: 0 into: [ :sum :each | each even ifTrue: [sum + each ] ifFalse: [sum + 0]]. 
Transcript clear.
Transcript show: sum.

最新更新