我有一个编程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;
}
}
}
答案 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;
}