2016-03-28 27 views
1

numaralı listeden belirli bir öğeyi arayın. Öğeleri içeren bir listem var. Kullanıcı, belirli bir öğe ve liste için arama yapabilmelidir. Ardından liste, bu belirli öğeyi içeren tüm satırları yazdırmalıdır. Bu neden çalışmıyor?Kullanıcı girdisinden

Car search = new Car(); 
public void SearchLog() 
    { 

     for (int i = 0; i < myList.Count; i++) 
     { 

      if (myList[i].Model== search.Model) 
      { 
       Console.WriteLine("Model :" + search.Model) 

      } 
     } 
    } 
Console.Write("Search for model:"); 
search.searchModel = Console.ReadLine(); 

Her zaman öğrenecek yeni bir şey. Sorun benim sınıf değişkendi. Bu yüzden değişken yerine aynı kapsamı kullandım. Söz ve yorumlardan bilgilere dayanarak için

+2

kodunuzu görmek – Jace

+1

Evet, ihtiyacımız size Araba sınıf kodunu paylaşın. MyList nerede ilan edildi? 'Search.Model' nerede kullanılıyor? –

+0

Bu konuma hatanın neden olduğundan şüpheleniyorum, 'Console.WriteLine (" Model: {0} ", search.Model);' –

cevap

1

Ben tam kod var:

Bu Araç için örnek sınıfı olacak;

public static List<Car> myList = new List<Car>(); 
static void Main(string[] args) 
     { 
      myList.Add(new Car() { Model = "A", Name = "XXX", Brand = "Some Brand" }); 
      myList.Add(new Car() { Model = "B", Name = "YYY", Brand = "Some Brand1" }); 
      myList.Add(new Car() { Model = "C", Name = "ZZZ", Brand = "Some Brand2" }); 
      Car search = new Car(); 
      Console.Write("Search for model:"); 
      search.Model = Console.ReadLine(); 
      Console.WriteLine("Following Result Found for {0}", search.Model); 
      SearchLog(search); 
     } 

Son olarak SearchLog için imzadır: Burada

class Car 
    { 
     public string Model { get; set; } 
     public string Name { get; set; } 
     public string Brand { get; set; } 
     //Rest of properties here 
     public override string ToString() 
     { 
      string output = String.Format("Model :{0} \n Name :{1} \n Brand :{2}", this.Model, this.Name, this.Brand); 
      return output; 
     } 
    } 

işlemleri yapmak ana işlevi olan

public static void SearchLog(Car search) 
     { 
      var resultList = myList.Where(x => x.Model == search.Model).ToList(); 
      int i = 1; 
      foreach (var car in resultList) 
      { 
       Console.WriteLine("Result {0} : {1}", i++, myList[i].ToString()); 
      } 
     } 

başka önerim var; Arama, Car sınıfının bir nesnesi olmamalıdır. Bunun yerine bir dize olabilir;

Aşağıdaki gibi kendi yolunu deneyebilirsiniz:

Console.Write("Search for model:"); 
string inputSearch = Console.ReadLine(); 
bool carFound = false; 
for (int i = 0; i < myList.Count; i++) 
    { 
    if (myList[i].Model == inputSearch) 
     { 
      Console.WriteLine("Model: " + myList[i].Model); 
      carFound = true; 
     } 
    } 
    if (!carFound) { Console.WriteLine("None model were found"); } 
+0

'u kullanmayı düşünün Çok teşekkürler efendim, bu harika bir bilgiydi. kodu ama nasıl bilmiyorum, boolean ile çalıştı ama işe yaramaz. için (int i = 0; i Global

+0

Çok yararlı bilgiler Boolean ile ilgili olarak, neredeyse aynı şeyi yapıyordum ama son bölümü alamadım. – Global

İlgili konular