Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проблема с циклом While! (https://javascript.ru/forum/misc/70070-problema-s-ciklom-while.html)

frdmHckr 08.08.2017 15:48

Проблема с циклом While!
 
Здравствуйте! Я тут новенький. Помогите с решением данной проблемы:
После ввода букв, например, или цифр, которые не предусмотрены в условии, после того, как алерт мне дал знать, что я ввожу не верное значение для продолжения, даже если ввести 1, что в условии, то всё равно алерт говорит, шо "Неизвестный номер операции!"
Кажется, тут совсем глупая ошибка, но всё же, помогите!:) ;)
<meta charset="utf-8">
<script>
	var Num = parseInt(prompt("Здравствуйте! Это конвертер валют! Чтобы перевести рубли в доллары/евро, введите 1; чтобы доллары в рубли/евро, введите 2; чтобы евро в рубли/доллары, введите 3"));

	while (Num != 1 || Num != 2 || Num != 3) {
		alert("Неизвестый номер операции!");
		Num = parseInt(prompt("Попробуйте ещё раз! Чтобы перевести рубли в доллары/евро, введите 1; чтобы доллары в рубли/евро, введите 2; чтобы евро в рубли/доллары, введите 3"));
	}

	if (Num == 1) {
		var doll = 60;
		var eur = 70;

		var rub = parseFloat(prompt("Введите сумму (₽), которую нужно перевести в доллары/евро"));

		while (isNaN(rub)) {
			alert("Вы ввели не число, попробуйте ещё раз!");
			rub = parseFloat(prompt("Введите сумму (₽), которую нужно перевести в доллары/евро"));
		}
		alert(rub + "₽ = " + ((rub / doll).toFixed(2)) + "$ и " + ((rub / eur).toFixed(2)) + "€");
	}

	if (Num == 2) {
		var rub = 60;
		var eur = 0.85;

		var doll = parseFloat(prompt("Введите сумму ($), которую нужно перевести в рубли/евро"));

		while (isNaN(doll)) {
			alert("Вы ввели не число, попробуйте ещё раз!");
			doll = parseFloat(prompt("Введите сумму ($), которую нужно перевести в рубли/евро"));
		}
		alert(doll + "$ = " + ((doll * rub).toFixed(2)) + "₽ и " + ((doll * eur).toFixed(2)) + "€");
	}

	if (Num == 3) {
		var rub = 70;
		var doll = 1.18;

		var eur = parseFloat(prompt("Введите сумму (€), которую нужно перевести в рубли/доллары"));

		while (isNaN(eur)) {
			alert("Вы ввели не число, попробуйте ещё раз!");
			eur = parseFloat(prompt("Введите сумму (€), которую нужно перевести в рубли/доллары"));
		}
		alert(eur + "€ = " + ((eur * rub).toFixed(2)) + "₽ и " + ((eur * doll).toFixed(2)) + "$");
	}
</script>

ksa 08.08.2017 16:40

frdmHckr, начнем с того, что у тебя плохой алгоритм... У тебя много повторяющихся кусков, такого быть не должно.

Так же начинай учиться тестировать свой код. Если ты сомневаешься в условии цикла - выводи его на экран или консоль, дабы понять с чем ты имеешь дело. ;)

ksa 08.08.2017 16:43

frdmHckr, так же есть циклы с постусловием... ;)


Часовой пояс GMT +3, время: 17:30.