PDA

Visualizza la versione completa : [C#] Uscire dal ciclo while


77Demoni
30-01-2006, 23:32
salve raga, ho fatto da poco un programma, si può dire che è stupido, però ho un problema. Praticamente io in questo programma inserisco dei numeri, ed il compilatore mi dice se sono pari, o dispari, fin qui nessun problema, il problema persiste all'uscite del ciclo do while, voglio l'uscita del ciclo sia effettuata quando premo invio senza scrivere niente. Il programma iniziale senza condizione di uscite è il seguente

string tmp;
int Num;

do
{
Console.WriteLine("Inserire un numero");
tmp=Console.ReadLine();
Num = Convert.ToInt32(tmp);
if(Num%2==0)
Console.WriteLine("Il numero inserito è pari");
else
Console.WriteLine("Il numero inserito è
dipari");
}
while(tmp!="");

con questo codice quando premo invio senza scrivere niente, mi da eccezione nella riga"Num=Convert.ToInt32(tmp)" certo non sa convertire essendo che non inserisco niente.
Dopo qualche giorno sono riuscito a trovare una soluzione ho fatto così.
string tmp;
int Num;

do
{
Console.WriteLine("Inserire un numero");
tmp=Console.ReadLine();
if (tmp=="")
break;
Num = Convert.ToInt32(tmp);
if(Num%2==0)
Console.WriteLine("Il numero inserito è pari");
else
Console.WriteLine("Il numero inserito è dispari");

}
while(tmp!="");

Così funziona, però la condizione di uscita del while è inutile, volevo sapere come posso fare in un altro modo, facendo in modo di uscire usando la condizione del while. Grazie anticipatamente

alka
30-01-2006, 23:36
A quale linguaggio fai riferimento? C#?

77Demoni
02-02-2006, 16:22
Si faccio riferimento a c#.

cubeccu
02-02-2006, 16:30
anche se la condizione è inutile non mi sembra un grosso problema... se sei proprio preoccupato dell'overhead di controllare nuovamente se tmp == "" puoi fare così:
do
{
Console.WriteLine("Inserire un numero");
tmp=Console.ReadLine();
if (tmp=="")
break;
Num = Convert.ToInt32(tmp);
if(Num%2==0)
Console.WriteLine("Il numero inserito è pari");
else
Console.WriteLine("Il numero inserito è dispari");

}
while(true);

oppure, anche se secondo me così è peggio, in questo modo:

Console.WriteLine("Inserire un numero"); tmp=Console.ReadLine();
while (tmp != "")
{
Num = Convert.ToInt32(tmp);
if(Num%2==0)
Console.WriteLine("Il numero inserito è pari");
else
Console.WriteLine("Il numero inserito è dispari");

Console.WriteLine("Inserire un numero");
tmp=Console.ReadLine();
}

mandi

Loading