Cadastro

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?

9.0.4
Pelo cmd

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…