2016-04-01 27 views
2

Tüm profesörleri metin dosyasından bağlantılı listeye eklemem gerekiyor.Bağlantılı liste ile fikirlere ihtiyacınız var C#

public void ReadData(Container kon) 
{ 
    using (StreamReader reader = new StreamReader("C:\\Users\\Sparta\\Documents\\Visual Studio 2015\\WebSites\\WebSite4\\u22b.txt")) 
    { 
     string line = null; 
     while ((line = reader.ReadLine()) != null) 
     { 
      LinkedList list = new LinkedList(); 
      string[] values = line.Split(';'); 
      ProjectWork temp = new ProjectWork(values[0], values[1], int.Parse(values[2])); 
      list.AddToEnd(values[1]); 
     }    
    } 
} 

Ve AddToEnd yöntemi:

public void AddToEnd(ProjectWork data) 
{ 
    if(head == null) 
    { 
     head = new Node(data); 
    } 
    else 
    { 
     head.AddToEnd(data); 
    } 
} 

Yanlış bir şey yaptığını biliyorum

Math;John Torpel;10 
Physics;Tom Smith;40 
... 

Yani okuma yöntemini yazdı: Bu gibi metin dosyası böyle görünüyor. Profesör adını (değerleri [1]) bağlantı listesine eklemek istersem ne değiştirmem gerekiyor?

DÜZENLEME: LinkedList sınıfı:

public class LinkedList 
{ 
    private Node head; 

    public LinkedList() 
    { 
     head = null; 
    } 

    public void AddToEnd(ProjectWork data) 
    { 
     if(head == null) 
     { 
      head = new Node(data); 
     } 
     else 
     { 
      head.AddToEnd(data); 
     } 
    } 

Ben https://www.youtube.com/watch?v=3svB0kM6f10

+0

Metnin her satırı için yeni bir liste yaratıyor. Liste oluşturmayı while döngüsünden hareket ettirerek sadece bir kez yapın. –

+0

Kodunuz ve dosyanız sıraya girmiyor. Sadece 2 değerle sonuçlanacak bir alana bölünüyorsunuz. değerler [0] = "Matematik; John" ve değerler [1] = "Torpel; 10". Sorunuzdan, bu sizin istediğiniz gibi görünmüyor. ';' Üzerine bölme yapmalısınız. Dosyanız gerçekten böyle görünüyorsa. – Mikanikal

+0

LinkedList sınıfınızdan daha fazla kod gönderebilir misiniz? Görünüşe göre, AddToEnd işlevinde sonsuz döngü var gibi görünüyor –

cevap

2

2 sorunlar vardır videodan bunu yapmaya çalıştık.

  1. Döngününüzün her yinelemesinde yeni bir liste açıklıyorsunuz.
  2. '' yerine '' kullanarak bölme yapıyorsunuz. Dosyanız ';' kullanılarak sınırlandırıldı.

şekilde değiştirilmelidir:

using (StreamReader reader = new StreamReader("C:\\Users\\Sparta\\Documents\\Visual Studio 2015\\WebSites\\WebSite4\\u22b.txt")) 
{ 
    string line = null; 
    LinkedList list = new LinkedList(); 
    while ((line = reader.ReadLine()) != null) 
    { 
     string[] values = line.Split(';'); 
     ProjectWork temp = new ProjectWork(values[0], values[1], int.Parse(values[2])); 
     list.AddToEnd(temp); 
    }    
} 
+0

Bu, 'AddToEnd' bir dize argümanı almadığı için derlenmeyecektir (" string 'den' ProjectWork' için bir cast operatör var). Eğer derlerse, istisnalar atacaktır çünkü değerler [3] 'menzil dışıdır. –

+0

Gerçekten de olacak. Ben düzenleyeceğim Ancak, 'ProjectWork' yapıcısının hangi değerlerini aradığını bilmiyoruz. –

+0

Çok dikkatimi dağıttım, bu yüzden kodu düzeltmeyi unuttum. Teşekkürler. Ama listeye [1] değerleri nasıl ekleyebilirim? – GR2096

1
public void ReadData(Container kon) 
    { 
     using (StreamReader reader = new StreamReader("C:\\Users\\Sparta\\Documents\\Visual Studio 2015\\WebSites\\WebSite4\\u22b.txt")) 
     { 
    LinkedList list = new LinkedList(); 
        string line = null; 
        while ((line = reader.ReadLine()) != null) 
        { 

         string[] values = line.Split(';'); 

         ProjectWork temp = new ProjectWork(values[0], values[1], int.Parse(values[2])); 
         list.AddToEnd(temp); 
        } 
     } 
    } 

class ProjectWork 
    { 
     public string Lesson { get; set; } 
     public string FullName { get; set; } 
     public int Credits { get; set; } 
     public ProjectWork(string _lesson, string _fullname, int _credits) 
     { 
      Lesson = _lesson; 
      FullName = _fullname; 
      Credits = _credits; 
     } 
    } 
    class LinkedList 
    { 
     public void AddToEnd(ProjectWork data) 
     { 
      var myFullName = data.FullName; 
      var Lesson = data.Lesson; 
      var Credits = data.Credits; 

      // 
     } 
    } 
İlgili konular