>  Q&A  >  본문

java - 为什么输出的结果为4321?

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?

黄舟黄舟2744일 전663

모든 응답(4)나는 대답할 것이다

  • 天蓬老师

    天蓬老师2017-04-18 10:51:09

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

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-18 10:51:09

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

    회신하다
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 10:51:09

    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 루프를 종료합니다.

    회신하다
    0
  • 高洛峰

    高洛峰2017-04-18 10:51:09

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

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

    회신하다
    0
  • 취소회신하다