2016-09-12 2 views
-2

입력 한 숫자가 프로그램 끝의 합계에 합산되지 않는 이유는 무엇입니까?while 루프가 의도 한대로 작동하지 않습니다.

 int data; 
     int sum = 0; 


     int count =0; 
     do { 
     System.out.print("Please enter a number: "); 
     data = input.nextInt(); 
     count++; 
     }  


     while (count < 10); 



     while (sum !=0) 

     break; 

     System.out.println("The total is " + sum); 

    } 
} 
+0

왜 무의미한 while 루프가 있고 for 루프를 사용하지 않는 이유는 무엇입니까? 또한 'sum'을 늘리지도 않으므로 무엇을 기대합니까? – Li357

+3

어떻게 될 수 있습니까? 당신은 0의 초기 할당 후에'sum'의 값을 절대로 바꾸지 않을 것입니다. 또한 do-while 루프는 이상하게 보이고 분리됩니다. 'while'을'}'과 같은 줄에 넣으십시오. --- 그리고 while (sum! = 0) break; 루프가하고있는 일은 무엇이라고 생각합니까? 왜 그렇게 생각합니까? --- 마지막으로, 값을 가져 와서 '데이터'에 할당 한 후에 값을 무언가에 사용하고 싶지 않으십니까? – Andreas

+0

어떤 이유에서 라인이 복사되지 않았기 때문에 "sum + = data;" 내 두 번째 성명 이상. 나는 "휴식;"을 포함시켜야했다. 왜냐하면 그것 없이는 내 프로그램이 끊임없이 입력 된 마지막 번호를 추가하기 때문입니다. –

답변

1

는 까지와 ++ 카운트 후 깔끔한 일을 수 있습니다; 예를 들어 가치를 합산하는 행을 추가합니다. 합계 + = 데이터;

int data; 
int sum = 0; 
int count =0; 
do { 
    System.out.print("Please enter a number: "); 
    data = input.nextInt(); 
    count++; 
    sum += data;  // new line here to sum value 
} while (count < 10); 

System.out.println("The total is " + sum); 
+0

와우! 너무 감사합니다. 아무 이유없이 거기에 여분의 전화가있었습니다. 나는 sum + = data를 가졌다; 거기에 줄을 써서, 왜 이걸 복사하지 않았는 지 모르겠지만, 나는 그 두 번째 선언문 위에 그것을 가지고있다. 나는 멍청이야. –

+0

도움이 될 수있어서 기쁩니다.이 대답이 도움이된다면 upvote 및/또는 수락을 고려하십시오. - 감사합니다. –

0

코드를 분해하면 문제가있는 곳을 알 수 있습니다.

변수를 초기화하십시오.

int data; 
    int sum = 0; 


    int count =0; 

이 부분은 올바른 것 같습니다.

그런 다음 첫 번째 루프를 시작하여 사용자로부터 데이터를 가져옵니다.

do { 
    System.out.print("Please enter a number: "); 
    data = input.nextInt(); 
    count++; 
    }  


    while (count < 10); 

여기서 우리는 때마다 우리는 inputed 값 변수 '데이터'로 설정 루프를 반복하고, 카운터를 증가시킬 것을 알 수있다. 루프가 10 번 실행됩니다. 우리는 루프를 종료 시점에서

다음과 같이 변수가 설정 될 수 있습니다

data = `last number entered by the user` 
    sum = 0 
    count = 10 

이제 우리는 마지막 루프 봐.

while (sum !=0) 

    break; 

'sum'= 0이므로 루프를 입력하지 않습니다.

마지막으로 print 문이 있습니다.

System.out.println("The total is " + sum); 

부터 당신이 inputed 데이터의 합계를 얻어야한다

다음
do { 
    System.out.print("Please enter a number: "); 
    data = input.nextInt(); 
    sum = sum + data; 
    count++; 
}  


while (count < 10); 

'합'= 0 당신이 당신의 첫번째 루프를 수정하면 The total is 0

을 말할 것이다 인쇄 된 선 ... .

'sum'이 0이 아니더라도 두 번째 루프가 제거되어야합니다. 루프에 들어가서 즉시 break 문을 치면 루프가 종료됩니다.

관련 문제