RESOLVIDO Duvida , Vetor Java

[code]
import javax.swing.JOptionPane; // Importando a classe para inserir valores manuais

public class trabalho1 {       // Nome da classe
	
    public static suporte produtos [] = new suporte [41];     // Declarar vetor 
    static int i;
    public static void insercaodedados(){                     // Função                  
           for (int i=1;i<41;i++){                                                                                                                   //
              produtos[i] = new suporte(); 
                                 }                            // Fecha o for da função  
                                  MENU();                     // Início do menu    a
                                        }                     // Fecha Inserçãodedados    
       
       
    public static void MENU(){//chama o  menu
            int op = Integer.parseInt(JOptionPane.showInputDialog(" 1 - Cadastro de produtos \n" +
		                                                          " 2 - Exibir o lucro de venda de todos produtos \n " +
		                                                          "3 - Exibir a quantidade de produtos em estoque \n" +
		                                                          " 4 - Aumentar a quantidade em estoque de um produto \n " +
		                                                          "5 - Modificar o preço de venda e compra do produto \n " +
		                                                          "6 - Sair do programa"));  
           
            
       switch (op){         // Direciona a opção inserida pelo usuário para o devido case

case 1: //Cadastro de produto

            for(  i=1; i<41; i++){         // Lógica para cadastros de produtos
    	    
        	produtos[i] = new suporte();                                                                                                          
            String aux0 = JOptionPane.showInputDialog("Insira o Código do produto\nLembrando que os codigos tem que ser diferentes ");         
            produtos[i].codigo= Integer.parseInt(aux0);                                                                                           
            String aux1 = JOptionPane.showInputDialog("Insira o preço de venda do produto , código: " +produtos[i].codigo);                                  
            produtos[i].preco_venda= Float.parseFloat(aux1);                                                                                   
            String aux2 = JOptionPane.showInputDialog("Insira o preço de compra do produto , código: " +produtos[i].codigo);                
            produtos[i].preco_compra= Float.parseFloat(aux2);                                                                                     
            String aux3 = JOptionPane.showInputDialog("Insira a quantidade de produtos em estoque do produto , codigo: " +produtos[i].codigo);    
            produtos[i].quantidade_estoque= Integer.parseInt(aux3);                                                                              
            produtos[i].descricao= JOptionPane.showInputDialog("Insira a descrição do produto , codigo : " +produtos[i].codigo);              
                                   } MENU();

case 2: // Exibir o valor do lucro com a venda de cada produto
for ( i=1;i<41;i++){ // Lógica para impressão de todos produtos cadastrados
produtos[i].lucro = produtos[i].preco_venda - produtos[i].preco_compra; // Cálculo para lucro obtido
System.out.println ("O lucro do produto de codigo : " + produtos[i].codigo +" é de : " + produtos[i].lucro); // Impressão
} MENU();

case 3: // Exibir na tela o estoque total, com todos os campos
for ( i=1;i<41;i++){ //Exibir o valor do lucro com a venda de cada produto
System.out.println ("O Codigo do produto é : "+ produtos[i].codigo+ " e tem um estoque de: "+ produtos[i].quantidade_estoque + " unidades. "); // Impressão
} MENU();

case 4: // Aumentar a quantidade em estoque de um produto
int novaqtd; // Variável de suporte
int codigo_produto ; // Variável de suporte
String auxiliar = JOptionPane.showInputDialog ("Digite o Codigo do produto que deseja alterar,caso o codigo seja inexistente o Menu retornará."); // Leitura do código do produto
codigo_produto = Integer.parseInt(auxiliar); // Conversão de string para int
for (i=1;i<41;i++){
if (codigo_produto == produtos[i].codigo){
for ( i=1;i<41;i++){ // Achar qual código do produto corresponde ao inserido pelo usuário
if (codigo_produto == produtos[i].codigo) { // Condição para que se altere a qtd de produtos
String auxiliar1 = JOptionPane.showInputDialog ("Insira a nova quantidade de produtos.\nQUANTIDADE ATUAL É DE :" +produtos[i].quantidade_estoque); // Nova quantidade de produtos
novaqtd = Integer.parseInt (auxiliar1); // Conversao de string para int
produtos[i].quantidade_estoque = novaqtd; // Atualizando variável
}

                             }
          
   	                                               }
                                }MENU();  

case 5 : //Modificar preço de compra e de venda de um produto
int novo_preco_compra; // Variáveis
int novo_preco_venda ; // de
int codprod; // Suporte
String auxiliar2 = JOptionPane.showInputDialog ("Digite o Codigo do produto que deseja alterar, caso o codigo seja inexistente o Menu retornará."); // Inserir o codigo do produto
codprod = Integer.parseInt(auxiliar2); // Conversão de String para int
for ( i=1;i<41;i++){
if (codprod == produtos[i].codigo){
for ( i=1;i<41;i++){ // Achar qual código corresponde ao inserido pelo usuário
if (codprod == produtos[i].codigo) { // Condição para que haja a troca de valores de venda e compra
String auxiliar3 = JOptionPane.showInputDialog ("Insira o novo preço de venda.\nPREÇO ATUAL DE VENDA :" +produtos[i].preco_venda); // Troca de valores da venda
novo_preco_venda = Integer.parseInt (auxiliar3); // Conversão de string para int
produtos[i].preco_venda = novo_preco_venda; // Atualizando a variável
String auxiliar4 = JOptionPane.showInputDialog ("Insira o novo preço de compra.\nPREÇO ATUAL DE COMPRA "+produtos[i].preco_compra); // Troca de valores da compra
novo_preco_compra = Integer.parseInt (auxiliar4); // Conversão String para int
produtos[i].preco_compra = novo_preco_compra; // Atualizando a variável
}
}

    	                                       } 
                                 } MENU(); 

case 6: // Sair do Sistema
System.exit(0); //fechar sistema.

default:
JOptionPane.showMessageDialog(null,"Opção Inexistente");
MENU();

                  }// Fecha o switch(op)    
                              } //FECHA  o public static void MENU()

public static void main(String[] args) { //-------------------------------------------------------------------------------------------------
insercaodedados(); //leitura da funçao

                                   } //Fim do main(String[] args)
        }// public class[/code]

