选项是/否C#控制台

时间:2013-07-28 14:04:29

标签: c#

我正在通过控制台为货币转换器创建一个C#程序。 最后我要插入“继续?(是/否)”。这里用户必须选择。我试过这个,但它不起作用

float Dollaro = 1.32f, Euro;
float Cambio;
string EuroStr;


        Console.Write("Euro: ");
        EuroStr = Console.ReadLine();
        Euro = float.Parse(EuroStr);

        Cambio = Dollaro * Euro;

        Console.WriteLine("Dollaro: " + Cambio);
        Console.WriteLine("Vuoi continuare? (yes/no)");
        Console.ReadLine();
        string risposta = Console.ReadLine();
        do
        {
            if (risposta.Equals("Y"))
            {
                Console.WriteLine("Yes");
                break;
            }
            else if (risposta.Equals("N"))
            {
                Console.WriteLine("No");
                break;
            }

        } while (risposta == "N");

7 个答案:

答案 0 :(得分:4)

你想要那样的东西

float Dollaro = 1.32f, Euro;
float Cambio;
string EuroStr;

     do
     {
        Console.Write("Euro: ");
        EuroStr = Console.ReadLine();
        Euro = float.Parse(EuroStr);

        Cambio = Dollaro * Euro;

        Console.WriteLine("Dollaro: " + Cambio);
        Console.WriteLine("Vuoi continuare? (yes/no)");
        Console.ReadLine();
        string risposta = Console.ReadLine();

            if (risposta.Equals("Y"))
            {
                Console.WriteLine("Yes");
                break;
            }
            else if (risposta.Equals("N"))
            {
                Console.WriteLine("No");
                break;
            }

      } while (risposta == "N");

但这只是一个样本,你需要提供更多信息,所以我会给你更好的例子。你的代码应该做什么?用户还有其他选择吗?等等

答案 1 :(得分:4)

        float Dollaro = 1.32f, Euro, Cambio;
        string EuroStr;
        ConsoleKeyInfo risposta;
        do
        {
            Console.Write ( "Euro: " );
            EuroStr = Console.ReadLine ();
            bool result = Single.TryParse ( EuroStr, out Euro );
            if ( result )
            {
                Cambio = Dollaro * Euro;
                Console.WriteLine ( "Dollaro: " + Cambio );
            } else {
                Console.WriteLine ( "Please enter a number" );
            }
            bool check = false;
            do {
                Console.Write ( "\nVuoi continuare? (yes/no) " );
                risposta = Console.ReadKey ( true );
                check = !( ( risposta.Key == ConsoleKey.Y ) || ( risposta.Key == ConsoleKey.N ) );
            } while ( check );
            switch ( risposta.Key )
            {
                case ConsoleKey.Y: Console.WriteLine ( "Yes" ); break;
                case ConsoleKey.N: Console.WriteLine ( "No" ); break;
            } 
        } while ( risposta.Key != ConsoleKey.N );

我改变了一些事情:

  • 如果我为欧元输入字符 - FormatException msdn 。所以我添加了TryParse();
  • 我已将响应从string更改为ConsoleKeyInfo msdn - 这样可以更轻松地检查“Y”或“N”,我认为更清楚,并且没有需要使用ToLower() msdn 来转换用户输入并将其与字符串进行比较;
  • 还检查用户是否按“Y”或“N”,输入不同时,会显示相同的消息 - Console.Write ( "\nVuoi continuare? (yes/no) " );

一般情况下,您应该过滤来自用户的所有数据\信息(无论如何),以避免异常。

答案 2 :(得分:2)

您应该将执行操作的代码移动到执行循环

试试这个:

    static void Main(string[] args)
    {
        float Dollaro = 1.32f, Euro;
        float Cambio;
        string EuroStr;

        string risposta = "Y";

        do
        {
            Console.Write("Euro: ");
            EuroStr = Console.ReadLine();
            Euro = float.Parse(EuroStr);

            Cambio = Dollaro * Euro;

            Console.WriteLine("Dollaro: " + Cambio);
            Console.WriteLine("Vuoi continuare? (yes/no)");               
            risposta = Console.ReadLine();

            if (risposta.Equals("Y"))
            {
                Console.WriteLine("Yes");                    
            }
            else if (risposta.Equals("N"))
            {
                Console.WriteLine("No");                    
            }

        } while (risposta == "Y");
    }

答案 3 :(得分:2)

这应该可以解决您的问题: 你应该让你的变量“risposta”ToLower,这样如果你输入一个小字母或大字母(y或Y)就无所谓了

float Dollaro = 1.32f, Euro;
            float Cambio;
            string EuroStr;

            string risposta = "Y";

            do
            {
                Console.Write("Euro: ");
                EuroStr = Console.ReadLine();
                Euro = float.Parse(EuroStr);

                Cambio = Dollaro * Euro;

                Console.WriteLine("Dollaro: " + Cambio);
                Console.WriteLine("Vuoi continuare? (yes/no)");
                risposta = Console.ReadLine();

                if (risposta.Equals("Y"))
                {
                    Console.WriteLine("Yes");
                }
                else if (risposta.Equals("N"))
                {
                    Console.WriteLine("No");
                }

            } while (risposta.ToLower() == "y");

答案 4 :(得分:1)

您需要“阅读”答案才能对其进行测试。

answer = Console.ReadLine();

答案 5 :(得分:1)

你可以试试这个,你也可以为其他按键添加“else”语句。

    string key = "";
    do
    {
        Console.Write("Enter Username: ");
        username = Console.ReadLine();          
        Console.Write("Is this correct? (Y/N): ");
        key = Console.ReadLine();
        if (key.Equals("Y") | key.Equals("y"))
        {
            break;
        }
    } while (true);

答案 6 :(得分:0)

试试这段代码:

int num1, num2; 
char oPt;
string Count;
do
{
    Console.WriteLine("Enter 1st Value");
    num1 = Convert.ToInt32(Console.ReadLine());
    Console.WriteLine("Enter 2nd Value : ");
    num2 = Convert.ToInt32(Console.ReadLine());
    Console.WriteLine(" + - * / ");
    oPt = Convert.ToChar(Console.ReadLine());

    if (oPt == '-')
    {
        Console.WriteLine("Result: " + (num1 - num2));
    }
    else if (oPt == '+')
    {
        Console.WriteLine("Result: " + (num1 + num2));
    }
    else if (oPt == '*')
    {
        Console.WriteLine("Result: " + (num1 * num2));
    }
    else if (oPt == '/')
    {
        Console.WriteLine("Result: " + (num1 / num2));
    }
    do
    {
        Console.WriteLine("Do you wish to calculate another? Yes (y) or No (n): ");
        Count = Console.ReadLine();
        var CountLower = Count?.ToLower();
        if ((CountLower == "y") || (CountLower == "n"))
            break;
        } while (true );
    } while (Count != "n");
}