Anmäl dig till Roborock Challenge!
Permalänk
Inaktiv

Java

Skapa en klass som heter Cirkel. Klassen skall innehålla en konstruktor, som tar en parameter (radien). Radien skall vara en instansvariabel. Det skall också finnas två instansmetoder, en som returnerar arean och en som returnerar omkretsen. Det skall dessutom finnas en klassmetod för beräkning av cirkelarean (radien som parameter). Skapa sedan en testklass där först en cirkel skapas och area och omkrets returneras och skrivs ut. Därefter skall en cirkels area returneras och skrivas ut med hjälp av det som finns i klassen, utan att skapa ett objekt (alltså genom att anropa klassmetoden).

Hej! Jag har problem med uppgiften som beskriven ovan. Som jag har fått för mig när man ska arbeta med en konstruktor så gör man en class som innehåller metoder och en main class som på något sätt anropar den andra classen, men jag kan ha förstått fel...

package cirkel; public class Cirkel { private double radien; public Cirkel(double r) { radien = r; } public double Diametern() { return 2*radien; } public double Omkretsen() { return Math.PI*radien*2; } public double Arean() { return Math.PI*radien*radien; } }

package cirkel; public class circle { public static void main(String[] args){ Cirkel CirkelObject = new Cirkel(4); CirkelObject.radien(); } }

Så här långt har jag kommit, men jag får hjärnsläpp. Hur gör jag egentligen?

Tack på förhand!

Permalänk
Medlem
Skrivet av anon158560:

Skapa en klass som heter Cirkel. Klassen skall innehålla en konstruktor, som tar en parameter (radien). Radien skall vara en instansvariabel. Det skall också finnas två instansmetoder, en som returnerar arean och en som returnerar omkretsen. Det skall dessutom finnas en klassmetod för beräkning av cirkelarean (radien som parameter). Skapa sedan en testklass där först en cirkel skapas och area och omkrets returneras och skrivs ut. Därefter skall en cirkels area returneras och skrivas ut med hjälp av det som finns i klassen, utan att skapa ett objekt (alltså genom att anropa klassmetoden).

Hej! Jag har problem med uppgiften som beskriven ovan. Som jag har fått för mig när man ska arbeta med en konstruktor så gör man en class som innehåller metoder och en main class som på något sätt anropar den andra classen, men jag kan ha förstått fel...

package cirkel; public class Cirkel { private double radien; public Cirkel(double r) { radien = r; } public double Diametern() { return 2*radien; } public double Omkretsen() { return Math.PI*radien*2; } public double Arean() { return Math.PI*radien*radien; } }

package cirkel; public class circle { public static void main(String[] args){ Cirkel CirkelObject = new Cirkel(4); CirkelObject.radien(); } }

Så här långt har jag kommit, men jag får hjärnsläpp. Hur gör jag egentligen?

Tack på förhand!

Du har inte långt kvar.

Du har skapat tre instansmetoder(Arean,Omkretsen,Diametern), en konstruktor (Cirkel) och en instansvariabel (radien) för klassen Cirkel. Diametern behövde du egentligen inte skapa enligt uppgiften.

Det som saknas är en klassmetod för Area i klassen Cirkel. Dessutom behöver du skriva ut resultatet också.

Det du har skrivit i din main-metod är rätt. Det som saknas är utskriften. System.out.println(text_att_skriva_ut) använder du för att skriva till konsolen.

Du skulle också (enligt uppgiften) kalla på klassmetoden och skriva ut värdet från denna.

Hojta till om du behöver mer hjälp.

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk
Inaktiv

Hej!

Hej igen,
Tack för ett otroligt snabbt svar!

Oj, det tänkte jag inte på. Jag tog bort diametern

public double Arean() { return Math.PI*radien*radien; }

Är inte detta en klassmetod för Area i klassen Cirkel?

Sådär nu har jag lagt till utskriften i main metoden...

Citat:

Du skulle också (enligt uppgiften) kalla på klassmetoden och skriva ut värdet från denna.

Det är nog detta jag fattar minst av, kanske kan du förklara hur man gör?

Så här ser det ut nu:

package cirkel; public class circle { public static void main(String[] args){ Cirkel CirkelObject = new Cirkel(5); CirkelObject.r(); System.out.println("Skriv radien så får du veta omkrets och area hos cirkeln: "); } }

package cirkel; public class Cirkel { private double radien; public Cirkel(double r) { radien = r; } public double Omkretsen() { return Math.PI*radien*2; } public double Arean() { return Math.PI*radien*radien; } }

Tack och hej!

Permalänk
Medlem
Skrivet av anon158560:

Hej igen,
Tack för ett otroligt snabbt svar!

Oj, det tänkte jag inte på. Jag tog bort diametern

public double Arean() { return Math.PI*radien*radien; }

Är inte detta en klassmetod för Area i klassen Cirkel?

Nej, det är det inte. Det är en instansmetod.
Det som skiljer sig mellan en klassmetod och en instansmetod är nyckelordet "static".
static betyder att metoden är självständig och helt oberoende av instanser (Cirkel c = new Cirkel()), i detta exempel så är "c" är en instans av klassen/objektet Cirkel) av objektet.

En klassmetod nås genom:
Klassnamn.Metodnamn();

I ditt fall:
Cirkel.Area(8)

Skrivet av anon158560:

Sådär nu har jag lagt till utskriften i main metoden...

Det är nog detta jag fattar minst av, kanske kan du förklara hur man gör?

Så här ser det ut nu:

package cirkel; public class circle { public static void main(String[] args){ Cirkel CirkelObject = new Cirkel(5); CirkelObject.r(); System.out.println("Skriv radien så får du veta omkrets och area hos cirkeln: "); } }

Det går att göra på olika sätt:

Exempel 1:

Cirkel c1 = new Cirkel(5); //Instansierar ett objekt double c1area = c1.Arean(); //Hämtar ett värde med hjälp av objektets instansmetod. System.out.println(c1area.toString()); //Skriver ut värdet, men utan .toString() så kommer vi få kompileringsfel då en double inte är av typen String.

Exempel 2:

Cirkel c1 = new Cirkel(5); //Instansierar ett objekt System.out.println(c1.Arean().toString()); //Hämtar ett värde med hjälp av objektets instansmetod OCH skriver ut värdet. Svårläst så det är inte att rekommendera. Dessutom så kanske värdet ska användas senare, då är det bättre att göra enligt exempel1 från början.

Skrivet av anon158560:

package cirkel; public class Cirkel { private double radien; public Cirkel(double r) { radien = r; } public double Omkretsen() { return Math.PI*radien*2; } public double Arean() { return Math.PI*radien*radien; } }

Tack och hej!

Det som saknas är alltså klassmetoden och att kalla på denna och skriva ut.
Den kommer att se ut som en nästan identisk kopia av din ursprungliga instansmetod.
Den enda skillnaden mellan de två, är att klassmetoden ska ta emot en parameter, medan instansmetoden (som du redan har gjort) använder sig redan av sin instansvariabel "radie".

Du behöver även presentera värdet i main-metoden.
Du ser lite högre upp (angående klassmetoder) hur du kallar på dessa. Skriv ut det värdet också.

Kolla om du fixar det.

Lycka till.

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?