Quando abre o menu e clica 1 voce tem que cadastrar 40 produtos . Eu queria que cadastrase 1 PRODUTO POR VEZ, por exemplo, Cadastra 1 produto depois vai pro menu ai o user clica 1 e cadastra mais um, sem que apague o cadastrado anteriormente.
Eu esbocei algumas coisas porem sempre apagava o anterior que eu tinha feito .

Alguem pode ajudar ???

Obrigado !

bom dia,
posta a classe suporte para nos podermos testar aqui e te ajudar

Você está usando for, então, ele irá executar tudo o que existe dentro do bloco, até que a condição i < 41 não seja mais satisfeita (quando i = 41).
Sugestão, troque por do/while.
do{
//menu
//ações
}while(i <= 40);

Assim ele irá executar a ação e retornar ao menu, pedindo para selecionar a ação.

postei :wink:

[quote=drsmachado]Você está usando for, então, ele irá executar tudo o que existe dentro do bloco, até que a condição i < 41 não seja mais satisfeita (quando i = 41).
Sugestão, troque por do/while.
do{
//menu
//ações
}while(i <= 40);

Assim ele irá executar a ação e retornar ao menu, pedindo para selecionar a ação.[/quote]

[code]
case 1: //Cadastro de produto

            while(i <= 40){         // Logica para cadastros de produtos
    	
        	produtos[i] = new suporte();                                                                                                          //
            String aux0 = JOptionPane.showInputDialog("Insira o Código do produto\nLembrando que os codigos tem que ser diferentes ");            //  DADOS 
            produtos[i].codigo= Integer.parseInt(aux0);                                                                                           // 
            String aux1 = JOptionPane.showInputDialog("Insira o preço de venda do produto , código: " +produtos[i].codigo);                       //  DO                   
            produtos[i].preco_venda= Float.parseFloat(aux1);                                                                                      //
            String aux2 = JOptionPane.showInputDialog("Insira o preço de compra do produto , código: " +produtos[i].codigo);                      //  VETOR
            produtos[i].preco_compra= Float.parseFloat(aux2);                                                                                     //
            String aux3 = JOptionPane.showInputDialog("Insira a quantidade de produtos em estoque do produto , codigo: " +produtos[i].codigo);    //  INSERIDOS PELO USUÁRIO
            produtos[i].quantidade_estoque= Integer.parseInt(aux3);                                                                               //
            produtos[i].descricao= JOptionPane.showInputDialog("Insira a descrição do produto , codigo : " +produtos[i].codigo);                  //
            
            }MENU();[/code]

Assim ?? eu fiz assim … mas mesmo assim ele cadastra 40 e depois volta pro menu :cry:

Cria um metodo que verifique onde no teu vetor não está sendo ocupado. nessa condição assim que ele encontrar uma parte do vetor vazia ele cadastra o novo.
quando ao menu de cadastro c pode faze-lo em um metodo , e no final do case 1: chame o menu Principal após o menu.

tipo:

[code]publc static void chamaCadastro(){

produtos[i] = new suporte();
String aux0 = JOptionPane.showInputDialog("Insira o Código do produto\nLembrando que os codigos tem que ser diferentes ");
produtos[i].codigo= Integer.parseInt(aux0);
String aux1 = JOptionPane.showInputDialog("Insira o preço de venda do produto , código: " +produtos[i].codigo);
produtos[i].preco_venda= Float.parseFloat(aux1);
String aux2 = JOptionPane.showInputDialog("Insira o preço de compra do produto , código: " +produtos[i].codigo);
produtos[i].preco_compra= Float.parseFloat(aux2);
String aux3 = JOptionPane.showInputDialog("Insira a quantidade de produtos em estoque do produto , codigo: " +produtos[i].codigo);
produtos[i].quantidade_estoque= Integer.parseInt(aux3);
produtos[i].descricao= JOptionPane.showInputDialog("Insira a descrição do produto , codigo : " +produtos[i].codigo);

}[/code]

com base nisso após ter criado o verificador do vetor implemente ele no seu codigo. e faça assim:

[code]case 1:
chamaCadastro();
Menu();

[/code]

Não, camarada.
Veja que você fez while(){} e não do{}while();
A diferença é que, no do, o código dentro dos {} será executado ao menos 1 vez e, até que seja satisfeita a condição (no cado, i > 40).
Dessa forma, como há a certeza que essa parte será executada, coloca o menu ali.

Veja a diferença


	public static void main(String args[]){
		int e = 0;
		e = Integer.parseInt(JOptionPane.showInputDialog("E = "));
		while(e < 10){
			System.out.println("e = " +e);
			e++;
		}
		int r = 0;
		do{
			r = Integer.parseInt(JOptionPane.showInputDialog("R = "));
			System.out.println("r = " + r);
		}while(r < 10);
	}

Testa aí…

Teste aí e veja a diferença



	public static void main(String args[]){
		int e = 0;
		e = Integer.parseInt(JOptionPane.showInputDialog("E = "));
		while(e < 10){
			System.out.println("e = " +e);
			e++;
		}
		int r = 0;
		do{
			r = Integer.parseInt(JOptionPane.showInputDialog("R = "));
			System.out.println("r = " + r);
		}while(r < 10);
	}

[quote=drsmachado]Teste aí e veja a diferença

[code]

public static void main(String args[]){
	int e = 0;
	e = Integer.parseInt(JOptionPane.showInputDialog("E = "));
	while(e < 10){
		System.out.println("e = " +e);
		e++;
	}
	int r = 0;
	do{
		r = Integer.parseInt(JOptionPane.showInputDialog("R = "));
		System.out.println("r = " + r);
	}while(r < 10);
}

[/code][/quote]

