Metody, parametry – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Metody, parametry – Java – Fórum – Programujte.comMetody, parametry – Java – Fórum – Programujte.com

 

Zbiro
~ Anonymní uživatel
3 příspěvky
7. 12. 2012   #1
-
0
-

Zdravim. Mam tu malej problem s metodama a jejich volanim.. programuji semestralni praci (jsem zacatecnik) a mam zatim program.. myslim, ze nepotrebuje presne do detailu popisovat co presne dela.. jen tu nastinim problem, ktery mi vznika

mam metodu "nactiCislo", ktera mi nacita cislo z klavesnice pomoci scanneru, to se ulozi do promenne "a" a tuto hodnotu i vraci, pote metoda "generujPole" mi to nactene cislo umocni, vydeli, pricte jednicku, dokud se hodnota neopakuje, tak to generuje dalsi cisla (to je vcelku jedno) - vznikne mi tak pole o x prvcich (cislech) a toto pole vracim. Dale mam za ukol toto pole seradit vzestupne, cili mam metodu "seradPole" a do ni volam prave navratovou hodnotu z "generujPole", tedy to vygenerovane pole, pole se mi pekne seradi a ja vracim serazene pole a dale potrebuji vizualizovat graf tohoto pole (posloupnosti cisel v nem obsazene), dalsi metoda tedy "udelejGraf" a zde nastava problem.. musim vizualizovat nejprve pole neserazene a pote i pole serazene - na coz tedy potrebuju obe pole, takze si na ne referuji - tedy odkáži se na serazene pole, vse OK.. nojo, ale ja potrebuji pracovat i s tim neserazenym polem a kdyz si na nej dam referenci, tak to po me chce opet zadat hodnotu z klavesnice (opet metoda "nactiCislo") a to ja uz nechci, protoze uz jsem zadaval.. zkratka na to nemuzu prijit jak rozhazet ty reference, zda se mi to neresitelny. :/ Vedel by prosim nekdo, co se s tim da delat? Dekuju

Nahlásit jako SPAM
IP: 147.228.209.–
sakal910
Stálý člen
8. 12. 2012   #2
-
0
-

#1 Zbiro
před tím, než budeš volat metodu seradPole tak si to pole zkopíruj do nové refernece :) tak ti budeš mít jednu referenci na neseřazené a druhou na seřazené :) žádnou vědu bych v tom nehledal :D

Nahlásit jako SPAM
IP: 31.222.8.–
sakal910
Stálý člen
8. 12. 2012   #3
-
0
-

#1 Zbiro
nebo můžeš to pole zkopírovat přímo v metodě seradPole a vracet novou referenci na to seřazené pole :) To už je na tobě jak se ti to bude víc líbit :)

Nahlásit jako SPAM
IP: 31.222.8.–
Zbiro
~ Anonymní uživatel
3 příspěvky
8. 12. 2012   #4
-
0
-

#3 sakal91
Nejde mi to.. asi spatne chapu metody i kdyz jsem o nich precetl docela dost.. hodi mse svuj celej zdrojak, mohl bys me prosimte nejak poposunout, abych do te metody "grafPosloup" dostal neserazene i serazene pole, abych to mohl vykreslit? A prdem se omlouvam za tu prasarnu sesmolenou v metode "vygenerujPosloupnost" :))

package ukoly2012;
import java.util.*;
import ppa1.DrawingTool;
import java.awt.Color;

public class Ppa1_SP_A12B0522P {
	
	private static final int sirka = 400;
	private static final int vyska = 420;
	
	static int scanner(int a) {
		Scanner sc = new Scanner(System.in);
		System.out.println("Zadej startovaci hodnotu: ");
		a = sc.nextInt();
		
		return a;
		
	}
	
