[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. [/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.
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?
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 );