[code]
case 1: //Cadastro de produto

     do{
    	
        	produtos[i] = new suporte();                                                                                                          //
            String aux0 = JOptionPane.showInputDialog("Insira o Código do produto\nLembrando que os codigos tem que ser diferentes ");            //  DADOS 
            produtos[i].codigo= Integer.parseInt(aux0);                                                                                           // 
            String aux1 = JOptionPane.showInputDialog("Insira o preço de venda do produto , código: " +produtos[i].codigo);                       //  DO                   
            produtos[i].preco_venda= Float.parseFloat(aux1);                                                                                      //
            String aux2 = JOptionPane.showInputDialog("Insira o preço de compra do produto , código: " +produtos[i].codigo);                      //  VETOR
            produtos[i].preco_compra= Float.parseFloat(aux2);                                                                                     //
            String aux3 = JOptionPane.showInputDialog("Insira a quantidade de produtos em estoque do produto , codigo: " +produtos[i].codigo);    //  INSERIDOS PELO USUÁRIO
            produtos[i].quantidade_estoque= Integer.parseInt(aux3);                                                                               //
            produtos[i].descricao= JOptionPane.showInputDialog("Insira a descrição do produto , codigo : " +produtos[i].codigo);                  //
            
     }while ( i<40); 
     MENU();
       [/code]

assim ? deu erro, lembrando que o codigo esta sendo feito antes do main String args

[quote=drsmachado]Teste aí e veja a diferença

[code]

public static void main(String args[]){
	int e = 0;
	e = Integer.parseInt(JOptionPane.showInputDialog("E = "));
	while(e < 10){
		System.out.println("e = " +e);
		e++;
	}
	int r = 0;
	do{
		r = Integer.parseInt(JOptionPane.showInputDialog("R = "));
		System.out.println("r = " + r);
	}while(r < 10);
}

[/code][/quote]
O laço While testa se a condição é verdadeira antes de entrar no bloco.

O laço Do-While entra no bloco e ao final testa se a condição é verdadeira para repetir o bloco.
Basicamente, o Do-While vai sempre executar ao menos uma vez

coloca isso:

e = Integer.parseInt(JOptionPane.showInputDialog("E = "));

dentro da condição “enquanto” e da o mesmo resultado do seu do while.

pS: neste caso, claro ^^

[quote=JoatanGuj]Cria um metodo que verifique onde no teu vetor não está sendo ocupado. nessa condição assim que ele encontrar uma parte do vetor vazia ele cadastra o novo.
quando ao menu de cadastro c pode faze-lo em um metodo , e no final do case 1: chame o menu Principal após o menu.

tipo:

[code]publc static void chamaCadastro(){

produtos[i] = new suporte();
String aux0 = JOptionPane.showInputDialog("Insira o Código do produto\nLembrando que os codigos tem que ser diferentes ");
produtos[i].codigo= Integer.parseInt(aux0);
String aux1 = JOptionPane.showInputDialog("Insira o preço de venda do produto , código: " +produtos[i].codigo);
produtos[i].preco_venda= Float.parseFloat(aux1);
String aux2 = JOptionPane.showInputDialog("Insira o preço de compra do produto , código: " +produtos[i].codigo);
produtos[i].preco_compra= Float.parseFloat(aux2);
String aux3 = JOptionPane.showInputDialog("Insira a quantidade de produtos em estoque do produto , codigo: " +produtos[i].codigo);
produtos[i].quantidade_estoque= Integer.parseInt(aux3);
produtos[i].descricao= JOptionPane.showInputDialog("Insira a descrição do produto , codigo : " +produtos[i].codigo);

}[/code]

com base nisso após ter criado o verificador do vetor implemente ele no seu codigo. e faça assim:

[code]case 1:
chamaCadastro();
Menu();

[/code]

[/quote]

[color=red]EU FIZ O QUE VOCE DISSE, DEU CERTO ,POREM EU CADASTRO UM PRODUTO AI IMPRIME CERTO, DAI VOU CADASTRAR OUTRO O PRIMEIRO SOME E SO APARECE ESSE ULTIMO[/color]

Imprimir os valores onde?

[quote=JoatanGuj]Imprimir os valores onde?
[/quote]

escrevi errado, corrigi logo acima
na verdade

um cadastro ta apagando o anterior

cadastro 1 depois cadastro o 2 … o 1 SOME e so fica o 2. E ASSIM vai…

[quote=fuzybr][quote=JoatanGuj]Imprimir os valores onde?
[/quote]

escrevi errado, corrigi logo acima
na verdade

um cadastro ta apagando o anterior

cadastro 1 depois cadastro o 2 … o 1 SOME e so fica o 2. E ASSIM vai…[/quote]

