Ola pessoal
estou com o seguinte problema.
estou fazendo um programa pra calcula a minha media
e queria que fosse feita alguma validaçao quando o usuario entrasse com os dados…
mas nao estou conseguindo
dêm uma olhada no codigo abaixo
Amigo, ve se o código abaixo te ajuda!!! fiz algumas modificações, como por exemplo: mudei o private para public nos metodos, para podermos ter o esquema de herança e encapiculamento…
import java.io.File;
import java.util.Scanner;
public class AlunoNota {
private String nome;
private double p1;
private double p2;
private double media = 0;
private final double p1Fator = 0.4;
private final double p2Fator = 0.9;
private boolean ErroNota = false;
File file;
public AlunoNota () {
entraNota();
}
//void entraNota()
public void entraNota(){
Scanner entrada = new Scanner(System.in);
nome = new String();
System.out.println("Entre com o nome do aluno: " );
//seta o nome
seNome( nome = entrada.next() );
boolean ErroNota = false;
do{
//Nota P1
System.out.println("Entre com a nota da P1: ");
setP1( new String(entrada.next()));
//Nota P2
System.out.println("Entre com a nota da P2: ");
setP2( new String(entrada.next()));
}while(ErroNota);
imprimir();
}
public void setP1(String string){
String nota1 = string;
/*
* instancie novamente o scanner para pode, pedi para o usuario entrar com os dados novamente.
* lembrando que: scanner será uma variavel de instancia local ou seja, só vai durar enquanto esse metodo
* estiver sendo usado.
*/
Scanner entrada = new Scanner(System.in);
//primeiro iremos converter o valor para um double...
p1 = Double.parseDouble(string);
//agora vamos validar, o valor...
if(p1 < 0 || p1 > 10){
//se for menor que zero ou for maior que 10...
ErroNota = false;//sete com false...
System.out.println("Favor digitar a Nota Novamente...");//emite mensagem de erro...
System.out.println("Entre com a nota da P1: "); //solicite os dados novamente...
setP1( new String(entrada.next())); //faça uma recursiva para passar os dados novamente...
}else
ErroNota=true;//se tiver correto sete como true para mudar para o proximo campo.
}
public void setP2(String string) {
//Vamos fazer a mesma coisa aqui...
String nota1 = string;
Scanner entrada = new Scanner(System.in);
p2 = Double.parseDouble(string);
if(p2 < 0 || p1 > 10){
ErroNota = false;//
System.out.println("Favor digitar a Nota Novamente...");
System.out.println("Entre com a nota da P2: ");
setP1( new String(entrada.next()));
}else
ErroNota=true;
}
public void seNome(String nm) {
this.nome = nm;
}
public String getNome() {
return nome;
}
public double getP1() {
return p1;
}
public double getP2() {
return p2;
}
public void imprimir(){
System.out.println("Aluno:" +this.getNome()+"\n"+"P1:"+this.getP1()+"\n"+"P2:"+this.getP2());
}
}
vc quer que o programa entenda quando se digita uma String no lugar de p1 e p2? Se for isso é bem simples:
vc deve utilzar o try catch com o NumberFormatException para tratar isso.
se vc não sabe tratar exception eu sugiro que dê uma olhada aqui pelo forum que eu tem bastante material sobre isso. É que agora estou sem tempo pra ver isso pra vc.