Oi galera, sou iniciante em Java e estou fazendo um trabalho pra faculdade…
só que está dando esse erro:
Exception in thread "main" java.lang.NullPointerException
at Estacionamento.setup(Estacionamento.java:88)
at TesteEstacionamento.main(TesteEstacionamento.java:25)
Alguém pode me ajudar com isso? já tentei mil coisas e continua dando erro…por isso não consegui nem testar o restante do programa e preciso entregar no máximo sábado.
As classes que estou usando são :
1 -
public class Estacionamento {
String nome;
String endereco;
double largura;
double profundidade;
Vaga novasVagas[];
public Estacionamento(){
}
public Estacionamento(String nome, String endereco, double largura, double profundidade){
this.nome = nome;
this.endereco = endereco;
this.largura = largura;
this.profundidade = profundidade;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
public double getLargura() {
return largura;
}
public void setLargura(double largura) {
this.largura = largura;
}
public double getProfundidade() {
return profundidade;
}
public void setProfundidade(double profundidade) {
this.profundidade = profundidade;
}
public double getAreaUtil(){
// área do terreno ocupada pelo estacionamento
return (this.getLargura() * this.getProfundidade());
}
public double getAreaOcupadaPorVagas(){
//soma da área de todas as vagas
double soma = 0;
for(int i = 0; i < novasVagas.length; i++)
soma = soma + novasVagas[i].getAreaUtil();
return soma;
}
public double getAreaCirculacaoEToaletes(){
return (this.getAreaUtil() - this.getAreaOcupadaPorVagas());
}
public Vaga procurarVaga(String linha, int coluna){
for(int i = 0; i < novasVagas.length; i++){
if((novasVagas[i].getLetra() == linha) && (novasVagas[i].getNumero() == coluna))
return novasVagas[i];
}
return null;
}
public void setup(int linhasNormais, int linhasEspeciais){
novasVagas = new Vaga[(linhasEspeciais * ValoresConstantes.MAX_VAGAS_ESPECIAIS_POR_LINHA) + (linhasNormais * ValoresConstantes.MAX_VAGAS_NORMAIS_POR_LINHA)];
for(int i = 0; i < ValoresConstantes.MAX_VAGAS_ESPECIAIS_POR_LINHA; i++){
this.novasVagas[i].setLetra(ValoresConstantes.alfabeto[0]);
this.novasVagas[i].setNumero(i + 1);
this.novasVagas[i].setLargura(ValoresConstantes.LARGURA_VAGAS_ESPECIAIS);
this.novasVagas[i].setProfundidade(ValoresConstantes.ALTURA_VAGAS);
}
for(int i = ValoresConstantes.MAX_VAGAS_ESPECIAIS_POR_LINHA;
i < ((linhasNormais * ValoresConstantes.MAX_VAGAS_NORMAIS_POR_LINHA)
+ (linhasEspeciais * ValoresConstantes.MAX_VAGAS_ESPECIAIS_POR_LINHA)); i++){
novasVagas[i].setLargura(ValoresConstantes.LARGURA_VAGAS_NORMAIS);
novasVagas[i].setProfundidade(ValoresConstantes.ALTURA_VAGAS);
}
for(int i = ValoresConstantes.MAX_VAGAS_ESPECIAIS_POR_LINHA;
i < ((linhasNormais * ValoresConstantes.MAX_VAGAS_NORMAIS_POR_LINHA) +
(linhasEspeciais * ValoresConstantes.MAX_VAGAS_ESPECIAIS_POR_LINHA)); i++){
for(int j = 0; j < ValoresConstantes.MAX_VAGAS_NORMAIS_POR_LINHA; j++){
novasVagas[j].setNumero(i + 1);
novasVagas[j].setLetra(ValoresConstantes.alfabeto[i]);
}
}
}
public String toString(){
String msg = "";
for(int i = 0; i < novasVagas.length; i++){
if(novasVagas[i].getNumero() == 1){
msg = msg + "\n";
}
msg = msg + "Linha " + ValoresConstantes.alfabeto[i] + ": | " +
novasVagas[i].getTipo() + " " + novasVagas[i].getLetra() + novasVagas[i].getNumero() + "| ";
}
return msg;
}
}
2 -
public final class ValoresConstantes {
public static final int MAX_VAGAS_NORMAIS_POR_LINHA = 10;
public static final int MAX_VAGAS_ESPECIAIS_POR_LINHA = 8;
public static final double LARGURA_VAGAS_ESPECIAIS = 2.0;
public static final double LARGURA_VAGAS_NORMAIS = 2.51;
public static final double ALTURA_VAGAS = 4.0;
public static final String[] alfabeto = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" };
}
3 -
import java.util.Scanner;
public class TesteEstacionamento {
public static void main(String args[]){
String nome = "";
String endereco = "";
String buscaLetra = "";
int buscaNumero = 0;
Scanner input = new Scanner(System.in);
System.out.printf("Entre com o nome do Estacionamento:");
nome = input.next();
System.out.printf("Entre com o endereço do Estacionamento:");
endereco = input.next();
//TesteEstacionamento meuEstacionamento = new TesteEstacionamento();
Estacionamento novoEstacionamento = new Estacionamento(nome, endereco, 23, 33);
novoEstacionamento.setup(5, 1);
System.out.printf("O nome do Estacionamento é: %s\n", novoEstacionamento.getNome());
System.out.printf("Endereço: %s\n", novoEstacionamento.getEndereco());
System.out.printf("Área útil: %f\n", novoEstacionamento.getAreaUtil());
System.out.printf("Área ocupada pelas vagas: %f\n", novoEstacionamento.getAreaOcupadaPorVagas());
System.out.printf("Área total de circulação e toaletes: %f\n", novoEstacionamento.getAreaCirculacaoEToaletes());
System.out.printf("Quer buscar por uma vaga especifica? entre com a letra da vaga:\n");
buscaLetra = input.next();
System.out.printf("Agora entre com o número da vaga a ser buscada:\n");
buscaNumero = input.nextInt();
if(novoEstacionamento.procurarVaga(buscaLetra, buscaNumero) == null){
System.out.printf("\n.:: Vaga não foi encontrada ::.\n");
}
else{
novoEstacionamento.procurarVaga(buscaLetra, buscaNumero);
}
}
}
4 -
public class Vaga {
String letra;
int numero;
double largura, profundidade;
char tipo;
// construtor vazio sem parâmetro algum....
// apenas pq pede no exercício - não causa erro
public Vaga(){
this.setTipo();
}
// construtor que inicializa todas os atributos da classe vaga
public Vaga(String letra, int numero, double largura, double profundidade){
this.letra = letra;
this.numero = numero;
this.largura = largura;
this.profundidade = profundidade;
// o atributo tipo tem de ser inicializado pela sobrecarga do método setTipo
// existem dois setTipo, um que inicializa o tipo de acordo com a getAreaUtil
// e outro que inicializa para os demais casos
this.setTipo();
}
// getters e setters de todos os atributos
public String getLetra() {
return letra;
}
public void setLetra(String letra) {
this.letra = letra;
}
public int getNumero() {
return numero;
}
public void setNumero(int numero) {
this.numero = numero;
}
public double getLargura() {
return largura;
}
public void setLargura(double largura) {
this.largura = largura;
}
public double getProfundidade() {
return profundidade;
}
public void setProfundidade(double profundidade) {
this.profundidade = profundidade;
}
public char getTipo() {
return tipo;
}
// primeiro método setTipo - o outro está logo abaixo
// configura a variável de acordo com um parâmetro char tipo
public void setTipo(char tipo) {
this.tipo = tipo;
}
// o segundo método setTipo - inicializa de acordo com o método getAreaUtil()
// que retorna a área util
public void setTipo(){
if(this.getAreaUtil() > 10.0)
this.tipo = 'E';
else
this.tipo = 'N';
}
public double getAreaUtil(){
return this.getLargura() * this.getProfundidade();
}
// Override do método toString herdado da classe Objetc
// que nada mais é do que uma nova declaração do método
public String toString(){
return "Vaga [Codigo = " + this.numero + this.getLetra() + ", Profundidade = " + this.getProfundidade()
+ ", Largura = " + this.getLargura() + ", Tipo = " + this.getTipo() + ", Area Útil = " + this.getAreaUtil() + "]";
}
}