Autor Beitrag
Silence27
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Mi 24.11.21 11:44 
Hallo zusammen

Ich bin ganz neu mit C# unterwegs und wollte ein kleines Konsolentool schreiben, welches mir eingetippte Strings nach Zahlen durchsucht.
Soweit funktioniert das auch, aber wenn er eine Zahl findet, gibt er vor der Zahl dennoch erst den Text "Keine Zahl vorhanden" aus.
Irgendwo scheint ein Problem in der Schleife zu sein und ich stecke wirklich gerade fest und hoffe, es kann mir jemand ein Tipp geben?

Für jegliche Hilfe danke ich bereits im Voraus.


ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Text.RegularExpressions;

namespace Aufgabe_5
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Input: ");
            string text1 = (Console.ReadLine());
            Console.Write("Output: ");
            Console.WriteLine(ZahlAusText(text1));
            Console.Write("Input: ");
            string text2 = (Console.ReadLine());
            Console.Write("Output: ");
            Console.WriteLine(ZahlAusText(text2));
            Console.Write("Input: ");
            string text3 = (Console.ReadLine());
            Console.Write("Output: ");
            Console.WriteLine(ZahlAusText(text3));
            Console.Write("Input: ");
            string text4 = (Console.ReadLine());
            Console.Write("Output: ");
            Console.WriteLine(ZahlAusText(text4));
            Console.ReadKey();
        }

        static string ZahlAusText(string eingabe)
        {
            int eingabeZahl = 0;
            eingabe = Regex.Match(eingabe, @"\d+").Value;
            string[] eingaben = Regex.Split(eingabe, @"\d+");
            foreach (string text in eingaben)
            {
                if (!String.IsNullOrEmpty(text))
                {
                    int zahl = int.Parse(eingabe);
                    eingabeZahl++;
                }
                else
                {
                    Console.WriteLine("Keine Zahl vorhanden");
                }
            }
            return eingabe;
        }
    }
}


Moderiert von user profile iconTh69: Titel geändert (war: "Probleme mit der if-else Schleife").
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4583
Erhaltene Danke: 951


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 24.11.21 12:31 
Du solltest deinen Code debuggen und einfach schauen was dein Code tut. Debuggen ist eine sehr wertvolle Fähigkeit die man sich früh aneignen sollte.

Wenn du dich damit schwer tust würde es schonmal helfen die Variablen die du benutzt einfach auch mal auf der Console auszugeben und so eine Art debugging zu betreiben. Also an passender Stelle zum Beispiel mal ein
ausblenden C#-Quelltext
1:
Console.WriteLine($"text: {text)");					

einbauen und dir die Variable ansehen die du zum verzweigen benutzt.

Edit: Übrigens der Hinweis auf Debugging heißt nicht das wir dich dann damit allein lassen. Aber erstmal ist es hilfreich das du die Problemstellen selber findest. Bei dem was du dann da bemerkst brauchst du dann bestimmt wieder Unterstützung. Also warum sich das so verhält und wie Regex funktioniert etc.