2011-02-24 61 views
0

我正在做一个类项目的棒球程序。我几乎完成了它,但它给了我一个语法错误。我无法弄清楚我做错了什么。我使用两个函数将不同类型的棒球票的值返回到计算它们的按钮。为什么这个功能不能用于我的程序。 (Visual Basic)

下面是 1)用户选择是否购买季票或单比赛门票说明书

2.)用户输入所需的票的数目和座椅基于它们是否选择季节单一类型 - 游戏门票。

3)用户点击计算机票费用按钮,显示

4)用户点击清除表单按钮清除反应最终成本

我只是想不通我做错了什么。我知道我在做这件事很愚蠢。

错误发生在btnCompute子例程内部。 与SingleGameCost()和SeasonalCost语法误差修改()线114和118

Public Class Form1 
'Global Variables 

Dim intTicketChoice As Integer 
Dim seatType As Integer 
Dim ticketNum As Integer 








Private Sub cboTicketType_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboTicketType.SelectedIndexChanged 



    intTicketChoice = Me.cboTicketType.SelectedIndex 
    Me.lstSeatType.Items.Clear() 

    Select Case intTicketChoice 

     Case 0 
      SingleGame() 

     Case 1 
      Seasonal() 


    End Select 

    'Make Items visible 

    Me.lblCostDisplay.Visible = True 
    Me.lblSeats.Visible = True 
    Me.lblTickets.Visible = True 
    Me.lstSeatType.Visible = True 
    Me.txtTicketNum.Visible = True 
    Me.btnClear.Visible = True 
    Me.btnCompute.Visible = True 
    Me.txtTicketNum.Focus() 

End Sub 

Private Sub SingleGame() 





    'Add List Items 

    Me.lstSeatType.Items.Add("Box Seats $55") 
    Me.lstSeatType.Items.Add("Lower Deck Seats $35") 
    Me.lstSeatType.Items.Add("Upper Deck Seats $25") 
    Me.lstSeatType.Items.Add("Standing Room Only $15") 

    If lstSeatType.SelectedItem = "Box Seats $55" Then 
     seatType = 0 
    End If 

    If lstSeatType.SelectedItem = "Lower Deck Seats $35" Then 
     seatType = 1 
    End If 

    If lstSeatType.SelectedItem = "Upper Deck Seats $25" Then 
     seatType = 2 
    End If 

    If lstSeatType.SelectedItem = "Standing Room Only $15" Then 
     seatType = 3 
    End If 


End Sub 



Private Sub Seasonal() 





    'Add List Items 
    Me.lstSeatType.Items.Add("Box Seats $2500") 
    Me.lstSeatType.Items.Add("Lower Deck Seats $1500") 


    'Price Items for Single Games 
    If lstSeatType.SelectedItem = "Box Seats $2500" Then 
     seatType = 4 
    End If 

    If lstSeatType.SelectedItem = "Lower Deck Seats $1500" Then 
     seatType = 5 
    End If 


End Sub 

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 

End Sub 

Private Sub btnCompute_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCompute.Click 



    intTicketChoice = Me.cboTicketType.SelectedIndex 

    If intTicketChoice = 0 Then 
     SingleGameCost() 
    End If 

    If intTicketChoice = 1 Then 
     SeasonalCost() 

    End If 


    'try and catch number textbox 

    Try 
     ticketNum = Convert.ToInt32(txtTicketNum.Text) 
    Catch Exception As FormatException 
     MsgBox("Number of tickets must be numeric") 
     Return 

    End Try 

    'display cost of tickets 

    Me.lblCostDisplay.Text = "The total cost of tickets purchased: " & totalCost.ToString("C") 


End Sub 

Private Function SingleGameCost(ByVal seatType As Integer, ByRef ticketNum As Integer, ByRef cost As Decimal) As Decimal 
    Dim totalCost As Decimal 


    ticketNum = Convert.ToInt32(Me.txtTicketNum.Text) 

    'Price Items for Single Games 

    If seatType = 0 Then 
     cost = 55D 
    End If 


    If seatType = 1 Then 
     cost = 35D 
    End If 


    If seatType = 2 Then 
     cost = 25D 
    End If 

    If seatType = 3 Then 
     cost = 15D 
    End If 

    totalCost = ticketNum * cost 
    Return totalCost 


End Function 
Private Function SeasonalCost(ByVal seatType As Integer, ByRef ticketNum As Integer, ByRef cost As Decimal) As Decimal 
    Dim totalCost As Decimal 



    ticketNum = Convert.ToInt32(Me.txtTicketNum.Text) 

    If seatType = 4 Then 
     cost = 2500D 
    End If 

    If seatType = 5 Then 
     cost = 1500D 
    End If 

    totalCost = cost * ticketNum 
    Return totalCost 



End Function 

末级

kthe错误发生在这里

If intTicketChoice = 0 Then 
     SingleGameCost() 
    End If 

    If intTicketChoice = 1 Then 
     SeasonalCost() 

    End If 

与singlegamecost()函数和seasonacost ()函数

+0

错误发生在btnCompute子例程内部。 – 2011-02-24 18:37:24

+0

带有语法错误SingleGameCost()和SeasonalCost() – 2011-02-24 18:37:56

+0

什么行给出语法错误?这本身会有很大的帮助。 – 2011-02-24 18:39:03

回答

0

在我头上,如果它是返回值,请将其更改为End Sub,因为这不是函数而是子函数。但我不知道我是否不知道哪一行会给出错误。

+0

行114和118 – 2011-02-24 18:44:04

+0

你能告诉我哪一行是这个..我不会一一列出所有行...... – 2011-02-24 18:44:52

+0

If intTicketChoice = 0 Then SingleGameCost( ) 结束如果 如果intTicketChoice = 1然后 SeasonalCost() 结束如果 – 2011-02-24 18:49:38

3

我刚才仔细检查了一下,看起来你没有任何参数称为SingleGameCost()和 SeasonalCost(),但是你用一些参数定义了函数。

`Private Function SingleGameCost(ByVal seatType As Integer, ByRef ticketNum As Integer, ByRef cost As Decimal)` 

你不应该提供参数吗?

dim seat as integer = 1 
dim ticketNum as integer = 1 
dim cost as decimal = 12.00 
SingleGameCost(seat, ticketNum, cost) 
+0

点上。 @Josh Tha CreativeOne,你是否在像Visual Studio这样的IDE中做这件事?您应该收到一个相当明显的错误'参数'成本''私人函数SingleGameCost(seatType作为整数,ByRef ticketNum作为整数,ByRef成本为十进制)未指定参数'作为小数' – 2011-02-24 18:53:26

+0

我只是不明白错误。我想我也应该说明这一点。是的,我正在使用视觉工作室。我只是一个n00b与所有这一切。 – 2011-02-24 19:01:25

+0

感谢这工作,是的,我得到了那个错误。我只是不知道这意味着什么。尽管如此,我仍然是一个n00b。 – 2011-02-24 19:02:14