Exception in thread "main" java.lang.NullPointerException, código com problema com Strings

Fala pessoal, estou fazendo um trabalho da faculdade que consiste em aplicar um programa de uma locadora, seque o código:

import java.util.Scanner;
public class Main {
public static void main(String[] args) {

	int limiteclientes = 1000;
	int limitefuncionarios = 10;
	int limitefilmes = 5000;
	int i=1;
	Cliente[] cliente = new Cliente[limiteclientes];
	Funcionario[] funcionario = new Funcionario[limitefuncionarios];
	Filme[] filme = new Filme[limitefilmes];
	
	Scanner scan = new Scanner(System.in);
	int opcao,opcao1,opcao2,opcao3,j,k;
	
	do{
        System.out.println("---------------------------"); //menu principal
        System.out.println("Digite o número da opção:");
        System.out.println("1. Cliente");
        System.out.println("2. Filme");
        System.out.println("3. Funcionario");
        System.out.println("0. Sair do programa");
        System.out.println("---------------------------\n"); 	        
        opcao = scan.nextInt();
        switch(opcao){
            case 1:
            	do {
            		System.out.println("-----------------------------");
            		System.out.println("1. Cadastrar cliente");
            		System.out.println("2. Excluir cadastro");
            		System.out.println("3. Alterar cadastro");
            		System.out.println("4. Alugar filme");
            		System.out.println("5. Exibir cadastros");
            		System.out.println("0. Voltar ao menu principal");
            		System.out.println("-----------------------------\n");
            		opcao1 = scan.nextInt();
            		if (opcao1 == 1) {
            			System.out.print("Insira o nome do cliente: ");
            			cliente[i].setNome(scan.next());
            			System.out.print("\n Insira o CPF do cliente: ");
            			cliente[i].setCpf(scan.next());
            			System.out.print("\n Insira o endereço do cliente: ");
            			cliente[i].setEndereco(scan.next());
            			System.out.print("\n Insira a idade do cliente: ");
            			cliente[i].setIdade(scan.nextInt());
            			System.out.print("\n O código do cliente: " + cliente[i].getNome() + "é: " + i);
            			i++;
            		} else if (opcao1 == 2) {

O eclipse não aponta erros, porém ao executar o código quando vou tentar inserir um nome, ele dá o erro:
Exception in thread “main” java.lang.NullPointerException
at Main.main(Main.java:40)

Esse erro é de inicialização, está null para alguma variável. O que tem na linha 40?

na linha 40 tá exatamente a parte onde eu dou scan no nome do cliente,

cliente[i].setNome(scan.next());

se for útil, segue a minha classe cliente:

public class Cliente {
private String nome;
private String cpf;
private String endereco;
private int idade;

public String getNome() {
	return nome;
}
public void setNome(String nome) {
	this.nome = nome;
}
public String getCpf() {
	return cpf;
}
public void setCpf(String cpf) {
	this.cpf = cpf;
}
public String getEndereco() {
	return endereco;
}
public void setEndereco(String endereco) {
	this.endereco = endereco;
}
public int getIdade() {
	return idade;
}
public void setIdade(int idade) {
	this.idade = idade;
}

}

Bom cara, vc tem q inicializar o vetor de clientes no caso seria assim

for(int j=0;j<limiteclientes;j++){
   cliente[j] = new Cliente();
}
1 curtida

Funcionou essa parte, agora o problema tá na hora de inserir a idade, ao abrir pelo console aparece

Insira a idade do cliente: Exception in thread “main” java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at Main.main(Main.java:47)

btw agora a função está desse jeito

            		if (opcao1 == 1) {
            			cliente[i] = new Cliente();
            			System.out.print("Insira o nome do cliente: ");
            			cliente[i].setNome(scan.next());
            			System.out.print("\nInsira o CPF do cliente: ");
            			cliente[i].setCpf(scan.next());
            			System.out.print("\nInsira o endereço do cliente: ");
            			cliente[i].setEndereco(scan.next());
            			System.out.print("\nInsira a idade do cliente: ");
            			int idade = scan.nextInt();
            			cliente[i].setIdade(idade);
            			System.out.print("\nO código do cliente: " + cliente[i].getNome() + "é: " + i);
            			i++;

Tente isso

cliente[i].setIdade(scan.nextLine());

não vai, o próprio Eclipse já reclama
"The method setIdade(int) in the type Cliente is not applicable for the arguments (String)"

E esse?

scan.nextLine();
cliente[i].setIdade(scan.nextInt());

1 curtida

consegui <3