Forum » Programiranje » [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):
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).
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.
Lahko pa že v metodi potenca(...) narediš izpis. V tem primeru return ni potreben.
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{})
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)
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:
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:
In potem v metodi "izpisi", pokličeš spremenljivko rezultat, namesto metode "vsota"
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 ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [Java] Objekt poslan k metodi v kakšnem stanju?Oddelek: Programiranje | 1565 (1012) | shadeX |
» | [c#] Vstavljanje vrednosti v tabeloOddelek: Programiranje | 1616 (1438) | Cvenemir |
⊘ | [C#]naloga iz metod!Oddelek: Programiranje | 1674 (1507) | Ziga Dolhar |
» | JavaOddelek: Programiranje | 5825 (4426) | Spura |
» | osnove v Javi - zvezdiceOddelek: Programiranje | 3573 (2795) | Tutankhamun |