import java.util.Scanner;
import java.util.ArrayList;
public class trabai {
public static void main(String[] args) {
String nome,cpf,rg,telefone;
int nfun=0;
int nFuncionario=0;
ArrayList<Funcionario> p = new ArrayList<Funcionario>();
Scanner sc = new Scanner(System.in);
System.out.println("Digite o número da funcionalidade: \n 1- Cadastro de funcionário (nome, cpf, rg, telefone) \n 2- Consultar funcionário cadastrado \n 3- Deletar funcionário cadastrado\n 4- Realizar Check-in \n 5- Realizar Check-out \n 6- Verificação de valor a ser pago pelas diárias \n 7- Verificar se existe e, caso exista descontos, abater do valor da compra. ");
int fun=sc.nextInt();
switch(fun){
case 1:
Funcionario p1 = new Funcionario();
System.out.println("Digite o nome do funcionário: ");
System.out.flush();
nome=sc.next();
p1.setNome(nome);
System.out.println("Digite o cpf: ");
System.out.flush();
cpf=sc.next();
p1.setCpf(cpf);
System.out.println("Digite o rg: ");
System.out.flush();
rg=sc.next();
p1.setRg(rg);
System.out.println("Digite o telefone: ");
System.out.flush();
telefone=sc.next();
p.add(p1);
break;
}
}
}
Estou com erros nesse código e não consigo identificar quais. Me ajudem!
trabai.java:8: error: cannot find symbol
ArrayList p = new ArrayList();
^
symbol: class Funcionario
location: class trabai
trabai.java:8: error: cannot find symbol
ArrayList p = new ArrayList();
^
symbol: class Funcionario
location: class trabai
trabai.java:14: error: cannot find symbol
Funcionario p1 = new Funcionario();
^
symbol: class Funcionario
location: class trabai
trabai.java:14: error: cannot find symbol
Funcionario p1 = new Funcionario();
^
symbol: class Funcionario
location: class trabai
4 errors
Recomendo que onde te seus códigos, muito ruim analisar um código que não está indentado.
Qual a versão do Java?
Como está fazendo para compilar?
Cadê a classe Funcionario?
a classe seria dessa maneira?
package trabai;
public class Funcionario {
protected String nome,cpf,rg,telefone;
}
Quase. Faltaram os setters que vc usa no seu primeiro código.
public class Funcionario {
private String nome, cpf, rg, telefone;
public void setNome(String nome) { /* ... */ }
public void setCpf(String nome) { /* ... */ }
public void setRg(String nome) { /* ... */ }
public void setTelefone(String nome) { /* ... */ }
}
Seria desnecessário, já que a classe está no mesmo pacote e os atributos foram declarados como protected.
Boa noite…eu criei uma classe funcionario no mesmo pacote do projeto e depois copiei o codigo dele e funcionou ok… O problema nao poderia ser com a classe funcionario estar em outro pacote?
Aparecem 4 erros segundo ele e todos reportando para classe funcionario, ( essa mesma classe tem 4 atributos: nome, cpf, rg, telefone)
Dá esse erro agora:
trabai.java:17: error: non-static variable nome cannot be referenced from a static context
nome=sc.next();
^
trabai.java:18: error: non-static variable nome cannot be referenced from a static context
p1.setNome(nome);
^
trabai.java:18: error: cannot find symbol
p1.setNome(nome);
^
symbol: method setNome(String)
location: variable p1 of type Funcionario
trabai.java:21: error: non-static variable cpf cannot be referenced from a static context
cpf=sc.next();
^
trabai.java:22: error: non-static variable cpf cannot be referenced from a static context
p1.setCpf(cpf);
^
trabai.java:22: error: cannot find symbol
p1.setCpf(cpf);
^
symbol: method setCpf(String)
location: variable p1 of type Funcionario
trabai.java:25: error: non-static variable rg cannot be referenced from a static context
rg=sc.next();
^
trabai.java:26: error: non-static variable rg cannot be referenced from a static context
p1.setRg(rg);
^
trabai.java:26: error: cannot find symbol
p1.setRg(rg);
^
symbol: method setRg(String)
location: variable p1 of type Funcionario
trabai.java:29: error: non-static variable telefone cannot be referenced from a static context
telefone=sc.next();
^
Eu criei a classe, e não mexi no código.
pode ser refatorado para
ArrayList<Funcionario> trabalhadores = new ArrayList<>();
agora toda vez q você for adicionar alguém na lista, vc vai precisar criar o objeto funcionário para ele existir na lista.
p.add(new Funcionario(metodos do construtor);
agora vamos olhar a tua classe da lista:
public class Funcionario {
protected String nome;
protected String cpf;
protected String rg;
protected String telefone;
}
sendo honesto:
cria um objeto chamado chamado funcionário com o nome e com a matricula dele como funcionário.
dados pessoais como cpf, rg, telefone, num objeto a parte, chamado dados pessoais.
o código fica assim:
public class Funcionario {
private final String matricula;
private final String nome;
public Funcionario(String matricula; String nomeCompleto) {
this.matricula = matricula;
this.nome = nomeCompleto;
}
public String getMatricula() {
return this.matricula;
}
public String getFuncionario() {
return this.nome;
}
@Override
public String toString() {
return "#" + getMatricula() + ", " + getFuncionario();
}
}
agora cria uma classe com dados pessoais
ai cria um hashmap com os dados pessoais desses funcionários.
A dica dos setters foi pra que a classe Funcionario se adequasse ao código que ele mostrou primeiro, no qual ele faz uso de métodos como setNome() e companhia.
@Ivo_Augusto, Modifiquei um pouco seu código. Ficou assim:
import java.util.Scanner;
import java.util.ArrayList;
class Funcionario {
private String nome, cpf, rg, telefone;
public void setNome(String nome) { /* ... */ }
public void setCpf(String nome) { /* ... */ }
public void setRg(String nome) { /* ... */ }
public void setTelefone(String nome) { /* ... */ }
}
class trabai {
public static void main(String[] args) {
ArrayList<Funcionario> p = new ArrayList<>();
Scanner sc = new Scanner(System.in);
System.out.println("Digite o número da funcionalidade: \n 1- Cadastro de funcionário (nome, cpf, rg, telefone) \n 2- Consultar funcionário cadastrado \n 3- Deletar funcionário cadastrado\n 4- Realizar Check-in \n 5- Realizar Check-out \n 6- Verificação de valor a ser pago pelas diárias \n 7- Verificar se existe e, caso exista descontos, abater do valor da compra. ");
int fun = Integer.parseInt( sc.nextLine() );
switch(fun){
case 1:
Funcionario p1 = new Funcionario();
System.out.println("Digite o nome do funcionário: ");
p1.setNome( sc.nextLine() );
System.out.println("Digite o cpf: ");
p1.setCpf( sc.nextLine() );
System.out.println("Digite o rg: ");
p1.setRg( sc.nextLine() );
System.out.println("Digite o telefone: ");
p1.setTelefone( sc.nextLine() );
p.add( p1 );
break;
}
}
}
Veja se te ajuda a avançar.
1 curtida
No ultimo post dele os erros ja mudaram… ele esta usando variaveis declaradas normais num contexto estatico…