0

例外ハンドルエラーでqreturnを押している間、exitメソッドが機能しません。コンソールアプリケーションでは、application.exit()とenvoirnment.exit()の両方を使用する必要があります。両方とも機能しません。私は何か間違ったことをしていますか?助けていただければ幸いです。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace calculator_extended
{
    class Program
    {
        static void Main(string[] args)
        {
            int d = 0;

            while (true)
            {
                Console.WriteLine("Press A for addition");
                Console.WriteLine("Press S for subtraction");
                Console.WriteLine("Press M for Multiplication");
                Console.WriteLine("Press D for Divide");
                Console.WriteLine("Press q for Exit");


                char c = Convert.ToChar(Console.ReadLine());

                int a = Convert.ToInt32(Console.ReadLine());
                int b = Convert.ToInt32(Console.ReadLine());

                switch (c)
                {
                    case 'A':
                    case 'a':
                        {
                            d = add(a, b);
                            Console.WriteLine(d);
                            break;


                        }


                    case 'S':
                    case 's':
                        {
                            d = sub(a, b);
                            Console.WriteLine(d);
                            break;
                        }

                    case 'M':
                    case 'm':
                        {
                            d = mul(a, b);
                            Console.WriteLine(d);
                            break;
                        }

                    case 'D':
                    case 'd':
                        {
                            d = div(a, b);
                            Console.WriteLine(d);
                            break;
                        }

                    case 'q':
                        {

                            Environment.Exit(0);
                            break;

                        }
                    default:
                        {

                            Console.WriteLine("Please Enter the correct Character");
                            break;
                        }



                }
            }
        }
            private static int add(int a, int b)
    {

                   return a + b;
    }
               private static int sub(int a, int b)
    {

                   return a - b;
    }
               private static int mul(int a, int b)
    {
                   return a * b;
    }
               private static int div(int a, int b)
    {

                   return a / b;
    }



        }
    }

わかりました、これはうまくいきました。助けてくれてありがとう。コードが完璧で、何かが足りないかどうかを確認して知らせてください。ありがとう

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace calculator_extended
{
    class Program
    {
        static void Main(string[] args)
        {
            int d = 0;

            while (true)
            {
                Console.WriteLine("Press A for addition");
                Console.WriteLine("Press S for subtraction");
                Console.WriteLine("Press M for Multiplication");
                Console.WriteLine("Press D for Divide");
                Console.WriteLine("Press q for Exit");


                char c = Convert.ToChar(Console.ReadLine());
                if (c == 'q')
                {
                    Environment.Exit(0);
                }
                int a = Convert.ToInt32(Console.ReadLine());
                int b = Convert.ToInt32(Console.ReadLine());

                switch (c)
                {
                    case 'A':
                    case 'a':
                        {
                            d = add(a, b);
                            Console.WriteLine(d);
                            break;


                        }


                    case 'S':
                    case 's':
                        {
                            d = sub(a, b);
                            Console.WriteLine(d);
                            break;
                        }

                    case 'M':
                    case 'm':
                        {
                            d = mul(a, b);
                            Console.WriteLine(d);
                            break;
                        }

                    case 'D':
                    case 'd':
                        {
                            d = div(a, b);
                            Console.WriteLine(d);
                            break;
                        }


                    default:
                        {

                            Console.WriteLine("Please Enter the correct Character");
                            break;
                        }



                }
            }
        }
            private static int add(int a, int b)
    {

                   return a + b;
    }
               private static int sub(int a, int b)
    {

                   return a - b;
    }
               private static int mul(int a, int b)
    {
                   return a * b;
    }
               private static int div(int a, int b)
    {

                   return a / b;
    }



        }
    }
4

5 に答える 5

4

「q」を押した後、アプリケーションが2つの数字を待っているためかもしれません。

コードを変更し、大文字と小文字を区別する「q」を削除して、次を置き換えてみてください。

char c = Convert.ToChar(Console.ReadLine());

次のように:

char c = Convert.ToChar(Console.ReadLine());
if(c.ToLower() == 'q')
{
    Environment.Exit(0);
}
于 2012-08-13T11:40:05.413 に答える
1
char c = Convert.ToChar(Console.ReadLine());
// you will need to Exit here if char is 'q'
// else it is expecting to read more entries below before it reaches your "case"
int a = Convert.ToInt32(Console.ReadLine());
int b = Convert.ToInt32(Console.ReadLine());
于 2012-08-13T11:41:21.153 に答える
0

これを試してみてくださいEnvironment.Exit()。正常に動作するはずです。

于 2012-08-13T11:39:35.087 に答える
0

このコードのビット

char c = Convert.ToChar(Console.ReadLine()); 
int a = Convert.ToInt32(Console.ReadLine()); 
int b = Convert.ToInt32(Console.ReadLine()); 

コンソールから3行を読み取ります。

あなたはおそらくしたい

char c = Convert.ToChar(Console.ReadLine()); 
if (c=='Q' or c=='q') return;
int a = Convert.ToInt32(Console.ReadLine()); 
int b = Convert.ToInt32(Console.ReadLine()); 
于 2012-08-13T11:41:46.010 に答える
-1

そのようにコードを変更するだけです

bool exitLoop = false;
while(exitLoop) {
    ...
    case 'q':
        {
             exitLoop = true;
             break;
        }
    ...
}
于 2012-08-13T11:41:40.217 に答える