class Program
{
static void Main(string[] args)
{
bool run = true;
do
{
Console.WriteLine("Make a choice or type 0 to exit: ");
Console.WriteLine("1. Add 2 numbers\n2. Subtract 2 numbers\n3.Multiply 2 numbers\n4. Divide 2 numbers");
int choice = Convert.ToInt32(Console.ReadLine());
if (choice == 0)
{
run = false;
}
if(choice == 1)
{
int x, y;
Console.Write("Enter 2 numbers to Operate on: ");
x = Convert.ToInt32(Console.Read());
y = Convert.ToInt32(Console.Read());
Console.WriteLine("The Result is: {0}", Convert.ToInt32(add(x,y)));
}
}while(run);
Console.ReadKey();
}
public static int add(int x, int y)
{
return x+y;
}
public static int sub(int x, int y)
{
return x - y;
}
public static int mult(int x, int y)
{
return x * y;
}
public static double div(int x, int y)
{
return (float)x/y;
}
Я довольно новичок в C#, поэтому извиняюсь за исправляющий вопрос. Проблема заключается в том, что когда я запускаю и вводю 1, и введите 2 и 4, я получаю 82 назад, а затем дважды печатается меню. Это явно неверно. Может кто-нибудь сказать мне, почему это происходит? Я полагаю, что есть что-то делать, почему мои конверсии, но я хотел бы точно знать, почему язык ведет себя так, как будто это происходит, потому что похоже, что он должен работать. Спасибо вам за помощь.Попытка сделать калькулятор в C#. Что здесь происходит?
Edit: Я не знаю, почему я получил downvoted, пожалуйста, дайте мне знать, что я сделал неправильно ...
Вот пример вывода:
Make a choice or type 0 to exit:
1. Add 2 numbers
2. Subtract 2 numbers
3. Multiply 2 numbers
4. Divide 2 numbers
1
Enter 2 numbers to Operate on: 2 4
The Result is: 82
Make a choice or type 0 to exit:
1. Add 2 numbers
2. Subtract 2 numbers
3. Multiply 2 numbers
4. Divide 2 numbers
Make a choice or type 0 to exit:
1. Add 2 numbers
2. Subtract 2 numbers
3. Multiply 2 numbers
4. Divide 2 numbers
Прочитайте документацию для ['Console.Read'] (https://msdn.microsoft.com/en-us/library/system.console.read (v = vs.110) .aspx). Делает ли это то, что вы ожидаете от этого? (Также обратите внимание, что он уже возвращает 'int', как и' add', поэтому ваши конверсии в данный момент совершенно бессмысленны. –
Damien, он говорит, что он должен читать следующий символ. Если я ввожу 2 ints, не следует ли читать их назад, как я писал? –
Кажется, что вы вводите 3 символа, '2', пробел и' 4' (затем введите) - так что вы читаете два символа '2' и символ пробела. Если вы ввели '2',' 2', пробел, '4' и' 1', затем введите), то есть строка '22 41', ваши два чтения будут читать два символа' 2'. Итак, что вы ожидаете *? –