	static int [] vygenerujPosloupnost(int []pole) {
		int a = 0;
		int startovaci = 0;
		startovaci = scanner(a);
		
		int [] pole2 = new int [40];
		
		
		int prubezne; // prubezne kvuli poli
		double vysledek;
		int vysledek2;
		boolean shoda = false;
		
		pole2[0] = startovaci;
		for (int i = 0; shoda != true; i++ ) {
			
			pole = new int[i + 1];
			if (i == 0) {
				
			
				vysledek = Math.pow(startovaci, 2);
				if (vysledek >= 1000) {
					vysledek = Math.floor(vysledek / 100);
					}
				else {
					vysledek = Math.floor(vysledek / 10);
				
					}
				vysledek2 = (int) vysledek + 1;
			
			
				pole2[i + 1] = vysledek2;
				
				System.arraycopy(pole2, 0, pole, 0, 1 );
				//prubezne = pole[i];
			}
			
			else  {
				prubezne = pole2[i];
				
				
				vysledek = Math.pow(prubezne, 2);
				if (vysledek >= 1000) {
					vysledek = Math.floor(vysledek / 100);
				}
				else {
					vysledek = Math.floor(vysledek / 10);
					
				}
				vysledek2 = (int) vysledek + 1;
			}
			if (i > 0) {
				
				for (int index=0; index<pole2.length; index++){
										
					if (vysledek2 == pole2[index]){
					shoda = true;
					System.arraycopy(pole2, 0, pole, 0, i + 1);
					break;
					}
										
			}
			
				if (shoda == false) {
				pole2[i + 1] = vysledek2;
				System.arraycopy(pole2, 0, pole, 0, i + 1);
				}
			}
									
		}
		
		
		return pole;
		
		
	}
	
	public static int[] seradPosloupnost(int []pole) {
		pole = vygenerujPosloupnost(pole);
		int velikost = pole.length;
		
		
		System.out.println(velikost + Arrays.toString(pole));
		
		for (int i=0; i<pole.length; i++) {
			int tmp = pole[i];
			int j = i;
			while((j>0) && (pole[j-1] > tmp)) {
			pole[j]=pole[j-1];
			j--;
			}
			pole[j]=tmp;
			//System.out.println(Arrays.toString(pole));
		}
		
		
		return pole;
	}
	
	private static void grafPosloup(DrawingTool dt, int sirka, int vyska) {
		
		int [] serazenepole = null;
		serazenepole = seradPosloupnost(serazenepole);
		int [] puvodnipole = null;
		puvodnipole = vygenerujPosloupnost(puvodnipole);
		
		
		
		//vyska = 420;
		//sirka = 400;
		
		for(int i = 0; i < puvodnipole.length; i++) {
			dt.line(5, 420, 5, 420 - puvodnipole[i]);
			
		}
		
		
	}

	
	public static void main(String[] args) {
		
		
		DrawingTool dt = new DrawingTool(400, 420);
		int [] policko = null;
		grafPosloup(dt, sirka, vyska);
		
	}

}
Nahlásit jako SPAM
IP: 147.228.209.–
sakal910
Stálý člen
8. 12. 2012   #5
-
0
-

#4 Zbiro
takže za 1. metoda vygenerujPosloupnost ti vygeneruje nové pole, takže tam vůbec nepotřebuješ předávat parametr takže si tu metodu předělej na vygenerujPosloupnost() bez parametru a v té metodě si prostě vygeneruješ tu posloupnost a vrátíš ji jako pole... potom v metodě main si vygeneruješ to pole int[] pole = vygenerujPosloupnost(); dále pak nvm proč v metodě seradPosloupnost generuješ nové pole když to vygenerované pole předáváš jako parametr takže v metodě

seradPosloupnost(int[] pole){ 
	int[] serazene = new int[pole.length]; 
	System.arraycopy(pole, 0, serazene, 0, pole.length);
	
	...
        return serazene;

}

 a vrátíš to seřazené pole. Nakonec jen předáš ty dvě pole metodě grafPosloup(pole, serazenePole, sirka, vyska); nic na tom nehledej :]

Metoda main by měla vypadat asi takhle:
 

public static void main(String[] args){

	int[] pole = vygenerujPosloupnost();
	int[] serazene = seradPole(pole);
	grafPosloup(dt, pole, serazene, sirka, vyska);

}
Nahlásit jako SPAM
IP: 31.222.8.–
Zbiro
~ Anonymní uživatel
3 příspěvky
8. 12. 2012   #6
-
0
-

#5 sakal91
Super.. jak je vidno, tak jsem absolutne nepochopil parametry metod a jejich predavani. Uz mi to jede, dekuju moc, klobouk dolu :) Moc jsi mi pomohl

Nahlásit jako SPAM
IP: 147.228.209.–
sakal910
Stálý člen
8. 12. 2012   #7
-
0
-

#6 Zbiro
Hlavně v tom nehledej žádnou vědu :) Zkus se ještě jednou podívat na teorii a pak si zkoušej různé metody a předávání parametrů a určitě to za chvíli pochopíš :)

Nahlásit jako SPAM
IP: 31.222.8.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 4 hosté

Podobná vlákna

Parametry — založil paking

Parametry — založil Mara

Metoda s parametry — založil domitea

Práce s parametry — založil Koja

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý