Contido deste apartado:
✅ Ler non é o mesmo que validar
Se pedimos unha nota enteira entre 0 e 10, temos que comprobar dúas cousas: que o texto sexa un enteiro e que estea nese intervalo.
Neste exemplo repetimos a pregunta ata obter unha nota válida. Se remata a entrada, saímos do programa. return dentro de main() remata esa función.
import 'dart:io';
void main() {
while (true) {
stdout.write('Nota de Xurxo (enteiro de 0 a 10): ');
String? texto = stdin.readLineSync();
if (texto == null) {
print('Rematou a entrada');
return; // Evitamos seguir preguntando se xa non hai entrada.
}
int? nota = int.tryParse(texto.trim());
if (nota == null) {
print('Escribe un número enteiro');
continue; // Volvemos ao principio do bucle.
}
if (nota < 0 || nota > 10) {
print('A nota debe estar entre 0 e 10');
continue;
}
print('Nota gardada: $nota');
break; // Só chegamos aquí cando a nota é válida.
}
}
while (true) repite sen límite por si só. Aquí controlamos a saída con break e return. Proba a escribir oito, deixar a liña baleira, introducir 12 e, por último, 8.
Non usamos ?? 0 para corrixir a nota: un dato incorrecto non significa que o alumno teña un cero.