Programacao

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! :blush: :hearts: 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

Legal! Vou testar! :grinning:

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