Vinnaren i pepparkakshustävlingen!
2017-12-11, 21:01
  #3193
Medlem
tj.s avatar
Citat:
Ursprungligen postat av 123PELLSON321
Just det.. så även: string minÅlder = console.ReadLine(); ?? REDIGERING; string messeage("minÅlder") = console.ReadLine(); blir det väl?
Utöver det är jag helt vilsen, finns det särskilda koder för annat alternativ än en siffra? Och gäller siffrorna bara 1-99, vad händer om användaren skriver 101 t.ex?

Ni som kan programmeringsspråk, vad det för med extremt svårbegriplig i början för att sen ljusna upp? eller tog det lång tid?
ReadLine returnerar en sträng på det som användaren har matat in. Den strängen vill du tilldela din variabel som ska hålla koll på det. Alltså:
Kod:
string age Console.ReadLine(); 
Citera
2017-12-11, 21:05
  #3194
Medlem
Citat:
Ursprungligen postat av 123PELLSON321
Just det.. så även: string minÅlder = console.ReadLine(); ?? REDIGERING; string messeage("minÅlder") = console.ReadLine(); blir det väl?

Vet inte hur mycket programmering du kan än, men när man converterar en sträng till ett tal, och strängen inte innehåller ett tal, så kommer programmer att kasta ett exception, ett fel, och om det inte hanteras i koden så kommer programmet att crasha. Det kan hanteras med hjälp av try - catch block, men då du är rätt ny så är det lite över din nivå skulle jag tro.

Därför är det bättre att använda dig utav "bool int.TryParse(string, out int)". Den returnerar en boolean ifall metoden lyckades med att konvertera strängen till en int, således kan du kolla ifall den är true innan du fortsätter. T.ex.

Kod:
string text = "Detta är en text";
// Denna kommer att innehålla värdet ifall vi lyckas! 
int nummer; 
//out betyder enkelt att vi skickar in en variabel och metoden säger att den ändrar den inuti
bool lyckades = int.TryParse(text, out nummer);
if (lyckades)
{
    Console.WriteLine("Vi kunde konvertera texten!");
}
else
{
    Console.WriteLine("Vi kunde inte konvertera texten!");
}

Citat:
Utöver det är jag helt vilsen, finns det särskilda koder för annat alternativ än en siffra? Och gäller siffrorna bara 1-99, vad händer om användaren skriver 101 t.ex?

En int kan innehålla -2147483648 till 2147483647, således behöver du inte oroa dig.

En int, integer, är ett heltal, och kan således inte innehålla decimaler.
Vill du använda decimaler är det float, double, long, osv som gäller. Nu behöver du bara använda dig utav float ifall du vill ha decimaler. Skillnaden är hur långa tal de kan innehålla.


Citat:
Ni som kan programmeringsspråk, vad det för med extremt svårbegriplig i början för att sen ljusna upp? eller tog det lång tid?

Det beror helt på hur mycket du sitter med det. Ju mer du leker, ju mer 'aha' upplevelser kommer du få genom att läsa och titta på vad andra håller på med. Leta gärna några klipp på youtube och följ dem, eller bara lyssna och lär.
Sen är det bra att ha något projekt att arbeta med, det kan vara enkla saker, bli inte uttråkad för att du sitter o gör en enkelt textlista av dina favoritfilmer, när du väl gjort det kan du utveckla vidare, och vidare, och vidare, poof så har du en applikation som är uppkopplad mot imdb för att dra ner bilder och text om de där filmerna. Men tro inte att du kommer dit inom en vecka, det tar tid.
För exempelprojekt så är det bara att söka på google, finns mängder av sidor som listar hundratals projekt i storleks och svårighetsgrad, även vissa med vad de skulle behöva för kunskaper.
Citera
2017-12-12, 14:12
  #3195
Medlem
@SuperSizeMe
Problemet är att jag vet inte hur man gör
Citera
2017-12-12, 18:10
  #3196
Medlem
Citat:
Ursprungligen postat av firefly93
@SuperSizeMe
Problemet är att jag vet inte hur man gör

Vad är det du inte vet hur man gör?
Console.ReadLine() ber användaren att skriva in en rad.
Använd sedan det användaren skrev in och försök att konvertera det till en int, antal gången som användaren vill slå sin tärning.
Sedan kan du använda en loop så många gånger för att slå tärningen, enklast att läsa upp om Random.
Poof, klart.
Citera
2017-12-12, 19:48
  #3197
Medlem
bilstereons avatar
Citat:
Ursprungligen postat av Gottisborgen
Vad är det för crash?

Det var att "indatasträngen hade ett felaktigt format".

Löste det genom att skriva

