| Programmierung und Webdesign Ruby, Java, Perl, C, C++, C# sowie PHP, Mysql, Webserver, CMS, Frameworks und mehr |
18.02.2010, 14:52
|
#1 (permalink)
| | Komplett-PC-Aufrüster
Mitglied seit: 03.06.2009
Beiträge: 237
| C# - Leere Variable, wie überprüfen?
Hallo Leute!
Ich rätsel grade dadran wie ich eine leere Variable finden kann und dann ne Fehlermeldung rausgegeben wird?!
Ich habe in meinem Programm (Anhang!) Diverse Programmstellen wo eine Zahleneingabe erwartet wird, kommt hier jedoch ein Buchstabe oder einfach nichts, stürzt das Programm ab, und das möchte ich verhindern!
Weiß jemand wie ich das bewerkstelligen kann?
Den entsprechenden Quellcode evtl. so einfügen dasich es nurnoch kopieren brauch
Danke schonmal fürs Kopf zerbrechen
__________________ AMD Phenom II 940 BE @ 3,4 GHz | Asus Crosshair II Formula | 4x 2GB Kingston HyperX CL4 @ 800 MHz | EVGA GTX260 65nm | 1TB Western Digital Black Caviar | BeQuiet! Dark Power Pro 750W | Creative X-Fi XTreme Music | Creative T Inspire 6100 / Creative Fatal1ty Headset | Asus VW222u und Asus VW225n |
| |
18.02.2010, 15:33
|
#2 (permalink)
| | Software-Overclocker
Mitglied seit: 29.09.2008
Beiträge: 1.435
| AW: C# - Leere Variable, wie überprüfen?
Hab's jetzt mal ausm Kopf gemacht, müsste aber die Ausnahme vermeiden... Code: static void Main()
{
int typ;
Console.Clear();
Console.WriteLine("************************************************************");
Console.WriteLine("Bitte waehlen sie den Anwendungstyp aus!");
Console.WriteLine("Dauerhaft ausfuehren ==> 1");
Console.WriteLine("X Mal ausfuehren ==> 2");
String input = Console.ReadLine();
if (input != null)
{
typ = Convert.ToInt32(Console.ReadLine());
}
Console.WriteLine("************************************************************");
switch (typ)
{
case 1:
Dauerhaft();
break;
case 2:
X_Mal();
break;
default:
Console.WriteLine("Bitte geben Sie NUR eine 1 oder eine 2 ein!");
break;
}
}
__________________
Eagles may soar high, but weasels don't get sucked into jet engines.
|
| |
18.02.2010, 15:55
|
#3 (permalink)
| | Komplett-PC-Aufrüster
Mitglied seit: 03.06.2009
Beiträge: 237
| AW: C# - Leere Variable, wie überprüfen?
Das funktioniert fast...^^
Nur mekkert er jetzt das die Variable "Typ" nichtmehr zugewiesenw erden kann... Wenn ich den geschwiften Klammern nach dem if (input...) wegmache, erkennt er typ wieder, allerdings funktioniert dann der rest nicht mehr >.<
__________________ AMD Phenom II 940 BE @ 3,4 GHz | Asus Crosshair II Formula | 4x 2GB Kingston HyperX CL4 @ 800 MHz | EVGA GTX260 65nm | 1TB Western Digital Black Caviar | BeQuiet! Dark Power Pro 750W | Creative X-Fi XTreme Music | Creative T Inspire 6100 / Creative Fatal1ty Headset | Asus VW222u und Asus VW225n |
| |
18.02.2010, 16:31
|
#4 (permalink)
| | Software-Overclocker
Mitglied seit: 29.09.2008
Beiträge: 1.435
| AW: C# - Leere Variable, wie überprüfen?
Hast du mal versucht, int typ = 0 zu schreiben? Java nörgelt nämlich auch, wenn man auf uninitialisierte Variablen zugreift.
__________________
Eagles may soar high, but weasels don't get sucked into jet engines.
|
| |
19.02.2010, 16:54
|
#5 (permalink)
| | Komplett-PC-Aufrüster
Mitglied seit: 22.12.2008 Ort: Österreich
Beiträge: 121
| AW: C# - Leere Variable, wie überprüfen?
Das sollte so funktionieren wie du das willst. Code: static void Main()
{
int typ;
Console.Clear();
Console.WriteLine("************************************************************");
Console.WriteLine("Bitte waehlen sie den Anwendungstyp aus!");
Console.WriteLine("Dauerhaft ausfuehren ==> 1");
Console.WriteLine("X Mal ausfuehren ==> 2");
Console.WriteLine("************************************************************");
String input = Console.ReadLine();
if (input != "")
{
typ = Convert.ToInt32(Console.ReadLine());
switch (typ)
{
case 1:
Dauerhaft();
break;
case 2:
X_Mal();
break;
default:
Console.WriteLine("Bitte geben Sie NUR eine 1 oder eine 2 ein!");
break;
}
}
else
{
Console.WriteLine("Keine Eingabe");
}
}
|
| |
19.02.2010, 16:58
|
#6 (permalink)
| | F@H Team Member
Mitglied seit: 16.06.2008 Ort: Berlin
Beiträge: 1.283
| AW: C# - Leere Variable, wie überprüfen?
Wenn jemand z.B. Buchstaben eingibt, haut er dir eine Exception raus. Bitte diese abfangen oder vorher mit Int32.TryParse() überprüfen, ob es parsebar ist. Zweiteres wäre der bessere Weg.
EDIT: außerdem möchtest du sicherlich " typ = Convert.ToInt32(input);" anstatt " typ = Convert.ToInt32(Console.ReadLine());" haben, oder?
EDIT 2: Der erste Absatz ist übrigens auch genau das, was der Threadersteller gesucht hat.
Geändert von aurionkratos (19.02.2010 um 17:12 Uhr)
|
| |
19.02.2010, 17:23
|
#7 (permalink)
| | Komplett-PC-Aufrüster
Mitglied seit: 22.12.2008 Ort: Österreich
Beiträge: 121
| AW: C# - Leere Variable, wie überprüfen? Zitat:
Zitat von aurionkratos Wenn jemand z.B. Buchstaben eingibt, haut er dir eine Exception raus. Bitte diese abfangen oder vorher mit Int32.TryParse() überprüfen, ob es parsebar ist. Zweiteres wäre der bessere Weg.
EDIT: außerdem möchtest du sicherlich " typ = Convert.ToInt32(input);" anstatt " typ = Convert.ToInt32(Console.ReadLine());" haben, oder?
EDIT 2: Der erste Absatz ist übrigens auch genau das, was der Threadersteller gesucht hat. | Du hast schon recht mit Buchstaben usw. ABER das hat der Threadhersteller nicht verlangt.
Ich habe mich nur auf sein Problem beschränkt, obwohl das mit Int32.TryParse(); usw sehr sinnvoll wäre.
Und mit deinem ersten EDIT hast du natürlich vollkommen recht.
|
| |
19.02.2010, 19:26
|
#8 (permalink)
| | Software-Overclocker
Mitglied seit: 29.09.2008
Beiträge: 1.435
| AW: C# - Leere Variable, wie überprüfen?
Das hab ich doch glatt übersehn... kommt davon, wenn man das nicht ausprobiert
__________________
Eagles may soar high, but weasels don't get sucked into jet engines.
|
| |
20.02.2010, 14:18
|
#9 (permalink)
| | Software-Overclocker
Mitglied seit: 03.09.2007 Ort: Earth:\Europe\Italy
Beiträge: 1.163
| AW: C# - Leere Variable, wie überprüfen?
Wenn es wirklich nur um eine Unterscheidung zwischen "1", "2", und "Rest" gehen soll, dann sollte doch ein einfacher If-Block wie Code: if (input == "1"){
Dauerhaft();
}
else if (input == "2"){
X_Mal();
}
else{// if input == alles andere
Console.WriteLine("Bitte geben Sie eine 1 oder eine 2 ein!");
}
ohne hin- und herkonvertieren sowie Parse-Versuche reichen? Oder ist es für die Aufgabe auch nötig, zwischen einer leeren Eingabe und dem Rest zu unterscheiden?
__________________
Hier könnte Ihre Werbung stehen!
|
| |
24.02.2010, 13:44
|
#10 (permalink)
| | Komplett-PC-Aufrüster
Mitglied seit: 03.06.2009
Beiträge: 237
| AW: C# - Leere Variable, wie überprüfen?
So ich melde mich auch noch mal
Folgendes: Das einzige was einwandfrei funktioniert ist die Lösung von d00mfreak, allerdings wollte ich versuchen Switchcase zu verwenden, sieht schöner aus
Die Lösung von Rofl...vs...xD funktioniert fast, bei Zahlen oder einer leeren Eingabe kein Problem, kommt hier aber ein Buchstabe stürzt das ganze wieder ab mit einer Exception...^^ Knapp am Ziel vorbei also...
Das mit dem Parse klingt interessant, kann das hier jemand näher erläutern bzw. erklären was das macht und wie ich es einbinde? Ich mach jetzt seit grade mal 4 Wochen C#...^^
mfg, Maniac
__________________ AMD Phenom II 940 BE @ 3,4 GHz | Asus Crosshair II Formula | 4x 2GB Kingston HyperX CL4 @ 800 MHz | EVGA GTX260 65nm | 1TB Western Digital Black Caviar | BeQuiet! Dark Power Pro 750W | Creative X-Fi XTreme Music | Creative T Inspire 6100 / Creative Fatal1ty Headset | Asus VW222u und Asus VW225n
Geändert von Der Maniac (24.02.2010 um 13:52 Uhr)
|
| |
Forumregeln
| Es ist Ihnen nicht erlaubt, neue Themen zu verfassen. Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten. Es ist Ihnen nicht erlaubt, Anhänge hochzuladen. Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten. HTML-Code ist aus. | | | Alle Zeitangaben in WEZ +1. Es ist jetzt 05:28 Uhr. | |