2015-02-27 2 views
0

Мой цикл, кажется, работает хорошо, как я могу ввести стольких входы, как по запросу пользователя, но когда дело доходит до расчета ошибки вне или распечаток «Ваш средний балл: NaN»GPA калькулятор Math Issue

Просто пытаясь понять, что я делаю неправильно, насколько это касается моей математики. Заранее спасибо.

<script type ="text/javascript"> 
      <!-- 
      var grades = prompt("How many grades are you entering?"); 
      grades = Number(grades); 
      var total; 
      total = Number(total); 
      var dec = Number(dec); 
      for (i = 0; i < grades; i++){ 
       prompt("Enter letter grade[A-E]: "); 
      } 
      if(i.equals("A")){ 
       dec = 4; 
       total += dec; 
      } 
      else if (i.equals("B")){ 
       dec = 3; 
       total += dec; 
      } 
      else if (i.equals("C")){ 
       dec = 2; 
       total += dec; 
      } 
      else if (i.equals("D")){ 
       dec = 1; 
       total += dec; 
      } 
      else if (i.equals("E")){ 
       dec = 0; 
       total += dec; 
      } 

      var GPA; 
      GPA = Number(GPA); 
      GPA = total/grades; 

      document.write("Your GPA is: "+ GPA); 


      //--> 
     </script> 
+0

Java удален из вашего названия и ваших тегов, так как ваш вопрос имеет ** ничего ** сделать с этим языком. Обратите внимание: если вы неправильно пометите свой вопрос, вы не получите правильных экспертов для его рассмотрения, и это может повредить вашим шансам получить достойную помощь. –

+0

'var total; total = Number (total); 'инициализирует его как' NaN'; то же самое с 'dec'. Что вы на самом деле хотите сделать? – Bergi

+0

Извините, новый и на этом сайте, и на языке javascript. – StevieP

ответ

0

Вы, кажется, считают, что нужно объявить тип переменной, используя утверждение типа

var dec = Number(dec); 

Нет, вы не знаете. В JavaScript переменные не имеют типов, но только значения. Что происходит для dectotal и GPA), что оно имеет значение undefined, которое оно было инициализировано, и позвонив по номеру Number function, вы просто передали его NaN, прежде чем переназначить его на свою переменную. Не делай этого!

  • Для grades, то Number() бросок необходимо, потому что grades это строка, возвращенная из prompt(). Вы хотите разобрать его на номер и переназначить это на grades, что хорошо.
  • total следует просто инициализировать цифрой 0.
  • dec не требуется.

Btw, не существует метода .equals в JavaScript, похоже, вы смешиваете язык с Java. Просто используйте оператор ==. Вы также пропустили декларацию var за i, ничего не сделали с запрошенными оценками, и суммирование было поставлено после вашего цикла вместо того, чтобы иметь дело с каждым из введенных оценок.

var grades = prompt("How many grades are you entering?"); 
grades = Number(grades); 
var total = 0; 
for (var i = 0; i < grades; i++) { 
    var grade = prompt("Enter letter grade[A-E]: "); 
    if (grade == "A") 
     total += 4; 
    else if (grade == "B") 
     total += 3; 
    else if (grade == "C") 
     total += 2; 
    else if (grade == "D") 
     total += 1; 
    else if (grade == "E") 
     total += 0; 
} 
var GPA = total/grades; 
document.write("Your GPA is: "+ GPA); 
+0

Спасибо, новичок в языке. Теперь, когда это разрешилось. Кажется, что я полностью пропустил свой код вычисления GPA и свой document.write. – StevieP

+0

Вы не поставили его в цикле, ваше значение итерации 'i' (которое имеет то же значение, что и« классы », когда цикл запущен) будет сравниваться с этими строками. Я исправил все ошибки в своем ответе. – Bergi

+1

Большое спасибо. Похоже, у меня есть некоторые привычки Java, которые нужно сломать. – StevieP

Смежные вопросы