Boa tarde
Estou precisando de uma ajudinha com uma coisa bem simples para vocês mais que ainda não compreendo muito bem.
1º criei esta classe Funcionario
public class Funcionario {
String nome;
String funcao;
double salario;
}
Em seguida esta Classe FuncionarioTeste
public class FuncionarioTeste {
public static void main(String[] args) {
// TODO Auto-generated method stub
Funcionario funcionario1 = new Funcionario();
Funcionario funcionario2 = new Funcionario();
funcionario1.nome = "Rodrigo Teles";
funcionario1.funcao = "recepcionista";
funcionario1.salario = 1200;
funcionario2.nome = "Jaqueline Lima";
funcionario2.funcao = "supervisora";
funcionario2.salario = 2350;
}
}
Agora é que vem a dúvida, de que forma eu poderia estar imprimindo de maneira bem simples os dados do objeto funcionario1 e funcionario2, ambos utilizando uma unica linha de comando?
O ideal é que a impressão saia da seguinte forma:
Rodrigo Teles recepcionista 1200
Jaqueline Lima supervisora 2350
Depende de como e onde quer imprimir.
Se for apenas no CMD ou Terminal, você pode usar:
1.System.out.print()
- imprime com tudo na mesma linha:
System.out.print(funcionario1.nome + " " + funcionario1.funcao + " " + funcionario1.salario);
Saida:
Rodrigo Teles recepcionista 1200.0
2.System.out.println()
- imprime tudo na mesma linha, mas com uma quebra de linha no final:
System.out.println(funcionario1.nome + " " + funcionario1.funcao + " " + funcionario1.salario);
Saida:
Rodrigo Teles recepcionista 1200.0
3.System.out.printf()
- permite a formatar a saída:
System.out.println("%s %s %.2f\n",funcionario1.nome, funcionario1.funcao, funcionario1.salario);
Saida:
Rodrigo Teles recepcionista 1200.00
2 curtidas
Outra forma de fazer (um pouquinho mais avançada) é usando um método toString na classe Funcionario assim:
public class Funcionario {
String nome;
String funcao;
double salario;
String toString() {
return this.nome + " " + this.funcao + " " + this.salario;
}
}
Depois no main basta…
System.out.println(funcionario1);
System.out.println(funcionario2);
Mas nesse caso, teste bem as formas indicadas pela @vanribeiro, depois aumenta o nivel usando métodos… bons estudos!
2 curtidas
Que legal! Nunca tinha tentado usar o método toString()
para isso! Obrigada!
1 curtida
Ele é feito justamente para casos assim (e existe na classe Object onde qualquer objeto é filho…), se vc não o sobreescrever (override), ele vai imprimir “endereço de memória” do objeto… faça um teste e imprima um objeto sem método toString pra ver o que é impresso…
Além do mais evita ter de ficar concatenando strings para cada objeto… facilitando manutenção e deixando o código mais limpo…
1 curtida
Pesquise também sobre equals e hashCode…
1 curtida
muito obrigado @vanribeiro e @rodevops ajudaram bastante, sou iniciante nessa linguagem então tudo para mim ainda é muito novo.
1 curtida
E se para este tipo de retorno eu resolvesse criar um pequeno argumento imprimindo: Rodrigo Teles de função recepcionista recebe R$1200… como seria?
Argumentos para o método toString não se aplicam (ele é herdado da classe Object como havia dito e não aceita parametros/argumentos), vc até pode criar o seu metodo toString assim por exemplo:
String toString(String argumento) {
return ....// seu texto como vc quer...
}
Porém… terá de chamar explicitamente o toString ao passar o objeto para o println por exemplo:
System.out.println(funcionario1.toString("texto que vai junto da formatação..."));
Isso tiraria o proposito do toString original… seu melhor caso seria criar os famosos getters e setters mas ai é assunto pra outro tópico para não te tirar do foco agora…
1 curtida