Chamar método

8 respostas
Anonner

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
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);
	}
}
Lista.java
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;
	}

}
O meu método que já está na lista a cima:
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");
		}	
		}

Se puderem me dizer onde estou errando e como faço para chamar o método eu ficaria muito grato.

8 Respostas

diego.sas

Qual o erro que ocorre?

Anonner

O ‘algoritmo’ dentro do método, eu sei que não vai fazer o que eu quero. PORÉM eu não consigo/não sei chamar o método, fazer com que ele execute. Entende?

diego.sas

Fala Anonner…
Este seu método retorna uma String…
Ou você retorna uma String ou muda para void…
Flw

Anonner

diego.sas:
Fala Anonner…
Este seu método retorna uma String…
Ou você retorna uma String ou muda para void…
Flw

Opa, então diego.sas.

Valeu por está me ajudando.
Coloquei como void e ele parou de retorna o erro.
Porém minha dúvida agora é, como ‘chamo’ esse método lá no app.java ?

diego.sas

Posta o codigo ai

diego.sas
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);   
            }   
        }   
           //CHAMAR O MÈTODO
          listaC.removeElemento("valor");
          // Debbuga para voce enteder o que esta ocorrendo
        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);   
    }
diego.sas

Espero ter ajudado…
Flw

Anonner

Opa, muito obrigado, achou sim.
Valeu pela ajuda.

Criado 16 de fevereiro de 2012
Ultima resposta 16 de fev. de 2012
Respostas 8
Participantes 2