Sprawdzanie występowania litery

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");
            }
1
private bool jestLitera(string _str)
{
    return _str.Contains('x') || _str.Contains('X');
}
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...

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

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

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.

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");
0
ejem napisał(a):
private bool jestLitera(string _str)
{
    return _str.Contains('x') || _str.Contains('X');
}

albo można tak:

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

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