C#

Сегодня начал учить c#, решил сделать калькулятор простой и столкнулся с такой ошибкой при компиляции, хелпуйте.

public static void Main (string[] args)

{

Console.WriteLine ("Введите первое число");

string a = Console.ReadLine ();

Console.WriteLine (a);

int num1 = Convert.ToInt32 (a);

Console.ReadKey ();


Console.WriteLine ("Введите первое число");

string b = Console.ReadLine ();

Console.WriteLine (b);

int num2 = Convert.ToInt32 (b);

Console.ReadKey ();


Console.WriteLine ("Выбрите знак | + | - | * | / |");

string c = Console.ReadLine ();

string otvet;

switch(c)

{

case 1:

Console.WriteLine("+");

int otvet = num1 + num2;

Console.WriteLine("Ваш ответ: ",otvet);

break;

case 2:

Console.WriteLine("-");

int otvet = num1 - num2;

Console.WriteLine("Ваш ответ: ",otvet);

break;

case 3:

Console.WriteLine("*");

int otvet = num1 * num2;

Console.WriteLine("Ваш ответ: ",otvet);

break;

case 4:

Console.WriteLine("/");

int otvet = num1 / num2;

Console.WriteLine("Ваш ответ: ",otvet);

break;

default:

Console.WriteLine("Я просил знак");

break;


}

Console.ReadKey();

}

}

}
1. в переменную "c" ты считываешь строку, и когда используешь switch, то просто сравнивай со строкой:
switch (c)
{
case "+": ... break;
case "-": ... break;
case "*": ... break;
case "/": ... break;
default: ... break;
}

2. до switch`а ты создал строковую переменную otvet, но после каждого кейса снова пытаешься создать такую же переменную, но уже целочисленного типа. этого делать не нужно. в твоем случае можно обойтись такой записью:
int otvet;
switch (c)
{
case "+": otvet = num1 + num2; break;
case "-": otvet = num1 - num2; break;
case "*": ... break;
case "/": ... break;
default: ... break;
}
ЕС
Еркин Сабыр
2 054
Лучший ответ
а головой кто будет думать? твой код, твоя задача, твоя реализация.. ты должен понимать что делает каждый участок кода и как он его делает, что получает, что возвращает.. иначе зачем браться?!
Роман Волков
Роман Волков
65 462
Крымчанин ********** я только сегодня начал учить язык и ты думаешь я понимаю его?
Ответ от умножения и деления не может быть ВСЕГДА целочисленным.
Это просто Арифметика, ничего личного :)))))

Второе: почитайте на МСДН про Видимость Переменной в языке СиШарп.

Третье: почитайте про Типы Данных в СиШарп.
Вот вы Целочисленное из строки конвертируете, а обратно, наверное, тоже нужно? Это же логично :))))))
Евгений Ним
Евгений Ним
79 217
Чтобы получить число из строки (целое), нужно int.TryParse(string, out result) или, если там гарантированно число, то просто value = int.Parse(string)