2016-04-07 32 views
0

Bütün gün bunu araştırıp okuyarak bulmaya çalışıyorum ve bunun basit bir şey olduğunu biliyorum, ancak kodun son satırında en sonunda Girilenleri çıkaran yöntemleri oluşturmaya çalışıyorum ve bu hatayı almaya devam ediyorum. adı 'öğrenci1' geçerli bağlamda
Hata CS0103 adı 'teacher1' içinde yok Değişken erişilemiyor - Bağlam dışı

Hata CS0103 geçerli bağlam Hata CS0103 adı 'course1' içinde yok geçerli bağlamda

mevcut değil

Sadece bana doğru yönde işaret ederseniz veya en azından bana bir ipucu verirsem sonsuza dek minnettar olacağım. değişkenlerinizin course1, student1 ve teacher1 ait

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace StudentInformation 
{ 
class Program 
{ 
    static void Main(string[] args) 
    { 

     Console.WriteLine("What would you like to do? Please choose a number: "); 
     Console.WriteLine(""); 
     Console.WriteLine("1. Enter Student Information"); 
     Console.WriteLine("2. Enter Teacher Information"); 
     Console.WriteLine("3. Enter Class Information"); 
     Console.WriteLine(); 
     int menuOne = Convert.ToInt32(Console.ReadLine()); 

     if (menuOne == 1) 
     { 
      GetStudent(); 
     } 
     else if (menuOne == 2) 
     { 
      GetTeacher(); 
     } 
     else if (menuOne == 3) 
     { 
      GetClass(); 
     } 
     else 
     { 
      Console.WriteLine("Incorrect input. Exiting application."); 
      Console.ReadLine(); 
     } 

    } 


    public class Student 
    { 
     public string fName { get; set; } 
     public string lName { get; set; } 
     public string bDate { get; set; } 
    } 

    public class Teacher 
    { 
     public string tFName { get; set; } 
     public string tLName { get; set; } 
     public string tClass { get; set; } 
    } 

    public class Course 
    { 
     public string cName { get; set; } 
     public string cSubject { get; set; } 
     public string cStart { get; set; } 
    } 

    static void GetTeacher() 
    { 
     Teacher teacher1 = new Teacher(); 

     Console.WriteLine("Enter teacher's first name: "); 
     teacher1.tFName = Console.ReadLine(); 
     Console.WriteLine("Enter teacher's last name: "); 
     teacher1.tLName = Console.ReadLine(); 
     Console.WriteLine("Enter teacher's class name: "); 
     teacher1.tClass = Console.ReadLine(); 


    } 

    static void GetStudent() 
    { 
     Student student1 = new Student(); 

     Console.WriteLine("Enter student's first name: "); 
     student1.fName = Console.ReadLine(); 
     Console.WriteLine("Enter student's last name: "); 
     student1.lName = Console.ReadLine(); 
     Console.WriteLine("Enter student's birthdate: "); 
     student1.bDate = Console.ReadLine(); 
     PrintStudent(); 

    } 

    static string GetClass() 
    { 
     Course course1 = new Course(); 

     Console.WriteLine("Enter class name: "); 
     course1.cName = Console.ReadLine(); 
     Console.WriteLine("Enter class subject: "); 
     course1.cSubject = Console.ReadLine(); 
     Console.WriteLine("Enter class start time: "); 
     course1.cStart = Console.ReadLine(); 
     return course1.cName; 
    } 

    static void PrintStudent()//Going to add PrintTeacher and PrintCourses as well after I figure this out 
    { 
     //string student1.fName = GetStudent(); 
     // Console.WriteLine(fName); 
     Console.WriteLine("{0} and {1} are in {2}", student1.fname, teacher1.tFName, course1.cName); 
    } 

} 
} 
+0

Yerel değişkenler… –

+0

Bu kodun temizlenmesi gerekiyor .. herşeyin üstünde! –

+0

'fName' veya' cFName' gibi şifreli kimliklerden kaçınmalısınız. Düz bir eski 'FirstName' her iki durumda da daha iyi olacaktır. –

cevap

2

Tüm yöntemlerin sırasıyla GetClass, GetStudent ve GetTeacher için yereldir.

Onlara böyle erişecekseniz, bunları sınıf değişkenleri yapmanız gerekir. Ancak bu yöntemler gerektirir "Al" kullanıcı girişi olarak çalışmayacaktır

Console.WriteLine("{0} and {1} are in {2}", GetStudent(), GetTeacher(), GetClass()); 

: Ancak detayların dışarı yazıyor ifadenizi değiştirmek çok basit olacaktır. Kullanıcı girdisini sınıf değişkenlerine tutan değişkenleri yapmanız gerekir.

Bu değerleri döndürmek için yöntemler oluşturdunuz, ancak bunları kullanmıyorsunuz, ancak yalnızca GetClass yöntemi bir değer döndürüyor. GetTeacher yöntemi, kullanıcı değerlerini okur ve onunla hiçbir şey yapmaz.

Son olarak, PrintStudent yönteminiz GetStudent'dan çağrılır. Eğer kod yapısını değiştirmek zorunda olacak sınıf ve öğretmen de yazdırmak istiyorsanız,

static void PrintStudent(string studentName) 
{ 
    Console.WriteLine(studentName); // Plus formatting 
} 

Ancak: o zaman bu yapıyı kullanmak istiyorsanız yöntem haline öğrenci adını geçmesi gerekiyor Oldukça radikal - aksi takdirde baskı yöntemini çağıran "Get" yöntemlerini çağıran yazdırma yöntemi ile sonsuz yineleme ile sona olabilir. . Mantığı ilk önce normal dilde yazın - bu gerçekten ihtiyacınız olan yöntemleri ve yapıları tanımlamanıza yardımcı olacaktır. Daha sonra bunu sözde kod haline getirebilir ve sonunda kodlayabilirsiniz.

+0

'u araştırmanız gerekiyor. Onun getstudent yöntemini değiştirmek zorunda ya da sonsuz bir döngüde gitmek! –

+0

@JoshStevens - bunu kaçırdı. – ChrisF

+0

da tüm boşluklar var, böylece bir değer döndürmezler. –