Duvida classes Java - Iniciante

10 respostas Resolvido
D

Boa Tarde Pessoal! Tudo Bem?

Estou com a seguinte dificuldade criei duas classes para aprender a desenvolver em Java.

o objetivo é receber as informações que inseri em um retorno printout.

Segue as classes que criei: class Carro e AppTaxi

public class Carro {

      private String modelo;

      private String fabricante;

      private String pais;

      private String cor;

      private int qtdPortas;

      private int anoFabri;

      private String arcondicionado;
    //Modelo

      public void atribuiModeloCarro (String modelo)

      {
            this.modelo = modelo;
      }
     
      //Fabricante
      public void atribuiFabricanteCarro (String fabricante)

      {
            this.fabricante = fabricante;
      }
     
      //Cor
      public void atribuiCorCarro (String cor)

      {
            this.cor = cor;  
      }
      
      //Pais
      public void atribuipaisCarro (String pais)

      {
            this.pais = pais;  
      }
      
      //Quantidade de Portas
      public void atribuiportasCarro (int qtdPortas)

      {
            this.qtdPortas = qtdPortas;  
      }
      
      //Ano da fabricação
      public void atribuianoFabriCarro (int anoFabri)

      {
            this.anoFabri = anoFabri;  
      }
      
      //Arcondicionado
      public void atribuiArcondicionadoCarro (String arcondicionado)

      {
            this.arcondicionado = arcondicionado;  
      }
         
      //Retorna Modelo
      public String retornaModeloCarro()

      {
            return modelo;
      }

      //Retorna Fabricante
      public String retornaFabricante()

      {
            return fabricante;
      }
      
      //Retorna Pais
      public String retornaPaisCarro()

      {
            return pais;
      }
            //Retorna Cor
      public String retornacorCarro()
      {
            return cor;
      }
            //Retorna Arcondicionado
      public String retornaArcondicionadoCarro()
      {
            return arcondicionado;
      }
            //Retorna QUantidade de Portas
      public int retornaQuantidadePortasCarro()
      {
            return qtdPortas;
      }
      //Retorna Ano de Gabricação
      public int retornaAnoFabricaçãoCarro()
      {
            return anoFabri;
      }
      public void exibeDadosCarro()
      {
            System.out.printf("Dados do Carro: \n%s\n",  retornaModeloCarro(), retornaFabricante(), retornaPaisCarro());
      }
}


import java.util.Scanner;

 

public class AppTaxi {

 

      @SuppressWarnings("resource")
	public static void main(String[] args) {

            Scanner input = new Scanner(System.in);

           

            Carro novoCarro = new Carro();

           

            System.out.println("Digite o Modelo:" );

            String nomeModelo = input.nextLine();

            novoCarro.atribuiModeloCarro(nomeModelo);

            System.out.println();

           

            System.out.println("Digite o Fabricante:" );

            String nomeFabricante = input.nextLine();

            novoCarro.atribuiModeloCarro(nomeFabricante);

            System.out.println();

           

            System.out.println("Digite o pais:" );

            String nomePais = input.nextLine();

            novoCarro.atribuiModeloCarro(nomePais);

            System.out.println();

           

            novoCarro.exibeDadosCarro();

           

 

      }

 

}

Porem o retorno que obtive após digitar 3 informações foi:

Digite o Modelo:
Palio

Digite o Fabricante:
Fiat

Digite o pais:
Brasil

Retorno do Programa:

Dados do Carro:
Brasil

Poderiam me ajudar com esta dúvida e o porque ocorreu isto?

Obrigado!

10 Respostas

igomes

Usa a convenção da linguagem pelo menos
Le um pouco as apostilas da Caelum, é bom pra começar

TalonNoxus

Você ja viu onde você esta inserindo os dados?
Você esta adicionando o fabricante e o pais no modelo…

D

Olá! pior não tinha veisto pequeno detalhe onde esta atribuindo as informações todas iguais.
Ok alterei esta informação e o resultado foi:
Digite o Modelo:
Palio

Digite o Fabricante:
Fiat

Digite o pais:
Brasil

Retorno:
Dados do Carro:
Palio

D

Boa Tarde Igomes!

Cara realmente acho que o sistema esta completamente fora dos padrões e convenções, e pretendo melhorar isso com o tempo atualmente estou lendo o livro do deitel para aprender e realmente acho muito legal os materiais da caelum.

