2015-10-19 71 views
-1

此代码似乎没有工作。我真的不知道用什么循环来获取它,以便将用户放入机器的信息再次打印出来。汽车数据库循环

这样做的目的是让用户或者挑:

  1. 打印,他们在之前的数据库已经输入的菜单。如果他们没有在数据库中输入任何内容,那么它应该是空白的

  2. 应让用户输入信息到数据库(我主要是在努力)并做错误检查,以便它告诉他们他们是否有输入一个数字,当他们应该输入一个字母和

  3. 结束程序。

当我这样做(2)它让我键入,但它不记得数据库中的信息。还需要一个数字(4),它应该返回到主菜单。我认为这是环路进入的地方,但我不知道使用哪一个。

下面是代码:

Structure Cars 
Public carmake As String 
Public carmodel As String 
Public caryear As Integer 
Public carlicence As String 
End Structure 

Module Module1 
Sub Main() 
    Dim userchoice 
    Console.WriteLine("Choose weather to open the database(1), print it (2) or end (3)") 
    userchoice = Console.ReadLine() 
    If userchoice = 1 Then 
     Dim cardatabase(4) As Cars 
     Console.WriteLine("This will allow you to view the database.") 
     Console.WriteLine("Please enter the car make,licence,model and year") 
     cardatabase(1).carmake = Console.ReadLine() 
     cardatabase(1).carlicence = Console.ReadLine() 
     cardatabase(1).carmodel = Console.ReadLine() 
     cardatabase(1).caryear = Console.ReadLine() 
    ElseIf userchoice = 2 Then 
     Console.WriteLine("The database is,") 
    ElseIf userchoice = 3 Then 
     Console.WriteLine("Thanks for using this program.") 
    End If 
    Console.ReadLine() 
End Sub 
End Module 

回答

0

你有几个问题与此代码。下面是我建议:

  1. 你需要某种循环结构,如While循环。您的测试条件可能是userchoice变量。

  2. 在您的If语句中,您需要检查userchoice是否等于字符串值而不是整数值。所以线If userchoice = 1 Then实际上应该是If userchoice = "1" Then

  3. cardatabase数组应该在循环之外声明。当您在循环中声明它时,它将继续重新创建数组,而不是向其中添加更多项目。

  4. 您的Cars结构需要位于Module Module1块内。

  5. 由于您不知道用户在退出前可能想要添加新车的次数,因此建议使用List而不是Array。列表允许轻松动态调整大小。

  6. 您需要一个整数变量来跟踪输入的汽车数量并将其用作cardatabase集合的索引。

  7. 阵列/列表索引从0开始,

  8. Cars也许应该是一个类,而不是一个结构。另外,它应该被命名为Car。这是一个单一的结构(或类,如果你改变它)。该数组本身应该被称为cars,因为它是多个Car结构(或者如果将其更改为类的对象)的集合。

,我要在这里写的代码示例演示我的观点,但是这几乎是一个完整的重写,这不会帮助你理解为什么做我所做的更改。

我最好给你的建议是回头阅读你以前阅读过的书或教程,以真正了解他们在说什么。如果你没有理解这个概念,那么在其他地方查看它,直到你做到。

免责声明:我的建议并不全面。当我立即发现所有上述问题时,我停止检查您的代码。

+0

如果这回答了您的问题,请考虑将其标记为接受的答案。 –