2013-12-05 4 views
5

Я делаю заявку на хранение билетов на посадку в место для воображаемой авиакомпании. Я создал класс билетов смотрите нижеТип, используемый как переменная ошибка

public class ticket 
{ 
    String lastName; 
    String firstName; 
    String origin; 
    String destination; 
    String flightNumber; 
    String seatNumber; 
    String date; 

    public ticket() 
    { 
    } 

    public ticket(String lastname, String firstName, String origin, String destination, 
     String flightNumber, String seatNumber, String date) 
    { 

    } 

У меня есть два класса билета, первых и экономика. Самолет может вмещать только 10 мест. Таким образом, моя структура имеет два массива объектов билета, один из которых содержит 4 билета объектов «первый класс» и один из которых содержит 6 предметов билета «эконом-класс». См. Ниже

ticket[] ticketFirst = new ticket[4]; 
ticket[] ticketEcon = new ticket[6]; 

Я должен назначить места в случайном порядке в пределах их соответствующих наборов билетов. Я вызываю метод get (пример ниже), чтобы проверить дубликаты, то есть, что случайно назначенное место уже заполнено или нет.

public String getLastName() { return this.lastName; }

Когда я запускаю свою программу, я получаю WindowsFormsApplication1.ticket Ошибка»является„тип“, но используется как„переменная“(соответствующий код ниже)

private void btnSubmit_Click(object sender, EventArgs e) 
{ 
    Random random = new Random(); 
    int rand = random.Next(0, 4); 
    if (ticket[rand].getLastName = null) 
    { 
     ticket[rand].setLastName = txbLastName.Text; 
     ticket[rand].setFirstName = txbFirstName.Text; 
     ticket[rand].setOrigin = txbOrigin.Text; 
     ticket[rand].setDestination = txbDestination.Text; 
     ticket[rand].setFlightNumber = txbFlightNumber.Text; 
     ticket[rand].setSeatNumber = txbSeatNumber.Text; 
     ticket[rand].setDate = txbDate.Text; 
    } 
    else 
    {     
     MessageBox.Show("Seat Assignment Failed, try again.", "Seat Assignment"); 
    } 
} 

Что мое намерение заключалось в том, чтобы присвоить новому объекту билета случайное место (положение) в массиве, и большая часть моего опыта связана с java. Я думаю, что это синтаксическая ошибка от меня, используя синтаксис, подобный Java. Любые указатели, чтобы заставить это работать правильно?

Полная программа Ниже

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 
public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
     ticket[] ticketFirst = new ticket[4]; 
     ticket[] ticketEcon = new ticket[6]; 

    } 

    private void btnSubmit_Click(object sender, EventArgs e) 
    { 
     Random random = new Random(); 
     int rand = random.Next(0, 4); 
     if (ticket[rand].getLastName = null) 
     { 
      ticket[rand].setLastName = txbLastName.Text; 
      ticket[rand].setFirstName = txbFirstName.Text; 
      ticket[rand].setOrigin = txbOrigin.Text; 
      ticket[rand].setDestination = txbDestination.Text; 
      ticket[rand].setFlightNumber = txbFlightNumber.Text; 
      ticket[rand].setSeatNumber = txbSeatNumber.Text; 
      ticket[rand].setDate = txbDate.Text; 
     } 
     else 
     {     
      MessageBox.Show("Seat Assignment Failed, try again.", "Seat Assignment"); 
     } 
    } 
} 

public class ticket 
{ 
    String lastName; 
    String firstName; 
    String origin; 
    String destination; 
    String flightNumber; 
    String seatNumber; 
    String date; 

    public ticket() 
    { 
    } 

    public ticket(String lastname, String firstName, String origin, String destination, 
     String flightNumber, String seatNumber, String date) 
    { 

    } 

    public void setLastName(String lastName) 
    { 
     this.lastName = lastName; 
    } 

    public String getLastName() 
    { 
     return this.lastName; 
    } 

    public void setFirstName(String firstName) 
    { 
     this.firstName = firstName; 
    } 

    public String getFirstName() 
    { 
     return this.firstName; 
    } 

    public void setOrigin(String origin) 
    { 
     this.origin = origin; 
    } 

    public String getOrigin() 
    { 
     return this.origin; 
    } 

    public void setDestination(String destination) 
    { 
     this.destination = destination; 
    } 

    public String getDestination() 
    { 
     return this.destination; 
    } 

    public void setFlightNumber(String flightNumber) 
    { 
     this.flightNumber = flightNumber; 
    } 

    public String getFlightNumber() 
    { 
     return this.flightNumber; 
    } 

    public void setSeatNumber(String seatNumber) 
    { 
     this.seatNumber = seatNumber; 
    } 

    public String getSeatNumber() 
    { 
     return this.seatNumber; 
    } 

    public void setDate(String date) 
    { 
     this.date = date; 
    } 

    public String getDate() 
    { 
     return this.date; 
    } 
    }  
    } 
+0

Кроме вашей ошибки вы можете посмотреть на классы в [Generic пространство имен] (http://msdn.microsoft.com/ en-us/library/system.collections.generic (v = vs.110) .aspx), они лучше, чем массивы. Также вы можете посмотреть [Автореализованные свойства] (http://msdn.microsoft.com/en-us/library/vstudio/bb384054.aspx) –

ответ

8

Ваш ticket[rand] должен быть либо ticketFirst[rand], либо ticketEcon[rand]. Они также должны быть определены вне конструктора Form1, чтобы иметь возможность доступа к ним в другом месте формы.

например.

public partial class Form1 : Form 
{ 
    ticket[] ticketFirst = new ticket[4]; 
    ticket[] ticketEcon = new ticket[6]; 

    public Form1() 
    { 
     InitializeComponent(); 
     ticketFirst = new ticket[4]; 
     ticketEcon = new ticket[6]; 
    } 

    private void btnSubmit_Click(object sender, EventArgs e) 
    { 
     Random random = new Random(); 
     int rand = random.Next(0, 4); 
     if (ticketFirst[rand].getLastName = null) 
     { 
      ticketFirst[rand].setLastName = txbLastName.Text; 
      ticketFirst[rand].setFirstName = txbFirstName.Text; 
      ticketFirst[rand].setOrigin = txbOrigin.Text; 
      ticketFirst[rand].setDestination = txbDestination.Text; 
      ticketFirst[rand].setFlightNumber = txbFlightNumber.Text; 
      ticketFirst[rand].setSeatNumber = txbSeatNumber.Text; 
      ticketFirst[rand].setDate = txbDate.Text; 
     } 
     else 
     {     
      MessageBox.Show("Seat Assignment Failed, try again.", "Seat Assignment"); 
     } 
    } 
} 
+0

Благодарим за быстрый ответ. Мои ошибки всегда кажутся простыми вещами, которые я пропускаю.Не звоните первым или econ, как Гомер говорит: «До! – user3072031

+0

Рад, что я мог помочь. Удачи! –

0

В .NET, соглашение, чтобы дать Типы TitleCase имена, но ваш класс ticket является строчными, который вызывает компилятор следует путать между переменной с именем ticket и вашего класса, также назван ticket.

Измените название класса на заголовок Ticket и оно будет работать.

3

Ваши битовые массивы существуют только в конструкторе формы. Для того, чтобы использовать его в событии, методы ... вы должны создать поле в классе ...

public partial class Form1 : Form 
{ 
    private Ticket[] tickets = new Ticket[5]; 

    ... 
} 

В C# вы должны:

  • использовать свойство, а не методы получает и наборы ,
  • Использование TitleCase для имен классов (вместо ticket, имя как Ticket)
Смежные вопросы