Metodo get retorna valor null

4 respostas
rafa.spimenta

Bom dia pessoal

eu tava quase terminando um programinha aqui que recebe o nome de um vendedor, cadastra os dados de um cliente, pergunta o vendedor se os dados do cliente estao ok, exibe uma tabela (array bidimensional) de dados de 5 carros, pede para o cliente escolher qual o carro desejado e exibe o carro desejado.

Vo postar o codigo completo de todas as classe abaixo.

classPrincipal
public class classPrincipal 
{   
    public static void main(String args[])     
    {       
    	classChamaMetodos metChamaMetodos = new classChamaMetodos();
    	
    	
        System.out.print("Auto-Soft \n© 2008 Minas Hacker's Informática \nVersão 1.0 \nTodos os direitos reservados" +
        		" \nUso exclusivo da COELHO'S VEÍCULOS LTDA \n\nBem-Vindo!\n\n");     
        
        metChamaMetodos.chamaClass();
    }   
}
classChamaMetodos
public class classChamaMetodos
{
	classVendedor metVendedor = new classVendedor();
	classCliente metClienteGeral = new classCliente();     
    classTabela metTabela = new classTabela();
    
   
    public void chamaClass()
    {
    	metVendedor.vendedor();   
        metClienteGeral.chamaCadastroCliente();
        metTabela.tabelaVeiculos();
        metTabela.selecionaVeículo();
    }
}
classVendedor
import java.util.Scanner;


public class classVendedor
{
	private String vendedorLoja;
			
	Scanner input = new Scanner(System.in);
	
	public void setVendedorLoja(String vendedor1)
	{
		vendedorLoja = vendedor1;
	}
	
	public String getVendedor()
	{
		return vendedorLoja;
	}
	
	public void vendedor()
	{
		System.out.print("-->Informações do vendedor. \n\nPor favor informe o nome do vendedor: ");
		String theVendedor = input.nextLine();
		setVendedorLoja(theVendedor);
		System.out.printf("\nObrigado %s, você está logado no sistema.\n\n", getVendedor());
	}

}
classCliente
import java.util.Scanner;


public class classCliente
{
	
	private String[] cliente = new String[4];//variaveis
	private String op, op2;
	
	
	classChamaMetodos metChamaMetodos2 = new classChamaMetodos();
	classVendedor classVendedor2 = new classVendedor();
	
	
	Scanner input = new Scanner(System.in);

	
	public void setCliente( String[] cliente1)//metodos set e get cliente
	{
		cliente = cliente1;
	}
	
	public String[] getcliente()
	{
		return cliente;
	}//fim set e get

	public void cadastraDadosCliente()//metodo armazena dados cliente
	{
		String[] theCliente = new String[4];
		int x = 0;
		
		System.out.print("-->Informações cadastrais do Cliente.\n\n");
		System.out.printf("%s, por favor digite o nome do cliente: ", classVendedor2.getVendedor());
		theCliente[x] = input.nextLine();
		setCliente( theCliente );
		
		x++;
		
		System.out.print("Digite o número do CPF do cliente: ");
		theCliente[x] = input.nextLine();
		setCliente( theCliente );
		
		x++;
		
		System.out.print("Digite o nome da cidade: ");
		theCliente[x] = input.nextLine();
		setCliente( theCliente );
		
		x++;
		
		do
		 { 
			 System.out.print("Selecione qual o gênero do cliente: Digite (1) para Masculino." +
			 		" Digite (2) para Feminino. \nDigete O numero correspondente: ");
			 theCliente[x] = input.nextLine(); 
							 
			 if ( theCliente[x] .equals("1") )
			 	{
				 	getcliente()[x] = "Masculino"; 
				 	setCliente(theCliente); 
			 	}
			 else 
				 if ( theCliente[x] .equals("2") )
				 	{
					 	getcliente()[x] = "Feminino"; 
					 	setCliente(theCliente); 
				 	}
				 else 
					 System.out.print("Opção Invalida. \n\n"); 
			 
			}
		while( ( !getcliente()[x].equals("Masculino") ) && ( !getcliente()[x].equals("Feminino") ) );
	}
	
