2015-10-19 70 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

如果這回答了您的問題,請考慮將其標記爲接受的答案。 –