2016-04-01 9 views
2

テキストファイルからすべての教授をリンクリストに追加する必要があります。これは、テキストファイルがどのように見えるかです:Cでリンクリストのアイデアが必要です

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

だから私はこの方法を読んで書いた:

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]); 
     }    
    } 
} 

そしてAddToEnd方法:

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

私は私が何か間違ったことをしたことを知っています。リンクリストに教授名(値[1])を追加したい場合、私は何を変更する必要がありますか?

EDIT:LinkedListのクラス:

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); 
     } 
    } 

私は2つの問題があるビデオhttps://www.youtube.com/watch?v=3svB0kM6f10

+0

あなたがテキストのすべての行のための新しいリストを作成しています。リストの作成をwhileループから移動して、1回だけ実行します。 –

+0

コードとファイルが並んでいません。あなたはちょうど2つの値になるスペース上で分割しています。 values [0] = "Math; John"と値[1] = "Torpel; 10"です。あなたの質問から、これはあなたが望むものではないようです。あなたは分裂する必要があります ';あなたのファイルが本当にそのように見える場合。 – Mikanikal

+0

LinkedListクラスからさらにコードを投稿できますか? AddToEnd関数に無限ループがあるようです。 –

答えて

2

からそれを実行しようとしました。

  1. ループの繰り返しごとに新しいリストを宣言しています。
  2. ';'の代わりに ''を使用して分割しています。あなたのファイルは ';'で区切られています。

それは、このように変更します。

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

これは 'AddToEnd'が文字列引数をとらないのでコンパイルされません(' string'から 'ProjectWork'へのキャスト演算子があるかもしれません)。 'values [3]'が範囲外であるため、コンパイルすると例外がスローされます。 –

+0

本当にそうです。私は編集します。しかし、 'ProjectWork'コンストラクタが探している値はわかりません。 –

+0

私は非常に混乱しているので、コードを修正するのを忘れてしまった。ありがとう。しかし、リストに値[1]を追加するにはどうすればよいですか? – 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; 

      // 
     } 
    }