	public void chamaCadastroCliente()//metodo chama os dados do cliente e exibe na tela
	{	
		do{
			
		cadastraDadosCliente();
		
		System.out.print("\n\n-->Tabela Dados do Cliente.\n\n");
		System.out.print(" -----------------------------------\n");
		System.out.print("| Nome  :  ");      
		System.out.printf("%24s |\n",getcliente()[0]);
		System.out.print(" ------------------------------------\n");
		System.out.print("| CPF   :  ");
		System.out.printf("%24s |\n",getcliente()[1]);
		System.out.print(" ------------------------------------\n");
		System.out.print("| Cidade:  ");        
		System.out.printf("%24s |\n",getcliente()[2]);
		System.out.print(" ------------------------------------\n");
		System.out.print("| Gênero:  ");         
		System.out.printf("%24s |\n",getcliente()[3]);
		System.out.print(" -----------------------------------\n");
		
		System.out.print("\n\nOs dados cadastrais estão OK?\nDigite (S) para \"SIM\" ou (N) para \"NÃO\":");
		op = input.nextLine();
		
			if(op.equalsIgnoreCase("s") )
		{
			classTabela metTabela = new classTabela();
			metTabela.tabelaVeiculos();
		}		
		else
			if(op.equalsIgnoreCase("s") )
				chamaCadastroCliente();
			else 
				 System.out.print("Opção Invalida. \n\n"); 
		 
		}
	while( ( !op.equalsIgnoreCase("s") ) || ( op.equalsIgnoreCase("n") ) );
			
	}
	
	public void cancelaOperacao()
	{
								
		do{
			System.out.print("Deseja cancelar a operação?\nDigite (S) para \"SIM\" ou (N) para \"NÃO\":");
			op2 = input.nextLine();
			
			if(op2.equalsIgnoreCase("s"))
			{
				metChamaMetodos2.chamaClass();
			}
			else
				if(op2.equalsIgnoreCase("n"))
					System.out.printf("\nObrigado %s %s por visitar nossa Empresa, Peço que volte na próxima" +
							" semana para verificar nossos véiculos em estoque novamente.",getcliente()[3],getcliente()[0] );
				else
					System.out.print("Opção Inválida\n");
			
			}while( ( !op2.equalsIgnoreCase("s") ) && ( !op2.equalsIgnoreCase("n") ) );
	}
}

classTabela

import java.util.Scanner;

public class classTabela
{

	private String op;
	private int nVeiculo;
	
	classCliente metCliente2 = new classCliente();
	
	Scanner input = new Scanner(System.in);
	
	public void setNVeiculo( int nVeiculo1 )
	{
		nVeiculo = nVeiculo1;
	}
	
	public int getNVeiculo()
	{
		return nVeiculo;
	}
	
	String tabela[][] = {{" | Número de venda   :","1           ","2           ","3           ","4           ","5          ","|\n"},
			{"| Modelo            :","Uno         ","Pálio       ","Stilo       ","Doblo       ","Idea       ","|\n"},
			{"| Fabricante        :","Fiat        ","Fiat        ","Fiat        ","Fiat        ","Fiat       ","|\n"},
			{"| Ano de Fabricação.:","2000        ","2007        ","2008        ","2006        ","2007       ","|\n"},
			{"| Combustível       :","Flex        ","Flex        ","Flex        ","Flex        ","Flex       ","|\n"},
			{"| Valor             :","R$18.000,00 ","R$28.000,00 ","R$65.000,00 ","R$35.000,00 ","R$45.000,00","|\n"}};//variaveis
	
	public void setTabela( String[][] tabela1)
	{
		tabela = tabela1;
	}
	
	public String[][] getTabela()
	{
		return tabela;
	}
	
	public void tabelaVeiculos()
	{
		
		
		System.out.print("\n\n-->Tabela Dados Carros disponíveis.\n");
		System.out.print("\n  ------------------------------------------------------------------------------------");
		outputArray(tabela);
		System.out.print(" ------------------------------------------------------------------------------------\n");
	}

	private void outputArray(String[][] tabela) 
	{
		System.out.println();
		for( int linhas = 0; linhas < tabela.length; linhas++)
		{
			for ( int colunas = 0 ; colunas < tabela[linhas].length; colunas++)
			{
				System.out.printf("%s ",tabela[linhas][colunas]);
			}
		}
	}
	
	
		public void selecionaVeículo()
		{
			do{
				System.out.print("\nHá no estoque o véiculo desejado:");
				op = input.nextLine();
				
				if(op.equalsIgnoreCase("s") )
				
					nVendaVeiculo();
										
				else
					if(op.equalsIgnoreCase("n"))
				
						metCliente2.cancelaOperacao();
				
					else
						System.out.print("Opção Inválida");
			}
			while( ( !op.equalsIgnoreCase("s") ) && ( !op.equalsIgnoreCase("n") ) );
		}
		
