PDA

View Full Version : مبتدی: تابع Swap سی پلاس پلاس در Java



MAN_UNITED
پنج شنبه 16 شهریور 1391, 01:31 صبح
سلام من ++C خیلی کار کردم الان دارم جاوا کار میکنم من بیشتر تابع ها و متد هایی که تو ++C نوشتم رو تو Java هم نوشتم ولی این جابجایی دو تا مقدار رو نتونستم چون تو ++C از ارجاع استفاده میشد ولی اینجا نمیشه
باید چیکار کنم؟ این تابع در ++C :


void swap(int &m,int &n)
}
int temp=m;
m=n;
n=temp;
{


این تو جاوا چطوری میشه؟
کلا میشه درمورد ارجاع در جاوا توصیح بدید

hadi0x7c7
پنج شنبه 16 شهریور 1391, 02:54 صبح
واسه های داده های از نوع primitive نمیشه چون اونا pass by value هستند و فقط object ها pass by ref هستند.wrapper Integer هم بدرد نمیخوره.
اگه با ارایه و مرتب سازی و این چیزا کار میکنی این برنامه شاید بدرد بخوره.

اینم یه بحث در همین زمینه http://stackoverflow.com/questions/1363186/is-it-possible-to-write-swap-method-in-java

import java.util.Arrays;

public class Main {

static void swap(Integer a, Integer b) {
Integer temp = a;
a = b;
b = temp;
}

static void swap(int[] a, int i, int j) {
int t = a[i];
a[i] = a[j];
a[j] = t;
}

public static void main(String[] args) {
int a[] = { 1, 2, 3, 4, 5 };
System.out.println(Arrays.toString(a));
swap(a, 0, 1);
System.out.println(Arrays.toString(a));
swap(a[0], a[1]); // Not working :-(
System.out.println(Arrays.toString(a));

}
}

MAN_UNITED
پنج شنبه 16 شهریور 1391, 11:05 صبح
سلام خیلی ممنون
یه سوال، پس تو جاوا با متدی که بیشتر از یه خروجی داره چطوری برخورد میکنن مگه میشه نشه دو خروجی یا بیشتر از متد بیرون بفرستی؟

spiderman200700
پنج شنبه 16 شهریور 1391, 12:32 عصر
خروجی متد میتونه یه آرایه یا یه object که حاوی چندین متغیر و متد هست باشه.

Anausha
جمعه 24 شهریور 1391, 13:29 عصر
درود.
همین طور که دوستان هم فرمودند از متد می تونید چند جواب رو در قالب یک آرایه یا یک شی برگردونید!

خروجی تابع ، متد همیشه یک چیز هست که میتونه void یا یک شی باشه و این شی خودش میتونه در زیر مجموعه خودش دارای مقادیر زیادتری هم باشه که آرایه یک نمونه از اون هست! پس برای خروجی چند متغیره بطور نمونه زوج مرتب x و y باید شما یک کلاس point با متغییرهای نمونه x , y تعریف کنید و در متد از آن شی ساخته و مقدار دهی کنید و در نهایت اون رو برگردونید و یا از یک آرایه دوتایی می تونید استفاده کنید!