Den ständige amerikanen i bastun

Permalänk

@ehsnils:
Jag förstår. I just denna uppgift var try/catch instruktionen men bra till nästa gång så tack för ditt svar!

Visa signatur

AMD Ryzen 7 3700X | ASUS ROG Strix Radeon RX 590 8GB | ASUS PRIME B450-PLUS | Corsair Vengeance LPX Black 16GB | Seagate BarraCuda Desktop 2TB

Permalänk

Hej igen!

Fått så himla bra hjälp här innan så testar en gång till.

Jag håller på med slutklämmen för uppgiften, kriteriet för att få A.
Dvs:
"Utöver detta ska amerikanen kunna välja att skriva in en nolla för att slumpa en temperatur.
Om detta sker ska inget värde skickas till metoden – detta kan man lösa med metod-överlagring som beskrivs i
studieguiden.
Amerikanen ska alltså kunna välja att skriva in noll (0) istället för ett värde. Då ska en värde i Fahrenheit
slumpsa fram och därefter omvandlas till Celsius precis som om amerikanen valt att skriva in det själv. Då kan
man anropa en metod för omvandling av Fahrenheit till Celsius utan argument (eftersom det inte finns något
inskrivet tal) som först slumpar värdet och sedan omvandlar det"

Det intressanta är att enligt vår lärobok är metodöverlagring överkurs och inte ens med, och på vår studieplattform är endast ett kort klipp på Youtube med som enda info, vilket känns minst sagt knapphändigt.

Min kod i övrigt funkar toppen, men kan inte få till det här sista.

Klistrar in hela min kod här! Jag har hållit på att testa lite olika grejer med metoderna och allt så ser troligtvis lite knas ut kanske.

using System; namespace ConsoleApp12 { class Program { static public double FahrToCels(int fahr) { double fahrD; fahrD = (double)fahr; double cel = (fahrD - 32) * 5 / 9; return cel; } public double FahrToCels() { Random rnd = new Random(); int fahr = 0; if(fahr == 0) fahr = rnd.Next(163, 171); return fahr; } static void Main(string[] args) { Program program = new Program(); program.FahrToCels(); program.FahrToCels(); int fahrTemp; double cel = 0; Console.WriteLine("How hot do you want the sauna? "); do { string fahrString = Console.ReadLine(); try { fahrTemp = int.Parse(fahrString); } catch (Exception) { Console.WriteLine("Please enter a number!"); continue; } cel = FahrToCels(fahrTemp); cel = Math.Round(cel, 2); if (cel > 77) { Console.WriteLine("You chose " + fahrTemp + " and that is " + cel + " degrees Celcius. It is too hot! You need to lower... Try again!"); } else if (cel < 73) { Console.WriteLine("You chose " + fahrTemp + " and that is " + cel + " degrees Celcius. It is to cool, you need more heat! Try again!"); } else if (cel == 75) { Console.WriteLine("You chose " + fahrTemp + " and that is " + cel + " degrees Celcius. This is perfect heat for this sauna! Step in!"); break; } else { Console.WriteLine("You chose " + fahrTemp + " and that is " + cel + " degrees Celcius. It's not perfect, but acceptable.\nOK to step in, but try again if you want even more perfect!"); } } while (cel != 167); Console.ReadKey(); } } }

Det jag inte riktigt förstår är, man kan inte använda parametern int i båda metoderna, men vad ska jag då använda när en int är det jag vill ha i båda? Har jag satt min random-metod på rätt ställe? Spelar det nån roll?
Hur anropar jag min överlagrade(?!) metod när de heter samma sak? Var nånstans i koden ska jag anropa den?

Mycket tacksam för hjälp!

Visa signatur

AMD Ryzen 7 3700X | ASUS ROG Strix Radeon RX 590 8GB | ASUS PRIME B450-PLUS | Corsair Vengeance LPX Black 16GB | Seagate BarraCuda Desktop 2TB

Permalänk
Medlem
Skrivet av exaaivilo:

Hej igen!

