Estoy tratando de hacer que esta calculadora de consola se ejecute en bucle hasta que el usuario quiera salir de la aplicación. ¿Cómo puedo usar un bucle for con sentencias if else, es posible?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Oppgave3Lesson1
{
    class Program
    {
        static void Main(string[] args)
        {

            double sum = 0;

            double num1;
            Console.WriteLine("First number: ");
            num1 = Convert.ToInt32(Console.ReadLine());

            double num2;
            Console.WriteLine("Second number: ");
            num2 = Convert.ToInt32(Console.ReadLine());


            Console.WriteLine("Addisjon eller Subtraksjon?");
            string regneoperasjon = Console.ReadLine();

            if(regneoperasjon == "Subtraksjon")
            {
                Console.WriteLine("Svaret til denne regneoperasjonen er: " + (sum = num1 - num2));
            }
            else if (regneoperasjon == "Addisjon")
            {
                Console.WriteLine("Svaret til denne regneoperasjonen er: " + (sum = num1 + num2));
            }
            Console.WriteLine("Do you want to do an another math operation?");
            Console.ReadLine();
        }
    }
}
c#
0
user8746169 19 ene. 2018 a las 18:56

3 respuestas

La mejor respuesta

Puede agregar una pregunta para el usuario a través de {{X0 }} y luego verifique su respuesta:

do
{
    double sum = 0;

    double num1;
    Console.WriteLine("First number: ");
    num1 = Convert.ToInt32(Console.ReadLine());

    double num2;
    Console.WriteLine("Second number: ");
    num2 = Convert.ToInt32(Console.ReadLine());


    Console.WriteLine("Addisjon eller Subtraksjon?");
    string regneoperasjon = Console.ReadLine();

    if(regneoperasjon == "Subtraksjon")
    {
        Console.WriteLine("Svaret til denne regneoperasjonen er: " + (sum = num1 - num2));
    }
    else if (regneoperasjon == "Addisjon")
    {
        Console.WriteLine("Svaret til denne regneoperasjonen er: " + (sum = num1 + num2));
    }

    Console.WriteLine("Calculate the next operation (Y/N)?");
}
while(Console.ReadKey(true).Key == ConsoleKey.Y);

Entonces obtienes la salida como en la captura de pantalla a continuación: ingrese la descripción de la imagen aquí

1
Vadim Martynov 19 ene. 2018 a las 16:25

Intenta seguir. Hice las escrituras un escrito:

namespace Oppgave3Lesson1
{
    class Program
    {
        static void Main(string[] args)
        {
            while(true)
            {
                double sum = 0;

                double num1;
                Console.Write("First number: (or Exit)");
                string firstNumStr = Console.ReadLine();
                if(firstNumStr == "Exit") break;

                num1 = Convert.ToInt32(firstNumStr);

                double num2;
                Console.Write("Second number: ");
                num2 = Convert.ToInt32(Console.ReadLine());


                Console.Write("Addisjon eller Subtraksjon?");
                string regneoperasjon = Console.ReadLine();

                if(regneoperasjon == "Subtraksjon")
                {
                    Console.Write("Svaret til denne regneoperasjonen er: " + (sum = num1 - num2));
                }
                else if (regneoperasjon == "Addisjon")
                {
                    Console.Write("Svaret til denne regneoperasjonen er: " + (sum = num1 + num2));
                }
            }
0
jdweng 19 ene. 2018 a las 16:02

Un bucle for se usa cuando conoce el número (máximo) de iteraciones por adelantado.

En su escenario, un ciclo while es más apropiado.

do
{
   // Perform your logic here

   Console.WriteLine("Press any key to continue; Q to quit");

   var key = Console.ReadKey();

}while( key != ConsoleKey.Q );

O use un ciclo while interminable y salte del ciclo en una determinada condición:

while( true )
{
    // Perform your logic here

    Console.WriteLine("Press any key to continue; Q to quit");

    var key = Console.ReadKey();
    if( key == ConsoleKey.Q ) 
    {
        break;
    }
}
0
Frederik Gheysels 19 ene. 2018 a las 16:03