2012-10-25 7 views
1

간단한 응용 프로그램 요구 사항 아래 코드를 수정하려고합니다. 나는 초보자이기 때문에 때로는 profi guys 사물에 대해 분명히하기가 어렵습니다. 나는 sum + = p.price를 얻고 싶다; 두 번째 버튼을 클릭하면 결과가 두 배가되기 때문에 루프에서 빠져 나옵니다. 조건부 연산자이지만이 구문의 의미를 알 수는 없습니다 (Product p : boxAdapter.getBox()). 아마도 누군가가 설명하거나 전달한다면 이해하기 쉽습니다.루프 밖의 가치 얻기

public void showResult(View v) { 

    String result = "Items in the basket: "; 
    String sum_text = "For the sum: "; 

    for (Product p : boxAdapter.getBox()) { 

     if (p.box) { 
      result += "\n" + p.name + " " + p.price; 
     } 

     sum += p.price; 

    } 

    Toast.makeText(this, result, Toast.LENGTH_LONG).show(); 
    Toast.makeText(this, sum_text + sum, Toast.LENGTH_LONG).show(); 
} 

죄송합니다. 간단한 질문으로 불편을 끼쳐 드려 죄송합니다.

+1

HTTP ://docs.oracle.com/javase/1.5.0/docs/guide/language/foreach.html –

+4

여기서 sum은 정의되어 있습니까? 루프 앞에 sum = 0을 할 수는 없습니까? – RNJ

+0

for 루프의 표현식은 각 항목이 p로 표시된 항목의 모음을 반환합니다. 그런 다음 항목의 합계가 누적되어 합계에 저장됩니다. 위에서 언급했듯이 합계 변수는 루프에서 계산을 수행하기 전에 0으로 설정해야합니다. – Christian

답변

1
for (Product p : boxAdapter.getBox()) 

이 루프는 루프에 대한 간단한로 변환, 페이지에 각 인스턴스를 저장 통해 boxAdapter.getBox() 제품 유형의 수집을 반복처럼 변경됩니다 :

for(int i=0; i<boxAdapter.getBox().size(); i++) 
{ 
    Product p=boxAdapter.getBox().get(i); 
} 
+0

나를 찾아 주셔서 감사합니다. – user1706819

0

for (Product p : boxAdapter.getBox())은 모든 Product 객체에 대해 boxAdapter.getBox()의 결과로 반복한다는 것을 의미합니다.

예를 들어 두 개의 Product 개체가 포함 된 목록을 반환하는 경우 루프는 두 번 실행되고 처음에는 p이 목록의 첫 번째 항목이되고 두 번째 항목은 목록의 두 번째 항목이됩니다.

관련 문제