Fått så himla bra hjälp här innan så testar en gång till.

Jag håller på med slutklämmen för uppgiften, kriteriet för att få A.
Dvs:
"Utöver detta ska amerikanen kunna välja att skriva in en nolla för att slumpa en temperatur.
Om detta sker ska inget värde skickas till metoden – detta kan man lösa med metod-överlagring som beskrivs i
studieguiden.
Amerikanen ska alltså kunna välja att skriva in noll (0) istället för ett värde. Då ska en värde i Fahrenheit
slumpsa fram och därefter omvandlas till Celsius precis som om amerikanen valt att skriva in det själv. Då kan
man anropa en metod för omvandling av Fahrenheit till Celsius utan argument (eftersom det inte finns något
inskrivet tal) som först slumpar värdet och sedan omvandlar det"

Det intressanta är att enligt vår lärobok är metodöverlagring överkurs och inte ens med, och på vår studieplattform är endast ett kort klipp på Youtube med som enda info, vilket känns minst sagt knapphändigt.

Min kod i övrigt funkar toppen, men kan inte få till det här sista.

Klistrar in hela min kod här! Jag har hållit på att testa lite olika grejer med metoderna och allt så ser troligtvis lite knas ut kanske.

using System; namespace ConsoleApp12 { class Program { static public double FahrToCels(int fahr) { double fahrD; fahrD = (double)fahr; double cel = (fahrD - 32) * 5 / 9; return cel; } public double FahrToCels() { Random rnd = new Random(); int fahr = 0; if(fahr == 0) fahr = rnd.Next(163, 171); return fahr; } static void Main(string[] args) { Program program = new Program(); program.FahrToCels(); program.FahrToCels(); int fahrTemp; double cel = 0; Console.WriteLine("How hot do you want the sauna? "); do { string fahrString = Console.ReadLine(); try { fahrTemp = int.Parse(fahrString); } catch (Exception) { Console.WriteLine("Please enter a number!"); continue; } cel = FahrToCels(fahrTemp); cel = Math.Round(cel, 2); if (cel > 77) { Console.WriteLine("You chose " + fahrTemp + " and that is " + cel + " degrees Celcius. It is too hot! You need to lower... Try again!"); } else if (cel < 73) { Console.WriteLine("You chose " + fahrTemp + " and that is " + cel + " degrees Celcius. It is to cool, you need more heat! Try again!"); } else if (cel == 75) { Console.WriteLine("You chose " + fahrTemp + " and that is " + cel + " degrees Celcius. This is perfect heat for this sauna! Step in!"); break; } else { Console.WriteLine("You chose " + fahrTemp + " and that is " + cel + " degrees Celcius. It's not perfect, but acceptable.\nOK to step in, but try again if you want even more perfect!"); } } while (cel != 167); Console.ReadKey(); } } }

Det jag inte riktigt förstår är, man kan inte använda parametern int i båda metoderna, men vad ska jag då använda när en int är det jag vill ha i båda? Har jag satt min random-metod på rätt ställe? Spelar det nån roll?
Hur anropar jag min överlagrade(?!) metod när de heter samma sak? Var nånstans i koden ska jag anropa den?

Mycket tacksam för hjälp!

https://www.w3schools.com/cs/cs_method_overloading.asp

Ta det steg för steg. Börja med "Amerikanen ska alltså kunna välja att skriva in noll (0) istället för ett värde."
När du har fått ordning på det så ser du att du gör en massa konstiga saker.

Vad gör du här t.ex?
" Program program = new Program();
program.FahrToCels();
program.FahrToCels();
"

Permalänk

@ToddTheOdd:
Ja, det var en av grejerna jag testade för det var så de hade gjort i det enda exemplet som finns i vår studieplattform.
Har helt enkelt provat mig fram nu i några dagar, men tycker som sagt också att det såg konstigt ut.

Om han skriver 0 nu så översätts det ju till värdet som motsvarande i Celsius. Har försökt exkludera det i min if-sats men det verkar inte heller fungera riktigt.

Visa signatur

