Metoder är inte beroende av varandra, en metod kan alltså anropa en annan metod! Vi ska nu skapa ett räkneexempel med metoder, där vi kan se hur vi kan återanvända metoder för flera användningsområden.
Exempel med metoder i Java - Räkna ut volymen på en kon och pyramid
Vi ska se ett exempel på hur vi kan arbeta med metoder
- Vi ska med hjälp av metoder skriva ett program som räknar ut volymen på en kon och en pyramid
- Programmet ska sedan avgöra vilken av konen eller pyramiden som har störst volym
- Vi kommer använda JOptionPane för att skapa dialogrutor som ska interagera med användaren och ta in uppgifter och sedan presentera resultatet av metoderna
Räkna ut volymen på en kon
Volymen på en kon beräknar man med formeln V = (B × h) / 3 där B är basytan på konen och h är höjden. Basytan beräknar man med πr² alltså arean för cirkeln konen bildar.

Räkna ut volymen på en pyramid
Volymen på en pyramid beräknar man med formeln V = (B × h) / 3 där B är basytan på pyramiden och h är höjden. Basytan beräknar man med L × b alltså längden på den rektangulära basen multiplicerat med dess bredd.

Skapa en metod i Java som beräknar arean av en cirkel
Vi börjar med att skapa en metod, areaCircle, som räknar ut arean på en cirkel, alltså basytan på konen. Metoden tar in en double som parameter och ska även returnera en double
public static double areaCircle(double radius) {
double area = radius*radius*Math.PI; // Beräknar arean av en cirkel
return area; // Skickar tillbaka värdet på den uträknade arean
}
Skapa en metod i Java som beräknar basarean av en pyramid
Sen skapar vi en metod, areaPyramid, som beräknar basarean för pyramiden. Notera att areaPyramid tar in två parametrar av typen double, samt att även denna metod returnerar en double
public static double areaPyramid(double length, double width ) {
double areaBase = length*width; // Beräknar arean och sparar värdet i areaBase
return areaBase; // Returnerar värdet på arean
}
Skapa en metod i Java som beräknar volymen av en pyramid och en kon
Eftersom formeln för att räkna ut volymen är densamma för både konen och pyramiden, innebär det att vi kan använda samma metod i båda fallen. Vi behöver alltså inte skriva en metod för konen och en för pyramiden, utan vi använder samma metod i båda fallen!
Vi skapar en metod som heter volume som även den tar in två värden (area och height) och returnerar sedan en variabel av datatyp double
public static double volume(double area, double height) {
double volume = area * height / 3.0; // Beräknar volymen
return volume; // Returnerar värdet på volymen
}
Skapa en metod i Java som avgör vilken volym som är störst
Nu ska vi jämföra vilken av volymerna som är störst och vi skapar då en passande metod som hjälper oss med detta,largestVolume. Notera att denna metod returnerar en String
public static String largestVolume(double volumeCone, double volumePyramid) {
if (volumeCone > volumePyramid) {
return "Konen har störst volym!";
} else if (volumeCone < volumePyramid) {
return "Pyramiden har störst volym";
} else {
return "Volymerna är lika stora!";
}
}
Ta emot input från programmet med JOptionPane
Slutligen skapar vi en metod som tar in längden och höjden på pyramiden och konen med hjälp av klassen JOptionPane. Metoden heter getInputsFromJOptionPane och ska inte returnera något värde (void) och metoden ska heller inte få in något värde.
Följ händelseförloppet i koden i lugn takt och ta tid på dig för att verkligen följa med på vad som händer. Läs gärna de förklarande kommentarerna under varje metod och försök bilda dig en uppfattning hur det hänger ihop
public static void getInputsFromJOptionPane() {
double radiusCone = Double.parseDouble(JOptionPane.showInputDialog(null, "Skriv in radien på konen"));
double heightCone = Double.parseDouble(JOptionPane.showInputDialog(null, "Skriv in höjden på konen"));
// Sparar undan det värdet som användaren skriver in i ett dialogfönster.
// Double.parseDouble finns för att värdet som skrivs in ska vara en double
double lengthPyramid = Double.parseDouble(JOptionPane.showInputDialog(null, "Skriv in längden på pyramidens bas"));
double widthPyramid = Double.parseDouble(JOptionPane.showInputDialog(null, "Skriv in bredden på pyramidens bas"));
double heightPyramid = Double.parseDouble(JOptionPane.showInputDialog(null, "Skriv in höjden på pyramiden"));
double areaOfCone = areaCircle(radiusCone);
// Använder metoden areaCircle för att beräkna arean. Skickar in värdet på radiusCone.
// Värdet som kommer ut ur metoden sparas i areaOfCone
double volumeCone = volume(areaOfCone, heightCone);
// Använder metoden volume för att beräkna volymen av konen. Skickar in värdet på areaOfCone och heightCone.
// Värdet som kommer ut ur metoden sparas i volumeCone
double areaOfPyramid = areaPyramid(lengthPyramid, widthPyramid);
// Använder metoden areaPyramid för att beräkna arean. Skickar in värdet på lengthPyramid och widthPyramid.
// Värdet som kommer ut ur metoden sparas i areaOfPyramid
double volumePyramid = volume(areaOfPyramid, heightPyramid);
// Använder metoden volume för att beräkna volymen av pyramiden. Skickar in värdet på areaOfPyramid och heightPyramid.
// Värdet som kommer ut ur metoden sparas i volumePyramid
String largestVolume = largestVolume(volumeCone, volumePyramid);
// Kollar vilken volym som är störst med hjälp av metoden largestVolyme. Sparar värdet i Stringen largestVolyme
JOptionPane.showMessageDialog(null, largestVolume); // Skriver ut det största värdet i en dialogruta!
}
Dialogrutorna med JOptionpane i Java
Dialogrutorna som klassen JOptionpane kommer skapa ser ut som följer,





