Dúvida com utilização de método [/RESOLVIDO]

[color=darkred]Pessoal, mais ma vez venho aqui com uma dúvida.
Na classe que estou tentando compilar, eu quero econonizar na digitação e em vez de digitar[/color]

nome = input.next();
setNome(nome);

[color=darkred]quero inserir direto no método o que será digitado pelo usuário. A classe tá aí em baixo. Já troquei a posição dos métodos e variáveis na relação entre eles mas não obtive sucesso. Se alguém puder ajudar a arrumar minha besteira, eu agradeço. :smiley: [/color]

[code]import java.util.Scanner;

public class EmployeeTest {

public static void main ( String [] args ) {

	//declaração de variáveis
	Scanner input = new Scanner ( System.in );
	String nome = null;
	String sNome = null;
	double salario = 0.0;
	double salarioAnual;
	Employee func1 = new Employee ( nome, sNome, salario );
	Employee func2 = new Employee ( nome, sNome, salario );

	System.out.print( "Digite o nome do funcionario: " );
	func1.setNome() = input.next(nome);

	System.out.print( "Digite o sobrenome do funcionario: " );
	func1.setSobreNome() = input.next(sNome);

	System.out.print( "Digite o salario do funcionario: ");
	func1.setSalarioMensal() = input.nextDouble(salario);

	salarioAnual = ( func1.getSalarioMensal() * 12 );

	System.out.printf( "O funcionario %s %s tem um salario anual de %.2f.", func1.getNome(), func1.getSobreNome

(), salarioAnual );

	System.out.printf( "O funcionario %s %s tem um salario anual com aumento de 10% e de %.2f.", func1.getNome(), 

func1.getSobreNome(), ( salarioAnual * 0.10 ) );

}

}[/code]

P.S.: Enquanto isso, eu vou tentando aqui. Se eu conseguir acertar, aviso. :stuck_out_tongue:

Onde estão estes SET?.

O Correto não seria vc usar:

func1.setNome(input.next(nome));

ao invês de:

func1.setNome() = input.next(nome);

apesar da classe Scanner ter um método next que receba uma String como parâmetro, não acredito que seja esse que você precisa.

mas não entendi sua confusão, veja bem…você tem essas duas linhas:

nome = input.next();
setNome(nome);

se não quer usar variaveis, é só chamar o método onde está usando a variavel:

setnome(input.next());

Não, o certo é:

func1.setNome(input.next());

Não há a necessidade de criar a variável temporária nome.

São os sets da superclasse, no caso. Mas respondeu minha dúvida. Era a sua resposta que eu queria.

[quote=claudiom]se não quer usar variaveis, é só chamar o método onde está usando a variavel:

view plaincopy to clipboardprint?

  1. setnome(input.next());

setnome(input.next());
[/quote]
Essa forma eu não conhecia.

[quote=ViniGodoy]Não, o certo é:

func1.setNome(input.next());

Não há a necessidade de criar a variável temporária nome.[/quote]

Nem para inicializar o construtor??

São os sets da superclasse, no caso. Mas respondeu minha dúvida. Era a sua resposta que eu queria.

[quote=claudiom]se não quer usar variaveis, é só chamar o método onde está usando a variavel:

view plaincopy to clipboardprint?

  1. setnome(input.next());

setnome(input.next());
[/quote]
Essa forma eu não conhecia.

[quote=ViniGodoy]Não, o certo é:

func1.setNome(input.next());

Não há a necessidade de criar a variável temporária nome.[/quote]

Nem para inicializar o construtor??[/quote]
O que o Vini disse é q vc não precisa das variaveis locais nome e sNome, já que o seu método next() de Scanner irá retornar a String digitada, então na chamada de setnome(input.next())ou retorno de input.next() será passado como argumento.
Agora sobre vc falar “Nem para inicializar o construtor??”[i], eu não entendi direito, uma vez que construtures tem a finalidade de conter a lógica na criação do objeto, isso é se for necessario alguma lógica no momento da instanciação do Objeto.
falow

Olhando o seu código e vendo o que vc está somente passando valores padrões ao inicializar o objeto, acho que o ideal serial vc utilizar o construtor padrão (quando vc não declara nenhum construtor), já que com o construtor padrão os atributos do novo objeto serão instanciados com valores padrões ( inteiros = 0, ponto flutuante = 0.0, referência de objeto = null, boolean = false), com isso vc não precisa passar nenhum valor no argumento:

Employee f1 = new Employee();

Ou então, crie contrutores sobrecarregados, segue exemplo abaixo:

// Construtor vazio
public Employee () {
        // Os seus atributos serão instanciados com os valores padrões
}

// Contrutor passando valor por parâmetro
public Employee(String n, String sn, double s) {
       nome = n;
       sNome = sn;
       salario = s;
}

Agora vc poderá contruir objetos dessa classe de 2 formas:

        // Sem passagem de valor no argumento
        Employee func1 = new Employee ();
        // Com passagem de valor no argumento   
        Employee func2 = new Employee ( nome, sNome, salario );

[color=darkred][b]Hum… Entendi mais ou menos essas explicações sobre os construtores…

Pessoal, mais uma vez, obrigado pelas dúvidas sanadas.[/b][/color]