Użycie metody String.Split()

0

Witam, mam problem z jednym z zadań z programowania w C# w WindowsFormApplication...
Muszę napisać program, w którym po wpisaniu do textboxa iluś liczb oddzielonych przecinkiem i po naciśnięciu button'a wyświetla się messagebox z liczbami, które są podzielne przez 3 (spośród tych, które zostały wprowadzone oczywiście). Mam tu użyć metody String.Split()... Nie wiem czy dobrze kombinuję ale próbowałem użyć czegoś takiego:
string[] numbers = textBox1.Text.Split(new Char[] { ',' });
Nawet jeśli idę w dobrą stronę to nie wiem co dalej :)
Jeszcze mocno raczkuję jak "programista" więc liczę na szybką pomoc :)
Pozdrawiam

0

No to okej, zapisujesz sobie je do tablicy stringów, potem robisz nową tablicę int'ów i w niej zapisujesz liczby podzielne przez 3 a potem wyświetlasz.

prowizorka bo lepiej to na pętli foreach zrobić ale nie testowałem więc sprawdź i pokombinuj:

int temp;
for(int i = 0; i < tablicaStringów.Length; i++)
{
 temp = Convert.ToInt32(tablicaStringów[i]);
 if(temp%3==0)
   tablicaIntów[i] = temp;
}
0

Ok, rozumiem.. Może wyjdę teraz na ignoranta ale w jaki sposób mam zdefiniować tablicę int'ow? Bo w tym miejscu :

if(temp%3==0)
tablicaIntów[i] = temp;

wyświetla mi błąd, że nazwa "tablicaIntów" nie istnieje w danym kontekście, co oczywiście jest prawdą :)
Z góry dzięki za pomoc
Pozdrawiam

0
int[] liczby = new int[3];

Kwestia tylko ile tych liczb.

0

Albo listę dynamiczną :D wtedy możesz wpakować ile chcesz:

List<int> tablicaIntów = new List<int>();
pamiętaj tylko o dołączeniu:
using System.Collections.Generic

0

Właśnie chodzi o to, że nie jest zdefiniowana ilość liczb - ma byc ich tyle ile użytkownik programu wpisze :)

0

To może tak:

List<int> tablicaIntów = new List<int();
foreach(string s in tablicaStringów)
{
  int temp = Convert.ToInt32(s);
  tablicaIntów.Add(temp);
}
int temp;
List<int> tablicaIntów2 = new List<int();
for(int i = 0; i < tablicaIntów.Length; i++)
{

 if(ListaIntów[i]%3==0)
   ListaIntów2[i] = temp;
} 

coś w ten deseń możliwe, że nie działa nie sprawdzałem

0

Próbuję z tą listą dynamiczną i teraz pojawia się inny problem:
Podczas debugowania pojawia się błąd - Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index. Błąd dotyczy tej linii - newtab[i] = temp;
Generalnie, cały kod wygląda tak :

 
namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            string[] numbers = textBox1.Text.Split(new Char[] { ',' });

            int temp;
            List<int> newtab = new List<int>();
            for (int i = 0; i < numbers.Length; i++)
            {
                temp = Convert.ToInt32(numbers[i]);
                if (temp % 3 == 0)
                    newtab[i] = temp;
            }
            MessageBox.Show("Numbers which are devisible by 3: " + newtab, "RESULT");
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }
    }
}

Z góry dzięki za pomoc,
Pozdrawiam

1

newtab.Add()

Najkrótsze rozwiązanie które przychodzi mi do głowy...

textbox.Text = String.Join(",", textbox.Text.Split(',').Where(s => int.Parse(s) % 3==0));
0

@JohnyB no tam jest błąd wiem o tym tzn tak myslałem :P jak mówiłem nie sprawdzałem tego musisz sam pokombinować:)

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