проверка не работает в программе, если вы ввели неверный ответ и неверное оповещение для другого запроса - PullRequest
0 голосов
/ 14 января 2020

function studentName(x) {
  while (x == '' || x >= 0 || x < 0) {
    if (x == '') {
      x = prompt('Cannot leave field blank. Enter again');
    } else if (x >= 0) {
      x = prompt('Cannot Enter a number. Enter again')
    } else {
      x = prompt('Cannot Enter a number. Enter again')
    }

  }
  return (x)
}


function studentScore(y) {
  while (y == '' || y > 100 || y < 0 || isNaN(y)) {

    if (y == '') {
      y = parseFloat(prompt("Cannot leave field, blank please enter students score"));
    } else if (y > 100 || y < 0) {
      y = parseFloat(prompt("Invalid score, please enter a score 0-100"));
    } else {
      y = parseFloat(prompt("Invalid score, please enter a score 0-100"));
    }

  }
  return (y)
}


function another(z) {
  while (z == '' || z != 'n' && z != 'N' && z != 'y' && z != 'Y') {

    if (z != 'n') {
      z = prompt('Invalid Option. Enter another score Y or N')
    } else if (z != 'N') {
      z = prompt('Invalid Option. Enter another score Y or N')
    } else if (z != 'y') {
      z = prompt('Invalid Option. Enter another score Y or N')
    } else if (z != 'Y') {
      z = prompt('Invalid Option. Enter another score Y or N')
    } else if (z == '') {
      z = prompt('Invalid Option. Enter another score Y or N')
    }
  }
  return (z)

}

var names = []
var scores = []
var redo = true
var anotherName
var redo2
var retry = true
var anotherScore
var retry2
var i = 0
var a = 1
var score = 0
while (redo == true) {
  var studentNames = prompt('Enter student name');
  var name = studentName(studentNames);
  names.push(name)
  while (retry == true) {
    var studentScores = parseFloat(prompt('Enter student score'));
    score = score + studentScore(studentScores);

    retry = prompt('Enter another score? Y/N');
    retry2 = another(retry);
    if (retry == 'y' || retry == 'Y') {
      retry = true
      a++
    } else if (retry == 'n' || retry == 'N') {
      retry = false
    }
  }
  score = score / a
  scores[i] = score
  redo = prompt('Enter another student? Y/N');
  redo2 = another(redo);

  if (redo == 'y' || redo == 'Y') {
    redo = true
    retry = true
    i++;
    a = 1
    score = 0
  } else if (redo == 'n' || redo == 'N') {
    redo = false
  }
}
var message = ""
for (y = 0; y < names.length; y++) {
  alert(names[y] + " - " + scores[y]);
}

когда его спрашивают, хочет ли человек ввести другой результат, и Y или N, и я ввожу что-то, xi действительно получают приглашение, которое говорит, что введите другой результат, но как только я скажу да, вместо того, чтобы просить счет, он сразу спрашивает, хочу ли я ввести другого студента, вместо того, чтобы просить счет, также, когда вы вводите что-то, что должно быть недействительным, вы застреваете с той же проблемой, но сначала немного отличаетесь. Неверный ввод другого балла, а не другого ученика, и если вы введете Y для «да», программа останавливается.

спасибо за помощь!

, вероятно, лучше всего запустить программу немного, чтобы полностью asp проблема, трудно объяснить проблему.

1 Ответ

0 голосов
/ 14 января 2020

Ваша основная проблема - эти 3 строки

retry = prompt('Enter another score? Y/N');
retry2 = another(retry);
if(retry == 'y' || retry == 'Y')
{
   ...

Вы используете только первый ввод (retry) в вашем if выражении (что может быть неверным вводом). Если это неверный ввод, retry2 будет содержать действительный вход (но вы не используете его в своем if условии).

Вы игнорируете вторую попытку и используете первый недействительный вход, который выходит из вашего оценка ученика while l oop, потому что retry - неверный ввод, а не true.

Это можно исправить, просто изменив retry2 = another(retry); на retry = another(retry);

I также предложил бы использовать отдельные переменные для оператора while и вашей переменной приглашения.

также похоже, что у вас возникнет та же проблема с redo и redo2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...