2016-06-23 3 views
-1

저는 초보자이며 자바 코드에 무슨 문제가 있는지 알지 못합니다. 귀하의 도움을 매우 높이 평가 될 것입니다.if 진술이 작동하지 않습니다. 코드가 잘못되었습니다.

이 코드는 배열의 요소가 tc보다 작은 지 확인한 다음 그 값을 증가시켜야합니다.

int pay1 = 190; 
int pay2 = 1175; 
int pay3 = 455; 
int pay4 = 345; 
int tc = 400; 
int[] pay = { pay1, pay2, pay3, pay4 }; 

for(int i = 0; i < pay.length; i++) 
{ 
    if(pay[i] < tc) 
    { 
     pay[i] = pay[i]++; 
     System.out.println(pay[i]+","); 
    } 
} 
+1

하고있다 오류 또는 이상한 행동 ?? –

+0

디버거에서 알려주는 것은 무엇입니까? –

+2

이것은 주제를 벗어난 것이 아닙니다.이 질문은 유효한 질문이며 Java로 수행하면 안되는 것을 보여줍니다. – TofuBeer

답변

7

변경 :

pay[i] = pay[i]++; 

사람 :

pay[i]++; 

이 (++) 수정하려고하고 같은 라인에서 (=) 할당하거나 나쁜 일이 발생하지 마십시오. 이 경우 증분을 수행 한 다음 원래 값을 다시 지정합니다.

이 코드 :

int i = 0; 
i = i++; 

이 바이트 코드를 생성 (은 javap -c) :

0: iconst_0  
    1: istore_1  
    2: iload_1  
    3: iinc 1, 1 
    6: istore_1 

의미

0: put zero on the stack 
1: put the zero into i 
2: put the value of i (0) onto the stack 
3: increment i by 1 (i now has a value of 1) 
6: store the value on the stack (0) into i (i now has a value of 0) 
이 코드가해야 할 가정 무엇
+0

업데이트 된 답변보기 @ cricket_007 – TofuBeer

+0

@ cricket_007 _ 배열 액세스 표현식은 배열의 구성 요소 인 ** 변수 **를 나타냅니다. –

관련 문제