0
I am new to programming language and would like to know if anyone can help me, here is the following problem:
PS: I know the error is because I am using my object limit, but I do not want the error program, I want it to return to the menu (it was also created)
public static int Q = 1;
public static int indice = 0;
Produto[] pp = new Produto[Q];
public void execCadastro() {
Scanner cad = new Scanner(System.in);
this.pp[indice] = new Produto();
if(indice >= Q){
System.out.println("Todos os espaços foram preenchidos");
return;
}else
System.out.println("Codigo: ");
int codigo = cad.nextInt();
this.pp[indice].setCodigo(codigo);
cad.nextLine();
System.out.println("Descricao: ");
String desc = cad.nextLine();
this.pp[indice].setDescricao(desc);
System.out.println("valor: ");
double value = cad.nextDouble();
this.pp[indice].setValor(value);
indice++;
}
public void execImprimir() {
Scanner imp = new Scanner(System.in);
if(indice > 0) {
System.out.println("Qual produto deseja ler?");
int pos = imp.nextInt();
if(pos < 0 || pos>2) {
System.out.println("Produto Inexistente.");
}else {
this.pp[pos].Imprimir();
}
}else {
System.out.println("Nenhuma conta foi criada.");
}
}
public void execDesconto() {
Scanner desc = new Scanner(System.in);
if(indice > 0) {
System.out.println("Qual produto deseja ler?");
int pos = desc.nextInt();
if(pos < 0 || pos>2) {
System.out.println("Produto nao existe");
}else {
System.out.println("Qual o valor de desconto? ");
int valor = desc.nextInt();
this.pp[pos].desconto(valor);
}
}else {
System.out.println("Nenhuma conta foi criada.");
}
}
public void execParcela() {
Scanner parc = new Scanner(System.in);
if(indice > 0) {
System.out.println("Qual produto deseja ler?");
int pos = parc.nextInt();
if(pos < 0 || pos>2) {
System.out.println("Produto nao existe");
}else {
double valor = this.pp[pos].getValor();
int ret = this.pp[pos].parcelar(valor);
if(ret == 0) {
System.out.println("Valor nao pode ser parcelado.");
}else {
System.out.println("Valor Parcelado");
}
}
}
}
public static void main(String[] args) {
PrincipalProduto obj = new PrincipalProduto();
Scanner sc = new Scanner(System.in);
int op = 0;
while (op != 9){
System.out.println("Entre com o teclado com qual opção deseja seguir. ");
System.out.println("1 - Cadastro");
System.out.println("2 - Imprimir");
System.out.println("3 - Desconto");
System.out.println("4 - Parcela");
System.out.println("9 - Sair");
op = sc.nextInt();
switch(op){
case 1:
obj.execCadastro();
break;
case 2:
obj.execImprimir();
break;
case 3:
obj.execDesconto();
break;
case 4:
obj.execParcela();
break;
}
}
}
}
As I said, the problem is in the Register... which does not return me to the menu at the time the vector limits to 2.
– Douglas Resende
I also tested by assigning value to the index in the if, which corresponds correctly in the execution, but do not want so, I want it to receive the value Q as parameter.
– Douglas Resende