Acabei por não usar o argumento SET() nas validações, fui direto criando uma nova função de retorno e invalidando. Há algum erro no encapsulamento nisso?
programa principal
import java.util.Scanner;
public class ValidarPrecos {
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);
while(true){
System.out.println("Informe o nome do produto:");
String nome_produto = teclado.nextLine();
double va
lor_produto = ValidarNumeros.ValidarNumerosDouble(teclado, "Informe o valor do produto");
teclado.nextLine();
CadastrandoPreços preco = new CadastrandoPreços(nome_produto, valor_produto);
preco.ValidandoPrecos();
System.out.println("");
System.out.println("Quer continuar? [S/N]");
char c = teclado.next().toUpperCase().charAt(0);
while(c!='S' && c!='N'){
System.out.println("Inválido ! Apenas SIM ou NÃO !");
c = teclado.next().toUpperCase().charAt(0);
}if(c=='S'){
System.out.println("Continuando !");
teclado.nextLine();
}else {
System.out.println("Finalizando o programa !");
break;
}
}
}
}
Classe de encapsulamento
public class CadastrandoPreços {
private String nome_produto;
private double preco_produto;
public CadastrandoPreços(String nome_produto, double preco_produto) {
this.nome_produto = nome_produto;
this.preco_produto = preco_produto;
}
public void ValidandoPrecos(){
if(preco_produto<0){
System.out.println("Valor negativo desconsiderado !");
System.out.printf("Informações do produto:\nNome: %S\nValor: R$ 0,00", nome_produto);
}
else {
System.out.printf("Informações do produto:\nNome: %S\nValor: R$ %.2f\n", nome_produto, preco_produto);
}
}
}