2

コンソールで通貨コンバーター用の 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");
4

7 に答える 7

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");

しかし、これは単なるサンプルです。より多くの情報を提供する必要があるため、より良い例を示します。あなたのコードは何をすべきですか?ユーザーには他にどのようなオプションがありますか? 等々

于 2013-07-28T14:08:47.853 に答える
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 );

私はいくつかのことを変更しました:

  • Euro- msdnの文字を入力した場合。だから私は追加しました;FormatException TryParse()
  • 応答stringConsoleKeyInfo msdnに変更しました。これにより、"Y" または "N" のチェックが容易になり、より明確になると思います。ユーザー入力を ToLower() msdnでキャストして文字列と比較する必要はありません。
  • また、ユーザーが「Y」または「N」を押したかどうかを確認します。入力が異なる場合、同じメッセージが表示されます-Console.Write ( "\nVuoi continuare? (yes/no) " );

一般に、例外を回避するために、すべてのデータ\情報(ユーザーからのものは何でも)をフィルタリングする必要があります。

于 2013-07-28T15:43:33.140 に答える
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");
于 2013-07-28T14:18:37.373 に答える
1

テストするには、回答を「読む」必要があります。

answer = Console.ReadLine();
于 2013-07-28T14:09:02.250 に答える
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");
} 
于 2017-11-20T17:54:40.907 に答える