2016-11-17 24 views
-5

私はテキストファイルから2つの数字を読んでみたいです:2,5(1行目は2、2行目は5文字目です)。私はこれを数時間解決しようとしていますが、コードを実行するたびにこの行にエラーが発生します。テキストファイルを行単位で読み込み、それらの文字列を配列に追加するにはどうすればよいですか?

これはボタンの完全なコードです。また、リッチテキストボックスに1行ずつ書き込んだときにエラーが発生しました。

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     int p = 4; 
     int i = 0; 
     int b = 0; 
     int c = 0; 
     int x = 0; 
     TextBox[] text = new TextBox[50]; 
     string[] linije = new string[50]; 
     string[] brojac = new string[10]; 

     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      text[1] = textBox1; 
      text[2] = textBox2; 
      text[3] = textBox3; 
      brojac[0] = p.ToString(); 
      brojac[1] = c.ToString(); 
      System.IO.File.WriteAllLines(@"text\brojac.txt", brojac); 
      if (b == 0) 
      { 

       for (i = c; i <= p; i++) 
       { 
        if ((i == c) && (x == 0)) 
        { 
         linije[i] = "---------------"; 
         x = 1; 
        } 

        else if (i == p) 
        { 
         linije[i] = "------------------"; 
         b = 1; 
        } 
        else 
        { 
         switch (x) 
         { 
          case 3: linije[i] ="Sifra:" + " " + text[3].Text; 
           x = 0; 
           break; 
          case 2: linije[i] ="Korisnicko ime:" + " " + text[2].Text; 
           x = 3; 
           break; 
          case 1: linije[i] ="Naziv:" + " " + text[1].Text; 
           x = 2; 
           break; 
         } 
        } 

       } 
      } 
      if(b == 1) 
      { 
       c = c + 5; 
       p = p + 5; 
       b = 0; 
       System.IO.File.WriteAllLines(@"text\Kontener.txt", linije); 
      } 



     } 

     private void button2_Click(object sender, EventArgs e) 
     { 
      int o = 0; 
      string h; 
      int[] citaj = new int[2]; 
      System.IO.StreamReader sr = new System.IO.StreamReader(@"text\brojac.txt"); 
      while ((h = sr.ReadLine()) != null) 
      { 
       string[] parts = h.Split(','); 
       citaj[0] = int.Parse(parts[0]); 
       citaj[1] = int.Parse(parts[1]); 
      } 
      richTextBox1.Lines = new string[] { citaj[0].ToString(), citaj[1].ToString() }; 
     } 
    } 
} 
+2

ReadLineは改行までの完全な行を読み取ります。同じ行に2,5がある場合、Parse 2,5を整数として扱うことはできません。 – Steve

+2

ところで、そこに着くと 'richTextBox1.Lines [g] = citaj [g] .ToString();で例外が発生します.... –

+1

' var yourArr = File.ReadAllLines(@ "text \ brojac.txt ");' – EZI

答えて

0

アレイは初期化されていません。

アレイの代わりにリストを使用してみてください。

private void button2_Click(object sender, EventArgs e) 
{ 
    List<int> citaj = new List<int>(); 
    string h; 
    using(System.IO.StreamReader sr = new System.IO.StreamReader(@"text\brojac.txt")) 
    { 
     while ((h = sr.ReadLine()) != null) 
     { 
      int number = 0; 
      if (int.TryParse(h, out number)) 
       citaj.Add(number); 
     } 
    } 
} 
関連する問題