Voltando ao topo do programa para tentar novamente
Eu estou ensinando a mim mesmo C # e o desafio atual do capítulo me pediu para:
Faça seu último projeto e crie métodos adicionais que subtraiam, multiplicam ou dividem os dois números passados para ele. No método de divisão, verifique se o segundo número não é 0, pois dividir por 0 é um conceito matemático ilegal. Se o segundo número for um 0, basta retornar um 0.
Agora eu escrevi o abaixo que eu acredito que satisfaz todos os critérios. Eu não tinha certeza se uma declaração IF era a melhor escolha, mas funcionou. Eu também achei que um SWITCH também teria feito o truque.
Então, primeira pergunta, IF ou SWITCH foram melhores?
Segunda questão. No ELSE, dou uma mensagem de falha genérica se o usuário não selecionar uma das opções disponíveis, mas o que eu gostaria de fazer é se o ELSE for chamado (não tenho certeza qual é o termo correto), quero que o programa seja volte para o início e peça ao usuário para tentar novamente e exibir o primeiro Console.Writeline () pedindo para escolher um operador. Eu sei que isso não faz parte do desafio, mas parece uma adição lógica ao programa e gostaria de saber se isso é possível sem recorrer a algo muito complicado.
Desde já, obrigado!
string whichOp;
int firstNum, secondNum, result;
Console.WriteLine("What Operator do you wish to use? [A]dd, [S]ubtract, [M]ultiply or [D]ivide?");
whichOp = Console.ReadLine();
whichOp = whichOp.ToLower();
if (whichOp == "a")
{
Console.Write("You chose Addition. Please choose your first number: ");
firstNum = int.Parse(Console.ReadLine());
Console.Write("You chose the number {0}. Please choose a second number: ", firstNum);
secondNum = int.Parse(Console.ReadLine());
result = Add(firstNum, secondNum);
Console.WriteLine("You chose the number {0}. {1} plus {2} equals {3}.", secondNum, firstNum, secondNum, result);
}
else if (whichOp == "s")
{
Console.Write("You chose Subtraction. Please choose your first number: ");
firstNum = int.Parse(Console.ReadLine());
Console.Write("You chose the number {0}. Please choose a second number: ", firstNum);
secondNum = int.Parse(Console.ReadLine());
result = Sub(firstNum, secondNum);
Console.WriteLine("You chose the number {0}. {1} minus {2} equals {3}.", secondNum, firstNum, secondNum, result);
}
else if (whichOp == "m")
{
Console.Write("You chose Multiplication. Please choose your first number: ");
firstNum = int.Parse(Console.ReadLine());
Console.Write("You chose the number {0}. Please choose a second number: ", firstNum);
secondNum = int.Parse(Console.ReadLine());
result = Mult(firstNum, secondNum);
Console.WriteLine("You chose the number {0}. {1} times {2} equals {3}.", secondNum, firstNum, secondNum, result);
}
else if (whichOp == "d")
{
Console.Write("You chose Division. Please choose your first number: ");
firstNum = int.Parse(Console.ReadLine());
Console.Write("You chose the number {0}. Please choose a second number: ", firstNum);
secondNum = int.Parse(Console.ReadLine());
result = Div(firstNum, secondNum);
Console.WriteLine("You chose the number {0}. {1} divided by {2} equals {3}.", secondNum, firstNum, secondNum, result);
}
else
Console.WriteLine("FAIL! You did not choose an available option.");
Console.ReadLine();
}
static int Add(int num1, int num2)
{
int theAnswer;
theAnswer = num1 + num2;
return theAnswer;
}
static int Mult(int num1, int num2)
{
int theAnswer;
theAnswer = num1 * num2;
return theAnswer;
}
static int Sub(int num1, int num2)
{
int theAnswer;
theAnswer = num1 - num2;
return theAnswer;
}
static int Div(int num1, int num2)
{
int theAnswer;
if (num2 == 0)
return 0;
theAnswer = num1 / num2;
return theAnswer;
}
EDIT: Eu peguei as sugestões daqueles aqui e reconstruiu o programa com SWITCH e WHILE. Alguém também disse que, como muito do código é o mesmo, eu deveria poder reutilizá-lo. Eu gosto dessa ideia e vou ver como posso fazer isso.
var retry = true;
while (retry)
{
retry = false;
string whichOp;
int firstNum, secondNum, result;
Console.WriteLine("What Operator do you wish to use? [A]dd, [S]ubtract, [M]ultiply or [D]ivide?");
whichOp = Console.ReadLine();
whichOp = whichOp.ToLower();
switch (whichOp)
{
case "a":
Console.Write("You chose Addition. Please choose your first number: ");
firstNum = int.Parse(Console.ReadLine());
Console.Write("You chose the number {0}. Please choose a second number: ", firstNum);
secondNum = int.Parse(Console.ReadLine());
result = Add(firstNum, secondNum);
Console.WriteLine("You chose the number {0}. {1} plus {2} equals {3}.", secondNum, firstNum, secondNum, result);
Console.ReadLine();
break;
case "s":
Console.Write("You chose Subtraction. Please choose your first number: ");
firstNum = int.Parse(Console.ReadLine());
Console.Write("You chose the number {0}. Please choose a second number: ", firstNum);
secondNum = int.Parse(Console.ReadLine());
result = Sub(firstNum, secondNum);
Console.WriteLine("You chose the number {0}. {1} minus {2} equals {3}.", secondNum, firstNum, secondNum, result);
Console.ReadLine();
break;
case "m":
Console.Write("You chose Multiplication. Please choose your first number: ");
firstNum = int.Parse(Console.ReadLine());
Console.Write("You chose the number {0}. Please choose a second number: ", firstNum);
secondNum = int.Parse(Console.ReadLine());
result = Mult(firstNum, secondNum);
Console.WriteLine("You chose the number {0}. {1} times {2} equals {3}.", secondNum, firstNum, secondNum, result);
Console.ReadLine();
break;
case "d":
Console.Write("You chose Division. Please choose your first number: ");
firstNum = int.Parse(Console.ReadLine());
Console.Write("You chose the number {0}. Please choose a second number: ", firstNum);
secondNum = int.Parse(Console.ReadLine());
result = Div(firstNum, secondNum);
Console.WriteLine("You chose the number {0}. {1} divided by {2} equals {3}.", secondNum, firstNum, secondNum, result);
Console.ReadLine();
break;
default:
Console.WriteLine("I'm sorry. {0} is not an available option. Please try again.", whichOp.ToUpper());
retry = true;
break;
}
}
}
static int Add(int num1, int num2)
{
int theAnswer;
theAnswer = num1 + num2;
return theAnswer;
}
static int Mult(int num1, int num2)
{
int theAnswer;
theAnswer = num1 * num2;
return theAnswer;
}
static int Sub(int num1, int num2)
{
int theAnswer;
theAnswer = num1 - num2;
return theAnswer;
}
static int Div(int num1, int num2)
{
int theAnswer;
if (num2 == 0)
return 0;
theAnswer = num1 / num2;
return theAnswer;
}