2 svar
159 visningar
KriAno behöver inte mer hjälp
KriAno 434
Postad: 19 sep 2020 14:09 Redigerad: 19 sep 2020 14:26

Skriva om en metod

Hej!

Uppgiften är:

"Rewrite the increment method without the modulo operator, using an if-statement. Which solution is better?"

Mitt förslag:

public void increment() 

{

    int test = value +1 ;

    if (test == limit){

        value = 0 ;

    }

    else {

        value = test;

    }

}

 

Är det rätt?

Hur ska man veta vilken lösning som är bättre? Tidsmässigt så lär det väl inte vara någon skillnad?

Mvh KriAno

Smutstvätt 25214 – Moderator
Postad: 19 sep 2020 14:40

Det ser ut att bli problem här. Vad händer om value är större än limit? Om du loopar med increment() kanske det kan fungera, men det är onödigt krångligt. Ett bättre förslag för att hitta en rest är att använda en inbyggd divisionsfunktion, och avrunda nedåt. Exempel: 

108 (mod 10): 10810=10108-10·10=8108 8 (mod 10)

Laguna Online 30721
Postad: 19 sep 2020 18:46

Eftersom 'value' är private så kan man veta rätt mycket om vad den kan anta för värden. Om den bara kan ha värden mellan 0 och limit så går det ju att göra så. Men gör man sig beroende av det så är det viktigt att det inte slutar vara sant någon gång i framtiden när någon ändrar i koden.

Att fråga sig om det gör någon skillnad i tid är bra. Det gör nog inte det, eller annorlunda uttryckt, om det är viktigt med så små tidsskillnader så är Java fel språk.

Svara
Close