8 svar
370 visningar
daygamer 15
Postad: 13 jun 2018 13:29

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();

Yngve 40157 – Livehjälpare
Postad: 13 jun 2018 14:43
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 820 – Lärare
Postad: 13 jun 2018 17:21

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 15
Postad: 16 jun 2018 09:08
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 820 – Lärare
Postad: 16 jun 2018 12:42

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 15
Postad: 16 jun 2018 13:24
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 15
Postad: 16 jun 2018 18:07
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 820 – Lärare
Postad: 16 jun 2018 20:02

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 15
Postad: 16 jun 2018 20:07 Redigerad: 16 jun 2018 20:19
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
Close