Como criar um metodo Editar num Array

package edu.facema.ed;

import java.util.Set;
import java.util.TreeSet;

public class Alunos {
private static String nomes[];
// Quantidade de elementos no vetor
private int size;
// Capacidade máxima do vetor
private int cap;

  public Alunos(int cap){
    this.nomes=new String[cap];
    this.cap =cap;
  }
  public void adicionaAluno(String nome) {
    this.nomes[size++] = nome;
  }
  public boolean isEmpty() {
    return size == 0;
  }
  @Override
  public String toString() {
    String s = "[";
    for(int i = 0; i < size; i++) {
      s += nomes[i];
      if(i+1 < size) {
        s += ",";
      }
    }
    return s += "]";
  }
  
  public int buscarAluno(String nome) {
    // Percorrendo o vetor
    for(int i = 0; i < size; i++) {
      // Comparando elemento do vetor com valor 
      // recebido por parâmetro
      if(nomes[i].equals(nome)) {
        return i;
      }
    }
    // Elemento não encontrado
    return -1;
  }
  
  public String removeAluno(String nome){
    if(isEmpty() == true) {
      return "Vetor vazio";
    }
    int pos = buscarAluno(nome);
    if(pos == -1) {
      return nome + " não encontrado";
    }
    // Remover elemento
    if(pos == 0) {
      for(int i = 0; i < size; i++) {
        nomes[i] = nomes[i+1];
      }
    } else if(pos == size - 1) {
      nomes[pos] = null;
    }
    // Decrementar size
    size--;
    return nome;
  }

  
  public static <T> void main(String[] args) {
    
    Alunos a = new Alunos(5);
    a.adicionaAluno("Duda");
    a.adicionaAluno("Alana");
    a.adicionaAluno("Bruna");
    a.adicionaAluno("Carlos");
    a.adicionaAluno("Yure");
    	    
    System.out.println(" -- Ordenação por Ordem Alfabetica: ");
    
    // Ordenação dos elementos por Ordem Alfabetica
    Set<String> set = new TreeSet<String>();
	for (String string : nomes) 
	{
		set.add(string);
	}
	for (String string : set) 
	{
		System.out.println(string + " ");
	}
	
	System.out.println(" -- Sem Ordenação por Ordem Alfabetica: ");
    System.out.println(a);
    
    
}
private void set(int i, String string) {
	// TODO Auto-generated method stub
	
}

}

Não entendi. Você quer editar o array ou os elementos dentro do array?

Editar os elementos dentro da Array tipo o nome que foram inseridos

Primeiro tu precisa do indice e depois o valor para atribuir:

public void alterarAluno(String novoNome,int indice){
   this.nomes[indice]=novoNome;
 }

pra obter o indice vc pode usar o seu metodo buscarAluno

como assim colocar mu metodo buscarAluno?

Pro exemplo:

voce quer alterar determinado aluno , dai você faria algo como assim:

Dai vc chama o metodo de alterar assim:

alterarAluno("Paulo",buscarAluno("Vinicius")); // paulo= NOVO NOME | buscarAluno = indice

Ou seja, o novo nome será paulo e o indice que quero alterar sera o nome Vinicius , como o buscarAluno retorna o indice do array buscado pelo nome dai consigo alterar o nome apartir do indice

Há sim, muito obrigado
!

Como o Jaco disse, antes de tudo você tem que saber quem você quer alterar. Sendo assim você deve informar quem e fazer uma busca para saber a posição dele na sua List, (O seu método buscar já faz isso), retornando a posição em que ele está na List, você apenas pede a inserção do novo Nome e inseri naquela posição.

2 curtidas

Quando vou chamar o metodo aparece mensagem de erro

Qual erro posta ai

Posta o código que você tem agora e o erro. :slight_smile:

import java.util.Set;
import java.util.TreeSet;

public class Alunos {
private static String nomes[];
// Quantidade de elementos no vetor
private int size;
// Capacidade máxima do vetor
private int cap;

  public Alunos(int cap){
    this.nomes=new String[cap];
    this.cap =cap;
  }
  public void adicionaAluno(String nome) {
    this.nomes[size++] = nome;
  }
  public boolean isEmpty() {
    return size == 0;
  }
  @Override
  public String toString() {
    String s = "[";
    for(int i = 0; i < size; i++) {
      s += nomes[i];
      if(i+1 < size) {
        s += ",";
      }
    }
    return s += "]";
  }
  
  public int buscarAluno(String nome) {
    // Percorrendo o vetor
    for(int i = 0; i < size; i++) {
      // Comparando elemento do vetor com valor 
      // recebido por parâmetro
      if(nomes[i].equals(nome)) {
        return i;
      }
    }
    // Elemento não encontrado
    return -1;
  }
  
  public String removeAluno(String nome){
    if(isEmpty() == true) {
      return "Vetor vazio";
    }
    int pos = buscarAluno(nome);
    if(pos == -1) {
      return nome + " não encontrado";
    }
    // Remover elemento
    if(pos == 0) {
      for(int i = 0; i < size; i++) {
        nomes[i] = nomes[i+1];
      }
    } else if(pos == size - 1) {
      nomes[pos] = null;
    }
    // Decrementar size
    size--;
    return nome;
  }
 
  //METODO ALTERAR NOME
  public void alterarAluno(String novoNome,int indice){
	  this.nomes[indice]=novoNome;
	  }

  
  public static <T> void main(String[] args) {
    
	
    Alunos a = new Alunos(5);
    a.adicionaAluno("Duda");
    a.adicionaAluno("Alana");
    a.adicionaAluno("Bruna");
    a.adicionaAluno("Carlos");
    a.adicionaAluno("Yure");

    System.out.println(" -- Ordenação por Ordem Alfabetica: ");
    
    // Ordenação dos elementos por Ordem Alfabetica
    Set<String> set = new TreeSet<String>();
	for (String string : nomes) 
	{
		set.add(string);
	}
	for (String string : set) 
	{
		System.out.println(string + " ");
	}
	
	System.out.println(" -- Sem Ordenação por Ordem Alfabetica: ");
    System.out.println(a);
  }
  
private void set(int i, String string) {
	// TODO Auto-generated method stub
	
}

}

Onde esta o erro???

O erro acontece quando vou chamar o metodo Editar diz pra mim criar um metodo editarNome

mas vc criou um metodo chamado alterarAluno não é? deve ser por isso é só renomear o metodo alterarAluno para editarNome

1 curtida

Se a ordem dos itens não importar, exclui o anterior e inseri o novo item.

Fiz assim em uma aplicação.