Switch Case Anweisung

Hallo zämmä

Ich brauche eure Hilfe.

Wenn ich eine Switch Case Anweisung habe und z.b. im Case 1 eine Eingabe machen will:

s=Console::ReadLine();
z=Convert::ToInt16(s);

bricht mir das Programm ab „*.exe funktioniert nicht mehr“! Hat es einen zusammenhang, dass der Wert nicht von Anfang an im Code vermerkt ist? Ich habe s und z am Anfang aufgeführt :frowning:

String ^s;
int z;

Muss ich mit Zeiger arbeiten?? *s und &z?

Danke für eure Hilfe.

Gruss Renato

Eine genaue Fehlermeldung bekommt man z. B. durch Debuggen.
Pauschal wäre meine Idee, dass die eingegebene Zahl zu groß für einen Int16 ist. Du willt ja einen int (= Int32) speichern, aber du wandelst mit ToInt16() um. Da kommt es bei Zahlen, die in int passen, aber nicht in Int16 (z. B. 100.000) zu Exceptions.

Grüße, JasonDelife.

Ich habe gemerkt, wenn ich es so schreibe, funktioniert es!

Console::ReadLine();
z=Convert::ToInt16(Console::ReadLine());

Jedoch funktioniert meine do/while Schleife nicht mehr :frowning:

Gruss Renato

Wir brauchen:

  1. Den Quelltext mit der Schleife komplett.
  2. Die genaue Exception, die auftritt.
    Sonst ist das bloß ein Rätselraten.

Grüße, JasonDelife.

#include „stdafx.h“
#include „iostream“

using namespace System;

//Hauptprogramm
void main(void)
{
int z; //Anzahl Messungen
char ch;

Console::WriteLine(„1 - Werte messen auf Förderband 1“); //Auswahlmenu
Console::WriteLine(„2 - Exit“);

do
{
switch(ch)
{
case ‚1‘:Console::Clear();
{

//Eingabe der Anzahl Messwerte

do //Wiederholen bis z grösser ist als 0
{
do //Wiederholen bis z kleiner ist als 21
{
Console::Write("Gültige Anzahl Messwerte eingeben (1-20): ");
Console::ReadLine(); //Problem: Funktioniert nicht richtig!!
z=Convert::ToInt16(Console::ReadLine());
}
while (z>20);
}
while (z