Överlagrad metod - Amerikanen i bastu
Hej,
Jag har fått en till uppgift att lösa i Programmering 1, en Amerikan i en bastu som bara kan Fahrenheit.
Jag har, enligt mig själv då, löst koden, och den ser ut såhär:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net.NetworkInformation;
using System.Net.WebSockets;
using bastu_metod;
namespace bastu
{
class program
{
public static void Main(string[] args)
{
Console.WriteLine("Välkommen, ange Fahrenheit"); // Välkomnar användaren till Bastun
int fahrenheit = 0; // Deklarerar ut Fahrenheit innan loopen
double celsius = 0; // Deklarerar ut Celsius innan loopen
do
{
try
{
fahrenheit = int.Parse(Console.ReadLine()); //Tar emot värde i Fahrenheit och heltal via metod i class1.
celsius = metod.FahrenheitToCelsius(fahrenheit); // Omvandlas till Celsius och decimaler via metod i class1.
}
catch (Exception)
{
Console.WriteLine("Du kan endast slå in siffror, var snäll att testa mata in ett Fahrenheit i bastun");
}
if (celsius < 82 && celsius > 1) // Ifall graderna understiger 82 men är över 1 för att inte få svar på "try/catch".
{
Console.WriteLine("Det är " + celsius + " grader Celsius, du får öka graderna: ");
}
else if (celsius > 87) // om graderna är över maxvärdet, 87a
{
Console.WriteLine("Det är " + celsius + " grader Celsius, du får sänka graderna: ");
}
else if (celsius == 84)// ifall perfekt grad
{
Console.WriteLine("Det är " + celsius + " Celsius. Det är perfekta graderna att basta i ");
}
else if (celsius >= 82 && celsius <= 87) // om graderna är mellan 82 & 87
{
Console.WriteLine("Du har " + celsius + " Celsius, det går men det går att få perfekt.");
}
} while (celsius < 82 || celsius > 87); // Grader för att kunna gå vidare ur loopen.
Console.WriteLine("Hoppas du gillar att basta!");
Console.WriteLine("Tryck på valfri knapp för att avsluta programmet");
Console.ReadKey();
}
}
}
Dilemmat jag vill ha hjälp med är detta, det ska ske en överlagrad metod. Den första av mina metoder tar emot Fahrenheit i heltal men ger tillbaka med decimaler. Det funkar! Problemet är min överlagrade metod. Ifall användaren skulle slå in noll så ska det komma tillbaka en slumpmässig celsius. Dem fungerar var för sig om man kan säga så, men de fungerar inte tillsammans. Om jag har min överlagrade metod så försvinner liksom min första metod. Jag vet inte riktigt hur jag ska skriva ut den på bästa sätt utan att den tar över alla möjliga inslag. Denna metod ska inte heller ha några argument och det vet jag inte heller hur jag kan lösa.
namespace bastu_metod
{
public static class metod
{
public static double FahrenheitToCelsius(double fahrenheit) // Metodens namn
{
double celsius = (fahrenheit - 32) * 5 / 9; //Gör om Fahrenheit till Celsius
return celsius; //Returnerar Celsius
}
public static double FahrenheitToCelsius(int fahrenheit = 0) // Metod ifall användare anger 0.
{
Random slumptal = new Random(); // Skapar slumptal
double celsius = slumptal.Next(1, 300); // Ger slumptal till Celsius
return celsius; //Returnerar Celsius
}
}
}
Tillägg:
Jag har googlat vidare och letat så mycket jag kan och det verkar inte riktigt gå att skapa en overloaded method på det här sättet?
Så jag har skapat en if-sats ifall fahrenheit == 0 skickas den till en metod som slumpar celsius, i andra fall till den riktiga metoden. Dock står det i uppdraget att det ska vara en överlagrad metod.