AMD Ryzen 7 3700X | ASUS ROG Strix Radeon RX 590 8GB | ASUS PRIME B450-PLUS | Corsair Vengeance LPX Black 16GB | Seagate BarraCuda Desktop 2TB

Permalänk
Medlem
Skrivet av exaaivilo:

@ToddTheOdd:
Ja, det var en av grejerna jag testade för det var så de hade gjort i det enda exemplet som finns i vår studieplattform.
Har helt enkelt provat mig fram nu i några dagar, men tycker som sagt också att det såg konstigt ut.

Om han skriver 0 nu så översätts det ju till värdet som motsvarande i Celsius. Har försökt exkludera det i min if-sats men det verkar inte heller fungera riktigt.

Skit i vad som ska ske om det matas in 0. Börja med att få till koden så när du matar in 0 ska en viss kod köras. Kanske ska du börja med att kolla om det är just 0 som matas in och då göra något och om det inte är 0 så ska något annat göras?

Permalänk

@ToddTheOdd:

using System; namespace ConsoleApp12 { class Program { static public double FahrToCels(int fahr) { double fahrD; fahrD = (double)fahr; double cel = (fahrD - 32) * 5 / 9; return cel; } static public double FahrToCels(Random fahr0) { Random rnd = new Random(); int fahr = 0; if(fahr == 0) fahr = rnd.Next(163, 171); return fahr; } static void Main(string[] args) { int fahr0 = 0; int fahrTemp; double cel = 0; Console.WriteLine("How hot do you want the sauna? "); do { string fahrString = Console.ReadLine(); try { fahrTemp = int.Parse(fahrString); } catch (Exception) { Console.WriteLine("Please enter a number!"); continue; } cel = FahrToCels(fahrTemp); cel = Math.Round(cel, 2); if (cel > 77) { Console.WriteLine("You chose " + fahrTemp + " and that is " + cel + " degrees Celcius. It is too hot! You need to lower... Try again!"); } else if (cel < 73 && fahrTemp != 0) { Console.WriteLine("You chose " + fahrTemp + " and that is " + cel + " degrees Celcius. It is to cool, you need more heat! Try again!"); } else if (cel == 75) { Console.WriteLine("You chose " + fahrTemp + " and that is " + cel + " degrees Celcius. This is perfect heat for this sauna! Step in!"); break; } else if (fahrTemp == 0) { Console.WriteLine("Fahr is 0."); } else { Console.WriteLine("You chose " + fahrTemp + " and that is " + cel + " degrees Celcius. It's not perfect, but acceptable.\nOK to step in, but try again if you want even more perfect!"); } } while (cel != 167); Console.ReadKey(); } } }

Tack för din hjälp!

Nu har jag tagit bort det felaktiga stycket och lagt in en ny else if-sats som körs om de matar in 0.
Då undrar jag hur fan jag anropar överlagringen dit? För det är väl det jag måste göra?
(Ska såklart inte stå som det gör om de skriver 0, hehe.)

Visa signatur

AMD Ryzen 7 3700X | ASUS ROG Strix Radeon RX 590 8GB | ASUS PRIME B450-PLUS | Corsair Vengeance LPX Black 16GB | Seagate BarraCuda Desktop 2TB

Permalänk
Medlem
Skrivet av exaaivilo:

Nu har jag tagit bort det felaktiga stycket och lagt in en ny else if-sats som körs om de matar in 0.

Tycker du att det är lämpligt att kontrollera om användaren skrivit in 0 efter att du redan kontrollerat om temperaturen är för hög eller för låg?

Tips: Du ska inte lägga till något i den redan existerande if-satsen.

Permalänk
Medlem
Skrivet av exaaivilo:

@ToddTheOdd:

