8 svar
223 visningar
erze7811 är nöjd med hjälpen
erze7811 102
Postad: 19 jan 2023 17:26

Area och omkrets av cirkel

Hej, jag försöker lösa denna uppgift i Java. Jag tror jag har gjort metod för get och set radius och metod för att beräkna arean och omkretsen men är osäker hur jag ska implementera funktionerna i main klassen.

Såhär har jag gjort i circle klassen:

public class Circle {
	private int radie;
	public int getRadius()
	{
		return radie;
	}
	public void setRadius(int radie)
	{
		this.radie = radie;
	}
	
	public double getArea()
	{
		double area = 0;
		int radie = 0;
		area = Math.PI * radie * radie;
		return area;
	}
	public double getOmrkets()
	{
		double omkrets = 0;
		int radie = 0;
		omkrets = 2 * Math.PI * radie;
		return omkrets;
	}
}

Och detta i main klassen:

import java.util.Scanner;
public class Uppgift5Main {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int radie = scanner.nextInt();
			
	}

}

Vet inte hur jag ska fortsätta, alltså implementera funktionerna i main.klassen. Testade att skriva getArea(radie) men det blev fel. Tack på förhand!

anders_k Online 234
Postad: 19 jan 2023 22:53

Gör så här:

Gör en constructor för din klass som sätter radien 

Circle(int r)
{
  radie = r;
}

Sen tar du bort dina lokala deklarationer av radie i getOmkrets och getArea, du skall ju använda 

private int radie;

som är gemensam för alla dina metoder i Circle.

Sen i din main för använda klassen Circle, skriv något sådant:

public static void main(String[] args) 
{
  System.out.print("Ange radie:");
  Scanner scanner = new Scanner(System.in);
  int radie = scanner.nextInt();
		
  Circle circle = new Circle(radie);
  System.out.println("area:" + circle.getArea());
}
	
erze7811 102
Postad: 21 jan 2023 13:15

Okej då hänger jag med, tack!

erze7811 102
Postad: 21 jan 2023 13:23

Om jag vill printa ut svaret med exempelvis 2 decimaler som man skriver med %.2f i c, hur fungerar det i java?

anders_k Online 234
Postad: 21 jan 2023 13:47

System.out.printf("%.2f", val);

Fermatrix 7841 – Fd. Medlem
Postad: 21 jan 2023 15:34

Man kan också göra följande:

DecimalFormat df = new DecimalFormat("#.##");
System.out.println(df.format(num));
Fermatrix 7841 – Fd. Medlem
Postad: 21 jan 2023 15:58 Redigerad: 21 jan 2023 15:59

Några kommentarer.

  • Ska man verkligen tillåta användaren att konstruera ett cirkel objekt med en negativ radie?
  • Ska man tillåta en konstruktion av en cirkel med radie 0?

Båda dessa problemen uppstår också i setRadius(...).

erze7811 102
Postad: 23 jan 2023 11:03

Kan en lösning vara något såhär? Vet inte riktigt hur jag ska göra för att låta användaren skriva in radien igen?

public void setRadius(int radie)
	{
		if(radie <= 0)
		{
			System.out.println("Ogiltig radie");
			
		}
		this.radie = radie;
	}
Fermatrix 7841 – Fd. Medlem
Postad: 23 jan 2023 11:22 Redigerad: 23 jan 2023 11:23

Ja, eller till och med throwa en exception. 

Men notera att du måste kalla på return, annars gör din kod ingenting mer än att skriva det du har i println. 

Svara Avbryt
Close