Använda metoder i Java för att räkna ut volymen på en kon och en pyramid


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 [latex] V = \dfrac{Bh}{3} [/latex] där B är basytan på konen och h är höjden. Basytan beräknar man med [latex] r^{2}\pi [/latex] alltså arean för cirkeln konen bildar.

Räkna ut volymen på en pyramid

Volymen på en pyramid beräknar man med formeln [latex] V = \dfrac{Bh}{3} [/latex] där B är basytan på pyramiden och h är höjden. Basytan beräknar man med [latex] L*b [/latex] alltså längden på triangeln som bildas, multiplicerat med bredden på triangeln.

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 areaTriangle = length*width;                          // Beräknar arean och sparar värdet i areaTriangle
    return areaTriangle;                                         // 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;                         // 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){                       // 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   
    }

}

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 int få in en int 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;                         // 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 areaTriangle = length*width;                          // Beräknar arean och sparar värdet i areaTriangle
        return areaTriangle;                                         // 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!
        }
}

Vad tyckte du om sidan?

Lämna gärna feedback och hjälp oss göra sidan bättre

Feedback gör oss bättre!

Lämna gärna feedback om vad du tyckte om avsnittet!