Mas ao mesmo tempo que leio estes materiais gosto de arriscar um algo mais com o objetivo de aprender.

Obrigado!

D

Boa Tarde TalonNoxus!

Consegui usando aquele seu primeiro apontamento.

E depois usando a tentativa e erro com a outra classe.

Segue as classes modificadas:

public class Carro {

private String modelo;

  private String fabricante;

  private String pais;

  private String cor;

  private int qtdPortas;

  private int anoFabri;

  private String arcondicionado;

 

 

 //Modelo

  public void atribuiModeloCarro (String modelo)

  {
        this.modelo = modelo;
  }
 
  //Fabricante
  public void atribuiFabricanteCarro (String fabricante)

  {
        this.fabricante = fabricante;
  }
 
  //Cor
  public void atribuiCorCarro (String cor)

  {
        this.cor = cor;  
  }
  
  //Pais
  public void atribuipaisCarro (String pais)

  {
        this.pais = pais;  
  }
  
  //Quantidade de Portas
  public void atribuiportasCarro (int qtdPortas)

  {
        this.qtdPortas = qtdPortas;  
  }
  
  //Ano da fabricação
  public void atribuianoFabriCarro (int anoFabri)

  {
        this.anoFabri = anoFabri;  
  }
  
  //Arcondicionado
  public void atribuiArcondicionadoCarro (String arcondicionado)

  {
        this.arcondicionado = arcondicionado;  
  }
     
  //Retorna Modelo
  public String retornaModeloCarro()

  {
        return modelo;
  }

  //Retorna Fabricante
  public String retornaFabricante()

  {
        return fabricante;
  }
  
  //Retorna Pais
  public String retornaPaisCarro()

  {
        return pais;
  }
  
  //Retorna Cor
  public String retornacorCarro()

  {
        return cor;
  }
  
  //Retorna Arcondicionado
  public String retornaArcondicionadoCarro()

  {
        return arcondicionado;
  }
  
  //Retorna QUantidade de Portas
  public int retornaQuantidadePortasCarro()

  {
        return qtdPortas;
  }
  
  //Retorna Ano de Gabricação
  public int retornaAnoFabricaçãoCarro()

  {
        return anoFabri;
  }
 

  
  
  public void exibeDadosCarro()

  {

        System.out.printf("Dados do Carro: \n%s\n",  retornaModeloCarro() + "\n" + retornaFabricante() + "\n" + retornaPaisCarro() );

  }

}

import java.util.Scanner;

public class AppTaxi {

@SuppressWarnings("resource")
public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

       

        Carro novoCarro = new Carro();

       

        System.out.println("Digite o Modelo:" );

        String nomeModelo = input.nextLine();

        novoCarro.atribuiModeloCarro(nomeModelo);

        System.out.println();

       

        System.out.println("Digite o Fabricante:" );

        String nomeFabricante = input.nextLine();

        novoCarro.atribuiFabricanteCarro(nomeFabricante);

        System.out.println();

       

        System.out.println("Digite o pais:" );

        String nomePais = input.nextLine();

        novoCarro.atribuipaisCarro(nomePais);

        System.out.println();

       

        novoCarro.exibeDadosCarro();

       



  }

}

TalonNoxus

No método de exibeDadosCarro(), você tem um %s ali, o que significa? Significa que a sua primeira variavel ou método do tipo String irá ocupar aquele lugar do %s, você tem 3 métodos, logo deveria ter %s duas vezes que representa a String e um %d que representa um numero inteiro.

Você tem duas soluções:

  1. Adicionar um %s e um %d no printf.
    2)Substituir o printf por println e retirar o %s
D

TalonNoxus,

Eu consegui fazer funcionar as classes.

Porem eu fico com a seguinte duvida, pois eu tive que passar todas as variaveis para o tipo string, porque não consegui aplicar o tipo inteiro no retorno.
segue o resultado:

Segue abaixo também as classes alteradas:

import java.util.Scanner;

public class AppTaxi {

@SuppressWarnings("resource")
public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

       

        Carro novoCarro = new Carro();

       

        System.out.println("Digite o Modelo:" );
        String nomeModelo = input.nextLine();
        novoCarro.atribuiModeloCarro(nomeModelo);
        System.out.println();

       

        System.out.println("Digite o Fabricante:" );
        String nomeFabricante = input.nextLine();
        novoCarro.atribuiFabricanteCarro(nomeFabricante);
        System.out.println();

       

        System.out.println("Digite o pais:" );
        String nomePais = input.nextLine();
        novoCarro.atribuipaisCarro(nomePais);
        System.out.println();
        
        
        
        System.out.println("Digite a Cor:" );
        String corCarro = input.nextLine();
        novoCarro.atribuiCorCarro(corCarro);
        System.out.println();
        
        
        
        System.out.println("Carro Tem Arcondicionado?" );
        String ar = input.nextLine();
        novoCarro.atribuiArcondicionadoCarro(ar);
        System.out.println();
        
        
        
        System.out.println("Digite a quantidade de Portas" );
        String nPortas = input.nextLine();
        novoCarro.atribuiportasCarro(nPortas);
        System.out.println();
        
        
        System.out.println("Ano Fabricação" );
        String anoFabric = input.nextLine();
        novoCarro.atribuianoFabriCarro(anoFabric);
        System.out.println();
        
        

       

        novoCarro.exibeDadosCarro();

  }

}

import javax.swing.JOptionPane;

public class Carro {

private String modelo, fabricante, pais, cor, qtdPortas, anoFabri, arcondicionado;
 

 //Modelo

  public void atribuiModeloCarro (String modelo)

  {
        this.modelo = modelo;
  }
 
  //Fabricante
  public void atribuiFabricanteCarro (String fabricante)

  {
        this.fabricante = fabricante;
  }
 
  //Cor
  public void atribuiCorCarro (String cor)

  {
        this.cor = cor;  
  }
  
  //Pais
  public void atribuipaisCarro (String pais)

  {
        this.pais = pais;  
  }
  
  //Quantidade de Portas
  public void atribuiportasCarro (String qtdPortas)

  {
        this.qtdPortas = qtdPortas;  
  }
  
  //Ano da fabricação
  public void atribuianoFabriCarro (String anoFabri)

  {
        this.anoFabri = anoFabri;  
  }
  
  //Arcondicionado
  public void atribuiArcondicionadoCarro (String arcondicionado)

  {
        this.arcondicionado = arcondicionado;  
  }
     
  //Retorna Modelo
  public String retornaModeloCarro()

  {
        return modelo;
  }

  //Retorna Fabricante
  public String retornaFabricante()

  {
        return fabricante;
  }
  
  //Retorna Pais
  public String retornaPaisCarro()

  {
        return pais;
  }
  
  //Retorna Cor
  public String retornacorCarro()

  {
        return cor;
  }
  
  //Retorna Arcondicionado
  public String retornaArcondicionadoCarro()

  {
        return arcondicionado;
  }
  
  //Retorna Quantidade de Portas
  public String retornaQuantidadePortasCarro()

  {
        return qtdPortas;
  }
  
  //Retorna Ano de Gabricação
  public String retornaAnoFabricaçãoCarro()

  {
        return anoFabri;
  }
 

  
  
  public void exibeDadosCarro()

  {

	  JOptionPane.showMessageDialog(null, 
        		"Modelo:" + retornaModeloCarro() + "\n" + 
        		"Fabricante:" + retornaFabricante() + "\n" + 
        		"Pais:" + retornaPaisCarro() + "\n" +
        		"Cor:" + retornacorCarro() + "\n" +
        		"Ar-Condicionado:" + retornaArcondicionadoCarro() + "\n" +
        		"Portas:" + retornaQuantidadePortasCarro() + "\n" +
        		"Ano de Fabricação:" + retornaAnoFabricaçãoCarro()	
        		);

  }

}

TalonNoxus

Não conseguiu atribuir um valor int ao método ou não conseguiu retornar um valor int do método?

D

Eu fiz a alteração na classe para a quantidade e data para o tipo int, porem na classe principal fica aparecendo este erro:

Segue as classes com as alterações:

import java.util.Scanner;

public class AppTaxi {

@SuppressWarnings("resource")
public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

       

        Carro novoCarro = new Carro();

       

        System.out.println("Digite o Modelo:" );
        String nomeModelo = input.nextLine();
        novoCarro.atribuiModeloCarro(nomeModelo);
        System.out.println();

       

        System.out.println("Digite o Fabricante:" );
        String nomeFabricante = input.nextLine();
        novoCarro.atribuiFabricanteCarro(nomeFabricante);
        System.out.println();

       

        System.out.println("Digite o pais:" );
        String nomePais = input.nextLine();
        novoCarro.atribuipaisCarro(nomePais);
        System.out.println();
        
        
        
        System.out.println("Digite a Cor:" );
        String corCarro = input.nextLine();
        novoCarro.atribuiCorCarro(corCarro);
        System.out.println();
        
        
        
        System.out.println("Carro Tem Arcondicionado?" );
        String ar = input.nextLine();
        novoCarro.atribuiArcondicionadoCarro(ar);
        System.out.println();
        
        
        
        System.out.println("Digite a quantidade de Portas" );
        int nPortas = input.nextLine();
        novoCarro.atribuiportasCarro(nPortas);
        System.out.println();
        
        
        System.out.println("Ano Fabricação" );
        int anoFabric = input.nextLine();
        novoCarro.atribuianoFabriCarro(anoFabric);
        System.out.println();
        
        
        
        System.out.println("Ano Fabricação" );
        int anoModel = input.nextLine();
        novoCarro.atribuianoModelo(anoModel);
        System.out.println();
        

       

        novoCarro.exibeDadosCarro();

  }

}

import javax.swing.JOptionPane;

public class Carro {

private String modelo, fabricante, pais, cor, arcondicionado; int qtdPortas, anoFabri, anoModelo;
 

 //Modelo

  public void atribuiModeloCarro (String modelo)

  {
        this.modelo = modelo;
  }
 
  //Fabricante
  public void atribuiFabricanteCarro (String fabricante)

  {
        this.fabricante = fabricante;
  }
 
  //Cor
  public void atribuiCorCarro (String cor)

  {
        this.cor = cor;  
  }
  
  //Pais
  public void atribuipaisCarro (String pais)

  {
        this.pais = pais;  
  }
  
  //Quantidade de Portas
  public void atribuiportasCarro (int qtdPortas)

  {
        this.qtdPortas = qtdPortas;  
  }
  
  //Ano da fabricação
  public void atribuianoFabriCarro (int anoFabri)

  {
        this.anoFabri = anoFabri;  
  }
  
  //Ano do Modelo
  public void atribuianoModelo (int anoModelo)

  {
        this.anoModelo = anoModelo;  
  }
  
  //Arcondicionado
  public void atribuiArcondicionadoCarro (String arcondicionado)

  {
        this.arcondicionado = arcondicionado;  
  }
     
  //Retorna Modelo
  public String retornaModeloCarro()

  {
        return modelo;
  }

  //Retorna Fabricante
  public String retornaFabricante()

  {
        return fabricante;
  }
  
  //Retorna Pais
  public String retornaPaisCarro()

  {
        return pais;
  }
  
  //Retorna Cor
  public String retornacorCarro()

  {
        return cor;
  }
  
  //Retorna Arcondicionado
  public String retornaArcondicionadoCarro()

  {
        return arcondicionado;
  }
  
  //Retorna Quantidade de Portas
  public int retornaQuantidadePortasCarro()

  {
        return qtdPortas;
  }
  
  //Retorna Ano de Gabricação
  public int retornaAnoFabricaçãoCarro()

  {
        return anoFabri;
  }
  
  //Retorna Ano de Gabricação
  public int retornaAnoModeloCarro()

  {
        return anoModelo;
  }
 

  
  
  public void exibeDadosCarro()

  {

	  JOptionPane.showMessageDialog(null, 
        		"Modelo:" + retornaModeloCarro() + "\n" + 
        		"Fabricante:" + retornaFabricante() + "\n" + 
        		"Pais:" + retornaPaisCarro() + "\n" +
        		"Cor:" + retornacorCarro() + "\n" +
        		"Ar-Condicionado:" + retornaArcondicionadoCarro() + "\n" +
        		"Portas:" + retornaQuantidadePortasCarro() + "\n" +
        		"Ano de Fabricação:" + retornaAnoFabricaçãoCarro()	+ "\n" +
        		"Ano do Modelo:" + retornaAnoModeloCarro()
        		);

  }

}

TalonNoxus
Solucao aceita

O Erro diz: Não é possivel converter de String para int.

O método nextLine() retorna uma String, e você não pode passar uma String para um número inteiro, mesmo a String tendo o valor 2.

O que vocé pode fazer nesse caso é usar o método nextInt() ao inves de nextLine().

Mas supondo que você tenha um numero em um tipo String e que você quer que o seu atributo do tipo int tenha esse valor, o que você pode fazer é o seguinte:

Isso converterá o valor da sua String para int

Criado 24 de setembro de 2016
Ultima resposta 25 de set. de 2016
Respostas 10
Participantes 3