Как использовать! = Со строковыми массивами внутри операторов if? - PullRequest
0 голосов
/ 05 ноября 2018

Я новичок в кодировании, так что, возможно, это не лучший способ сделать что-то. Я просто пишу коды, чтобы привыкнуть к этому и понять его лучше. Я пытался сделать калькулятор, который будет работать в cmd Visual Studio. Я пытаюсь собрать данные, которые вводит пользователь, и посмотреть, является ли это «+, -, *, или /», и если это так, то следует продолжить, но если это не так, они должны получить сообщение и повторить попытку (я еще не написал эту часть кода). Я сделал массив "+, -, * и /" и пытаюсь сказать оператору if, что, если он не равен этим значениям, сообщение должно быть отображено, чтобы повторить попытку, но выдает ошибку, говорящую, что вы можете не присваивать! = строковым значениям.

        double user_Input;
        string user_inputOperation;
        double user_secondInput;
        double answer;
        string[] operations = { "+", "-", "*", "/" };

        Console.WriteLine("Type in a number: " );
        user_Input = Convert.ToDouble(Console.ReadLine());

        Console.WriteLine("Type an operation(+, -, *, /): ");
        user_inputOperation = Console.ReadLine();


        if (user_inputOperation != operations)    // problem occurs here
        {
            Console.WriteLine("That's not right, try: +, -, *, or /");
            user_inputOperation = Console.ReadLine();
        }


        Console.WriteLine("Type in another number");
        user_secondInput = Convert.ToDouble(Console.ReadLine());

        if (user_inputOperation == "+")
        {
            answer = user_Input + user_secondInput;

            Console.WriteLine("The answer is: ");
            Console.WriteLine(answer);
        }

        Console.ReadKey();
    }
}

}

Ответы [ 3 ]

0 голосов
/ 05 ноября 2018

Вы также можете изменить тип массива на строковый тип с помощью операций и использовать метод IndexOf для этой строки:

string operations = "+-*/";

while(operations.IndexOf(user_inputOperation) < 0)
{
    Console.WriteLine("That's not right, try: +, -, *, or /");
    user_inputOperation = Console.ReadLine();
}

IndexOf вернет -1, если строка не найдена

0 голосов
/ 05 ноября 2018

Вы также можете использовать Linq:

if (operations.Any(x => x.Equals(user_inputOperation.Trim()))) 
{ }
0 голосов
/ 05 ноября 2018

Вам нужен array.contains вместо! =

if (!operations.Contains(user_inputOperation)  
{
   Console.WriteLine("That's not right, try: +, -, *, or /");
   user_inputOperation = Console.ReadLine();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...