Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Digi24 a disparut de pe TV Lg

Drept de proprietate intelectuala...

Jante noi shitbox

Trinitas TV 4K
 Dacia 1316 cu 6 usi ...

Frecventa modificata radio

Un nou pericol pt batrani

Ar trebuii sa vindem imobiliarele...
 Dupa renuntarea la aparat dentar

pelerinaj in Balcik

Noul format Jpegli iși propu...

Dade, dade
 Probleme accesare nr test telefon

Parola la lock screen

Deparazitare externa pisici fara ...

Seriale turcesti/coreene online H...
 

Care este de preferat dintre tipul void sau return?

- - - - -
  • Please log in to reply
11 replies to this topic

#1
euclaudiu

euclaudiu

    Junior Member

  • Grup: Members
  • Posts: 198
  • Înscris: 04.03.2014
Am inceput sa invat java cursul MOOC care este foarte recomandat de multi.Am ajuns la o problema multe solutii facute de ei sunt cu tipul int, eu intai incerc sa le rezolv si dupa ma uit la codul lor.Rezultate sunt aceleasi.Se dau aceste doua solutii.
Metoda tip int de la ei:

import java.util.Scanner;
public class ReversingText {
	public static String reverse(String text) {
		// write your code here
		// note that method does now print anything, it RETURNS the reversed string
		String buffer = "";
	   
		for(int i=text.length()-1; i>=0;i--){
			buffer = buffer + text.charAt(i);
		}
	   
		return buffer;
	}
	public static void main(String[] args) {
		Scanner reader = new Scanner(System.in);
		System.out.print("Type in your text: ");
		String text = reader.nextLine();
		System.out.println("In reverse order: " + reverse(text));
	}
}


Metoda facuta de mine void

public static void main(String[] args) {
		Scanner read=new Scanner(System.in);
		String reads=read.nextLine();
	   
		reverse(reads);
	}
   
	public static void reverse(String text)
	{
		//citim de la cea mai mare pozitie ultima litera
		   String chars="";	
		 for (int i=text.length()-1;i>=0;i--)
		 {chars=chars+text.charAt(i);
		
		   
		 }
		
	 System.out.println(chars);
   
	}

Care modalitate este mai buna?Ca buna la urma orice tip void se poate face int si invers.

#2
OneTransistor

OneTransistor

    Junior Member

  • Grup: Junior Members
  • Posts: 161
  • Înscris: 24.08.2018
Dacă nu vrei / nu ai nevoie ca funcția să returneze ceva folosești void. Altfel, returnezi ce te interesează, declarând tipul corect.

Citește și pe aici: https://stackoverflo...s-int-functions

Edited by OneTransistor, 03 September 2018 - 23:02.


#3
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,444
  • Înscris: 10.08.2005
nu cumva meteoda ta se numeste "printReverse'?

SOLiD?

Single Responsibility Principle

#4
_Smiley_

_Smiley_

    Guru Member

  • Grup: Senior Members
  • Posts: 20,033
  • Înscris: 24.02.2006

 euclaudiu, on 03 septembrie 2018 - 22:37, said:

Care modalitate este mai buna?Ca buna la urma orice tip void se poate face int si invers.
la modul general, ai nevoie de un raspuns de la functie. in cel mai simplu caz vrei sa stii daca functia a efectuat sau nu operatia dorita.

#5
StefanCBV

StefanCBV

    Member

  • Grup: Members
  • Posts: 257
  • Înscris: 30.01.2017
Si in plus vrei si ceva modularizare...cazul asta e banal si poate nu are sens sa separi functiile de reverse si de print, dar ca un good practice, ai dori ca fiecare functie sa faca ceva specific, iar numele sa fie destul de explicativ pentru ceea ce face ( de aia te-a si luat la misto Marian cu printReverse :P ).

In concluzie separam cele doua operatii in reverseString si printString...

#6
Mosotti

Mosotti

    Geniu umil

  • Grup: Senior Members
  • Posts: 33,295
  • Înscris: 21.04.2004
Metoda facuta de tine nu ajuta la nimic, decit la tiparirea stringului inversat. Daca ai nevoie de stringul inversat pentru a-l folosi in alta parte trebuie sa-l returnezi.

 _Smiley_, on 04 septembrie 2018 - 04:58, said:

la modul general, ai nevoie de un raspuns de la functie. in cel mai simplu caz vrei sa stii daca functia a efectuat sau nu operatia dorita.
Asta se face cu exceptii nu cu return. Ultimul lucru pe care vrei sa-l faci este sa umpli codul cu "if returnStatus == else else else else"... Preferatele mele sint statusurile hardcodate :lol:

#7
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,444
  • Înscris: 10.08.2005

 StefanCBV, on 04 septembrie 2018 - 08:31, said:

Si in plus vrei si ceva modularizare...cazul asta e banal si poate nu are sens sa separi functiile de reverse si de print, dar ca un good practice, ai dori ca fiecare functie sa faca ceva specific, iar numele sa fie destul de explicativ pentru ceea ce face ( de aia te-a si luat la misto Marian cu printReverse Posted Image ).
Tu ai impresia ca asta inseamna luat la misto ?

#8
euclaudiu

euclaudiu

    Junior Member

  • Grup: Members
  • Posts: 198
  • Înscris: 04.03.2014
Am înțeles acum, folosesc int când vreau ca acel string sa îl folosesc din nou în alte metode sau în Main. Bine ca să îl folosesc în alte metode trebuie sa fie parametru. Dar se putea și fără acel buffer sa folosești direct parametru ca return.


#9
Mosotti

Mosotti

    Geniu umil

  • Grup: Senior Members
  • Posts: 33,295
  • Înscris: 21.04.2004
Nu folosesti int, folosesti String daca vrei sa returnezi un String. Daca functia ta calculeaza o valoare numerica, folosesti int, float etc

#10
euclaudiu

euclaudiu

    Junior Member

  • Grup: Members
  • Posts: 198
  • Înscris: 04.03.2014
Gata am inteles.Mersi mult.Daca am return pot folosi acea valoarea  returnata  in  functia main prin stocarea ei intr-o noua variabila.

#11
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,238
  • Înscris: 24.02.2007
Se numesc functii fara efecte secundare (side effects), cele ce doar returneaza ceva pe baza datelor de intrare, fara a modifica altceva.

Sunt de preferat mai ales in cod ce se doreste reutilizabil fiindca vin fara surprize. De exemplu, daca ai o functie ce iti spune daca o adresa de email are o structura valida, te astepti sa iti returneaza true/false si atat. Nu te astepti sa scrie ceva in consola (poate tu vrei sa scrii altceva, si te-ar incurca), nu te astepti sa scrie ceva intr-un fisier, sau sa trimita un email.

#12
CrocodiluMereuVesel

CrocodiluMereuVesel

    Member

  • Grup: Members
  • Posts: 615
  • Înscris: 23.07.2018
Return integer

Edited by CrocodiluMereuVesel, 07 September 2018 - 10:41.


Anunturi

Chirurgia endoscopică a hipofizei Chirurgia endoscopică a hipofizei

"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală.

Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate