Problema com entrada e Arrays

10 respostas
java
V

Galera, estou com um problema em um programa. Segue:

Formato de Entrada:
Consiste de um inteiro Q, representando o número de produtos a serem cadastrados. Depois, segue o cadastro dos Q produtos, onde serão lidos para cada produto:

um inteiro representando um código,

uma descrição do produto

e um número real representando o preço.

Depois, são lidos os pedidos.

O pedido consiste do código do produto e da quantidade de itens daquele produto que será pedido. O pedido se encerra quando o código lido é igual a 0.

Formato de Saída:
O valor que o cliente deve pagar, formatado com duas casas decimais. Pedidos inválidos são ignorados.
Exemplo de entrada:

3 //número de produtos a serem cadastrados.
501 //um inteiro representando um código
Guarana Antartica //uma descrição do produto
1.50 //um número real representando o preço.
101 //um inteiro representando um código
Coxinha //uma descrição do produto
2 //um número real representando o preço.
10 //um inteiro representando um código
Cheese Frango //uma descrição do produto
3.50 //um número real representando o preço.
501 //agora o programa soma os produtos pedidos: foram pedidos dois produtos com do código
2 501 e 3 produtos com código 101.
101
3
0 //termina depois de receber 0.

Saída:
9.00

10 Respostas

J

Veja como eu fiz.
Tente acrescenter o que está faltando…

package brinc;

import java.util.Scanner;

public class EX9

{ public static void main(String args[])

{ Scanner entrada = new Scanner(<a href="http://System.in">System.in</a>);
Item itens_nota[];
itens_nota = new Item[10];

int i,codigo_busca, qtdProduto, achou, op1, op2;
int  produto_livre, codigo;

    Produto produto[];

System.out.print("Informe a quantidade de produtos a serem incluidos: ");
    qtdProduto = entrada.nextInt();
    produto = new Produto[qtdProduto];
    

for (i=0;i<10;i++)
	{ itens_nota[i] = new Item();
	}

produto_livre = 0;
    
do { 
            System.out.println("----------------------------------------------");
            System.out.print("Menu de Opcoes");
	System.out.print("\n1 - Produto");
	System.out.print("\n2 - Consultas");
	System.out.print("\n3 - Sair");
	System.out.print("Digite sua opcao ");
	op1 = entrada.nextInt();
	if ((op1 < 1) || (op1 > 4))
		 System.out.println("\nOpcao invalida, digite novamente ");
	if (op1 == 1)
		{ do
			{ 
                              System.out.println("----------------------------------------------");
                              System.out.print("Sub-menu de Opcoes");
			  System.out.print("\n1 - Incluir produtos");
			  System.out.print("\n2 - Alterar produtos");
			  System.out.print("\n3 - Excluir produtos");
			  System.out.print("\n4 - Sair ");
			  System.out.print("\nDigite sua opcao ");
			  op2 = entrada.nextInt();

			  if ((op2 < 1) || (op2 > 4))
			   	 System.out.println("\nOpcao invalida, digite novamente");


			  if (op2 == 1)
				 { System.out.println("\nInclusao de Produtos");
                                    
                                      
                                        for (i=0;i<qtdProduto;i++) { 
                                            produto[i] = new Produto();
                                        }
                                      if (produto_livre == qtdProduto)
					  System.out.println("\nCadastro de produtos lotado");
				   else
					 { System.out.print("\nDigite o codigo do produto a ser incluido ");
					   codigo = entrada.nextInt();
					   achou = 0;
					   for (i=0;i<qtdProduto;i++)
						 { if (produto[i].cod_produto == codigo)
						 	  achou = 1;
						 }
					   if (achou == 1)
						  { System.out.println("\nJa existe produto cadastrado com este codigo");
						  }
					   else
						  { entrada = new Scanner(System.in);
						    System.out.print("\nDigite a descricao do produto ");
							produto[produto_livre].desc = entrada.nextLine();
							System.out.print("\nDigite a unidade do produto ");
							produto[produto_livre].unid = entrada.nextLine();
							System.out.print("\nDigite o preco unitario do produto ");
							produto [produto_livre].preco_unit = entrada.nextFloat();
							produto[produto_livre].cod_produto = codigo;
							System.out.println("\nProduto cadastrado com sucesso!");
							produto_livre++;
						  }
					  }
				  } 

			

		} while (op2 != 4);
 	} 


       if (op1 == 2)
	{ do
		 { 
                       System.out.println("\n----------------------------------------------"); 
                       System.out.print("Sub-menu de Opcoes");
		   System.out.print("\n1 - Fazer pedido");
		   System.out.print("\n2 - Sair ");
		   System.out.print("\nDigite sua opcao ");
		   op2 = entrada.nextInt();
			 if ((op2 < 1) || (op2 > 2)) { 
                                 System.out.println("\nOpcao invalida, digite novamente ");
		        }else {
                                 achou = 0;
                                 System.out.print("Informe o codigo do produto: ");
                                 codigo_busca = entrada.nextInt();
                                 
                                  for (i=0;i<produto_livre;i++) { 
                                  if (codigo_busca == (produto[i].cod_produto)) { 
                                  achou = 1;
                                  System.out.println("###############################################");
			      System.out.print("\nCodigo: " + produto[i].cod_produto + 
                                          "\nDescricao: "+produto[i].desc+ 
                                          "\nQuantidade: "+produto[i].unid+ 
                                          "\nValor unit " + produto[i].preco_unit+ 
                                          "\nValor total: "+produto[i].preco_unit * qtdProduto+"\n");
			      } }  } } while (op2 != 2);
            }} while (op1 != 3);
}

private static class Produto
{ public int cod_produto;
  public int qtde_est;
  public float preco_unit;
  public String desc;
  public String unid;
}

private static class Item
{ public int numero_nf;
  public int cod_prod;
  public int qtde;
  public float preco_vend;
}

}

V

Valeu Jonas, fica difícil pq ainda não estudei: construtores e criação de objetos, variáveis e métodos estáticos. Será se tem como fazer sem criar novos métodos(não tenho certeza se é o nome certo)?

J

Essa é a forma mais facil de fazer esse programa que eu sei…

import java.text.DecimalFormat;
import java.util.Scanner;

public class Loja {

public static void main(String[] args) {

Scanner entrada = new Scanner(<a href="http://System.in">System.in</a>);
String[] nome = new String[3];
     int[] codigo = new int[3];
     int[] quantidade = new int[3];
     double[] preco = new double[3];
     String[] descricao = new String[3] ;
     int a = 0;
     
   
    //Loop para  o cadastro. 
     do {
        entrada = new Scanner(System.in);
        System.out.println("Informe o nome do produto -  "+a);
        nome[a] = entrada.nextLine();
        
        System.out.println("Informe o codigo do produto: ");
        codigo[a] = entrada.nextInt();
            if (codigo[a]==0) {
                System.out.println("Bye");
                System.exit(0);
            }
        System.out.println("Informe a quantidade de itens desse produto: ");
        quantidade[a] = entrada.nextInt();
       
        System.out.println("Informe o preco: ");
        preco[a]= entrada.nextDouble();
        System.out.println("Informe a descricao: ");
        entrada = new Scanner(System.in);
        descricao[a] = entrada.nextLine();
        System.out.println("---------------------------------");
        a++;
     } while(a <3);
    
     // DecimalFormat formato = new DecimalFormat("0,00");
     // formato.format(preco);
     //Mostra o pedido
        System.out.println("----------------------");
        System.out.print("Produto: "+nome[0]+"\n");
        System.out.print("Codigo: "+codigo[0]+"\n");
        System.out.print("Quantidade: "+quantidade[0]+"\n");
        // System.out.print("Valor total: "+formato.format(preco));
        
        System.out.println("----------------------");
        System.out.print("Produto: "+nome[1]+"\n");
        System.out.print("Codigo: "+codigo[1]+"\n");
        System.out.print("Quantidade: "+quantidade[1]+"\n");
        // System.out.print("Valor total: "+formato.format(preco));
        
        System.out.println("----------------------");
        System.out.print("Produto: "+nome[2]+"\n");
        System.out.print("Codigo: "+codigo[2]+"\n");
        System.out.print("Quantidade: "+quantidade[2]+"\n");
        // System.out.print("Valor total: "+formato.format(preco));
    
     


}

}

V

Valeu cara!

M

Porque tirou o nome do tópico e a questão?

V

É que iria editar e me esqueci de salvar.

V

Alguém pode me ajudar a fazer a generalização da impressão do preço?
No Código de Jonas ele consegue imprimir 3 preços. Como posso imprimir o valor total de quaisquer pedidos. Eu pensei em criar um loop para receber o código do produto e a quantidade. Com a condição de receber até o código do produto ser diferente de 0.

//Loop do pedido
do {

codigodoproduto2[i] = in.nextInt();
    
     quantidade[i] = in.nextInt();
	 
	 do{
	 valor = preco[i] * quantidade[i];
	}while(codigodoproduto[i]==codigodoproduto2[i]);
	 
     }
     while(codigodoproduto2[i] != 0);

Só que tá dando errado, alguma ajuda?

J

Acho desnecessario você criar outro Do whie dentro de outro Do While. E essa variavel i?

V

O i é o a no seu código. No Loop do pedido:
do {

cod2[i] = in.nextInt();
    quant[i] = in.nextInt();
     }while(cod2[i] != 0);

