0 Daumen
378 Aufrufe

Frage:

blob.png

Text erkannt:

Benutzerschnittstelle
Eingabetext: Hallo Max, wie geht's? Eliminatortext: lai Ausgabetext: Ho Mx, we geht's? Drücken Sie eine beliebige Taste..

Kann wer mir sagen wo mein Fehler ist. So soll  es am Ende aussehen wenn ich alles richtig gemacht habe

Aber bei mir wenn ich kompiliere kommt komplett falsch raus . C#

Lg



Code:

Console.Write("Eingabe: ");
          string Eingabetext = Console.ReadLine();

          Console.Write("Eliminatortext: ");
          string Eliminatortext = Console.ReadLine();

          for(int i = 0; i < Eingabetext.Length; i++)
          {
              char x = Eingabetext[i];
              for(int j = 0; i< Eliminatortext.Length; j++)
              {
                  char s = Eliminatortext[j];
                      if(x !=j )
                  {
                      Console.WriteLine(Eingabetext[i]);
                  }
              }
          }

Avatar von

2 Antworten

0 Daumen
 
Beste Antwort

In der 2. Schleife hat sich ein Fehler eingeschlichen for(int j = 0; i < Eliminatortext.Length; j++) dort wird in der Abbruchbedingung mit i verglichen und nicht mit j.

Außerdem würde die 2. Schleife in dem Beispiel 3x ausgeführt werden, da du eine if-Bedingung verwendest würde das aktuelle Zeichen des Eingabetextes 3x ausgegeben werden, wenn alle Vergleiche zutreffen, z.B.

j = 0 | 1. H != l -> Ausgabe H

j = 1 | 2. H != a -> Ausgabe H

j = 2 | 3. H != i -> Ausgabe H

Um das zu verhindern könntest du eine Boolean Variable definieren, diese würde vor Beginn der 2. Schleife auf true gesetzt, im Rumpf auf false gesetzt falls das aktuelle Zeichen eines der Zeichen im Eliminatortext entspricht.

Nach der 2. Schleife könnte man diese Variable für eine if-Abfrage verwenden und nur wenn sie true ist das Zeichen printen.

Für die Ausgabe solltest du lieber Console.Write(eingabetext[i]); verwenden damit alles in einer Zeile geschrieben wird.


Code:

using System;

class CharEliminator
{
static void Main()
 {
string eingabetext = "Hallo Max, wie geht's?";
string eliminatortext = "lai";
       
bool printCurrentChar;
for(int i = 0; i < eingabetext.Length; i++)
{
printCurrentChar = true;
 for(int j = 0; j < eliminatortext.Length; j++)
 {
  if(eingabetext[i] == eliminatortext[j])
  {
  printCurrentChar = false;
  }
 }
           
 if(printCurrentChar == true) {
  Console.Write(eingabetext[i]);
 }
}
 }
}

Ausgabe:

Ho Mx, we geht's?
Avatar von
0 Daumen

Sinnvoll wäre es, deinen kompletten Code anzugeben und nicht nur einen Ausschnitt. Zusätzlich solltest du uns auch mitteilen, ob dein Programm überhaupt kompiliert oder ob es sich kompilieren lässt, aber das Programm nicht das macht, was es machen soll und wie dann die jeweilige Ausgabe aussieht(Kompilierungsfehler oder Ausgabe des Programms)


Was man hier spontan aber sehen kann:
Du möchtest wahrscheinlich nicht jedes mal, wenn der Char nicht übereinstimmt direkt eine ganze Zeile schreiben per
Console.WriteLine(Eingabetext[i]); .

Leg doch am doch eventuell einen String an, den du Result/Ergebnis oder so nennst und speichere dann nur den jeweiligen Char in deinen String.
Am Ende gibst du dann diesen String einmalig auf der Konsole aus.

Vergiss nicht, deinem String einen Zeilenumbruch hinzuzufügen, jedes mal,wenn deine Innere for-schleife durchlaufen wurde.

Avatar von

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community