2014-03-06 3 views
1

그래, 내가 자바로 일하고있어, 나는 완전히 혼란스러워. 나는과 같은 코드가이Java for 루프가 루프 외부에서 변수를 설정하지 않는 이유는 무엇입니까?

private double computeValue(Warehouse house) { 
    double price; 
    int quant; 
    double value; 

    for (int i=0; i < house.size(); i++) { 
     price = house.getItem(i).getPrice(); 
     quant = house.getItem(i).getQuantity(); 

     value += (price*quant); 
    } 

    return value; 
} 

그것의 크기 횟수의 창고 항목을 읽고, 그것을 않습니다 때, 창고에서의 가격과 수량을 항목을 가져오고이를 곱 값이되기 위해 함께

이제 모든 것이 멋지지만 변수 값이 설정되지 않은 번호는 루프를 벗어날 것입니다. 그것은 값이 실행될 때 초기화되지 않았다고 말하고, 임의의 더미 숫자로 설정하면 값과 곱셈을 곱하여 얻는 것과는 반대로 그 숫자를 반환합니다. 누구든지이 문제를 해결하는 방법을 말해 줄 수 있기 때문에 변수 값이 루프에서 숫자를 가져 와서 반환 할 수있을뿐만 아니라 무엇을하고 있는지 왜 이해하는지 이해하는 데 도움이됩니다. 고맙습니다!

편집 : 나는 0 인 house.size()의 문제를 해결, 지금 10로 설정되어 여전히 초기화되지 않은 값의 오류를 반환

+5

'house.size()'가'0'을 반환하면 어떨까요? 그렇다면 가치는 어떤 가치를 가질 것입니까? –

+0

그게 문제 일 수 있겠습니까? 루프를 전혀 실행하지 않습니까? –

+0

예, 루프가 실행되지 않으면 필드가 초기화되지 않습니다. 기본값을 지정하십시오. –

답변

3

가 될 수 있을까 당신의

house.size(); 

그 0을 반환하고 있습니까?

집안의 마지막 항목의 가치를 얻으려고하십니까?

모든 항목의 누적 값을 얻기 위해 자신의 가격이 아마에 할당하여 값을 변경해야합니다 : 그렇지 않으면 그것은 오직 집에서 마지막 항목의 값을 반환합니다

value = value + (price*quant); 

. 대답은 발견

+0

팁을 모아 주셔서 고맙습니다. 그러나 저는 house.size()가 0 이상 (정확히는 10)이면서 여전히 오류를 반환합니다. –

+0

@DavidGrabon은 모든 변수를 0으로 초기화하려고합니다. 저에게 알려주세요. – TheShinyTuxedo

1

좋아, 그래서 지금은 하나의 house.size() 값이 가능 0 인뿐만 아니라

private double computeValue(Warehouse house) { 
    double price; 
    int quant; 
    double value = 0.0; 

    for (int i=0; i < house.size(); i++) { 
     price = house.getItem(i).getPrice(); 
     quant = house.getItem(i).getQuantity(); 

     value += price*quant; 
    } 

    return value; 
} 
0

작동, 아무것도 반대로 0.0로 시작하는 두 배의 값을 설정했다 price 또는 getPrice()getQuantity()에 의해 반환 된 quantity 값은 0을 반환하므로 value 변수가 변경되지 않습니다.

이것은 쉽게 디버깅 할 수 있습니다. 실행이 완료

for (int i=0; i < house.size(); i++) { 
     price = house.getItem(i).getPrice(); 
     quant = house.getItem(i).getQuantity(); 

     value += (price*quant); 

     System.out.println("\nRound #" + i + ": value = " + value + ", price = " + price + ", quant = " + quant); 
    } 

후 모든 값의 세부 사항 확인 및 검증 할 수있을 것입니다 다음과 같이 예를 들어, for 루프는 print 문을 포함 할 수있다.

+0

가격과 퀀트 변수에서 0을 반환하면 여전히 값인 0과 같은 값을 가지므로 반환하게됩니다. 또한 그들은 0을 반환하지 않으며 현재 작동하고 있습니다. 나는 2 일 또는 그 무언가에 대한 답변을 말하지 않을 답변을했습니다. –

관련 문제