using System; namespace ConsoleApp12 { class Program { static public double FahrToCels(int fahr) { double fahrD; fahrD = (double)fahr; double cel = (fahrD - 32) * 5 / 9; return cel; } static public double FahrToCels(Random fahr0) { Random rnd = new Random(); int fahr = 0; if(fahr == 0) fahr = rnd.Next(163, 171); return fahr; } static void Main(string[] args) { int fahr0 = 0; int fahrTemp; double cel = 0; Console.WriteLine("How hot do you want the sauna? "); do { string fahrString = Console.ReadLine(); try { fahrTemp = int.Parse(fahrString); } catch (Exception) { Console.WriteLine("Please enter a number!"); continue; } cel = FahrToCels(fahrTemp); cel = Math.Round(cel, 2); if (cel > 77) { Console.WriteLine("You chose " + fahrTemp + " and that is " + cel + " degrees Celcius. It is too hot! You need to lower... Try again!"); } else if (cel < 73 && fahrTemp != 0) { Console.WriteLine("You chose " + fahrTemp + " and that is " + cel + " degrees Celcius. It is to cool, you need more heat! Try again!"); } else if (cel == 75) { Console.WriteLine("You chose " + fahrTemp + " and that is " + cel + " degrees Celcius. This is perfect heat for this sauna! Step in!"); break; } else if (fahrTemp == 0) { Console.WriteLine("Fahr is 0."); } else { Console.WriteLine("You chose " + fahrTemp + " and that is " + cel + " degrees Celcius. It's not perfect, but acceptable.\nOK to step in, but try again if you want even more perfect!"); } } while (cel != 167); Console.ReadKey(); } } }

Tack för din hjälp!

Nu har jag tagit bort det felaktiga stycket och lagt in en ny else if-sats som körs om de matar in 0.
Då undrar jag hur fan jag anropar överlagringen dit? För det är väl det jag måste göra?
(Ska såklart inte stå som det gör om de skriver 0, hehe.)

Varför är inte det första du gör att kontrollera om inmatningen är 0 eller inte?

