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?
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.
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;
É 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.
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);
}
[quote=brunooflores][code]
ArrayList array = new ArrayList();
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);
}
[/code][/quote]
Ok, Bruno, e fazer isso sem arrayList, como ficaria?
Ah, na verdade é só tirar o arrayList e por um array de inteiros, não?
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[].
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:
[code]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];
.
.
.
.
}
}[/code]
//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;
}