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
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
Posta o código que você tem agora e o erro.
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
}
}
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.