2014-12-15 2 views
-2

아래의 JavaScript 코드는 피타고라스 정리를 사용하여 직각 삼각형과 연결된 값을 계산하려고합니다. 계산을 실행하기 전에 수행되는 입력의 다양한 조합을 감지하는 부분에 문제가 있습니다. 그것은 일련의 if 문장 일 뿐이며 모두 비슷하지만 마지막 명령은 실행되지 않습니다.문이 실행/도달하지 않는 경우

I made a fiddle 일부 사용자의 경우 코드가 엉망입니다.

여기에 내가 함께하는 데 문제가 함수의 : 일종의 괜찮 (컴퓨팅은 A가 cathetus B와 빗변 주어진 cathetus)

function drawNumbers() { 
    if(cathetusAKnown) { 
     cathetusA.value = cathetusANumber; 
    } 

    if(cathetusBKnown) { 
     cathetusB.value = cathetusBNumber; 
    } 

    if(hypotenuseKnown) { 
     hypotenuse.value = hypotenuseNumber; 
    } 

    if(angleAKnown) { 
     angleA.value = angleANumber; 
    } 

    if(angleBKnown) { 
     angleB.value = angleBNumber; 
    } 
} 

function calculate() { 
    updateNumbers(); 

    //If CathetusA and B are known, calculate the rest 
    if(cathetusAKnown && cathetusBKnown) { 
     if(!hypotenuseKnown) { 
      calcHypotenuse(); 
     } 

     if(!angleAKnown) { 
      calcAngleA(); 
     } 

     if(!angleBKnown) { 
      calcAngleB(); 
     } 
    } 

    //If CathetusA and the hypotenuse are known, calculate the rest 
    if(cathetusAKnown && hypotenuseKnown) { 
     if (!cathetusBKnown) { 
      calcCathetusB(); 
     } 

     if(!angleAKnown) { 
      calcAngleA(); 
     } 

     if(!angleBKnown) { 
      calcAngleB(); 
     } 
    } 

    //If CathetusB and the hypotenuse are known, calculate the rest 
    if(cathetusBKnown && hypotenuseKnown) { 
     if (!cathetusAKnown) { 
      calcCathetusA(); 
     } 

     if(!angleAKnown) { 
      calcAngleA(); 
     } 

     if(!angleBKnown) { 
      calcAngleB(); 
     } 
    } 

    drawNumbers(); 
} 
+0

두 번째 마지막으로 하나가 예외를 throw합니까? 오류가 발생하고 있습니까? – Bergi

+0

Chrome의 JS 콘솔을 살펴 보았습니다. 그러나 볼 수있는 한 오류가 발생하지 않았습니다 .. – Elias

+0

어떻게 알 수 있습니까? 필드가 givens이고 어떤 것이 미지인지, 특히 "계산 ..."을 두 번째로 누르는 경우? –

답변

1

마지막 경우 만 공식은 잘못된 것입니다.

은 당신이 a = sqrt(hyp² - b²)을 알고 대신 당신이 음수의 제곱근을 복용 할 것이기 때문에이 NaN가 발생합니다 반대 ( sqrt(b² - hyp²))를 계산하고 hyp² = a² + b² 감안할.

또 다른 오류는 그것이 NaN 제공하지 않습니다 (다른 유사한 경우에 존재하지만 이 빗변의 제곱과 cathetus의 제곱이을 추가하고 있기 때문에 결과는 잘못된 것입니다. 어쩌면

+0

고마워요! 나는 이것을 간과 했음에 틀림 없어! 나는 그런 바보 야. 롤. "다른 유사한 경우"로 무엇을 참고 하시겠습니까? – Elias

+0

@Elias : cathetus B는 cathetus A와 hypotenuse로 계산됩니다. 빼기 (hyp-cat) 대신에 덧셈을 사용하고 있습니다. – 6502

+0

아, 알겠습니다. 내가 이걸 만들었을 때 나는 아주 졸 렸을거야. 글쎄, 도와 줘서 고마워! – Elias