【问题标题】:Get Array Value on Loop循环获取数组值
【发布时间】:2016-10-17 17:33:47
【问题描述】:

基于How can I declare a two dimensional string array?,我创建了自己的数组,但正在努力检索这些值。

我收到一个似乎与第二 (0) 行 (0) = (((1) / total) * (100 - (vPercentChanger)))) 相关的语法错误,但错误可能出现在此行上方(请参阅下面的代码)。

错误:语法错误。 代码:

  'Test values
Dim highPer As Double = 5
Dim high As Double = 10
Dim medPer As Double = 15
Dim medium As Double = 20
Dim lowPer As Double = 1
Dim low As Double = 2
Dim naPer As Double = 3
Dim na As Double = 4

Dim array1 As Double(,) = New Double(3, 1) {{highPer, high}, {medPer, medium}, {lowPer, low}, {naPer, na}}

Dim tmpList As New List(Of Double)
For i As Integer = 0 To array1.Rank - 1
If (0) > 5 + vPercentChanger Then
                (0) = (((1) / total) * (100 - (vPercentChanger)))     
End If

Next

补充说明:

我已经尝试过 array1(0) 和 tmpList(0),但都产生了错误。我相信我很接近。我已经尝试过 C# 到 VB 的转换器,但这并不能解决这个问题。

【问题讨论】:

  • 不确定是否反对 :-( 如果有人需要添加任何内容,请询问,我会提供。:-)

标签: arrays vb.net


【解决方案1】:

正如所写,代码存在一些问题。

我们已将 array1 声明为一个数组,其中包含 3 行,每行 1 个条目,但给定的数据是 4 行,每行 2 个条目。

我担心我无法理解 Values as strings... 注意。除非highPerhigh 等。是变量名,它们需要在它们周围加上引号。如果它们是变量名,则这些变量应该已包含在示例中以满足Minimal, Complete, Verifiable example 标准。

您已经尝试过array1(0)tmpList(0) - 您想要达到什么目的?

array1 是一个二维数组,所以我们需要用 2 个索引来处理它,例如array1(0,0).

tmpListarray1 都包含字符串,将值与数字进行比较或将数字分配给它们似乎是错误的(VB 是否执行某种隐式转换?您确定要使用字符串,也许它们应该是数组/数字列表?

更新:

从 cmets 看来,我们有一个表示对列表的数组

{valPct, val}

我们想要遍历它们并检查

 if valPct > (5 + vtPercentChanger) then
     valPct = (val / total) * (100 - vPercentChanger)

我们可以这样做

dim values as double(,) = {{v1Pct, v1}, {v2Pct, v2}, {v3Pct, v3}}

for index as integer = 0 to values.GetUpperBound(1) -1
    if (values(index,0) > (5 + vtPercentChanger)) then
        values(index,0) = (values(index,1) / total) * (100 - vPercentChanger)
next

不幸的是,这是在没有代码检查的情况下完成的 - 在公共汽车上使用电话 - 但应该给出大致的形状。

【讨论】:

  • 我想编写代码来引用库中的值(变量/值)并对其进行处理。这个库只有四个,但有些可能更长。
  • @indofraiser 你能描述一下你在循环中想要做什么 - 目前,这并不明显。您为 array1 中的每个维度做一些事情(注意 - 每个维度 [2] 不是每一行 [4] 或每一列 [2]),然后根据不是来自数组(除非 (1) 旨在成为数组的索引)。了解您要达到的目标将有助于指导答案
  • 远点。我们使用 CSS 显示动态构建的侧向条形图。如果经过一些数学运算后,该值的百分比意味着像素宽度将低于 5,那么我们将“提升”它以便用户可以看到它。但是,如果说该值为 1 并设置为 5,则总数现在为 104 宽(因此是 100% 宽度的 104%),所以我做了一些汇总来整理它。这部分看起来像: If highPer > 5 + vPercentChanger Then highPer = ((high / total) * (100 - (vPercentChanger)))
  • 我希望现在更有意义,本质上这需要两个值作为一个实际值,一个是为了视觉目的而改变的值
  • 更有意义。看起来你不应该使用字符串,因为你想做计算。如果您使用原始值 highPer 等重置代码。并使其成为双精度数组而不是字符串并更新问题以显示有关您尝试实现的目标的信息,这将使其他人更容易回答 - 人们倾向于查看问题,如果没有足够的信息乍一看,他们甚至可能不看 cmets
猜你喜欢
  • 2012-02-29
  • 1970-01-01
  • 2016-03-23
  • 2017-08-15
  • 1970-01-01
  • 2017-06-26
  • 1970-01-01
  • 1970-01-01
  • 2017-12-11
相关资源
最近更新 更多