>source

String s= "dcba";
String p= s;
int[] a= new int[s.length()];
for(int i=0;i<s.length();i++) {
    a[i]= (int)s.charAt(i);
}
for(int i=0;i<s.length();i++) {
    char c1= s.charAt(i);
    char c2= (char) a[i];
    p= s.replace(c1, c2);
}
System.out.println(p);

문자열의 문자를 루프에서 바꾸기 () 함수를 사용하여 문자열 하나씩 교체하려고하지만 변경 사항이 마지막 반복을 제외하고 결과 문자열에 반영되지 않는 것 같습니다. 문자열은 위의 code의 출력 인 "DCBD"와는 반대로 "DCBA"에서 "ABCD"가되어야합니다. 왜 처음 3이 아닌 문자열에서 작업하는 마지막 반복만이 왜 있습니까?

당신은 p.replace ()를 사용해야합니다.

user2074212021-04-20 10:02:16

"왜 문자열에서 일하는 마지막 반복 일뿐 만 아니라 처음 3은 아닙니다." 모든 경우에 p= s.replace (C1, C2)를 호출하지만 S 값은 루프에서 변경되지 않습니다 ... 그래서 p의 값은 해당 최종 호출에 따라 다릅니다.

Jon Skeet2021-04-20 10:02:16

문자열 s에서 문자를 교체하고 문자열 p에 값을 할당하기 때문에 프로그램의 논리입니다. 새 값으로 P를 덮어 씁니다.

Richard2021-04-20 10:02:16

code에 불리 해지는 code의 문제는 문자열을 반죽하는 인식 방법처럼 보입니다. 단순한 접근 방식을 위해 Java의 문자열을 되 찾는 것을 참조하십시오.

Federico klez Culloca2021-04-20 10:02:16
  • 이전 iCalendar RFC 5545 to String.
  • 다음 Django 관리자의 FK /MTM 필드에 대한 자체 (재귀 적) 선택을 방지하는 방법