tenho aqui um programa que pede pra parar quando o usuário clica enter, alguém ajuda? urgente
import java.util.Scanner;
public class TestaSomatorio{
public static void main{
Scanner teclado=new Scanner(System.in);
System.out.println("Insira o seu nome");
String nome=
do{
System.out.println("Insira o número de avaliações");
int numaval=teclado.nextInt();
if(numaval<3){
System.out.println("Insira o número de avaliações");
}
} while(numaval<3);
int notas=0
for(int i=0;i<numaval;i++){
System.out.println("Insira o valor da nota");
double nota=teclado.nextDouble();
notas=notas+nota;
media=notas/numaval;
if(media>10){
System.out.println(nome+"Aprovou com "+media+"valores");
else
System.out.println(nome+"Reprovou com"+media+"valores");
}
}
}
}
o que existe é que, dependendo da interface de entrada, provavelmente vc tem um buffer de caracteres, e o enter vai envia-los de fato. esse buffer existe por uma série de motivos ( para vc editar quando digitou errado com backspace, performance, compatibilidade com antigos terminais seriais/ teletipo, etc ).
a primeira dica é vc sempre imprimir o que esta acontecendo.
por exemplo, vc le o numero de avaliações, e verifica se é menor do que 3 e força um loop. vc pode dar uma mensagem mais clara ( tipo ERRADO, vc inseriu x e tem q ser maior que y , ou Reprovou com media x quando o minimo é y)
alem disso vc pode colocar umas mensagens “Ó acabei de ler …” para entender o que acontece.
por ultimo, vc esta calculando a media dentro do loop for. inclusive o codigo esta identado corretamente mas os blocos lexicos não. coloque o } depois do notas=notas+nota; e apague o } extra depois do if /else da media.
tome cuidado com divisões inteiras. elas retornam um inteiro truncado. talvez media devesse ser um float
Desculpa, não fui clara ao expor… é suposto o programa parar de ser executado quando o usuário primir a TECLA enter, não letra. E Obrigada pelas observações.