Entwickler-Ecke

C# - Die Sprache - schleife mit null beenden möglich?


CanPolat - Do 19.11.09 23:43
Titel: schleife mit null beenden möglich?
hi leute.. hatte da mal ein kleines problem... ich wollte mal ein eingegebenes word auseinander pflücken, aber die dumme schleifenfunktion will nicht so wie ich es will.

also:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
string a;
Console.Write("was eingeben: ");
a=Convert.tostring(Console.ReadLine());
string[] b=new string [100];
int i =-1;

do
{
i++
b[i]=a.Substring(i,1);
}while (b[i]!=null);  // sobald die buchstaben zu ende sind bekommen die restlichen alle den wert null aber die schleife bricht nicht ab


so in etwa habe ich es gemacht aber funktioniert leider nicht;(.. hoffentlich kann mir da einer helfen.

schonmal danke im forraus


Kha - Do 19.11.09 23:51

Zitat:
aber die schleife bricht nicht ab
Ich würde da eher eine ArgumentOutOfRangeException entweder von Substring oder von b[i] erwarten. Aber spricht etwas gegen String.ToCharArray() ;) ?


Natok - Sa 21.11.09 22:30

Hi..

Du solltest erstmal zwingend i auf i=0 setzen und das i++ dann eins nach unten, denn sonst schiesst der Index um 1 über das Ziel hinaus.
Da ich im moment auch gerade angefangen habe C# zu lernen, dachte ich mir, daß es eine nette Aufgabe zum probieren wäre.
Leider wusste ich nicht, ob Du nun Zeichen oder Wörter separieren wolltest, deshalb habe ich mal beides mit einfliessen lassen.
Wörter erkennt er anhand der Leerzeichen.

Ich hoffe, daß ich Dir damit schonmal weiterhelfen konnte.


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
string eingabe;
        string[] temp;
        Console.Write("Ihre Eingabe:  ");
        eingabe=Console.ReadLine();
        temp = eingabe.Split(' ');
        for (int a = 0; a < temp.Length; a++) // Äussere Schleife durchläuft die Anzahl der festgestellten Array-Felder
        {
            Console.WriteLine(temp[a]); // Ausgabe des jeweiligen Array-Feldes als String
            
            // Innere Schleife gibt dasselbe nochmals Zeichen für Zeichen aus, in diesem Fall der Übersicht halber zum testen mit neuer Zeile pro Zeichen
            for (int b = 0; b < temp[a].Length; b++) Console.WriteLine(temp[a].Substring(b, 1));
        }


Namenlosnameless - Fr 27.11.09 21:03

Wenn du den string seperieren willst gibt es

C#-Quelltext
1:
2:
3:
4:
foreach(Char c in a)
{

}

So könnte ich mir das vorstellen:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
string a;
            Console.Write("was eingeben: ");
            a =Console.ReadLine();

            foreach (char c in a)
            {
                Console.WriteLine(c.ToString());
            }
            Console.ReadLine();

            /* Das Programm erzeugt bei einagbe von "Hallo" folgende ausgabe:
                H
                a
                l
                l
                o
            */


falls du Wörter seperieren willst verwende die String.Split()- Methode!

das sieht dann so aus:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
string a;
            Console.Write("was eingeben: ");
            a =Console.ReadLine();

            foreach (string s in a.Split(' '))
            {
                Console.WriteLine(s);
            }
            Console.ReadLine();

            /* Das Programm erzeugt bei einagbe von "Hallo mein Name ist namenlosnameless" folgende ausgabe:
                Hallo
                mein
                Name
                ist
                namenlosnameless
            */



An diesem Punkt ein dake an JüTho und Kha die mir auf dem Bereich der Strings sehr weiter geholfen haben :D