Vb.net 在制作星图程序时,真的在与子程序斗争吗

Vb.net 在制作星图程序时,真的在与子程序斗争吗,vb.net,visual-studio-2010,visual-studio,visual-studio-2008,Vb.net,Visual Studio 2010,Visual Studio,Visual Studio 2008,我正在尝试创建一个子过程,它绘制一系列的空格和星星,然后输出结果。用户输入他们想要的星星数量和空间数量,然后输出屏幕上绘制的星星和空间。例如,DrawStars(4,5)将输出---***** 以下是我目前的代码: Module Module1 Sub Main() Dim Spaces As Integer = 0 Dim Stars As Integer = 0 Dim TotalChars As Integer = 0 Console.WriteLine

我正在尝试创建一个子过程,它绘制一系列的空格和星星,然后输出结果。用户输入他们想要的星星数量和空间数量,然后输出屏幕上绘制的星星和空间。例如,DrawStars(4,5)将输出---*****

以下是我目前的代码:

Module Module1

Sub Main()
    Dim Spaces As Integer = 0
    Dim Stars As Integer = 0
    Dim TotalChars As Integer = 0

    Console.WriteLine("Enter the number of spaces you want to enter")
    Spaces = Console.ReadLine

    Console.WriteLine("Enter the number of stars you want to enter")
    Stars = Console.ReadLine

    TotalChars = Spaces + Stars

    DrawStars(Spaces, Stars, TotalChars)

    Console.WriteLine("")

    Console.ReadLine()
End Sub

Sub DrawStars(ByVal Spaces As Integer, ByVal Stars As Integer, ByVal TotalChars As Integer)
    Dim Output As String

    Do Until TotalChars = Stars + Spaces
        If Spaces > 0 The
            Output = Console.ReadLine
        Else
            Console.WriteLine("*")
        End If
    Loop

End Sub

结束模块最简单的情况是使用以下方法创建2个字符串:


上述代码不受无效输入参数的保护。

您必须更改您的条件
TotalChars
已根据
Main
设置为
Stars+Spaces

Do Until TotalChars = Stars + Spaces  '<-- Already True!
    If Spaces > 0 The
        Output = Console.ReadLine
    Else
        Console.WriteLine("*")
    End If
Loop

这不应作为复制粘贴解决方案。这更像是一个例子,也是我在代码中看到的问题=)

你需要两个循环,一个用于空格数,一个用于星号,只需将它们添加到相同的输出变量中;它不需要
totalchars
我想他希望它们在同一行上问题是,代码需要有空间来帮助缩进创建图片,如果需要可以跨多行。那么有没有一种方法可以方便地让用户转到下一行并继续进行,像图片一样创建?@JeffCottonBWFC添加另一个参数以指示要创建的行数repeat@JeffCottonBWFC根据您提供的问题和代码,我真的不知道您希望得到什么样的输出。您有一个
输出
变量,该变量完全未使用,
空格
始终为
>0
。我试图让代码在用户输入行数和星数后创建一张图片。我必须获得在屏幕上绘制图像的过程,但我似乎无法使用代码来实现这一点。如果您的意思是在其中任何一个之后需要换行,只需添加
Console.WriteLine()
,以回答任何一个问题……问题涉及的是空格和星形,而不是直线和星形
Do Until TotalChars = Stars + Spaces  '<-- Already True!
    If Spaces > 0 The
        Output = Console.ReadLine
    Else
        Console.WriteLine("*")
    End If
Loop
For i As Integer = 1 To Spaces
    Console.Write(" ")
Next
For i As Integer = 1 To Stars
    Console.Write("*")
Next