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!
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());
}
Okej då hänger jag med, tack!
Om jag vill printa ut svaret med exempelvis 2 decimaler som man skriver med %.2f i c, hur fungerar det i java?
System.out.printf("%.2f", val);
Man kan också göra följande:
DecimalFormat df = new DecimalFormat("#.##");
System.out.println(df.format(num));
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(...).
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;
}
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.