下面的代码返回"算术","几何"如果输入数组分别是算术和几何系列,如果不是,则为-1。
虽然代码工作正常,但我改变了
sslContextFactory.setKeyStoreType("BKS");
到
if s = arr.length - 1
在if s == arr.length - 1
循环中,代码不再正常工作。
我不明白为什么。不应该while
而不是==
吗?
=
答案 0 :(得分:3)
你永远不会改变我认为你想做的s
的价值。您应该在增加k
k += 1
s = k + 1
此外,在您为几何测试重新初始化k
时,您还要重置s
...
k = 0
s = k + 1
您还可以完全摆脱变量s
并使其成为一种方法...在代码顶部添加这三行
def s(k)
k + 1
end
并移除您为s
指定值的所有行,并使用s(k)
... s(k)
将始终将下一个更高的值返回到{{1} }
答案 1 :(得分:2)
这两个语句之间的区别在于变量s
是为第一个语句设置的,而不是为第二个语句设置的。因此,第一个if
声明将s
设置为arr.length - 1
if s = arr.length - 1 # s => arr.length - 1
if s == arr.length - 1 # s => undefined
因为if
语句位于while
循环中,在其表达式中使用s
,所以语句的更改会改变程序的行为。
答案 2 :(得分:0)
如果你输入==
语句将尝试检查它们是否相等,只有=
语句正常工作,因为你只是将值设置为一个值,所以这总是正确的。
如果不同的东西比较等于设置变量,则可以始终为真。