Bom galera, sou novato em java e estava fazendo um programa só p/ exercitar mesmo.
O programa é bem simples. O programa cadastra/altera e calcula o salario de um funcionario.
Porém durante a execução ocorreu um erro.
ai está o código
public class Pessoa {
private String nome,cpf,endereco;
private int idade;
public Pessoa(){
}
public Pessoa(String cpf, String nome){
this.cpf=cpf;
this.nome=nome;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
public int getIdade() {
return idade;
}
public void setIdade(int idade) {
this.idade = idade;
}
}[/code]
[code]import java.util.Scanner;
public class Funcionario extends Pessoa {
private String funcao;
private double diaria,salarioFixo,valorHoraExtra,faltas,sabados,salarioFinal,vale;
private int contaFuncionario;
////////////METODO CADASTRAR/////////////
public void cadastro(){
Scanner dado=new Scanner(System.in);
System.out.println("Digite a função ");
this.funcao=dado.next().toUpperCase();
System.out.println();
System.out.println("Digite o nome: ");
setNome(dado.next());
System.out.println();
System.out.println("Digite o CPF");
setCpf(dado.next());
System.out.println("Digite a idade do funcionario");
setIdade(dado.nextInt());
System.out.println();
System.out.println("Digite o endereço do funcionario");
setEndereco(dado.next());
}
////////////////METODO ALTERAR CADASTRO///////////////////
public void alterarCadastro(){
Scanner dado=new Scanner(System.in);
while(true){
System.out.println("O QUE DESEJA ALTERAR? ");
System.out.println();
System.out.println("1- Função");
System.out.println("2- Nome");
System.out.println("3- CPF");
System.out.println("4- Endereço");
System.out.println("9- FIM!");
int opcao;
opcao=dado.nextInt();
if(opcao==9){
break;
}else{
switch(opcao){
case'1':
System.out.println("DIGITE A NOVA FUNÇÃO");
this.funcao=dado.next();
break;
case '2':
System.out.println("Digite o nome");
setNome(dado.next());
break;
case'3':
System.out.println("Digite o CPF");
setCpf(dado.next());
break;
case'4':
System.out.println("Digite o endereço");
setEndereco(dado.next());
default:
System.out.println("Opção inválida, tente novamente");
}
}
}
}
////////////METODO CALCULAR SALARIO///////////////////////////////
public void calculaSalario(){
Scanner dado=new Scanner(System.in);
if(funcao.equalsIgnoreCase("ESTAGIÁRIO")){
this.salarioFixo=600;
this.diaria=this.salarioFixo/30;
System.out.println("Quantos sábados o Funcionario trabalhou?");
this.sabados=dado.nextDouble();
this.salarioFinal=this.salarioFixo-(this.faltas*this.diaria)+(this.sabados*this.valorHoraExtra)-(this.vale);
}else if (funcao.equalsIgnoreCase("MOTORISTA")) {
this.salarioFixo=1000;
this.diaria=this.salarioFixo/30;
System.out.println("Quantos sábados o Funcionario trabalhou?");
this.sabados=dado.nextDouble();
this.salarioFinal=this.salarioFixo-(this.faltas*this.diaria)+(this.sabados*this.valorHoraExtra)-(this.vale);
}else if(funcao.equalsIgnoreCase("GERENTE")){
this.salarioFixo=2500;
this.diaria=this.salarioFixo/30;
System.out.println("Quantos sábados o Funcionario trabalhou?");
this.sabados=dado.nextDouble();
this.salarioFinal=this.salarioFixo-(this.faltas*this.diaria)+(this.sabados*this.valorHoraExtra)-(this.vale);
}
}
public double getFaltas() {
return faltas;
}
public void setFaltas(double faltas) {
this.faltas = faltas;
}
public double getVale() {
return vale;
}
public void setVale(double vale) {
this.vale = vale;
}
public Funcionario(String funcao){
this.funcao=funcao;
}
}
[code]import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Scanner;
public class Executa {
public static void main(String[] args) {
List<Funcionario> funci = new ArrayList<Funcionario>();
Scanner dado=new Scanner(System.in);
char opcao;
while(true){
System.out.println("Inicio do Programa - SELECIONE UMA OPÇÃO \n");
System.out.println("1- Cadastrar novo Funcionario");
System.out.println("2- Alterar cadastro de um Funcionario");
System.out.println("3- Calcular salário de um Funcionario");
System.out.println("4- Lançar falta de um Funcionario");
System.out.println("5- Lançar um vale");
System.out.println("9- Encerrar");
opcao=dado.next().charAt(0);
if(opcao == 9){
break;
}else{
switch(opcao){
case '1':
((Funcionario) funci).cadastro();
break;
case'2':
((Funcionario)funci).alterarCadastro();
break;
case'3':
((Funcionario)funci).calculaSalario();
break;
case'4':
System.out.println("Digite a quantidade de faltas");
((Funcionario)funci).setFaltas(dado.nextDouble());
break;
case'5':
System.out.println("Digite o valor do vale/adiantamento");
((Funcionario)funci).setVale(dado.nextDouble());
break;
default:
System.out.println("OPÇÃO INVALIDA, TENTE NOVAMENTE");
}
}
}
}
}
[/code]
O código ta bem simples, tem muita coisa ainda p/ melhorar no código. Fiz ele desse jeito só p/ testar e depois iria melhorando com o tempo.
O problema que ele da uma Exception no case’1’ do switch.
Se vcs poderem me ajudar ai agradeceria.
PS: Dicas p/ melhorar o código tambem serão muito bem vindas
Valeu!