0
I’m doing an object-oriented exercise, I have a Car object and a Driver object, when I try to assign String name to one of the objects this returning me a Null
public class Motorista {
String nome;
Carro CarroAtual;
//Construtor
public Motorista(String nome)
{
this.nome = nome;
}
//Método
public void entrarNoCarro(Carro carro){
if(carro.motoristaAtual == null){
CarroAtual.motoristaAtual.nome = getNome();
CarroAtual.nome = carro.getNome();
System.out.println("O motorista " + nome + " entrou no carro " + carro.nome + ".");
}
else{
throw new IllegalArgumentException("Este carro já tem um motorista.");
}
if(carro.velocidade != 0){
throw new IllegalArgumentException("O motorista não pode entrar em um carro em movimento");
}
}
Error is on the line CarroAtual.motoristaAtual.nome = getNome();
Código completo //////////////////////////////////////////////////////// Driver Class
public class Motorista {
String nome;
Carro CarroAtual;
//Construtor
public Motorista(String nome)
{
this.nome = nome;
}
//Métodos
public void entrarNoCarro(Carro carro)
{
if(carro.motoristaAtual == null){
CarroAtual.motoristaAtual.nome = getNome();
CarroAtual.nome = carro.getNome();
System.out.println("O motorista " + nome + " entrou no carro " + carro.nome + ".");
}
else{
throw new IllegalArgumentException("Este carro já tem um motorista.");
}
if(carro.velocidade != 0){
throw new IllegalArgumentException("O motorista não pode entrar em um carro em movimento");
}
}
public void sairDoCarro(){
if (CarroAtual.nome == null){
throw new IllegalArgumentException("Não há um motorista para sair do carro");
}
else{
System.out.println("O motorista" + nome + "saiu do carro");
}
if(CarroAtual.velocidade != 0) {
throw new IllegalArgumentException("O motorista não pode sair de um carro em movimento.");
}
}
public String getNome(){
return nome;
}
public String toString() {
if(CarroAtual.nome != null) {
return getNome() + CarroAtual.posicaoX + CarroAtual.posicaoY + CarroAtual.velocidade + CarroAtual.aceleracao;
}
else {
return getNome() + CarroAtual.posicaoX + CarroAtual.posicaoY + CarroAtual.velocidade + CarroAtual.aceleracao;
}
}
}
Car Class
public class Carro {
String nome;
int direcao = 0;
int velocidade = 0;
int aceleracao = 0;
int posicaoX = 0;
int posicaoY = 0;
Motorista motoristaAtual;
//Construtores
public Carro(String nome){
this.nome = nome;
}
public Carro(String nome, int posicaoX, int posicaoY) {
this.nome = nome;
this.posicaoX = posicaoX;
this.posicaoY = posicaoY;
}
//Métodos
public void mover(){
try {
if(motoristaAtual.getNome() != null){
System.out.println("O carro " + nome + " começou a se mover.");
}
else{
throw new IllegalArgumentException("O carro não pode se mover sem um motorista.");
}
}
catch (Exception a) {
System.out.println(a.getMessage());
}
}
boolean mover(boolean progressivo){
if(velocidade == 0 && direcao > 0 && motoristaAtual.nome != null){
direcao = direcao + (+direcao) + (+direcao);
return true;
}
else{
return false;
}
}
public void acelerar(int incremento) {
try {
if(mover(true)) {
aceleracao = aceleracao + incremento;
}
}
catch (Exception e) {
System.out.println(e.getMessage());
}
}
public void frear(int decremento) {
try {
mover();
aceleracao = aceleracao - decremento;
}
catch (Exception e) {
System.out.println(e.getMessage());
}
}
public void virarAEsquerda() {
posicaoX = posicaoX - 90;
}
public void virarADireita() {
posicaoX = posicaoX + 90;
}
public String getNome() {
return this.nome;
}
public int getVelocidade() {
return this.velocidade;
}
public int getAceleracao() {
return this.aceleracao;
}
public int getPosicaoX() {
return this.posicaoX;
}
public int getPosicaoY() {
return this.posicaoY;
}
public String toString() {
if (motoristaAtual != null) {
return (motoristaAtual.getNome()) + posicaoX + posicaoY + velocidade + aceleracao;
}
else {
return nome + posicaoX + posicaoY + velocidade + aceleracao;
}
}
public static void main(String[] args) {
Carro c1 = new Carro("C1");
Motorista m1 = new Motorista("M1");
m1.entrarNoCarro(c1);
}
}
if(car.motoristaAtual == null) entered inside if the variable is null and how is trying to access the name of the motoristaAtual gives this error
– MauroAlmeida
I didn’t understand, how could I solve?
– Lucas Ferraz
Edith the question and show how you are instantiating the objects in the Main method please, so I can include a more complete answer. Also add the definition of the Car class.
– MauroAlmeida
Edited..........
– Lucas Ferraz