string fahrString = Console.ReadLine(); if (fahrTemp == 0) { gör något } else { try

Permalänk
Medlem

@exaaivilo:
Bra att du satsar på betyget A, det är inte allt för svårt om man anstränger sig, och du kommer lära dig mer på det.

Jag ska inte röra till det, utan håll dig till svaren du fått av @perost och @ToddTheOdd

Jag vill dock bidra till hur man kan tänka i sådana här lägen. Försök att använda dig av ett pseudospråk, har för mig att man fick lära sig om det i Programmering 1.

Tex.
.Jag vill mata in ett värde,
.Programmet ska sedan kontrollera om värdet är 0 (int 0) eller större
.Om värdet är 0, anropa TemperatureInCelsius(). vilket ska slumpa fram ett värde.
.Om värdet är större än noll, anropa TemperatureInCelsius(int fahrTemp).

.Om värdet är mindre än 0 måste du också kontrollera för, hur du gör det får du klura på själv

Överlagring handlar om att två metoder har samma namn men skiljer sig åt i sina signaturer, dvs olika returtyper och/eller inparametrar.

Visa signatur

There is always a price to pay for convenient

Permalänk

@ToddTheOdd @perost @smkr
Tack för era svar! Är ny på detta, har ingen att fråga och vår litteratur är minst sagt undermålig så det är inte så självklart och enkelt, så uppskattar verkligen hjälpen här.

Har nu ändrat till detta:

using System; namespace ConsoleApp12 { class Program { static public double FahrToCels(int fahr) { double fahrD; fahrD = (double)fahr; double cel = (fahrD - 32) * 5 / 9; return cel; } static public double FahrToCels() { Random rnd = new Random(); int fahr = 0; if(fahr == 0) fahr = rnd.Next(163, 171); return fahr; } static void Main(string[] args) { int fahrTemp = 0; double cel = 0; Console.WriteLine("How hot do you want the sauna? "); do { string fahrString = Console.ReadLine(); try { fahrTemp = int.Parse(fahrString); } catch (Exception) { Console.WriteLine("Please enter a number!"); continue; } cel = FahrToCels(fahrTemp); cel = Math.Round(cel, 2); if (fahrTemp == 0) { fahrTemp = Convert.ToInt32(FahrToCels()); cel = Convert.ToInt32(FahrToCels(fahrTemp)); } if (cel > 77) { Console.WriteLine("You chose " + fahrTemp + " and that is " + cel + " degrees Celcius. It is too hot! You need to lower... Try again!"); } else if (cel < 73 && fahrTemp != 0) { Console.WriteLine("You chose " + fahrTemp + " and that is " + cel + " degrees Celcius. It is to cool, you need more heat! Try again!"); } else if (cel == 75) { Console.WriteLine("You chose " + fahrTemp + " and that is " + cel + " degrees Celcius. This is perfect heat for this sauna! Step in!"); break; } else { Console.WriteLine("You chose " + fahrTemp + " and that is " + cel + " degrees Celcius. It's not perfect, but acceptable.\nOK to step in, but try again if you want even more perfect!"); } } while (cel != 167); Console.ReadKey(); } } }

Och som i ett trollslag funkar det fanimig helt perfekt.

Visa signatur

AMD Ryzen 7 3700X | ASUS ROG Strix Radeon RX 590 8GB | ASUS PRIME B450-PLUS | Corsair Vengeance LPX Black 16GB | Seagate BarraCuda Desktop 2TB

Permalänk
Medlem
Skrivet av exaaivilo:

@ToddTheOdd @perost @smkr
Tack för era svar! Är ny på detta, har ingen att fråga och vår litteratur är minst sagt undermålig så det är inte så självklart och enkelt, så uppskattar verkligen hjälpen här.

Har nu ändrat till detta:

using System;

Och nu funkar det, förutom att jag har nollalternativet den i min if-sats och där bör den ju inte vara precis som @perost sade.
Jag försökte göra en egen if-sats ovanför men då stördes resten av programmet.
Om jag förstår rätt hur jag borde göra så är det att ta nollsatsen och sätta den som en egen sats och sen om "else" så körs resten av programmet?

Jag personligen hade nästan velat flytta hela raddan av if-satser till en egen funktion för att slippa kladdet i main, men det är väl lite upp till var och en. Sedan kanske du kan flytta din double->int konvertering till funktionen istället för att behöva göra snurret varje gång du kallat på funktionen(?).

Gällande att köra en if-else på hela koden är inte en bra lösning. Det medför att du klamrar hela din kod och den blir grötigare att läsa. Gör istället en if-sats specifikt för 0an och lägg en continue i slutet av den (d.v.s du avslutar nuvarande iteration och hoppar till nästa). Förutsätter väl dock att du flyttar if-satserna till en funktion och att du kan kalla på den där eller om du har en annan lösning till det förstås.

Edit: Nåväl, du han uppdatera din post medan jag skrev ett svar. Kul att det fungerar och om det är redo för att lämnas in kan du bortse ovanstående.

Visa signatur

öh öh har den äran!

Permalänk
Medlem
Skrivet av exaaivilo:

@ToddTheOdd @perost @smkr
Tack för era svar! Är ny på detta, har ingen att fråga och vår litteratur är minst sagt undermålig så det är inte så självklart och enkelt, så uppskattar verkligen hjälpen här.

Har nu ändrat till detta:

using System; namespace ConsoleApp12 { class Program { static public double FahrToCels(int fahr) { double fahrD; fahrD = (double)fahr; double cel = (fahrD - 32) * 5 / 9; return cel; } static public double FahrToCels() { Random rnd = new Random(); int fahr = 0; if(fahr == 0) fahr = rnd.Next(163, 171); return fahr; } static void Main(string[] args) { int fahrTemp = 0; double cel = 0; Console.WriteLine("How hot do you want the sauna? "); do { string fahrString = Console.ReadLine(); try { fahrTemp = int.Parse(fahrString); } catch (Exception) { Console.WriteLine("Please enter a number!"); continue; } cel = FahrToCels(fahrTemp); cel = Math.Round(cel, 2); if (fahrTemp == 0) { fahrTemp = Convert.ToInt32(FahrToCels()); cel = Convert.ToInt32(FahrToCels(fahrTemp)); } if (cel > 77) { Console.WriteLine("You chose " + fahrTemp + " and that is " + cel + " degrees Celcius. It is too hot! You need to lower... Try again!"); } else if (cel < 73 && fahrTemp != 0) { Console.WriteLine("You chose " + fahrTemp + " and that is " + cel + " degrees Celcius. It is to cool, you need more heat! Try again!"); } else if (cel == 75) { Console.WriteLine("You chose " + fahrTemp + " and that is " + cel + " degrees Celcius. This is perfect heat for this sauna! Step in!"); break; } else { Console.WriteLine("You chose " + fahrTemp + " and that is " + cel + " degrees Celcius. It's not perfect, but acceptable.\nOK to step in, but try again if you want even more perfect!"); } } while (cel != 167); Console.ReadKey(); } } }

Och som i ett trollslag funkar det fanimig helt perfekt.

Vad gör t.ex den här koden?

int fahr = 0; if(fahr == 0) fahr = rnd.Next(163, 171);

Varför int fahr = 0;
varför if(fahr == 0)? Kommer den inte alltid vara det? Du sätter den ju till exakt det på raden ovanför? Varför inte returnera resultatet direkt? return rnd.Next(163, 171);?

Och vad gör du här?

cel = FahrToCels(fahrTemp); cel = Math.Round(cel, 2); if (fahrTemp == 0) { fahrTemp = Convert.ToInt32(FahrToCels()); cel = Convert.ToInt32(FahrToCels(fahrTemp)); }

Först börjar du med att anropa FahrToCels(fahrTemp). Ska du göra det om användaren har matat in 0?

Permalänk

@ToddTheOdd:
Tack, precis sån här feedback jag behöver.
Jag förstår att det blir onödig kod, vilket även var feedback jag fick från läraren vid förra uppgiften.

Har redigerat och tagit bort det överflödiga och nu ser det ut såhär:

static public double FahrToCels() //metod som slumpar tal mellan 163 - 170 fahr vid 0 inmatning { Random rnd = new Random(); return rnd.Next(163, 171); }

Och det funkar precis lika bra!

Visa signatur

AMD Ryzen 7 3700X | ASUS ROG Strix Radeon RX 590 8GB | ASUS PRIME B450-PLUS | Corsair Vengeance LPX Black 16GB | Seagate BarraCuda Desktop 2TB

Permalänk
Skrivet av ToddTheOdd:

Och vad gör du här?

cel = FahrToCels(fahrTemp); cel = Math.Round(cel, 2); if (fahrTemp == 0) { fahrTemp = Convert.ToInt32(FahrToCels()); cel = Convert.ToInt32(FahrToCels(fahrTemp)); }

Först börjar du med att anropa FahrToCels(fahrTemp). Ska du göra det om användaren har matat in 0?

Jag tänker att det är bra, för då får användaren ut det slumpade svaret i både Fahrenheit och Celsius och då det är en amerikan som ska ha det är det anpassat. Det funkar iaf, nu om de matar in 0 slussas de vidare till detta...

Console.WriteLine("You chose " + fahrTemp + " and that is " + cel + " degrees Celcius. It's not perfect, but acceptable.\nOK to step in, but try again if you want even more perfect!");

Alternativt om de får 167/75 grader då.

Visa signatur

AMD Ryzen 7 3700X | ASUS ROG Strix Radeon RX 590 8GB | ASUS PRIME B450-PLUS | Corsair Vengeance LPX Black 16GB | Seagate BarraCuda Desktop 2TB

Permalänk
Medlem
Skrivet av exaaivilo:

@ToddTheOdd:
Tack, precis sån här feedback jag behöver.
Jag förstår att det blir onödig kod, vilket även var feedback jag fick från läraren vid förra uppgiften.

Har redigerat och tagit bort det överflödiga och nu ser det ut såhär:

static public double FahrToCels() //metod som slumpar tal mellan 163 - 170 fahr vid 0 inmatning { Random rnd = new Random(); return rnd.Next(163, 171); }

Och det funkar precis lika bra!

Fundera på vad det står här. https://docs.microsoft.com/en-us/dotnet/api/system.random.nex...

"Next(Int32, Int32) Returns a random integer that is within a specified range."

Permalänk
Medlem
Skrivet av exaaivilo:

Jag tänker att det är bra, för då får användaren ut det slumpade svaret i både Fahrenheit och Celsius och då det är en amerikan som ska ha det är det anpassat. Det funkar iaf, nu om de matar in 0 slussas de vidare till detta...

Console.WriteLine("You chose " + fahrTemp + " and that is " + cel + " degrees Celcius. It's not perfect, but acceptable.\nOK to step in, but try again if you want even more perfect!");

Alternativt om de får 167/75 grader då.

I just det här fallet så är det ingen fara. Det fungerar ju. Men tänk om metoden du anropar tar 4 timmar att köra? Vill du verkligen köra den då fast du inte behöver för att det kanske kan vara kul/bra någon annan gång? Det kan vara lägen då den kommer ge ett fel och du måste felhantera fast du inte behöver om du inte kör den osv. Så lär dig att aldrig göra något som du inte måste. Kan vara kul i början med allt kostar så undvik onödig kod. Mer kod == större möjligheter till fel.

Permalänk
Skrivet av ToddTheOdd:

Fundera på vad det står här. https://docs.microsoft.com/en-us/dotnet/api/system.random.nex...

"Next(Int32, Int32) Returns a random integer that is within a specified range."

Med risk för att låta dum - vad är det jag ska fundera över? Har läst flera ggr både innan och idag. Den returnerar ett värde som är emellan lägsta och högsta "acceptabla" värdet för bastun, har testat runt med de andra, dvs Nexr () och Next(Int32), men tycker det känns mer rimligt med det här värdet. Kan ju såklart ha Celsius men eftersom det är anpassat för en amerikan har jag Fahrenheit som sagt.

Skrivet av ToddTheOdd:

I just det här fallet så är det ingen fara. Det fungerar ju. Men tänk om metoden du anropar tar 4 timmar att köra? Vill du verkligen köra den då fast du inte behöver för att det kanske kan vara kul/bra någon annan gång? Det kan vara lägen då den kommer ge ett fel och du måste felhantera fast du inte behöver om du inte kör den osv. Så lär dig att aldrig göra något som du inte måste. Kan vara kul i början med allt kostar så undvik onödig kod. Mer kod == större möjligheter till fel.

Tack för den här inputen! Jag förstår poängen.

Visa signatur

AMD Ryzen 7 3700X | ASUS ROG Strix Radeon RX 590 8GB | ASUS PRIME B450-PLUS | Corsair Vengeance LPX Black 16GB | Seagate BarraCuda Desktop 2TB

Permalänk
Medlem
Skrivet av exaaivilo:

Med risk för att låta dum - vad är det jag ska fundera över? Har läst flera ggr både innan och idag. Den returnerar ett värde som är emellan lägsta och högsta "acceptabla" värdet för bastun, har testat runt med de andra, dvs Nexr () och Next(Int32), men tycker det känns mer rimligt med det här värdet. Kan ju såklart ha Celsius men eftersom det är anpassat för en amerikan har jag Fahrenheit som sagt.

Tack för den här inputen! Jag förstår poängen.

Den returnerar en int?

static public double FahrToCels() //metod som slumpar tal mellan 163 - 170 fahr vid 0 inmatning { Random rnd = new Random(); return rnd.Next(163, 171); }

Kanske ska du göra om den till

static public int FahrToCels() //metod som slumpar tal mellan 163 - 171 fahr vid 0 inmatning { Random rnd = new Random(); return rnd.Next(163, 171); }

Varför? Jo, för att du slipper du en massa kod som du gör i onödan nu.

fahrTemp = Convert.ToInt32(FahrToCels());

kan du göra om till

fahrTemp = FahrToCels();

Som du har det nu så slumpar du alltså ett heltal. Gör om det till double för att sedan göra om det igen till heltal.