implementering av metoder
Frågan lyder:
Metoderna som finns beskrivna nedan SKA ingå i programmet - men ni är helt fria att lägga till fler metoder om ni känner att ni behöver/vill det.
Metoden int getVal(int min, int max)
Ska vänta tills användare angett ett heltalsvärde mellan min och max. Felaktig input ska hanteras på lämpligt sätt.
Metoden double getVal(double min, double max)
Ska vänta tills användare angett ett flyttalsvärde mellan min och max. Felaktig input ska hanteras på lämpligt sätt.
Metoden double sqrtof()
Ska använda getVal-metoden för att ta in ett heltal mellan 0 och 1000 och därefter använda Math.sqrt() för att beräkna kvadratroten på värdet.
---------------------------------------------------------------------------------------------------------------------------------
Jag har väldigt svårt för att förstå följande:
- Ska metoden sqrtof() ta hjälp av en annan metod (double getVal) för att definiera ett visst intervall?
- Vad menar man då med att double getVal ska ta in ett heltal?
- Varför definierar man inte intervallet mellan 0 till 1000 redan i metoden sqrtof()? Finns det fördelar med att använda metoder i metoder?
/Matteetuff
Rubrik korrigerad från "Förstår inte frågan" till nuvarande, en beskrivande rubrik. /Dracaena, moderator
Matteetuff skrev:Frågan lyder:
Metoderna som finns beskrivna nedan SKA ingå i programmet - men ni är helt fria att lägga till fler metoder om ni känner att ni behöver/vill det.
Metoden int getVal(int min, int max)
Ska vänta tills användare angett ett heltalsvärde mellan min och max. Felaktig input ska hanteras på lämpligt sätt.Metoden double getVal(double min, double max)
Ska vänta tills användare angett ett flyttalsvärde mellan min och max. Felaktig input ska hanteras på lämpligt sätt.Metoden double sqrtof()
Ska använda getVal-metoden för att ta in ett heltal mellan 0 och 1000 och därefter använda Math.sqrt() för att beräkna kvadratroten på värdet.---------------------------------------------------------------------------------------------------------------------------------
Jag har väldigt svårt för att förstå följande:
- Ska metoden sqrtof() ta hjälp av en annan metod (double getVal) för att definiera ett visst intervall?
Nja, metoden sqrtof() ska ta in ett heltal mellan 0 och 1000, och ta kvadratroten ur talet som tas in. Hanteringen av hur tal tas in ska göras med metoden getVal(...).
- Vad menar man då med att double getVal ska ta in ett heltal?
int getVal(...) ska möjliggöra för användaren att skriva in ett heltal till programmet, som programmet sedan kan använda till något senare.
- Varför definierar man inte intervallet mellan 0 till 1000 redan i metoden sqrtof()? Finns det fördelar med att använda metoder i metoder?
En fördel med att gå via getVal(...) är koden blir lättare att läsa, men framförallt att vi lätt kan ändra i intervallet i framtiden, om vi skulle vilja det, eller ändra från int till double om vi skulle vilja göra det senare. :)
Tackar dig ödmjukast för svaret, det börjar sakta klarna till! En sista fråga, metoden int getVal(int min, int max) tar in två heltal min och max som argument för att sedan returnera ett annat heltal y. Hur kan y representera ett intervall?
Varsågod! y är inte ett intervall, utan ett tal. Om talet som användaren anger ligger inom intervallet, returnerar funktionen talet y, annars ger funktionen ett felmeddelande/något annat standardtal. :)
Jaha okej! Säg då att vi stoppar in talet 20 i funktion sqrtof(), int getVal undersöker sedan om talet 20 ligger mellan 0 och 1000, om så returneras 20 annars returnerar vi, säg talet 0 som funktionen sqrtof() sedan behandlar. Hur vet då getVal att det är talet 20 vi söker efter när den bara kan ta in två argument, d.v.s 0 och 1000?
Om metoden getVal kanske såg ut enligt följande getVal(0, 1000, 20) hade det varit lättare att hantera valideringen.
I getVal(min,max) måste du sd till att min och max inte strider mot kraven angivna i uppgiften. Enklast är att använda exempelvis if-satser osv.
Det har jag gjort:
public static double getVal(double min, double max){
if (min < a && a < max){
return a ;
}
else{
return 0;
}
}
Som sagt: hur ska getVal känna till vilken input användaren matar in då metoden bara kan ta in två argument, d.v.s min och max?
Du tar emot två argument, min och max.
Du vet intervallet så att du vet att talet som ska anges av användaren ligger mellan .
Låt oss kalla inputen för 'tal' Du vill alltså se till att min tal max.
Är du med?
Precis
Så om jag anger getVal(1,50) och anger mitt tal som 8, så måste vi kolla om och att , dvs är uppfyllt.
Matteetuff skrev:Det har jag gjort:
public static double getVal(double min, double max){ if (min < a && a < max){ return a ; } else{ return 0; } }
Som sagt: hur ska getVal känna till vilken input användaren matar in då metoden bara kan ta in två argument, d.v.s min och max?
Jaha, nu fattar jag vad som förvirrat dig. Du menar hur du vet talet som ska ligga i intervallet?
Tillägg: 17 sep 2021 15:51
Du får använda ett scanner objekt för att låta användaren ange ett tal.
Visst är så här du menar i pseudokod?
# Användaren matar in ett tal
userinput = 10
# Funktionen getVal undersöker om talet ligger mellan ett tillåtet intervall
def getVal(x,y):
if x < userinput < y:
return userinput
else:
return 0
# Funktion sqrtOf behandlar talet.
def sqrtOf(z):
if z > 0:
return math.sqrt(z)
else:
return 0
print(sqrtOf(getVal(0,15)))