Teste - Consistência

2 respostas
Dani_RS

Olá, pessoal!

Tenho a string str = “012345678”

Estou fazendo uma classe que:

  • Lê um int
  • Substitui por um símbolo o caracter que fica na posição dada pelo int, na string acima.
str = "012345678";
int = 1;

public void substitui(int p)
{
     str = str.substring(0, p) + qualSimbolo + str.substring(p+1, str.length()); 
}

Str = "0X2345678"

Porém, se leio o mesmo int mais de uma vez, ele sobrescreve o símbolo… Alguém tem alguma idéia de que como fazer o teste para o método substitui não atribuir a mesma posição duas vezes?

Obrigada a quem puder ajudar!

2 Respostas

vhuzalo

Dani, fiz um codigo aqui…

public class Main {
	public static String str = "012345678";
	
	public static void main(String[] args) {
		substitui(2);
		System.out.println(str);
		
		substitui(2);
		System.out.println(str);
	}
	
	public static void substitui(int p){
		//Transforma o string em um array de chars, para facilitar a manipulação
		char[] array = str.toCharArray();
		try{
			//Aqui ele tenta converter o char da posição em um inteiro
			Integer i = new Integer(new String(new Character(array[p]).toString()));
		}catch(Exception e){
			//dispara a exceção
			System.out.println("Erro ao converter "+array[p]+" em "+p);
			System.out.println(e.toString());
		}finally{
			//se a conversão deu certo ele substitui
			array[p] = 'x';
			str = new String(array);
		}
		
	}
}

acho que é isso!

:thumbup:

Dani_RS

Oi, Vagner!

Obrigada por sua ajuda!

Implementei, mas acabei optando por uma solução que não envolvesse vetores, que ainda não estou estudando e ficou assim:

Um método que retorna false, caso a posição já esteja ocupada.

public boolean posicaoOcupada(int p)
        {
            if (str.charAt(p) == simbolo1 || str.charAt(p) == simbolo2)  
                return false;
            else 
                return true;
        }

Caso alguém perceba algum problema com esse método, avise, por favor!

Mais uma vez, obrigada pela ajuda! :smiley:

Criado 30 de outubro de 2007
Ultima resposta 31 de out. de 2007
Respostas 2
Participantes 2