Sprawdzanie występowania litery

Sprawdzanie występowania litery
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam
Chciałem napisać program który sprawdza czy w podanym ciągu znaków jest litera x lub X.
Niestety kod nie działa poprawnie ponieważ zawsze wychodzi że nie ma takiej litery. Macie pomysł co jest źle

Console.WriteLine("Podaj ciąg znaków ");
string x = Console.ReadLine();
//Console.WriteLine(x.IndexOf("x"));
int y = x.IndexOf("x");
int z = x.IndexOf("X");

            if (y == -1 || z == -1)
            {
                Console.WriteLine("Nie ma litery x lub X");
            }
            
            else
            {
                Console.WriteLine("Jest litera x lub X");
            }
  • Rejestracja: dni
  • Ostatnio: dni
1
Kopiuj
private bool jestLitera(string _str)
{
    return _str.Contains('x') || _str.Contains('X');
}
Zenek1999
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 51
0

Problem rozwiązany w poprzednim poście, ale jeszcze słowo na temat oryginalnego kodu. Widać że próbowałeś znaleźć błąd, ale zamiast...

Kopiuj
Console.WriteLine(x.IndexOf("x"))
... użyj...
Console.WriteLine("y == {0} || z == {1}" , y, z)

... bo jeżeli się przyjrzysz...

Kopiuj
y == -1 gdy nie ma 'x'
z == -1 gdy nie ma 'X'.

y == -1 || z == -1 jest spełniony, gdy nie ma 'x' LUB 'X'...
... czyli nie jest spełniony, gdy jest 'x' I 'X'. 

Twoim warunkiem powinien być
y == -1 && z == -1
 

No i jeszcze komunikaty są nieścisłe.

Kopiuj
string x = Console.ReadLine();

int y = x.IndexOf("x");
int z = x.IndexOf("X");

if(y == -1 && z == -1)
    Console.WriteLine("Nie ma litery x i X");
else
    Console.WriteLine("Jest litera x lub X");
Sarrus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2512
0
ejem napisał(a):
Kopiuj
private bool jestLitera(string _str)
{
    return _str.Contains('x') || _str.Contains('X');
}

albo można tak:

Kopiuj
bool hasX = str.ToUpper().Contains('X');

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.