Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 具有相同变量的嵌套循环_Vb.net_Loops_For Loop - Fatal编程技术网

Vb.net 具有相同变量的嵌套循环

Vb.net 具有相同变量的嵌套循环,vb.net,loops,for-loop,Vb.net,Loops,For Loop,我可以用相同的计数器在VB中进行嵌套循环吗 代码是这样的 For a As Integer = 1 to Console.ReadLine For a = 1 to a Console.WriteLine("*") Next Console.WriteLine() Next 该程序设计用于仅用一个变量绘制*的三角形 VB只是不允许我再次使用嵌套循环 错误:…变量“a”一直被独立循环使用 我有自己的用法,只能使用1个变量。事实上,如果我理解的话,您需要的是

我可以用相同的计数器在VB中进行嵌套循环吗

代码是这样的

For a As Integer = 1 to Console.ReadLine
    For a = 1 to a
        Console.WriteLine("*")
    Next
    Console.WriteLine()
Next
该程序设计用于仅用一个变量绘制*的三角形

VB只是不允许我再次使用嵌套循环
错误:…变量“a”一直被独立循环使用


我有自己的用法,只能使用1个变量。

事实上,如果我理解的话,您需要的是以
a的值启动内部计数器。你要做的是从1开始在里面创建另一个循环

For a As Integer = 1 to Console.ReadLine
    For b As Integer = a to 5
        Console.WriteLine("Line: " & a)
    Next
Next

不能在同一范围内声明另一个同名变量。但是内部循环与外部循环在同一范围内。这就是为什么会出现编译器错误

您可以使用其他名称:

Dim i As Int32 
If Int32.TryParse(Console.ReadLine, i) AndAlso i > 0 Then
    For a As Integer = 1 To i
        For aa = 1 To i
            Console.WriteLine("Line: {0} {1}", a, aa)
        Next
    Next
End If

将第二个
FOR
循环更改为
WHILE
循环是什么

For a As Integer = 1 to Console.ReadLine
    Do While a <=5
            Console.WriteLine("Line: " & a)
            Exit Do    
    Loop
Next
将As Integer=1转换为Console.ReadLine

执行While a绘制三角形,如您所述,您需要两个变量,如下所示:

For a As Integer = 1 to Console.ReadLine
    For b As Integer = 1 to a
        Console.Write("*")
    Next
    Console.WriteLine()
Next


如果在内部循环中使用相同的变量,内部循环将更改变量的值,这在大多数情况下不是您想要的,并且在所有情况下都会令人难以置信地困惑。因此,VB强制您在每个嵌套的
For
循环中使用不同的迭代器。您可以考虑将整数变量分成2个部分16位部分,将用户的输入保持在16位,而当前的迭代值在较低的16位(您需要使用<代码>而<代码> >代替<代码> < <代码> >。你不能,因为他们不是同一个柜台。在您的情况下,当内部循环结束时,a的值将为5,第一个循环将以a=5的速度继续,但我希望它们共享相同的存储空间。哇!你认为一个整数会占用你这么多存储空间吗?不,我的任务是只能使用1个变量如果我想让他们共享同一个变量(不仅是名称,而且是值)@Echo:你想共享什么?您可以从内部循环中访问和使用外部循环的变量,如我上面所示(lok位于
控制台。WriteLine
)。通常,有两个循环,因此有两个循环变量。不能同时使用一个。我希望它们作为单个变量,而不是两个独立的整数。不,我只能使用一个变量。所以是同一个变量。@Echo:我已经编辑了我的最后一条评论。整数不需要任何成本,为什么只需要一个变量?也许您认为对于每个循环迭代都需要一个
int
。但是循环本身只需要一个。你不是想在
While
循环中增加
a
(并在
While
循环之前将其设置为1。否则,好答案:)不,这是一个无限循环。如果在前后将其设置为1,它仍然是一个无限循环。@TimSchmelter承认,但从技术上讲,它确实绕过了VB中的限制。“解决”这可能是一个延伸,不过:)@Stevendogart:不太可能。如果您想要与两个嵌套for循环相同的功能,还需要另一个带有
While
的变量来存储旧值。然后你什么也得不到,但是你有了更多的代码。@TimSchmelter我想说的是,我可以想象,在某些情况下,这可能正是你想要做的——有一个嵌套的
For
循环,它使用相同的迭代器,并改变外部
For
循环的迭代器。如果是这样的话,这就是解决问题的方法。但是,这仍然会让人完全困惑,我仍然建议,必须有一种更符合逻辑的方式来编写逻辑,而不是这样做。这很奇怪。我不知道VB阻止了你这么做。Leopold Stotch提供了一个很好的解决方案,从技术上讲可以让它正常工作,但您还没有解释为什么需要这样做。每个人都在问你为什么,因为这样的一个构想不太可能是个好主意。每个人都在问你为什么,因为他们想帮助你理解更好的方法。我刚刚编辑了它,你可以看到我这样做的原因,而错误阻止了我这样做。从逻辑上讲,没关系。你把每个人都弄糊涂了。你是说这是为了某种学习练习,你被要求看你是否能找到一种只使用一个迭代器变量绘制三角形的方法?如果是这样的话,我们的建议会有很大的改变。不,如果我的代码通过编译,它可以正常工作,因为它是专门设计的,不会受到其值的影响。试着在脑海中运行它,看看吧@Echo,我确实意识到,在您的特定场景中,内部循环总是以迭代器等于进入内部循环时的迭代器结束,因此从这个意义上讲,它是有效的。我的观点是,为了避免混淆和错误,VB.NET的制作者决定不允许这样做,所以即使它在逻辑上在你的头脑中工作,在VB中也不能。尽管如此,花费这么多精力来节省4个字节是毫无意义的。如果您非常关心它,请使用两个
Short
变量,而不是一个
Integer
,这样您仍然只能使用4个字节。实际上,这是一个具有挑战性的问题