11 svar
54 visningar
Matteetuff 21
Postad: 17 sep 13:57 Redigerad: 17 sep 14:39

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. :)

Matteetuff 21
Postad: 17 sep 14:29

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. :)

Matteetuff 21
Postad: 17 sep 15:28 Redigerad: 17 sep 15:43

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.

Matteetuff 21
Postad: 17 sep 15:38 Redigerad: 17 sep 15:44

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 minamaxmin \leq a \leq max

Låt oss kalla inputen för 'tal' Du vill alltså se till att min\leq tal \leq max.

Är du med?

Matteetuff 21
Postad: 17 sep 15:44

Precis

Dracaena Online 3815 – Moderator
Postad: 17 sep 15:45 Redigerad: 17 sep 15:46

Så om jag anger getVal(1,50) och anger mitt tal som 8, så måste vi kolla om 818\geq 1 och att 8508\leq 50, dvs 18501 \leq 8 \leq 50 ä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.

Matteetuff 21
Postad: 17 sep 16:03 Redigerad: 17 sep 16:05

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)))
Svara Avbryt
Close