Wątek przeniesiony 2014-06-11 13:01 z C# i .NET przez ŁF.

Porównanie char do znaku nowej linii.

0

Witam,
siedzę właśnie nad programem na zaliczenie i nie potrafię przeskoczyć jednej rzeczy. Program dotyczy mnożenia macierzy (tyle w poleceniu) i chciałbym, aby macierze były wczytywane z richtextbox'a i zapisywane w tablicy. Tu pojawia się problem, nie wiem jak ustawić warunek, aby nowa linia w textbox'ie powodowała dodanie kolejnego wiersza do tablicy.

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;

    namespace macierze_mnozenie
    {
        public partial class Form1 : Form
        {
            string macierzA;
            string[,] matrixA = new string[6, 6];
            public Form1()
            {
                InitializeComponent();
            }

            private void Form1_Load(object sender, EventArgs e)
            {

            }

            private void b_mnozenie_Click(object sender, EventArgs e)
            {
                int iA=0, jA=0, iB=0, jB=0, iW=0, jW=0, i=0, j=0;
                macierzA = r_macierzA.Text;
                string[] split = macierzA.Split(new Char[] { ' ', '\n' });
                foreach (string s in split)
                {
                    if (s.Trim() != " ")
                    {
                        matrixA[iA, jA] = s.ToString();
                        iA++;
                    }
                    if (s.Trim() == '\n')
                    {
                        jA++;
                        iA = 0;
                    }
                }
                r_wynik.Clear();
                for (j = 0; j <= jA; j++)
                {
                    for (i = 0; i <= iA; i++)
                    {
                        r_wynik.Text += matrixA[i, j]+('\t');
                        if (i==iA)
                        {
                            r_wynik.Text += Environment.NewLine;
                        }
                    }
                }
               
            }
        }
    }

a dokładnie chodzi mi o tę część:

     if (s.Trim() == '\n')
                    {
                        jA++;
                        iA = 0;
                    } 

Po kompilacji kodu otrzymuję błąd:

Operator '==' cannot be applied to operands of type 'string' and 'char'

a gdy porównam s.Trim() == System.Environment.NewLine program ignoruje przejście do nowej linii i wszystko zapisuje w 1 wierszu tablicy.

A tu jeszcze screen z działania programu.
http://www.tinypic.pl/czfg786nmnl0

Dziękuję za pomoc.

0

Jak robisz split, to i tak gubią Ci się te znaki, którymi dzielisz. Wystarczy najpierw zrobić splita używając "\n" - to zwróci Ci tablicę wierszy. Potem pętlą po tej tablicy i każdy wiersz dzielisz sobie spacją.

1
  1. Uzyj zwykłego TextBoxa z właściwością Multiline = true
  2. Znak nowej linii w Windows to nie jeden znak a kombinacja znaków "\r\n", ogólnie nie baw się w Splity tylko skorzystaj z własciwości Lines w Textbox'ie Splita po spacjach możesz robić na liniach

1 użytkowników online, w tym zalogowanych: 0, gości: 1