Retornar array com posições de um caractere

9 respostas
M

Bom dia, eu preciso montar um método que recebe um caractere como parâmetro, e retorna um array com as posições onde se encontra esse caractere marcadas de alguma forma. Mas eu não estou sabendo como fazer, alguém pode dar uma mão?

9 Respostas

B

Você já sabe como usar iterações (while, for), certo?

Itere pela string inteira, pegando o caracter de cada posição com o método charAt(indice), compare se esse caracter é igual ao que você está procurando, e guarde a posição num ArrayList, ou num array de int com tamanho no mínimo igual ao da string. Continue até chegar ao fim da string.

M

Pois bem, eu ainda não sei usar arrayList, eu vou ter que salva num array de inteiros mesmo.
então ficaria assim?

for (int i = 0; i < palavra.length(); i++){ Character c = palavra.charAt(i); if (c.equalsIgonreCase(dica)){ result.add(i); } } return result;

B

É bem por aí mesmo, só ajustar para colocar num array de int, e lembrar que o Character não tem equalsIgnoreCase, mas se para você uma letra em maiúscula e minúscula é a mesma coisa, tente converter ambos primeiro para um toUpperCase.

B
ArrayList<Integer> array = new ArrayList<Integer>();
String frase = "Olá, meu nome é Bruno, este é apenas um exemplo.";

//Converte sua String para um array de caracteres
char[] temp = frase.toCharArray();

//Seu caracter de pesquisa
char compare = ',';

//percorre todos os caracteres.
for(int i = 0; i < temp.length; i++)
    if(temp[i] == compare){
        System.out.println(i);
        //Adiciona eles num array
        array.add(i);
}
M
brunooflores:
ArrayList<Integer> array = new ArrayList<Integer>();
String frase = "Olá, meu nome é Bruno, este é apenas um exemplo.";

//Converte sua String para um array de caracteres
char[] temp = frase.toCharArray();

//Seu caracter de pesquisa
char compare = ',';

//percorre todos os caracteres.
for(int i = 0; i < temp.length; i++)
    if(temp[i] == compare){
        System.out.println(i);
        //Adiciona eles num array
        array.add(i);
}
Ok, Bruno, e fazer isso sem arrayList, como ficaria?
M

Ah, na verdade é só tirar o arrayList e por um array de inteiros, não?

B

Cara, para fazer isto sem um ArrayList só se você declarar um array, algo como int[] posicoes = new int[#], mas daí você precisaria saber quantos caracteres você vai ter nesta String, pois um array não dá para aumentar a capacidade dinamicamente. Digamos que você saiba que o caracter ‘;’ vai se repetir 3 vezes numa frase, você pode fazer int[] posicoes = new int[3], e para guardar as posições use posicoes[0] = “posição do caracter”, posicao[1] = …

Se você precisa mesmo retornar um array, depois do foreach podes usar o método .toArray() do ArrayList. Ele irá retornar um int[].

M

Ah, mas é que por exemplo, a minha classe tem os atributos privados "palavra" e "dica", ou seja, se eu desejo saber onde está a letra, não ficaria assim:

public class Palavra{
    // instance variables - replace the example below with your own
    private String palavra;
    private String dica;

    
    public Palavra(String p, String d){
        palavra = p;
        dica = d;

   //esse é o método que estou tentando fazer
   public void verificaLetra(char c){
         int[] posicoes = new int[palavra];
         .
         .
         .
         .
          
    }
    }
B
//Você não precisa retornar um array com o tamanho da palvra, se o que você quer é saber somente se existe o caracter passado por parâmetro.
	//Vamos a um exemplo prático:

	String palavra = "Bruno Rafael";

	public int[] contains(char c){
		ArrayList<Integer> array = new ArrayList<Integer>();
		char[] temp = palavra.toCharArray();

		for(int i = 0; i < temp.length; i++)
			if(temp[i] == c)
				array.add(i);

		//Criamos um array do tamanho do conteúdo que temos no arrayList
		int[] ret = new int[array.size()];

		//Aqui vamos "baldear" o que temos no ArrayList em um array que iremos retornar.
		for(int i = 0; i < ret.length; i++)
			ret[i] = array.get(i);


		//Digamos que eu passe por parametro a letra 'g';
		//Vai me retornar isso [](um array vazio) ou seja, não tenho 'g' na palavra

		//Agora digamos que eu passe por parametro a letra 'a';
		//Vai me retornar isso [7, 9](um array com duas posições) ou seja, na posição 7 e 9 eu tenho 'a' 
		return ret;
	}
Criado 18 de junho de 2013
Ultima resposta 18 de jun. de 2013
Respostas 9
Participantes 3