Solução/melhor resposta para as questao abaixo em java

3 respostas
java
H

Olá pessoal fiz uma prova a duas semanas preciso saber quais os erros no meu codigo ou qual a melhor resposta para a questao.

Enuciado abaixo:

  1. Considere , como subclasse pessoa , a classe Empregado. Considere que cada instancia da classe Empregado tem, para além dos atributos que caracterizam a classe Pessoa, os atributos codigoSetor(inteiro), salarioBase(vencimento base) e imposto(porcentagem retida dos impostos), os quais devem ser informados pelo usuario “via teclado”. Implemente a classe Empregado com métodos set e get um metodo calcularSlario. Escreva um programa de teste adequado para a classe Empregado.

abaixo os codigos:

//Classe Pessoa
Public class Pessoa{

 private string nome;
 private int codigomat;
}




// Classe Empregado
public class Empregado Extends Pessoa{

 private int codigoSetor;
 private float salarioBase;
 private float imposto;

public void setCodigoSetor(int codigoSetor){

 this.codigoSetor = codigoSetor;
}

public void getCodigoSetor(){

 return(codigoSetor);
}

public void setSalarioBase(float salarioBase){

 this.salarioBase = salarioBAse;
}

public void getSalarioBase(){

 return(salarioBase);
}

public void setImposto(float imposto){

 this.imposto = imposto;
}

public void getImposto(){

 return(imposto);
}

public void calculaSalario(float imposto,salario){

 super.salario += salario*imposto;
}



// Classe para Teste ou main
Import java.util.scanner;
public class Teste{

 public class main (string args[]){
  scanner c = new scanner(input); // nao sei se devia declarar o scanner aqui? c = recebe codigo do setor
  scanner s = new scanner(input); // s = salario base
  scanner i = new scanner(input); // i = imposto

  system.out.printf("Insira o salrio base: ");
  s = salarioBase.nextFloat(system); // eu acho que aqui eu esqueci de criar objetos para enviar os valor para salarioBase.
  system.out.printf("Insira codigo do setor");
  c = codigoSetor.nextInt(system);
  system.out.printf("Insira o imposto em numero indice exemplo 3% = 0,03")
  i = imposto.nextfloat(system);

  Empregado emprego = new Emprego();
  system.out.printfln("Novo calculo do salrio %f :", +empregado.calculaSalario());

  system.out.printf("Fim Teste! \n");
}

 }

Tentei fazer o maximo de comentarios em cada metodo para ficar mais legivel.

3 Respostas

L

Oi sou novo em java, mas já usei o scanner uma vez e foi diferente do jeito que vc usou… acho que no caso vc só precisa instanciar o Scanner uma vez e depois criar variaveis que leiam e guardem a entrada do Usuario… depois vc faz o que quiser com esses valores guardados… ou seja, pode instanciar um empregado e usar os setters com os valores das variaveis que guardam o valor da entrada Scanner… dá uma olhada nesse site… http://www.javaprogressivo.net/2012/08/java-recebendo-dados-do-usuario-classe.html lá tem bem explicado o uso do Scanner e pode te ajudar a implementar melhor! Se continuar com dúvida eu tento explicar melhor mas acho que o site já vai te ajudar…

Espero que te ajude!! :slight_smile:

Ah, pra te dar um toque, tem um momento que vc instancia um objeto Empregado e depois do igual coloca new Emprego()

V

Bom … primeiro os seus métodos “GET” não podem ser void ja que eles tem que retornar alguma coisa
O mesmo se aplica ao seu método calculaSalario que não retorna e vc esta passando ele como parametro na mensagem. O que vc pode fazer é chamar o método calculaSalario atualizando o salario e na mensagem chama o getSalario, ou pode fazer ele retornar o salario tambem.

Vc não precisa criar vários Scanners, um só já bastaria. E vc pode passar o resultado do Scanner direto nos métodos “Set”

Reescrevi e ficou assim:

public class Empregado extends Pessoa {

private int codigoSetor;
private float salarioBase;
private float imposto;

public void setCodigoSetor(int codigoSetor){this.codigoSetor = codigoSetor;}
public void setSalarioBase(float salarioBase){this.salarioBase = salarioBase;}
public void setImposto(float imposto){this.imposto = imposto;}

public int   getCodigoSetor(){return(codigoSetor);}
public float getSalarioBase(){return(salarioBase);}
public float getImposto    (){return(imposto);}

public void calculaSalario(){
    this.salarioBase += this.salarioBase*this.imposto/100;
}

}

E a Main ficou assim:

public static void main(String[] args) {
    Scanner scn = new Scanner(System.in);
    Empregado e = new Empregado();

    System.out.print("Insira o salário base: ");
    e.setSalarioBase(scn.nextFloat());
    
    System.out.print("Insira código do setor: ");
    e.setCodigoSetor(scn.nextInt());
    
    System.out.print("Insira o percentual de aumento (%): ");
    e.setImposto(scn.nextFloat());
    
    e.calculaSalario();
    System.out.println("Novo Salario: "+e.getSalarioBase());
    
    System.out.println("Fim Teste! \n");

}
H

Vonquelbe_Cruz otimo! obrigado, de 0 á 2,5 vc dava quanto pro meu codigo?

Criado 4 de outubro de 2016
Ultima resposta 4 de out. de 2016
Respostas 3
Participantes 3