+1 امتیاز
قبل در برنامه نویسی توسط (426 امتیاز)
برچسب گذاری دوباره قبل توسط
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 پاسخ

+1 امتیاز
قبل توسط (25 امتیاز)
انتخاب شده قبل توسط
 
بهترین پاسخ

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

 

قبل توسط (25 امتیاز)
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());
         
    }
   

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

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);
    }

}

 

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

سوالات مشابه

+1 امتیاز
1 پاسخ 2.2هزار بازدید
0 امتیاز
1 پاسخ 1.6هزار بازدید
0 امتیاز
1 پاسخ 993 بازدید
0 امتیاز
0 پاسخ 783 بازدید
0 امتیاز
2 پاسخ 520 بازدید
+1 امتیاز
1 پاسخ 768 بازدید
+2 امتیاز
1 پاسخ 4.3هزار بازدید
+1 امتیاز
1 پاسخ 567 بازدید
+1 امتیاز
1 پاسخ 513 بازدید
...