【问题标题】:What is "88-type" in C# and how can i use it?什么是 C# 中的“88 类型”,我该如何使用它?
【发布时间】:2015-10-05 12:42:57
【问题描述】:

我有一个任务来编写 C# 控制台计算器。

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

以下是我的代码:

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;
        }
    }
}

【问题讨论】:

  • 你在哪里使用魔法88类型?我没看到。 (我的德语理解很差,但没那么那么。)唯一知道的type-88要么是中国的主战坦克,要么是中国的狙击步枪。另请阅读minimal reproducible example 并考虑如何将代码减少到产生您所看到的问题所需的最低限度。
  • 我所知道的 88 的唯一含义是第三帝国之一,我怀疑你的意思。
  • 也许任务是模拟 TI-88 计算器?还有一个卡西欧88。datamath.org/Sci/Slanted/TI-88.htmcasio-europe.com/euro/calc/tax/ms88eco
  • 这与德语成语“egal ist 88”有关吗?大致翻译为“88无所谓”。这意味着您如何看待 88 并不重要,它看起来总是一样的(在一张纸上将两个 8 靠近并以 90° 的间隔旋转)。

标签: c# .net calculator operator-keyword


【解决方案1】:

您也可以保证用户可以使用运算符 +,-,*,/ 对吗? 我的建议是您在“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;
    }

【讨论】:

    猜你喜欢
    • 2021-10-25
    相关资源
    最近更新 更多