我正在使用输入框在数组中找到一个元素。这是我目前拥有的:
arrayNumber = InputBox("Please enter your desired number.")
For i = 0 To 9
If arrayNumber = data(i) Then
outputMessage1 = ("Your number is found in the first array. " & i & " is the index of the desired number.")
Else
End If
Next
For i = 0 To 9
If arrayNumber = data2(i) Then
outputMessage2 = ("Your number is found in the second array. " & i & " is the index of the desired number.")
Else
End If
Next
For i = 0 To 9
If arrayNumber = data3(i) Then
outputMessage3 = ("Your number is found in the third array. " & i & " is the index of the desired number.")
Else
End If
Next
Selection.TypeText (outputMessage1 & " " & outputMessage2 & " " & outputMessage3)
For i = 0 To 9
If arrayNumber <> i Then
notFound = ("Sorry the element is not found.")
Else
End If
Next
Selection.TypeText (notFound)
...
我当前遇到两个问题:即使arrayNumber等于i,也会弹出notFound消息。我该如何解决?
另外,我知道我目前在每个数组中都有该元素的索引。有没有一种方法可以找到结合所有三个数组的元素的最早出现(即,如果4是第一个数组中的第三个索引,而第二个数组中的第二个索引,我想说最早出现在第二个数组)。
答案 0 :(得分:0)
这可能会帮助您,或者至少给您一个想法
$docker logs 34045723709f3553533a1c823800697e55d43a7e676499310751f7116d3a1068
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
Access to docker on host failed!!`
$ps -aux | grep dockerd
root 21836 0.4 0.2 436168 42920 ? Ssl 10:39 0:00 /usr/bin/dockerd -H fd://
如果arrayNumber = InputBox("Please enter your desired number.")
For i = 0 To 9
If arrayNumber = data(i) Then
outputMessage1 = ("Your number is found in the first array. " & i & " is the index of the desired number.")
ElseIf arrayNumber = data2(i) Then
outputMessage2 = ("Your number is found in the second array. " & i & " is the index of the desired number.")
ElseIf arrayNumber = data3(i) Then
outputMessage3 = ("Your number is found in the third array. " & i & " is the index of the desired number.")
Else
notFound = ("Sorry the element is not found.")
End If
Next
Selection.TypeText (outputMessage1 & " " & outputMessage2 & " " & outputMessage3)
或if statement
中的一个被触发,它将跳过另一个elseif
或if
答案 1 :(得分:0)
明确解决出现“未找到”的问题,即使应用了有效的数字也是如此。
这是我要用作初级开发人员的培训元素的类型。主要是因为在我看来,您有一些要求,您要么不了解,要么对他们的需求不明确。
您已声明即使所提供的数字为0到9之间的值,您的代码也会显示未找到的消息,而您的代码如下所示:
For i = 0 To 9
If arrayNumber <> i Then
notFound = ("Sorry the element is not found.")
Else
End If
Next
之所以这样做是因为您要告诉它。只要arrayNumber不等于i,就可以设置NotFound,但是当arrayNumber不等于i时,则不执行任何操作。
无论如何,您都有一个要求和一个提议的逻辑解决方案,但它们的表现并不符合您的预期。我发现,采取行为不如预期的逻辑并将其转换为“真实的”字眼有助于澄清我在做什么。我会将这段代码翻译成以下语句:
对于我范围内的每个数字,如果提供的数字(ArrayNumber)为 不等于我的增量器(i),然后将NotFound设置为“ Sorry the 找不到元素。”
和往常一样,代码会执行我们告诉的内容,并且此代码的行为与编写的相同。问题是您实际要执行的操作是确定某个值是否包含在范围内,而您执行的唯一检查就是该值不包含在范围内。考虑以下语句:
在以下情况下,将NotFound设置为“对不起,找不到元素”: 提供的数字(ArrayNumber)不等于找到的任何值 在我的范围内
该语句可以更准确地确定您要在代码中执行的操作。尽管它们是相似的陈述,但焦点已转移。本质上,要求是“当Y为True时执行X”。但是,另一种看待这种逻辑的方式是“ X,直到Y为False”。我经常发现,数据检查的需求通常写为“当Y为True时执行X”,但是我们通常可以将这些需求编码为“ X,直到Y为False”(至少在我看来)。
这给了我们以下声明:
NotFound设置为“对不起,找不到元素”,直到提供 数字(arrayNumber)等于范围内的任何值
对我来说,这种风格逻辑可以构成良好的防御性编程。它为您提供了处理数据的初步立场。这意味着您可以按照预期执行,也可以处理未达到预期的数据。
现在,由于我们有了重新定义的意图声明,因此我们可以以不同的方式处理代码。
notFound = ("Sorry the element is not found.")
For i = 0 To 9
If arrayNumber = i Then
notFound = ""
Exit For
End If
Next
这段代码意味着我们从数据已经“失败”范围检查中包括的立场开始,并且我们正在验证数据以证明立场是错误的。