A minha ideia é de receber o codigo no loop do pedido e procurar no array dos codigo cadastrados. Se tiver algum igual então recebe a quantidade de produtos e calcula o valor do pedido. Só que não consigo transformar isso em código.

J

Duas classes com setters e getteres, e uma de teste

Pedido.java

public class Pedido {

private String descricao;

private int qtdItens;

private double preco;

private double valorTotalPedido;
public String getDescricao() {
    return descricao;
}

public void setDescricao(String descricao) {
    this.descricao = descricao;
}

public int getQtdItens() {
    return qtdItens;
}

public void setQtdItens(int qtdItens) {
    this.qtdItens = qtdItens;
}

public double getPreco() {
    return preco;
}

public void setPreco(double preco) {
    this.preco = preco;
}

public double getValorTotalPedido() {
    return preco * qtdItens;
}

public void setValorTotalPedido(double valorTotalPedido) {
    this.valorTotalPedido = valorTotalPedido;
}

@Override
public String toString() {
    return "Pedido {\n" + 
            "Descricao: " + descricao + 
            "\nQuantidade itens: " + qtdItens + 
            "\nPreco: " + preco + 
            "\nValor tatal pedido: " + getValorTotalPedido();
}

}

CadastroProduto.java

public class CadastroProduto extends Pedido {

private int codigo;

public int getCodigo() {
    return codigo;
}

public void setCodigo(int codigo) {
    this.codigo = codigo;
}

}

Armazem.java

import java.util.ArrayList;
import java.util.Scanner;

public class Armazem {

public static void main(String[] args) {
     Scanner entrada = new Scanner(System.in);
     int indice = 0;
     int contgeneric = 1;
     int op;
     int codigo;
     
     ArrayList<CadastroProduto> listaProdutos;
     listaProdutos = new ArrayList<>();

     CadastroProduto[] cadastro = new CadastroProduto[3];

     do {
         System.out.println("\n1 - Cadastrar produtos");
         System.out.println("2 - Fazer pedido por codigo");
         System.out.println("3 - Exibir cadastro de todos os produtos ");
         System.out.println("4 - Sair ");
         System.out.print("Escolha uma opcao ");
         op = entrada.nextInt();
     
     if (op == 1) { 
         do {
         cadastro[indice] = new CadastroProduto();
         System.out.println("\nProduto "+contgeneric);
         System.out.print("Codigo: ");
         cadastro[indice].setCodigo(entrada.nextInt());
            if (cadastro[indice].getCodigo() == 0) {
                //System.out.print("Bye");
                //System.exit(0);
            }
         
         entrada = new Scanner(System.in);
         System.out.print("Descricao: ");
         cadastro[indice].setDescricao(entrada.nextLine());
         System.out.print("Preco: ");
         cadastro[indice].setPreco(entrada.nextDouble());
         System.out.print("Quantidade de itens: ");
         cadastro[indice].setQtdItens(entrada.nextInt());
         listaProdutos.add(cadastro[indice]);
         System.out.println("\nProduto cadastrado com sucesso! \n");
         indice++;
         contgeneric++;
     } while (indice < 3); 
     
     }//Fim if op 1 
     
     
     if (op == 2) {
         System.out.println("Informe o codigo do produto: ");
         codigo = entrada.nextInt();
         String msg = "Lista de produtos \n\n";
         for (int i = 0; i < 3; i++) {
             if (cadastro[i] == null) { } 
             else {
                 if (cadastro[i].getCodigo() == codigo) {
                  System.out.print ( "Codigo: "+ cadastro[i].getCodigo() + "\n"+
                  "Descricao: "+ cadastro[i].getDescricao() + "\n"+
                  "Preco: "+ cadastro[i].getPreco() + "\n" +
                  "Quantidade de itens: "+ cadastro[i].getQtdItens() + "\n"+
                  "Valor total: "+ cadastro[i].getValorTotalPedido()+ "\n"+
                  "-----------------------------\n");
                  //achou = true;
             }
         } 
      
     }
     
} 
        
        if (op == 3) {
         String msg = "Lista de produtos \n\n";
         for (int i = 0; i < listaProdutos.size(); i++) {
             msg += "Codigo: "+ listaProdutos.get(i).getCodigo() + "\n";
             msg += "Descricao: "+ listaProdutos.get(i).getDescricao() + "\n";
             msg += "Preco: "+ listaProdutos.get(i).getPreco() + "\n";
             msg += "Quantidade de itens: "+ listaProdutos.get(i).getQtdItens() + "\n";
             msg += "Valor total: "+ listaProdutos.get(i).getValorTotalPedido()+ "\n";
             msg += "-----------------------------\n";
         }
           System.out.println(msg);
        }
         
         } while(op > 1 || op <=3 );
         
        
   }

}

Criado 20 de abril de 2016
Ultima resposta 22 de abr. de 2016
Respostas 10
Participantes 3