2011-10-20 3 views
0

"while"루프, "프롬프트"및 "경고"를 사용하여 간단한 자바 스크립트를 작성하려고합니다. 나는 그가 얼마나 많은 항목을 물어볼 것인지 물어보기를 원한다. 그는 내가 입력 한 번호를 가져 와서 가격에 대해 동일한 수의 프롬프트를 반환하고 싶다. 그런 다음 while 루프를 사용하여 그 가격을 합산하려고한다. 당신이 볼 수 있듯이, 나는 대부분이자바 루프, 합계 및 출력

<html> <head> <title> Meal Total </title> 
    <script language="JavaScript"> 
     var result; 
     meal=prompt("Number of Items: "); 
    </script> <script language = "JavaScript"> 
var tip = 1.07; </script> 
</head> <body bgcolor = "white"> <center> <script language = "JavaScript"> 
if (meal> 0) { 
    var index = 0; 
    while (index < meal) { 
     prompt("price of the item"); 
     index = meal; 
    } 
}; 
else if (meal == 0) { 
    alert("Number is 0"); 
} else if (meal <0) { 
    alert("You entered is negative"); 
} </script></center> </body></html> 

: 내가 지금까지 가지고있는 것 모든 일에 7 %의 판매 세를 추가하고 그래서 여기

경고 창에서 총을 인쇄 코딩이 완료되었습니다. 입력 된 숫자가 음수이거나 0을 감지했습니다. 나는 followign 것들을 수정해야합니다 : 첫째, 왜 그것은 입력 값에 주어진 프롬프트의 수를 무시합니까? 두 개를 열면 프롬프트 창이 하나만 표시됩니다. 둘째, 프롬프트 상자의 합계는 어떻게됩니까?

+0

이것은 확실히 숙제와 같습니다 ... 당신은 루프 카운터를 증가시키는 방법을 살펴 봐야합니다. – David

+0

다른 힌트가 있습니다. 색인을 증가시키지 마십시오. 가격 프롬프트의 결과를 저장하지 마십시오. – David

+0

Another :'prompt'는 문자열을 반환하기 때문에 예기치 않은 동작을 피하기 위해'parseInt'를 사용해야합니다. –

답변

0

당신이해야 코드 조금 정리 :

  • 들여 모든 것을 그들이 아무것도 추가하지 않기 때문에
  • <center>bgcolor="white" 부분을 제거 좀 더 쉽게 읽을 수 있도록하기 - 당신의 <center> 요소가 비어을하고, 페이지는 기본적으로 흰색이며 bgcolor은 더 이상 사용되지 않습니다.
  • 모든 자바 스크립트 코드는 한 블록에 있어야하며 세 개가 필요하지 않습니다. 또한 모든 JavaScript를 본체에 혼합하는 대신 머리 부분에 넣어야합니다.
  • }if 이후에 ;으로 인해 코드가 작동하지 않아야하지만 부분적으로 작동했기 때문에 문제가되지 않을 수 있습니다. 그래도 ; 초 후에 if 절을 넣지 마십시오.

작동 버전 : http://jsfiddle.net/pimvdb/2dqSr/.

var result = 0; // result is 0 at first 
var meal = +prompt("Number of Items: "); // convert into a number with + 
var tip = 1.07; 

if (meal > 0) { 
    var index = 0; 
    while (index < meal) { 
     var price = +prompt("price of the item"); 
     result = result + price; // add price to result 
     index++; // increment index, so that while loop will stop after 'meal' times. 
       // If you set it to 'meal' directly, then 'index' will be equal to 
       // 'meal' after the first iteration, and the while loop will only 
       // run once (after the first iteration 'index < meal' is false). 
    } 
    alert(result * tip); // alert total price * tip 

} else if (meal == 0) { 
    alert("Number is 0"); 

} else if (meal < 0) { 
    alert("You entered is negative"); 
} 
+0

질문이 하나 있는데 ... "+ 프롬프트"에서 +와 프롬프트 사이에 공백이 없어야합니까? – Chris

+0

@Chris : 자바 스크립트에서는 공백이 거의 필요 없으며 가독성을 향상시킵니다. 여기서 '+'는 단순히 숫자임을 의미합니다. 또한 공백없이 '-5'및 '+5'와 같은 양수/음수와 비교할 수 있습니다. – pimvdb

0

이게 당신이 찾고 있는게 있나요? 당신의 범인의

var items = 0, prices = [], tempPrice = 0; 
while (isNaN(items) || items <= 0) { 
    items = parseInt(prompt('How many meals?'), 10); 
} 
for (var i=1; i <= items; i++) { 
    tempPrice = 0; 
    while (isNaN(tempPrice) || tempPrice <= 0) { 
     tempPrice = parseFloat(prompt('Price for meal ' + i + '?')); 
    } 
    prices.push(tempPrice); 
} 
alert('You ate ' + items + ' meals, their prices were ' + prices.join(",")); 
+0

거의 그렇지만 배열로 출력하지 않고 두 번째 입력을 합산하려면 어떻게해야합니까? – Chris

+0

배열을 반복하고 합합니다. – James

0
}; 
else if (meal == 0) { 

. 세미콜론을 꺼내십시오. JavaScript 나 개발에 익숙하지 않은 것처럼 들리니, 다음과 같이하면 도움이 될 것입니다. Firefox 오류 콘솔을 새 창에서 열어 두십시오. 그게 바로 배트에서 당신에게 문법 오류가 있다는 것을 보여줬을 것입니다.

+0

아무 것도 변경하지 않았습니다. – Chris