é como eu disse crie um metodo que verifique onde no seu vetor está livre pra ser registrado. por exemplo.

public class teste{
static String vetor[] = new String[5];
public static void main(String args[]){
vetor[1] = "teste1";
vetor[2] = "teste2";
verifica();

}
public static void verifica(){
for(int i = 0;i<vetor.length;i++){
     if(vetor[i] == null){
        System.out.println(x[i]+" - Esse aqui é o primeiro registro vazio, vamos registrar nele")

       }
}
}
}

copia esse codigo e ponhe em uma classe ve se voce entende oque quero te explicar. dai implementa isso no seu codigo.

não consigo :frowning:
:cry: :cry:

[quote=fuzybr]não consigo :frowning:
:cry: :cry:[/quote]

=O. não consegue oque?

não ta dando certo … axo que estou errando pra aplicar a verificação

olha e refiz o seu codigo, tive que mudar muita coisa, de uma olhada estude ela e faça a opcao 5 (Modificar o preço de venda e compra do produto) voce mesmo para voce poder aprender.
duvidas voce vai me perguntando

import javax.swing.JOptionPane;    // Importando a classe para inserir valores manuais  
          
    public class trabalho1 {       // Nome da classe  
          
        public static suporte produtos [] = new suporte [41];     // Declarar vetor   
        
        static int i;
        
        static int posicaoVector = 0;
        
        public static void insercaodedados(){                     // Função                    
              
              for (int i=0;i<produtos.length;i++){                                                                                                                   //  
                  produtos[i] = new suporte();   
              }                            // Fecha o for da função    
              MENU();                     // Início do menu    a  
        }                     // Fecha Inserçãodedados      
             
             
        public static void MENU(){//chama o  menu  
                int op = Integer.parseInt(JOptionPane.showInputDialog("1 - Cadastro de produtos \n" +  
                                                                      "2 - Exibir o lucro de venda de todos produtos \n " +  
                                                                      "3 - Exibir a quantidade de produtos em estoque \n" +  
                                                                      "4 - Aumentar a quantidade em estoque de um produto \n " +  
                                                                      "5 - Modificar o preço de venda e compra do produto \n " +  
                                                                      "6 - Sair do programa"));    
                 
                  
           switch (op){         // Direciona a opção inserida pelo usuário para o devido case  
        
  case 1:    //Cadastro de produto  
           
               // Lógica para cadastros de produtos  
                                                                                                     
                String aux0 = JOptionPane.showInputDialog("Insira o Código do produto\nLembrando que os codigos tem que ser diferentes ");           
                produtos[posicaoVector].codigo= Integer.parseInt(aux0);                                                                                             
                String aux1 = JOptionPane.showInputDialog("Insira o preço de venda do produto , código: " +produtos[posicaoVector].codigo);                                    
                produtos[posicaoVector].preco_venda= Float.parseFloat(aux1);                                                                                     
                String aux2 = JOptionPane.showInputDialog("Insira o preço de compra do produto , código: " +produtos[posicaoVector].codigo);                  
                produtos[posicaoVector].preco_compra= Float.parseFloat(aux2);                                                                                       
                String aux3 = JOptionPane.showInputDialog("Insira a quantidade de produtos em estoque do produto , codigo: " +produtos[posicaoVector].codigo);      
                produtos[posicaoVector].quantidade_estoque= Integer.parseInt(aux3);                                                                                
                produtos[posicaoVector].descricao= JOptionPane.showInputDialog("Insira a descrição do produto , codigo : " +produtos[posicaoVector].codigo);                
               
                posicaoVector++;
                
               MENU();  
                                         
  case 2:    // Exibir o valor do lucro com a venda de cada produto   
               for ( i=0;i<posicaoVector;i++){                                                      // Lógica para impressão de todos produtos cadastrados  
                produtos[i].lucro = produtos[i].preco_venda - produtos[i].preco_compra;     // Cálculo para lucro obtido  
                System.out.println ("O lucro do produto de codigo : " + produtos[i].codigo +" é de : " + produtos[i].lucro);   // Impressão    
                                     }  MENU();   
  
  case 3:   // Exibir na tela o estoque total, com todos os campos      
               for ( i=0;i<posicaoVector;i++){                                                      //Exibir o valor do lucro com a venda de cada produto       
                 System.out.println ("O Codigo do produto é : "+ produtos[i].codigo+ " e tem um estoque de: "+ produtos[i].quantidade_estoque + " unidades. ");  // Impressão    
                                     }  MENU();   
                      
  case 4:   // Aumentar a quantidade em estoque de um produto      
         int novaqtd;                                                  // Variável de suporte  
         int codigo_produto ;                                          // Variável de suporte  
               String auxiliar = JOptionPane.showInputDialog ("Digite o Codigo do produto que deseja alterar,caso o codigo seja inexistente o Menu retornará."); // Leitura do código do produto  
               codigo_produto = Integer.parseInt(auxiliar);            // Conversão de string para int  
           
               //verifica se existe o codigo
               boolean isExiste = false;
               int a = 0;
               for(a =0;a<produtos.length;a++){
                   if(produtos[a].codigo == Integer.parseInt(auxiliar)){
                       isExiste = true;
                       break;
                   }
               }
               
                // se existe aumenta a quandidade    
                if (isExiste)        {    // Condição para que  se altere a qtd de produtos  
                        String auxiliar1 = JOptionPane.showInputDialog ("Insira a nova quantidade de produtos.\nQUANTIDADE ATUAL É DE :" +produtos[a].quantidade_estoque); // Nova quantidade de produtos   
                        novaqtd = Integer.parseInt (auxiliar1);                 // Conversao de string para int  
                        produtos[a].quantidade_estoque = novaqtd;               // Atualizando variável  
                }     
     
               
            MENU();    
    
                                   
               
  case 5 : //Modificar preço de compra e de venda de um produto      
         int novo_preco_compra;                                        // Variáveis   
         int novo_preco_venda ;                                        // de  
         int codprod;                                                  // Suporte  
              String auxiliar2 = JOptionPane.showInputDialog ("Digite o Codigo do produto que deseja alterar, caso o codigo seja inexistente o Menu retornará."); // Inserir o codigo do produto   
              codprod = Integer.parseInt(auxiliar2);                   // Conversão de String para int  
               for ( i=0;i<posicaoVector;i++){  
                  if (codprod == produtos[posicaoVector].codigo){  
               for ( i=0;i<posicaoVector;i++){                                    // Achar qual código corresponde ao inserido pelo usuário  
                  if (codprod == produtos[posicaoVector].codigo)                {  // Condição para que haja a troca de valores de venda e compra     
              String auxiliar3 = JOptionPane.showInputDialog ("Insira o novo preço de venda.\nPREÇO ATUAL DE VENDA :" +produtos[i].preco_venda);      // Troca de valores da venda                      
              novo_preco_venda = Integer.parseInt (auxiliar3);         // Conversão de string para int  
              produtos[posicaoVector].preco_venda = novo_preco_venda;              // Atualizando a variável  
              String auxiliar4 = JOptionPane.showInputDialog ("Insira o novo preço de compra.\nPREÇO ATUAL DE COMPRA "+produtos[i].preco_compra);     // Troca de valores da compra      
              novo_preco_compra = Integer.parseInt (auxiliar4);        // Conversão String para int  
              produtos[posicaoVector].preco_compra = novo_preco_compra;            // Atualizando a variável   
                                                                    }   
                                  }  
                
                                                   }   
                                     } MENU();   
   case 6:  // Sair do Sistema      
             System.exit(0);                                           //fechar sistema.      
                          
   default:  
        JOptionPane.showMessageDialog(null,"Opção Inexistente");  
        MENU();  
          
                      }// Fecha o switch(op)      
                                  } //FECHA  o public static void MENU()  
          
          
public static void main(String[] args) {     
    insercaodedados();              //leitura da funçao  
  
 } //Fim do main(String[] args)  

    
    }// public class  
 

:thumbup:

so me da uma esclarecida no comando : produtos.length ,oq é ?

Consegui galera, Obrigado aos que me ajudaram
drsmachado
julianolandim
JoatanGuj

e juliano , consegui fazer a 5 ;] dei uma estudada e consegui intender o que tu fez :wink:

:smiley: :smiley: :smiley: :smiley: :smiley: :smiley: