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

+1 رأی
میانگین بازدید روزانه 0.9970 بازدید
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 تویه متد اولی میخوایم جابجای دو رشته انجام بشه اما تویه

چرا؟

سوال 2 ماه قبل در تالار برنامه نویسی توسط shahoo (134 امتیاز)
برچسب گذاری مجدد در 1 ماه قبل توسط Saeed Zarinfam

2 جواب

+1 رأی
 
بهترین جواب

متد 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);
   }

 

جواب 2 ماه قبل توسط Soraya Ashrafi_85195 (25 امتیاز)
انتخاب شده در 2 ماه قبل توسط 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);
    }

}

 

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

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

+1 رأی
1 جواب میانگین بازدید روزانه 0.31524 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.2275 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.34325 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.23307 بازدید
0 رأی
0 جواب میانگین بازدید روزانه 0.11156 بازدید
0 رأی
2 جواب میانگین بازدید روزانه 0.09151 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.14251 بازدید
+2 رأی
1 جواب میانگین بازدید روزانه 0.951,860 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.16147 بازدید
0 رأی
1 جواب میانگین بازدید روزانه 0.29493 بازدید
کانال تلگرام جواب یاب
...