8 svar
173 visningar
daygamer 27
Postad: 13 jun 2018

Skriv nummer annars få text som säger till

Jag försöker skriva en kod som gör att man skriver ett nummer och sedan skriver den vilken nummer man skrev och om man inte skriver ett nummer och istället skriver text så ska man få en text som säger att man skrev fel. 

 

Men i mitt fall får jag felkod.

bool condition = true;
Console.Write("Skriv ett nummer: ");
string s = Console.ReadLine();
int nr = Int32.Parse(s);

 

if (condition)
{
Console.WriteLine("Du skrev ett nummer");
Console.WriteLine("Du skrev: " + nr);

}
else
{
Console.WriteLine("The variable is set to false.");
}


Console.ReadKey();

daygamer skrev:

Jag försöker skriva en kod som gör att man skriver ett nummer och sedan skriver den vilken nummer man skrev och om man inte skriver ett nummer och istället skriver text så ska man få en text som säger att man skrev fel. 

 

Men i mitt fall får jag felkod.

bool condition = true;
Console.Write("Skriv ett nummer: ");
string s = Console.ReadLine();
int nr = Int32.Parse(s);

 

if (condition)
{
Console.WriteLine("Du skrev ett nummer");
Console.WriteLine("Du skrev: " + nr);

}
else
{
Console.WriteLine("The variable is set to false.");
}


Console.ReadKey();

Hej och välkommen till Pluggakuten!

När får du felkod och vilken felkod får du?

Du initierar condition till true men du sätter inte condition till false om konverteringen till nr fallerar.

Koden hanterar endast heltal, är det OK?

Lindehaven 204
Postad: 13 jun 2018

Skriver man något annat än ett heltal så blir det System.FormatException som lämpligen åtgärdas med try och catch. Variabeln condition behövs inte i detta sammanhang.

daygamer 27
Postad: 16 jun 2018
Yngve skrev:
daygamer skrev:

Jag försöker skriva en kod som gör att man skriver ett nummer och sedan skriver den vilken nummer man skrev och om man inte skriver ett nummer och istället skriver text så ska man få en text som säger att man skrev fel. 

 

Men i mitt fall får jag felkod.

bool condition = true;
Console.Write("Skriv ett nummer: ");
string s = Console.ReadLine();
int nr = Int32.Parse(s);

 

if (condition)
{
Console.WriteLine("Du skrev ett nummer");
Console.WriteLine("Du skrev: " + nr);

}
else
{
Console.WriteLine("The variable is set to false.");
}


Console.ReadKey();

Hej och välkommen till Pluggakuten!

När får du felkod och vilken felkod får du?

Du initierar condition till true men du sätter inte condition till false om konverteringen till nr fallerar.

Koden hanterar endast heltal, är det OK?

 Detta är ingen skoluppgift så du kan skriva svaret

Lindehaven 204
Postad: 16 jun 2018

Det finns flera lösningar och jag föreslog en vanlig metod med try och catch . Har du provat den (eller någon annan metod) och vad blev resultatet?

daygamer 27
Postad: 16 jun 2018
Lindehaven skrev:

Det finns flera lösningar och jag föreslog en vanlig metod med try och catch . Har du provat den (eller någon annan metod) och vad blev resultatet?

 

public static void Main()

{

Console.WriteLine("Skriv ett tal");

bool loop = true;

do

try

{

string s = Console.ReadLine();

int nr = int.Parse(s);

int sum = 150 ;

nr = nr + sum;

if (nr < 200)

Console.WriteLine("Ditt tal + 150 blir: " + nr + " ange ett tal större än 50");

else if (sum < 200)

Console.WriteLine("ditt tal plus 150 blir " + sum + "ange mindre än 300");

else if (sum > 200 || sum < 300)

{

Console.WriteLine("Ditt tal + 150 blir: " + sum);

break;

}

}

catch

{

Console.WriteLine("Skriv ett nummer");

}

while (loop);

Console.ReadKey();

}

}

}

daygamer 27
Postad: 16 jun 2018
Lindehaven skrev:

Det finns flera lösningar och jag föreslog en vanlig metod med try och catch . Har du provat den (eller någon annan metod) och vad blev resultatet?

 Algoritmen för att skriva mer men inte ännu mer hur ser den ut?

 

HÄr följer ett exempel

 

(nr >= 200 || 300 <=nr)

 

Så det betyder antingen 200 eller mer eller 300 eller mindre. Men när jag kör koden så accepterar den större tal än 500. Antar då att min algoritm är fel.

 

Hur skulle du skriva bättre?

Lindehaven 204
Postad: 16 jun 2018

Ditt uttryck blir sant för alla heltal. Du behöver ett och-villkor istället för ett eller-villkor. Jag föredrar att skriva det lägsta värdet till vänster och det högsta till höger:

(200 <= nr && nr <= 300)

daygamer 27
Postad: 16 jun 2018 Redigerad: 16 jun 2018
Lindehaven skrev:

Ditt uttryck blir sant för alla heltal. Du behöver ett och-villkor istället för ett eller-villkor. Jag föredrar att skriva det lägsta värdet till vänster och det högsta till höger:

(200 <= nr && nr <= 300)

 Jag gjorde exakt sådär innan :) ska kolla sen vad problemet är, fixade ett annat program istället under tiden. 

 

Förresten, jag är 23 år och vill skaffa mig programmerings polare, har du whatsapp? Skicka ditt nr så addar jag dig. 

 

Mvh

Svara Avbryt
Close