Set ArrayList

4 respostas
lairylopes

Estou tentando da um "set" em um ArrayList meu, a sintaxe correta seria " list.set(0,variável); ". Só que este valor int do índice do arraylist quero passar através de uma variável, bom postarei o código abaixo para melhor entendimento. Se trata de um pequeno programa para gerenciar uma clínica odontológica e no caso ali irei atualizar os dados do paciente.

public void setPaciente (String rg) {
    Paciente p = null;
    for (int i = 0; i < listaPaciente.size(); i++) {
    p = (Paciente) listaPaciente.get(i);    
    if (p.getRg().equals(rg)) {
      // entrada dos dados ocultei para diminuir o código

      this.nome=nome;
      this.rg=rg;
      this.endereco=endereco;
      this.telefone=telefone;
      this.profissao=profissao;
      this.idpaciente=idpaciente;
      listaPaciente.set(i, (Paciente nome,rg,endereco,telefone,profissao,idpaciente));
    }
   }
  }

4 Respostas

ViniGodoy
O problema não está no set, mas sim, na sintaxe:
(Paciente nome,rg,endereco,telefone,profissao,idpaciente)

Que simplesmente não existe em Java.

O código correto seria:

public void setPaciente (String rg) {
    Paciente p = null;
    for (int i = 0; i &lt; listaPaciente.size(); i++) {
    p = (Paciente) listaPaciente.get(i);    
    if (p.getRg().equals(rg)) {
      // entrada dos dados ocultei para diminuir o código

      this.nome=nome;
      this.rg=rg;
      this.endereco=endereco;
      this.telefone=telefone;
      this.profissao=profissao;
      this.idpaciente=idpaciente;
      listaPaciente.set(i, new Paciente (nome,rg,endereco,telefone,profissao,idpaciente));
    }
   }
  }
lairylopes

Então vinigodoy já tentei também desta maneira e não foi, aparece o seguinte erro:
[color=red]no suitable constructo found for Paciente (java.lang.String,java.lang.String) constructor Paciente.Paciente(java.lang.String,java.lang.String) is not applicable;[/color]

ViniGodoy

Poste sua classe paciente. Mas aparentemente você não tem um construtor que aceite tantos parâmetros.

lairylopes

[color=red]EDITED.[/color] [color=#444444]Meu erro era por questão de parametros do construtor ao ArrayList, o código que alterei agora funciona, caso alguém esteja com a mesma dúvida. [/color]

import java.util.*;
import java.util.ArrayList;

public class Paciente {
  String nome,rg,dtnasc,endereco,telefone,profissao;
  int idpaciente;
  ArrayList <Paciente> listaPaciente = new ArrayList <Paciente>();
  
  Scanner input = new Scanner (System.in);
    
  public Paciente (String nome,String rg,String dtnasc,String endereco,String telefone,String profissao) {
    this.nome=nome;
    this.rg=rg;
    this.dtnasc=dtnasc;
    this.endereco=endereco;
    this.telefone=telefone;
    this.profissao=profissao;
    this.idpaciente=idpaciente;
  }
  public Paciente () {
      
  }
  public void cadastrarPaciente () {
    Paciente x = new Paciente(nome,rg);
    listaPaciente.add(x);
    System.out.println (listaPaciente.get(0).nome);  
    System.out.println (listaPaciente.get(0).rg);
  }
  
 public void buscarCliente (String rg) {
   Paciente p = null;
    for (int i = 0; i < listaPaciente.size(); i++) {
      p = (Paciente) listaPaciente.get(i);
      if (p.getRg().equals(rg)) {
        System.out.println (p.getNome());
        System.out.println (p.getRg());
      }
    }
    
  }
  public void setPaciente (String rg) {
    Paciente p = null;
    for (int i = 0; i < listaPaciente.size(); i++) {
    p = (Paciente) listaPaciente.get(i);    
    if (p.getRg().equals(rg)) {
      //entrada dos dados
      System.out.println ("Digite o nome do paciente :");
      nome=input.next();
      System.out.println ("Digite o rg :");
      rg=input.next();
      System.out.println ("Digite o endereco completo :");
      endereco=input.next();
      System.out.println ("Digite a data de nascimento :");
      dtnasc=input.next();
      System.out.println ("Digite a profissão :");
      profissao=input.next();
        
      this.nome=nome;
      this.rg=rg;
      this.endereco=endereco;
      this.telefone=telefone;
      this.profissao=profissao;
      this.idpaciente=idpaciente;
      listaPaciente.set(i, new Paciente (nome,rg,dtnasc,endereco,telefone,profissao));
    }
   }
  }

  public void excluirCliente (String rg) {
   Paciente p = null;
   for (int i = 0; i < listaPaciente.size(); i++) {
     p = (Paciente) listaPaciente.get(i);
     if (p.getRg().equals(rg)) {
       char op='S';
       System.out.println (p.getNome());
       System.out.println ("Você irá excluir o cadastro de"+ p.getNome()+" - Tem certeza <S>im / <N>ão");
       op=input.next().charAt(0);
       if (op == 'S' || op == 's') {
         listaPaciente.remove(i);
         System.out.println ("Cadastro excluído com sucesso.");
       }
     }
   }
  }
  public String getNome () {
    return nome;
  }
  public void setNome (String nome) {
   this.nome=nome;
  }
  
  public String getRg () {
    return rg;    
  }
  public void setRg (String rg) {
   this.rg=rg;
  }
  
  public String getEndereco () {
   return endereco;
  }
  public void setEndereco (String endereco) {
   this.endereco=endereco;
  }
 
  public String getTelefone () {
   return telefone;
  }
  public void setTelefone (String telefone) {
   this.telefone=telefone;
  }
  
  public String getProfissao () {
   return profissao;
  }
  public void setProfissao (String profissao) {
   this.profissao=profissao;
  }
}
Criado 5 de abril de 2015
Ultima resposta 7 de abr. de 2015
Respostas 4
Participantes 2