什么是C#中的“88型”,我该如何使用它?

时间:2015-10-05 12:42:58

标签: c# .net calculator operator-keyword

我有一个编程C#Consolecalculator的任务。

我的问题是我不是“88型”是什么以及如何使用它。我必须使用它来保证用户只能使用+-*/

以下是我的代码:

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

namespace gmaare_consolen_rechner_1._0
{
    class Program
    {
        public static void Main(string[] args)
        {
            string jaNein, rechenzeichen;

            do {
                int zahl_1 = Convert.ToInt32(null);
                zahl_1 = (Fehlerklasse.fehlerzahl_1(zahl_1));

                rechenzeichen = Console.ReadLine();

                int zahl_2 = Convert.ToInt32(null);
                zahl_2 = (Fehlerklasse.fehlerzahl_2(zahl_2));

                var ergebnis = Ergebnis.rechenmethode(zahl_1, zahl_2, rechenzeichen);
                Console.WriteLine(ergebnis);


                Console.WriteLine("Möchten sie erneut eine Rechnung stellen ? (ja / nein)");
                do
                {
                    jaNein = Console.ReadLine();  
                    if (!(jaNein == "ja" | jaNein == "nein"))
                    {
                        Console.WriteLine("Ungültige Antwort, bitte wählen sie (ja / nein)");
                    }
                }
                while (!(jaNein == "ja" | jaNein == "nein"));

                Console.Clear();
            }
            while (jaNein == "ja");
        }
    }
}

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

namespace gmaare_consolen_rechner_1._0
{
    class Rechner
    {
        Fehlerklasse fehlerbehen = new Fehlerklasse();

        public int plus(int zahl_1, int zahl_2)
        {
            return zahl_1 + zahl_2;
        }

        public int minus(int zahl_1, int zahl_2)
        {
            return zahl_1 - zahl_2;
        }

        public int mal(int zahl_1, int zahl_2)
        {
            return zahl_1 * zahl_2;
        }

        public int geteiltdurch(int zahl_1, int zahl_2)
        {
            if(zahl_2!= 0)
            {
                return zahl_1 / zahl_2;
            }
            else
            {
                Console.WriteLine("Die Division durch 0 ist verboten!");
                return zahl_2;
            }
        }
    }
}

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

namespace gmaare_consolen_rechner_1._0
{
    class Ergebnis
    {
        public static int rechenmethode(int zahl_1, int zahl_2, string rechenzeichen)
        {
            var ergebnis = 0;

            Rechner rechnen = new Rechner();

            switch (rechenzeichen)
            {
                case "+":
                    ergebnis = rechnen.plus(zahl_1, zahl_2);

                    break;
                case "-":
                     ergebnis = rechnen.minus(zahl_1, zahl_2);

                    break;
                case "*":
                     ergebnis = rechnen.mal(zahl_1, zahl_2);

                    break;
                case "/":
                    ergebnis = rechnen.geteiltdurch(zahl_1, zahl_2);
                    break;
            }

            return ergebnis;
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace gmaare_consolen_rechner_1._0
{
    class Fehlerklasse
    {
        public static int fehlerzahl_1(int zahl_1)
        {
            bool tryAgain = true;
            while (tryAgain)
            {
                try
                {
                    zahl_1 = Convert.ToInt32(Console.ReadLine());
                    tryAgain = false;
                }
                catch (FormatException)

                {
                    Console.WriteLine("Geben sie eine gültige Zahl ein!");
                }
                catch (OverflowException)
                {
                    Console.WriteLine("Die Zahl ist zu gross, geben sie eine gültige Zahl ein!");
                }
            }
            return zahl_1;
        }

        public static int fehlerzahl_2(int zahl_2)
        {
            bool tryAgain = true;
            while (tryAgain)
            {
                try
                {
                    zahl_2 = Convert.ToInt32(Console.ReadLine());
                    tryAgain = false;
                }
                catch (FormatException)
                {
                    Console.WriteLine("Geben sie eine gültige Zahl ein!");
                }
                catch (Exception )
                {
                    Console.WriteLine("Die Zahl ist zu gross, geben sie eine gültige Zahl ein!");
                }
            }
            return zahl_2;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您也保证用户可以使用运算符+, - ,*,/ right?。 我的建议是你在“Fehlerklasse”中添加一个方法来检查操作员(Rechenzeichen)。

   public static string fehlerrechenzeichen(string rechenzeichen)
    {
        bool tryAgain = true;
        while (tryAgain)
        {
            try
            {
                rechenzeichen = Console.ReadLine();
                switch (rechenzeichen)
                {
                    case "+":
                        break;
                    case "-":
                        break;
                    case "*":
                        break;
                    case "/":
                        break;
                    default:
                        throw new FormatException("Geben sie eine gültiges Rechenzeichen ein!");
                }
                tryAgain = false;
            }
            catch (FormatException ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
        return rechenzeichen;
    }