2014-02-28 6 views
0

배열 목록이 있습니다 (아래 참조). 목록의 동등한 문자 표현의 숫자는 비밀 메시지를 인쇄합니다 (이는 유형 변환을 통해 수행 할 수 있음). 하지만 읽으려면 먼저 배열 목록의 각 요소에 5를 더해야합니다. 하지만 배열은 문자열 요소를 변경할 수 없다는 최종 결정으로 생각 했습니까? (나는 배열을 non-final으로 만들려고했으나 목록의 각 값을 5 씩 증가시킬 수 없었다.) 아래에서 사용하려고 시도했지만 여전히 목록의 원래 값을 출력하는 코드를 볼 수있다. 누구든지 어떤 포인터가 있습니까? 감사.최종 배열 목록에 정수 추가

public static void main(String[] args) { 
    final int[] message = { 82, 96, 103, 103, 27, 95, 106, 105, 96, 28 }; 
    final int key = 5; 
    for (int x : message) 
     x = x + key; 
    for (int x : message) 
     System.out.print(x + ","); 
} 

답변

3

메시지 배열을 변경하지 않습니다. 당신은 각 요소에 대한 임시 값 x를 얻고 있습니다. 시도해도 최종으로 선언되므로 오류가 표시됩니다. 당신이 변수를 변경할 수있어, 첫 번째 루프에서

for (int x: message) { x = x + key; System.out.print(x + ","); }

:

은 당신이 두 번째 루프가 필요하지 않습니다이

int[] message = 
    {82, 96, 103, 103, 27, 95, 106, 105, 96, 28}; 
final int key = 5; 
for (int i = 0; i< message.length; i++) 
    message[i]+=key; 
0

처럼 뭔가를 할 수있는 값을 증가 (x) 그 루프에 로컬. 예상대로 보이는 것처럼 실제로 배열 내용을 수정하지 않아도됩니다. 두 번째 루프에서 x 변수는 두 번째 루프에 대해 로컬이고 첫 번째 루프의 x와 완전히 구별됩니다.

0

은 x가 for 루프에서 local variable을하기 때문에이

final int[] message = { 82, 96, 103, 103, 27, 95, 106, 105, 96, 28 }; 
final int key = 5; 
for (int i = 0; i < message.length; i++) 
    message[i] += key; 
for (int i = 0; i < message.length; i++) 
    System.out.print(message[i] + ","); 

귀하의 코드가 작동하지 않습니다보십시오.

0

array 요소의 사본에 key를 추가하면 배열의 실제 요소 값은 변경되지 않습니다. 대신에 이것을하십시오. 설명

int value = message[0]; 
value = value+10; // This will not change value of element at message[0]; 
0

하지만 배열은 우리가 문자열 요소를 변경할 수 없음을 최종으로 생각

for (int x =0; x < message.length; x++) 
     message[x] = message[x] + key; 
    for (int x : message) 
     System.out.print(x + ","); 

더? 나는 배열이 아닌 최종

당신은 최종적이고 불변의 사이에서 혼란스러워지고를 만드는 시도 않았다

final--> 1. For primitives : you can't change the value (RHS) 
     2. For non-primitives : you can't reassign the reference to another object. 
     2.b. You can change the value(s) of the object to which the reference is currently pointing. 

immutable - you can't change the value of the object to which the reference is pointing.