» »

[Java] Metode

[Java] Metode

Noobish ::

Sem začetnik v programiranju in bi rabil malo vaše pomoči. Vem da lahko pri metodi, ki jo napišemo, vrnemo neko vrednost, s katero lahko potem v metodi main računamo naprej, ali pa tisto vrednost samo izpišemo. Kako pokličemo metodo v prvem in kako v drugem primeru?

Primer (za potenciranje):
public static int Potenca(int eksponent, int osnova){

	int rezultat=1;

	for(int i=1; i<=eksponent; i++){
		rezultat=rezultat*osnova;
	}
	return (rezultat);
}


Zanima me, kako ta rezultat pokličemo v metodi main in z njim naprej računamo in kaj bi morali narediti, da bi ta rezultat v matodi main samo izpisali (kako to pokličemo in če moramo kako kodo v metodi potenca spremeniti oz. če je return potreben).
  • spremenilo: Noobish ()

GupeM ::

Ti rezultata ne pokličeš ampak ti ga ta metoda vrne, zato je return obvezen.

public static void main (String[ ] args)
{
	// shranimo vrnjen rezultat v spremenljivko result, s katero lahko nato
	// operiramo naprej.
	int result = Potenca (5, 10);

	// Izpisemo rezultat ne da bi ga prej shranili v kakšno spremenljivko.
	System.out.println ("Rezultat je: " + Potenca (5, 10));
}


Lahko pa že v metodi potenca(...) narediš izpis. V tem primeru return ni potreben.
public static void potenca(int eksponent, int osnova){
 
    int rezultat=1;
 
    for(int i=1; i<=eksponent; i++){
        rezultat=rezultat*osnova;
    }
    System.out.println("Rezultat je: " + rezultat);
}


mimogrede: imena metod v javi se običajno piše v CamelCase stilu z malo začetnico (npr.: toJeImeMetode(...)), imena razredov pa CamelCase z veliko začetnico (npr.: ToJeImeRazreda{})

Zgodovina sprememb…

  • spremenil: GupeM ()

Princo22 ::

Sem se začel učit Javo imam en problemček, pri izpisu imam probleme s spremenljivkami

Exception in thread "main" java.lang.Error: Unresolved compilation problems:
a cannot be resolved to a variable
b cannot be resolved to a variable

at vaja1.izpisi(vaja1.java:36)
at vaja1.main(vaja1.java:24)


import java.util.Scanner;


public class vaja1
{

	public static void main(String args[])
    {
		int a, b ;
		Scanner tipkovnica = new Scanner (System.in);
		System.out.println("Vpisi prvo stevilko.");
		a = tipkovnica.nextInt();
		System.out.println("Vpisi drugo stevilko.");
		b = tipkovnica.nextInt();
		
		vsota(a,b);
		izpisi();
		
    }
	
	public static int vsota(int a, int b) 
                {
                int rezultat = a + b;
                return rezultat;
                }

	public static void izpisi() 
		{
        System.out.println("Vsota je " + vsota(a,b));
        }
			
	
	
        

} 

Zgodovina sprememb…

  • spremenil: Princo22 ()

shadeX ::

To je zato ker metoda "izpisi()" ne vidi spremenljivk a,b zato ker so vidne samo metodi main. Zato ker si jih določil znotraj metode so to lokalne spremenljivke. Če želiš, da ti bo cel razred prepoznal spremenljivki "a" in "b", potem jih moraš določiti v razredu. Ne v metodi. Naprimer tako:

import java.util.Scanner;
 
 
public class vaja1
{
 static int a,b; // spremenljivke so sedaj vidne vsem metodam znotraj razreda

    public static void main(String args[])
    {
        //int a, b ; Tako si jih določil ti, ampak če želiš da ti bodo druge metode
        //prepoznale spremenljivke jih moraš določiti tako kot sem jih jaz zgoraj.
        Scanner tipkovnica = new Scanner (System.in);
        System.out.println("Vpisi prvo stevilko.");
        a = tipkovnica.nextInt();
        System.out.println("Vpisi drugo stevilko.");
        b = tipkovnica.nextInt();
         
        vsota(a,b);
        izpisi();
         
    }
     
    public static int vsota(int a, int b) 
                {
                int rezultat = a + b;
                return rezultat;
                }
 
    public static void izpisi() 
        {
        System.out.println("Vsota je " + vsota(a,b));
        }
             
     
     
         
 
}


Aja opazil sem še nekaj. V metodi main kličeš metodo "vsota(a,b)". To je nepotrebno, ker jo
kličeš že spodaj v metodi "izpisi", tako da je metoda "vsota" v metodi main neuporabna. Razen če bi naprimer shranil vrednost, naprimer tako:

public static void main(String args[])

// to je znotraj razreda
static int rezultat;
    {
       
        Scanner tipkovnica = new Scanner (System.in);
        System.out.println("Vpisi prvo stevilko.");
        a = tipkovnica.nextInt();
        System.out.println("Vpisi drugo stevilko.");
        b = tipkovnica.nextInt();
          
        rezultat = vsota(a,b);
        izpisi();
          
    }


In potem v metodi "izpisi", pokličeš spremenljivko rezultat, namesto metode "vsota"

Zgodovina sprememb…

  • spremenil: shadeX ()

Princo22 ::

Super hvala, sem zastopil.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[Java] Objekt poslan k metodi v kakšnem stanju?

Oddelek: Programiranje
211565 (1012) shadeX
»

[c#] Vstavljanje vrednosti v tabelo

Oddelek: Programiranje
111616 (1438) Cvenemir

[C#]naloga iz metod!

Oddelek: Programiranje
81674 (1507) Ziga Dolhar
»

Java

Oddelek: Programiranje
335825 (4426) Spura
»

osnove v Javi - zvezdice

Oddelek: Programiranje
403573 (2795) Tutankhamun

Več podobnih tem