Потому что Стрин g неизменен, поэтому изменения не будут возникать, если вы не будете назначать возвращаемое значение функции string.so в вопросе присваивания значения отображения (s1) на s.
s = display (s1), после чего значение строки s изменится.
Я также получал неизменность значение, когда я писал программу, чтобы получить некоторые перестановки строки (Хотя это не дает все перестановки, но это, например, чтобы ответить на ваш вопрос)
Вот пример ,
import java.io.*;
public class MyString {
public static void main(String []args)throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String s=br.readLine().trim();
int n=0;int k=0;
while(n!=s.length()){
while(k<n){
swap(s,k,n);
System.out.println(s);
swap(s,k,n);
k++;
}
n++;
}
}
public static void swap(String s,int n1,int n2){
char temp;
temp=s.charAt(n1);
StringBuilder sb=new StringBuilder(s);
sb.setCharAt(n1,s.charAt(n2));
sb.setCharAt(n2,temp);
s=sb.toString();
}
}
, но я не получал переставленное значение строки из выше code.So я назначил возвращаемого значение функции подкачки к струне и получил измененные значения строки. после присвоения возвращаемого значения i получил перестановочные значения строки.
//import java.util.*;
import java.io.*;
public class MyString {
public static void main(String []args)throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String s=br.readLine().trim();
int n=0;int k=0;
while(n!=s.length()){
while(k<n){
s=swap(s,k,n);
System.out.println(s);
s=swap(s,k,n);
k++;
}
n++;
}
}
public static String swap(String s,int n1,int n2){
char temp;
temp=s.charAt(n1);
StringBuilder sb=new StringBuilder(s);
sb.setCharAt(n1,s.charAt(n2));
sb.setCharAt(n2,temp);
s=sb.toString();
return s;
}
}
Поскольку параметры являются «по значению» в Java. –