【发布时间】: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