只需打印数组C#的最后一行

时间:2018-07-25 05:57:27

标签: c#

这段代码只是保存我的字符串数组的最后一行。我想将matricula_conc的所有行保存在文本文件(txt)中。

我不知道该怎么办,我该如何解决?有人知道吗?

class DesafioPuc
{
    public static void Main(string[] args)
    {      

      foreach (string line in File.ReadLines("matriculasSemDV.txt"))
        {

          int m_1 = Convert.ToInt32(line.Substring(0, 1)); //1st digit
          int m_2 = Convert.ToInt32(line.Substring(1, 1)); //2nd digit
          int m_3 = Convert.ToInt32(line.Substring(2, 1)); //3rd digit
          int m_4 = Convert.ToInt32(line.Substring(3, 1)); //4th digit

          int mult_m1 = m_1 * 5; 
          int mult_m2 = m_2 * 4;
          int mult_m3 = m_3 * 3;
          int mult_m4 = m_4 * 2;

          int final_sum = mult_m1 + mult_m2 + mult_m3 + mult_m4;

          int rest_div = final_sum % 16;

          string rest_div_hex = rest_div.ToString("X");

          string matricula_conc = line + "-" + rest_div_hex;

          string[] b = {matricula_conc};


          string path = "matriculasComDV.txt";
          File.WriteAllLines(path, b, Encoding.UTF8);             


        }      

    }
}

3 个答案:

答案 0 :(得分:1)

请考虑使用流来读取/写入各个行,以避免将所有内容保留在内存中。

android:layout_toLeftOf="@{value.getUnit().equals(@string/mb)?@id/lyt_value:@id/lyt_value2}"

答案 1 :(得分:0)

File.WriteAllLines方法,创建一个新文件,将指定的字符串数组写入该文件,然后关闭该文件。如果目标文件已存在,则将其覆盖。这就是为什么只在文件中打印最后一行的原因。对于File.WriteAllLines(path, b, Encoding.UTF8);,请在上面的代码中使用File.AppendAllLines(path, b, Encoding.UTF8);以打印所有行。但是最好的方法是使用如下列表:

List<string> LinesToWrite = new List<string>();
foreach (string line in File.ReadLines("matriculasSemDV.txt"))
{
     // Your logic here
     string rest_div_hex = rest_div.ToString("X");
     string matricula_conc = line + "-" + rest_div_hex;
     LinesToWrite.Add(matricula_conc);
}
string path = "matriculasComDV.txt";
File.WriteAllLines(path, LinesToWrite , Encoding.UTF8);

答案 2 :(得分:-1)

我解决了这个问题。但是非常感谢您的建议。

下面是我用的。

class DesafioPuc
            {
                public static void Main(string[] args)
                {      

                  Console.WriteLine("-----matriculasComDV-----"); //Print em tela do nome_arquivo matriculasComDV.txt (meramente ilustrativo)

                  foreach (string line in File.ReadLines("matriculasSemDV.txt"))
                    {

                      int m_1 = Convert.ToInt32(line.Substring(0, 1)); //1st digits array
                      int m_2 = Convert.ToInt32(line.Substring(1, 1)); //2nd digits array
                      int m_3 = Convert.ToInt32(line.Substring(2, 1)); //3rd digits array
                      int m_4 = Convert.ToInt32(line.Substring(3, 1)); //4th digits array

                      int mult_m1 = m_1 * 5; //Multiplica o vetor de 1st digits por 5
                      int mult_m2 = m_2 * 4; //Multiplica o vetor de 2nd digits por 4
                      int mult_m3 = m_3 * 3; //Multiplica o vetor de 3rd digits por 3
                      int mult_m4 = m_4 * 2; //Multiplica o vetor de 4th digits por 2

                      int final_sum = mult_m1 + mult_m2 + mult_m3 + mult_m4; //soma os vetores dos digitos a fim de calcular o total

                      int rest_div = final_sum % 16; //resto da divisão do vetor final_sum por 16

                      string rest_div_hex = rest_div.ToString("X"); //converte o vetor resto de decimal para hexadecimal

                      string matricula_conc = line + "-" + rest_div_hex; //concatena linha a linha o vetor matriculasSemDV com "-" e o resto da divisao em hexadecimal

                      File.AppendAllText("matriculasComDV.txt", matricula_conc + Environment.NewLine); //salva o vetor concatenado

                      Console.WriteLine(matricula_conc); //print em tela do arquivo matriculasComDV.txt concatenado (meramente ilustrativo)

                    }      


                  Console.WriteLine("-----matriculasVerificadas-----"); //Print em tela do nome_arquivo matriculasVerificadas.txt (meramente ilustrativo)

                  string matriculasComDV = File.ReadAllText("matriculasComDV.txt"); //atribui o arquivo matriculasComDV gerado acima para um vetor de string

                  foreach (string line in File.ReadLines("matriculasParaVerificar.txt")) //para cada linha no vetor matriculasParaVerificar, faça:
                  {
                    if (line.Contains(matriculasComDV)) //compara linha a linha se o vetor matriculasParaVerificar contém alguma stringo do vetor matriculasComDV
                    {
                      string concatena_verdadeiro = line + " verdadeiro"; //concatena as linhas do vetor matriculasParaVerificar com o devido indicador 
                      Console.WriteLine(concatena_verdadeiro); //print em tela do vetor caso a condição seja satisfeita (meramente ilustrativo)
                      File.AppendAllText("matriculasVerificadas.txt", concatena_verdadeiro + Environment.NewLine); //salva o arquivo concatenado em matriculasVerificadas.txt
                    }  
                    else //senão...
                    {
                      string concatena_falso = line + " falso"; //concatena as linhas do vetor matriculasParaVerificar com o devido indicador
                      Console.WriteLine(concatena_falso); //print em tela do vetor caso a condição seja satisfeita (meramente ilustrativo)
                      File.AppendAllText("matriculasVerificadas.txt", concatena_falso + Environment.NewLine); //salva o arquivo concatenado em matriculasVerificadas.txt
                    }
                  }

                }
            }