Resultatet från JOptionpane i Java

Exempel metoder i Java: Hela koden för att räkna ut volymen på en kon och en pyramid
Avslutningsvis, nedan finns koden från alla tidigare steg samlade med förklarande kommentarer
import javax.swing.JOptionPane; //Importerar klassen JOptionPane
public class Volume {
public static void main(String args[]) {
getInputsFromJOptionPane(); //Det är här koden startar. Metoden getInputsFromJOptionPane körs först. Metoden anropar volymmetoderna osv!
}
public static double areaCircle(double radius) { //Skapar en metod som heter areaCircle som ska returnera en double och få in en double som kallas för radius.
double area = radius*radius*Math.PI;
return area;
}
public static double volume(double area, double height) { // Skapar en metod som heter volume som tar in två värden (area och height). Metoden ska returnera en double.
double volume = area * height / 3.0; // Beräknar volymen
return volume; // Returnerar värdet på volymen
}
public static String largestVolume(double volumeCone, double volumePyramid){ // Skapar en metod som heter largestVolume som tar in två doubles (volumeCone och volumePyramid). Metoden ska returnera en String.
if(volumeCone > volumePyramid){ // Kollar om konens volym är större än pyramidens
return "Konen har störst volym!"; // Returnera i så fall textsträngen
}
else if(volumeCone < volumePyramid){ // Kollar om konens volym är mindre än pyramidens
return "Pyramiden har störst volym"; // Returnerar i så fall textsträngen
}
else{ // Om varken konen är större eller mindre än pyramiden måste volymerna vara lika stora!
return "Volymerna är lika stora!"; // Returnera i så fall textsträngen
}
}
public static double areaPyramid(double length, double width ) { // Skapar en metod som heter areaPyramid som ska returnera en double och få in två double som kallas för length och width
double areaBase = length*width; // Beräknar arean och sparar värdet i areaBase
return areaBase; // Returnerar värdet på arean
}
public static void getInputsFromJOptionPane() { //Skapar en metod som heter getInputsFromJOptionPane. Metoden ska inte returnera något värde (void). Metoden ska heller inte få in något värde.
double radiusCone = Double.parseDouble(JOptionPane.showInputDialog(null, "Skriv in radien på konen")); //Sparar undan det värdet som användaren skriver in.
double heightCone = Double.parseDouble(JOptionPane.showInputDialog(null, "Skriv in höjden på konen"));
double lengthPyramid = Double.parseDouble(JOptionPane.showInputDialog(null, "Skriv in längden på pyramidens bas"));
double widthPyramid = Double.parseDouble(JOptionPane.showInputDialog(null, "Skriv in bredden på pyramidens bas"));
double heightPyramid = Double.parseDouble(JOptionPane.showInputDialog(null, "Skriv in höjden på pyramiden"));
double areaOfCone = areaCircle(radiusCone); // Använder metoden areaCircle för att beräkna arean. Skickar in värdet på radiusCone. Värdet som kommer ut ur metoden sparas i areaOfCone
double volumeCone = volume(areaOfCone, heightCone); // Använder metoden volume för att beräkna volymen av konen. Skickar in värdet på areaOfCone och heightCone. Värdet som kommer ut ur metoden sparas i volumeCone
double areaOfPyramid = areaPyramid(lengthPyramid, widthPyramid); // Använder metoden areaPyramid för att beräkna arean. Skickar in värdet på lengthPyramid och widthPyramid. Värdet som kommer ut ur metoden sparas i areaOfPyramid
double volumePyramid = volume(areaOfPyramid, heightPyramid); // Använder metoden volume för att beräkna volymen av pyramiden. Skickar in värdet på areaOfPyramid och heightPyramid. Värdet som kommer ut ur metoden sparas i volumePyramid
String largestVolume = largestVolume(volumeCone, volumePyramid); //Kollar vilken volym som är störst med hjälp av metoden largestVolyme. Sparar värdet i Stringen largestVolyme
JOptionPane.showMessageDialog(null, largestVolume); //Skriver ut det största värdet!
}
}
I dialogexemplet förutsätts positiva, ändliga mått och punkt som decimaltecken. Det förutsätter en grafisk Java-miljö. Ett komplett användarprogram behöver också hantera avbrutna dialoger och ogiltig taltext.
Vanliga frågor om Använda metoder i Java för att räkna ut volymen
Vad handlar Använda metoder i Java för att räkna ut volymen om?
Exempel med flera metoder i Java - Vi ska med hjälp av metoder skriva ett program som kan räkna ut volymen på en kon och pyramid!
Hur övar jag på Använda metoder i Java för att räkna ut volymen?
Kör exemplen själv, ändra ett värde i taget och jämför sedan resultatet med förklaringen på sidan.