我正在用C#編程一個Consolecalculator。我的問題是,我不知道如何以正確的方式處理DivideByZeroExeption。我希望用戶有機會將不正確的「0」更改爲另一個數字。這應該發生在相同的計算中。如何處理DivideByZeroExeption
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace gmaare_consolen_rechner_1._0
{
class Program
{
//Program Start
public static void Main(string[] args)
{
//jaNein String um zu ermitteln ob erneut eine Rechnung gestellt werden soll
//Der Operator wird in den rechenzeichen String eingelesen
string jaNein, rechenzeichen = (null);
//Start der Rechnerschleife
do {
int zahl_1 = Convert.ToInt32(null); //erste Zahl einlesen
zahl_1 = (Fehlerklasse.fehlerzahl_1(zahl_1)); //erste Zahl weitergeben
rechenzeichen = (Fehlerklasse.fehlerRechenzeichen(rechenzeichen)); //rechenzeichen einlesen
int zahl_2 = Convert.ToInt32(null); //zeite Zahl einlesen
zahl_2 = (Fehlerklasse.fehlerzahl_2(zahl_2)); //zweite Zahl weitergeben
var ergebnis = Ergebnis.rechenmethode(zahl_1, zahl_2, rechenzeichen);
Console.WriteLine(ergebnis); //ergebnis wird ausgelesen
Console.WriteLine("Möchten sie erneut eine Rechnung stellen ? (ja/nein)"); //Frage an den Benutzer
//Start einer schleife zur Ermittlung von jaNein
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")); //löscht alles geschriebene in der Konsole
Console.Clear();
}
while (jaNein == "ja"); //Führe die Rechnerschleife aus, solange jaNein "ja" ist
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace gmaare_consolen_rechner_1._0
{
class Rechner
{
//Implementieren der Klasse Fehlerklasse
Fehlerklasse fehlerbehen = new Fehlerklasse();
//Methode zum Plusrechnen
public int plus(int zahl_1, int zahl_2)
{
return zahl_1 + zahl_2;
}
//Methode zum Minusrechnen
public int minus(int zahl_1, int zahl_2)
{
return zahl_1 - zahl_2;
}
//Methode zum Malrechnen
public int mal(int zahl_1, int zahl_2)
{
return zahl_1 * zahl_2;
}
//Methode zum Geteiltrechnen
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
{
//Methode zur Ermittlung des Operators
public static int rechenmethode(int zahl_1, int zahl_2, string rechenzeichen)
{
//var ergebnis auf 0 gesetzt
var ergebnis = 0;
//Klassen rechnen und Fehlerklasse implementiert
Rechner rechnen = new Rechner();
Fehlerklasse fehlerbehen = new Fehlerklasse();
//Switchanweisung zur Ermittlung des Operators
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;
}
//Gibt die Variable ergebnis zurück
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
{
//Methdoe zum Sicherstellen dass zahl_1 eine Zahl ist
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;
}
//Methdoe zum Sicherstellen dass zahl_2 eine Zahl ist
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;
}
//Methode um zu verhindern dass andere Zeichen als +,-,*,/ als Operator verwendet werden
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();
}
tryAgain = false;
}
catch (FormatException)
{
Console.WriteLine("Geben sie ein gültiges Rechenzeichen ein! (+,-,*,/)");
}
}
return rechenzeichen;
}
}
}
我提醒你昨天有類似的問題。你能否只寫下你的代碼中有問題的部分?我懷疑這是你卡住的整個代碼,也許我們可以幫助你更好,如果你試圖限制任務 – HimBromBeere
在你調用'rechnen.geteiltdurch'之前的某個時間點,你不能驗證用戶輸入嗎?這樣他們可以被提示重新輸入他們的意見。 –
請用英文編寫您的代碼,以便人們瞭解正在發生的事情。 –