private void button1_Click(object sender, EventArgs e)
{

if (textBox1.TextLength > 0)
{
*all kod*
}

Borde väl dock finnas ett enklare sätt än att man måste lägga hela koden under en if-sats?
Citera
2017-12-12, 19:57
  #3198
Medlem
Citat:
Ursprungligen postat av bilstereon
Det var att "indatasträngen hade ett felaktigt format".

Löste det genom att skriva

private void button1_Click(object sender, EventArgs e)
{

if (textBox1.TextLength > 0)
{
*all kod*
}

Borde väl dock finnas ett enklare sätt än att man måste lägga hela koden under en if-sats?

Istället för att dra in kod i femtioelva ifsatser och annat med nivåer är det bättre att försöka köra det minsta möjliga påståendet först. T.ex. kan vi direkt avsluta ifall texten är av längd 0.
Kod:
if(textBox1.TextLength == 0) return;

Kan även vara bra att när man hanskas med input att kolla ifall det inte är tomma mellanslag och sådant. t.ex.

Kod:
if (String.IsNullOrWhiteSpace(textBox1.Text)) return;
Citera
2017-12-16, 21:26
  #3199
Medlem
Tack för svaren grabbar löste det till slut!
Citera
2017-12-26, 15:06
  #3200
Medlem
Detta är en lurig uppgift, koderna innehåller tydligen både syntax-fel och logiska fel och det är min uppgift att felsöka det och få programmet körbart (vafan!?)

Jag tror att jag ser de uppenbara småfelen, men det här med next-metoden verkar inte stämma, kör jag programmet så får jag svar om att siffran är för liten eller för stor oavsett om jag som användare anger 4 eller 94. Finns det ett särskilt sätt att använda metoden på att så att endast nr 1-20 slumpas ut?

namespace Uppgift_4
{
class Program
{
static void Main(string[] args)
{
// Deklaration av variabler
Random slumpat = new Random(); // skapar ett random objekt
int speltal = slumpat.Next(); // anropar Next metoden för att skapa ett slumptal
mellan 1 och 20

bool spela = true; // Variabel för att kontrollera om spelet ska fortsätta köras

while (!spela)
{
Console.Write("\n\tGissa på ett tal mellan 1 och 20: ");
int tal = Convert.ToInt32(Console.ReadLine());

if (tal < speltal)
{
Console.WriteLine("\tDet inmatade talet " + tal + " är för litet, försök igen.");
}

if (tal > speltal)
{
Console.WriteLine("\tDet inmatade talet " + tal + " är för stort, försök igen.");
}

if (tal = speltal)
Console.WriteLine("\tGrattis, du gissade rätt!");
spela = false;


Anar att jag ska använda mig av tryParse på något sätt men vart och hur?
__________________
Senast redigerad av 123PELLSON321 2017-12-26 kl. 15:08.
Citera
2017-12-26, 16:04
  #3201
Moderator
Neksnors avatar
Citat:
Ursprungligen postat av 123PELLSON321
Detta är en lurig uppgift, koderna innehåller tydligen både syntax-fel och logiska fel och det är min uppgift att felsöka det och få programmet körbart (vafan!?)

Jag tror att jag ser de uppenbara småfelen, men det här med next-metoden verkar inte stämma, kör jag programmet så får jag svar om att siffran är för liten eller för stor oavsett om jag som användare anger 4 eller 94. Finns det ett särskilt sätt att använda metoden på att så att endast nr 1-20 slumpas ut?

namespace Uppgift_4
{
class Program
{
static void Main(string[] args)
{
// Deklaration av variabler
Random slumpat = new Random(); // skapar ett random objekt
int speltal = slumpat.Next(); // anropar Next metoden för att skapa ett slumptal
mellan 1 och 20

bool spela = true; // Variabel för att kontrollera om spelet ska fortsätta köras

while (!spela)
{
Console.Write("\n\tGissa på ett tal mellan 1 och 20: ");
int tal = Convert.ToInt32(Console.ReadLine());

if (tal < speltal)
{
Console.WriteLine("\tDet inmatade talet " + tal + " är för litet, försök igen.");
}

if (tal > speltal)
{
Console.WriteLine("\tDet inmatade talet " + tal + " är för stort, försök igen.");
}

if (tal = speltal)
Console.WriteLine("\tGrattis, du gissade rätt!");
spela = false;


Anar att jag ska använda mig av tryParse på något sätt men vart och hur?
Kan inte c#, men https://msdn.microsoft.com/en-us/lib...v=vs.110).aspx antyder att det finns flera överlagrade nextmetoder.
Citera
2017-12-26, 16:38
  #3202
Medlem
Citat:
Ursprungligen postat av 123PELLSON321
Detta är en lurig uppgift, koderna innehåller tydligen både syntax-fel och logiska fel och det är min uppgift att felsöka det och få programmet körbart (vafan!?)

Jag tror att jag ser de uppenbara småfelen, men det här med next-metoden verkar inte stämma, kör jag programmet så får jag svar om att siffran är för liten eller för stor oavsett om jag som användare anger 4 eller 94. Finns det ett särskilt sätt att använda metoden på att så att endast nr 1-20 slumpas ut?

Anar att jag ska använda mig av tryParse på något sätt men vart och hur?

Som Neksnor sade behöver du ge lite input till Next för att den ska ge ett random värde inom ett visst intervall eller med ett maxvärde, annars får du ett rätt stort värde.

Sen kommer ditt spel inte köras mer än en gång då spela = false ligger direkt i while loopen, och inte i den ifsatsen som du nog vill ha den. Därför man i princip alltid ska ha ifsatser med fågelvingar.
Citera
2017-12-26, 21:43
  #3203
Medlem
Just det! Tack! Men hur och vart kommer TryParse in i bilden?
Citera
2017-12-27, 00:52
  #3204
Moderator
Neksnors avatar
Citat:
Ursprungligen postat av Gottisborgen
Som Neksnor sade behöver du ge lite input till Next för att den ska ge ett random värde inom ett visst intervall eller med ett maxvärde, annars får du ett rätt stort värde.

Sen kommer ditt spel inte köras mer än en gång då spela = false ligger direkt i while loopen, och inte i den ifsatsen som du nog vill ha den. Därför man i princip alltid ska ha ifsatser med fågelvingar.
Spelet kommer väl aldrig att starta på grund av
Kod:
bool spela = true; // Variabel för att kontrollera om spelet ska fortsätta köras

while (!spela)
?
Sedan verkar det bland annat saknas lite } på slutet.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback