java - 为什么输出的结果为4321?
黄舟
黄舟 2017-04-18 10:49:09
0
4
709
Char  c[]={'1','2','3','4'}
for(int i=0;i<c.length/2;i++){
    char d=c[i];
    c[i]=c[c.length-(i+1)];
    c[c.length-(i+1)]=d;
}
for(int i=0;i<c.length;i++){
    System.out.println(c[i]);
}

为什输出的结果为4321?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

모든 응답(4)
Peter_Zhu

루프를 두 번, 처음에는 1과 4가 바뀌고, 두 번째에는 2와 3이 바뀌었습니다

Peter_Zhu

왜 안 되나요? '1'과 '4'가 바뀌고, '2'와 '3'이 바뀌었습니다.

伊谢尔伦

i = 0;
char d=c[i];
d에 c[0]의 값을 할당하면 1이 됩니다.
이때 c 배열은 여전히 ​​[1, 2, 3입니다. ,4] , 그러나 d의 초기값은 1입니다.
[교환된 당사자 A를 유휴 상태로 두는 작업의 의미]
c[i]=c[c.length-(i+1)];
c의 값을 할당합니다. [3] to c[0] ;
이때, c 배열은 [4,2,3,4]이고, d 값은 1;
[ 연산의 의미는 B변의 값을 A변으로 교환]
c[c.length-(i+1)]=d;
처음에 c[0]의 값 1인 d의 값을 c[3]에 할당합니다.
c 배열의 값은 [4,2,3,1]이고 d의 값은 1입니다.
[연산의 의미는 자유 위치의 개수, 즉 초기값을 주는 것입니다. A, B로, 궁극적으로 A와 B의 가치 교환이 이루어짐]

i가 1일 때
char d=c[i];
d는 c[1], 즉 2입니다.
이때 c 배열은 [4,2,3,1]입니다. d 값은 2입니다.
c[i]=c[c.length-(i+1)];
c[2]의 값을 c[1]에 할당합니다.
이때 c 배열은 [4,3,3,1]입니다. d 값은 2입니다;
c[c.length-(i+1)]=d;
처음에 c[1]의 값 2인 d 값을 c[2]에 할당합니다.
c 배열은 [4,3,2,1]이고 d 값은 2입니다.

첫 번째 for 루프를 종료합니다.

小葫芦

기본적으로는 스왑 작업입니다

a = 1 b = 2 => c = b => b = a a = c
가능한 경우:
a =1 , b = 2;
a,b:=b,a;
더 단순해 보입니다

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