Opa.
Então, volta as aulas agora nesse começo de semestre, estrutura de dados, o professor desenvolver um algoritmo com os alunos acompanhando.
E hoje ele pediu para que fizéssemos um método para remover uma string de um vetor ordenado e também re-ordenaria o vetor.
Claro, usando o código dele como base.
Pensei em uma lógica e a pus em prática, depois de um bom tempo sem mexer em java, após passar toda lógica para o Eclipse me deparei com um problema, não consigo chamar aquele método de maneira alguma, não consigo fazer com que o compilador o execute.
Enfim, abaixo o código fonte:
App.java
[code]import javax.swing.*;
public class App {
public static void main(String[] args) {
Lista listaA = new Lista(5);
Lista listaB = new Lista(5);
Lista listaC = new Lista(10);
for (int i = 0; i < 10; i++) {
String elemento =
JOptionPane.showInputDialog( i + " :Entre com o elemento ");
int sucesso = listaA.inserirElemento(elemento);
if(sucesso == -1){
System.out.println("Lista cheia");
break;
}else{
System.out.println(listaA);
}
}
String elementoBusca =
JOptionPane.showInputDialog( " :Entre com o elemento que deseja exluir ");
listaA.excluirElemento(elementoBusca);
listaA.removerElemento(elementoBusca);
// int pos = listaA.getIndiceElemento(elementoBusca, 2);
//System.out.println(pos);
}
}
[/code]
Lista.java
[code]public class Lista {
String[] dados;
int pontoEntrada;
int qtElementos;
int posFimElemento;
int posElemento;
int aux;
public Lista(int qtElementos) {
super();
dados = new String[qtElementos];
pontoEntrada = 0;
this.qtElementos = 0;
}
private int procurarPontoInsercao(String entrada){
for (int i = 0; i < pontoEntrada; i++) {
int retorno = entrada.compareTo(dados[i]);
if(retorno < 0){
return i;
}
}
return pontoEntrada;
}
public int getIndiceElemento(String elemento){
return getIndiceElemento(elemento, 0);
}
public int getIndiceElemento(String elemento, int posicaoInicial){
while(posicaoInicial < qtElementos){
if(elemento.equals(dados[posicaoInicial])){
return posicaoInicial;
}else{
posicaoInicial++;
}
}
return -1;
}
public int inserirElemento(String elemento){
int retorno = 1;
if(qtElementos < dados.length ) {
int posEntrada = procurarPontoInsercao(elemento);
criarEspaco(posEntrada);
dados[posEntrada] = elemento;
pontoEntrada++;
qtElementos++;
}else{
retorno = -1;
}
return retorno;
}
public int excluirElemento(String elemento){
int valorRetorno = -1;
int posInicioElemento = getIndiceElemento(elemento, 0);
aux = posInicioElemento;
posFimElemento = posInicioElemento;
posElemento= posInicioElemento;
do{
posElemento = getIndiceElemento(elemento, ++posElemento);
posFimElemento = posElemento != -1? posElemento: posFimElemento;
}while(posElemento != -1);
return valorRetorno;
}
public String removerElemento(String elemento) {
int resultadoSub = posFimElemento - aux;
int valorRetornoDois = -1;
int aux2 = 0;
if (resultadoSub < 5) {
aux2 = (5 - resultadoSub);
for (int i = aux; i < 5; i++){
dados[i] = dados[aux2 + 1];
}
for (int i = aux2+1; i < 5; i++ ){
dados[aux2] = null;
}
}
if (resultadoSub == 0) {
for (int i = 0; i <5 ; i++){
dados[i]=null;
}
}
for (int i = 0; i <5 ; i++){
return(dados[i] + "\n");
}
}
private void criarEspaco(int posInicio){
for (int i = pontoEntrada; i > posInicio; i--) {
dados[i] = dados[i-1];
}
}
public String toString(){
String retorno = "";
for (int i = 0; i < dados.length; i++) {
retorno += i + ": " + dados[i]+ "\n" ;
}
return retorno;
}
}
[/code]
O meu método que já está na lista a cima:
[code]public String removerElemento(String elemento) {
int resultadoSub = posFimElemento - aux;
int valorRetornoDois = -1;
int aux2 = 0;
if (resultadoSub < 5) {
aux2 = (5 - resultadoSub);
for (int i = aux; i < 5; i++){
dados[i] = dados[aux2 + 1];
}
for (int i = aux2+1; i < 5; i++ ){
dados[aux2] = null;
}
}
if (resultadoSub == 0) {
for (int i = 0; i <5 ; i++){
dados[i]=null;
}
}
for (int i = 0; i <5 ; i++){
return(dados[i] + "\n");
}
}[/code]
Se puderem me dizer onde estou errando e como faço para chamar o método eu ficaria muito grato.