		public void nVendaVeiculo()
		{
			int nVeiculo2;
			
			System.out.print("Digite o número de venda correspondente ao veículo:");
			nVeiculo2  = input.nextInt();
			setNVeiculo(nVeiculo2);
			exibiVeículoSelect();		
		}
			public void exibiVeículoSelect()
			{
				switch(getNVeiculo())
				{
				case 1:
					System.out.println();
					 System.out.print("Model        Fabricante   Ano de Fab.  Combustível  Valor        \n");
					for( int linhas = 1; linhas < 6; linhas++)
					{
						for ( int colunas = 1 ; colunas < 2; colunas++)
						{
							System.out.printf("%s ",tabela[linhas][colunas]);
						}
					}
				break;
				case 2:
					System.out.println();
					 System.out.print("Model        Fabricante   Ano de Fab.  Combustível  Valor        \n");
					for( int linhas = 1; linhas < 6; linhas++)
					{
						for ( int colunas = 2 ; colunas < 3; colunas++)
						{
							System.out.printf("%s ",tabela[linhas][colunas]);
						}
					}
				break;
				case 3:
					System.out.println();
					 System.out.print("Model        Fabricante   Ano de Fab.  Combustível  Valor        \n");
						for( int linhas = 1; linhas < 6; linhas++)
						{
							for ( int colunas = 3 ; colunas < 4; colunas++)
							{
								System.out.printf("%s ",tabela[linhas][colunas]);
							}
						}
				break;
				case 4:
					System.out.println();
					 System.out.print("Model        Fabricante   Ano de Fab.  Combustível  Valor        \n");
					for( int linhas = 1; linhas < 6; linhas++)
					{
						for ( int colunas = 4 ; colunas < 5; colunas++)
						{
							System.out.printf("%s ",tabela[linhas][colunas]);
						}
					}
				break;
				case 5:
					System.out.println();
					 System.out.print("Model       Fabricante  Ano de Fab. Combustível Valor        \n");
					for( int linhas = 1; linhas < 6; linhas++)
					{
						for ( int colunas = 5 ; colunas < 6; colunas++)
						{
							System.out.printf("%s ",tabela[linhas][colunas]);
						}
					}
				break;
				
				default:
					System.out.println ("Opção Inválida valida.\n"); 
					nVendaVeiculo();
				}
			}
			
}

problema:

Linha 35 ClassCliente
System.out.printf("%s, por favor digite o nome do cliente: ", metVendedor3.getVendedor());

O "metVendedor3.getVendedor()" esta retornando valor 'null'.

vou analisar o codigo aqui pra ve se consigo resolver...

Espero que alguem possa me ajudar, to quase esgotado

abraçoo

4 Respostas

thegoergen

Se tu analisar o StackTrace, vai ver que o programa está chamando sempre as mesmas classes, ou seja: LOOP ETERNO!!!

As linhas com problema:

Na classCliente:

// É na linha 11 classChamaMetodos metChamaMetodos2 = new classChamaMetodos();

E na classChamaMetodos:

// É na linha 4 classCliente metClienteGeral = new classCliente();

rafa.spimenta

Obrigado, vou começar a analizar o StackTrace, na verdade nem sabia o que significava, mas acabei de pesquisar aki!

Eu resolvi da seguinte forma:

peguei as duas linhas que voce citou acima com problema e as coloquei dentro dos metodos correspondentes.

rafa.spimenta

Depois de ter resolvido apereceu o seguinte problema:

Linha 35 ClassCliente

System.out.printf("%s, por favor digite o nome do cliente: ", metVendedor3.getVendedor());

O “metVendedor3.getVendedor()” esta retornando valor ‘null’.

vou analisar o codigo aqui pra ve se consigo resolver…

rafa.spimenta

??

Criado 7 de abril de 2008
Ultima resposta 7 de abr. de 2008
Respostas 4
Participantes 2