جا بجا کردن ۲ تا رشته در متد

0 رأی
میانگین بازدید روزانه 4.0757 بازدید
public void apply(String str1, String str2) {
    String temp = str1;
    str1 = str2;
    str2 = temp;
  }

  public void change(){
    String name = "ali";
    String family = "mohammdi";
    apply(name, family);
    System.out.println("Name is : " + name);
    System.out.println("Family is : " + family);
  }

که چاپ میکنم این جابجایی اتفاق نیفتاده change تویه متد اولی میخوایم جابجای دو رشته انجام بشه اما تویه

چرا؟

سوال 1 هفته قبل در تالار برنامه نویسی توسط shahoo (6 امتیاز)
ویرایش 1 هفته قبل توسط shahoo

2 جواب

0 رأی
 
بهترین جواب

متد change رو تغییر بده به کلاس و همه کدهاش رو ببر توی متد main توی همون کلاس به این صورت :

public class change {
public static void main(String[] args) {

String name = "ali";
      String family = "mohammdi";
      apply(name, family);

}

public static void apply(String name, String family) {
     String temp = name;
     name = family;
     family = temp;
     System.out.println("Name is : " + name);
     System.out.println("Family is : " + family);
   }

 

جواب 1 هفته قبل توسط Soraya Ashrafi_85195 (15 امتیاز)
انتخاب شده در 1 هفته قبل توسط shahoo
public class Change {
    private static String name;
    private static String family;
    public Change(String name,String family) {
        this.name = family;
        this.family = name;
    }
    public static String getName() {
        return name;
    }
    public static String getFamily() {
        return family;
    }
   
   
    public static void main(String[] args) {
    String n1 = "Ali";
         String f1 = "Mohammadi";
         Change ch = new Change(n1, f1);
         System.out.println("name is :"+ Change.getName());
         System.out.println("family is :"+ Change.getFamily());
         
    }
   

}
متاسفانه این پاسخ به نظر من صحیح نیست.
با توجه به اینکه کپی دیفرنس به دو رشته برای متد ارسال میشه با جابجا کردن به شکل فوق مقدار های ریفرنسهای کپی عوض میشه و عملا روی رشته های اصل اتفاقی نمی افته.
اما اگر هر دوتا رشته غیر نال باشند می توانیم با جابجایی کاراکتر به کاراکتر رشته ها را جابجا کنیم:
+1 رأی

public class TestString {

    /**
     * @param args the command line arguments
     */
    static class TmpClass {

        String a;
        String b;

        void apply() {
            String temp = a;
            a = b;
            b = temp;
        }

    }

    public static void main(String[] args) {
        TmpClass cls = new TmpClass();
        String a = "ABCD";
        String b = "CDEF";
        cls.a = a;
        cls.b = b;
        cls.apply();

        System.out.println(cls.a);
        System.out.println(cls.b);
    }

}

 

جواب 1 هفته قبل توسط Saeed Mirshams (80 امتیاز)
سلام ممنون از جوابتون
با توجه به دانش کم من راه مستقیم برای این کار نداریم پس باید از راه های غیر عادی استفاده کرد اما سوال و درخواست اصلی من این بود که حتی متد Main در یک کلاس دیگر باشه که باز این قضیه یکم سخت تر میشه
پس  هر دو راه کامل نیست
یکی از روش های که میشه این کار رو انجام داد اینه که یک کلاس با ۲ تا رشته بسازیم و با استفاده از اون این جا بجایی رو انجام بدیم
سلام توی هر دو جواب میتونید متد main رو در کلاس دیگه ای تعریف کنید و در آنجا یک شی از کلاسی که داخلش متدتون هست ایجاد کنید و با استفاده از اون شی جدید این کار رو انجام بدید

سوال های مشابه

+1 رأی
1 جواب میانگین بازدید روزانه 0.3496 بازدید
0 رأی
2 جواب میانگین بازدید روزانه 0.375 بازدید
0 رأی
0 جواب میانگین بازدید روزانه 0.253 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.258 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.17134 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.34305 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.23288 بازدید
0 رأی
0 جواب میانگین بازدید روزانه 0.11154 بازدید
0 رأی
2 جواب میانگین بازدید روزانه 0.09145 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.14243 بازدید
کانال تلگرام جواب یاب
...