javanoob Posted November 19, 2007 at 12:27 AM Report Share #148533 Posted November 19, 2007 at 12:27 AM Boas! Alguém que possa dar-me sugestões para como procurar strings dentro de strings? Mas nada de muito complexo sff! 😉 Pois como o meu nick indica ainda sou um noob nisto do Java, só recentemente comecei a estudar Java na Universidade! 😉 Obrigado! ps. Primeiro post aqui no burgo! ps2. Um dia hei-de saber tanto como vocês! ? Link to comment Share on other sites More sharing options...
magician Posted November 19, 2007 at 12:31 AM Report Share #148534 Posted November 19, 2007 at 12:31 AM http://java.sun.com/javase/6/docs/api/java/lang/String.html Tens o método contains que procura em uma String uma outra dada como argumento. I haven’t lost my mind; it’s backed up on DVD somewhere! Link to comment Share on other sites More sharing options...
javanoob Posted November 19, 2007 at 01:30 AM Author Report Share #148540 Posted November 19, 2007 at 01:30 AM Tipo isto? public class Strings { static String[] strings = { "k", "w", "y" }; static String string; public static void main(String[] args) { string = args[0]; // ciclo para procurar no array de strings for(int i=0; i<strings.length; i++) { // if que verifica se existe uma string if(string.contains(strings[i])) { System.out.println("encontrado"); } else { System.out.println("não encontrado"); } } } } Pelo output que isto faz, fico a pensar que vou ter que usar outro ciclo, porque o que este faz é procurar todas as ocorrências do array na string... e eu queria que o gaijo parasse na primeira! ? Link to comment Share on other sites More sharing options...
magician Posted November 19, 2007 at 11:21 AM Report Share #148572 Posted November 19, 2007 at 11:21 AM Faz um break; no if em que encontra. I haven’t lost my mind; it’s backed up on DVD somewhere! Link to comment Share on other sites More sharing options...
javanoob Posted November 19, 2007 at 06:23 PM Author Report Share #148675 Posted November 19, 2007 at 06:23 PM Estou aqui com uma pequena dificuldade.. O que o código de cima esta fazer é enviar "encontrado" quando encontra a letra e "não encontrado" quando não encontra a letra, o problema é que ele faz isto para todas as posições do array mesmo quando uma das condições já foi estabelecida. Ou seja, por exemplo, quando a letra procurada é a primeira posição do array faz "encontrado" e para o resto do array faz "não encontrado", já quando a letra a procurar esta na ultima posição do array faz "não encontrado" até há última posição do array onde nesse caso faz "encontrado". Sugestões? ? Link to comment Share on other sites More sharing options...
magician Posted November 19, 2007 at 07:08 PM Report Share #148705 Posted November 19, 2007 at 07:08 PM É o que disse acima mete um break no if do encontrado. if(string.contains(strings[i])) { System.out.println("encontrado"); break; } Se quiseres que ele só mostre se encontra algum ou nenhum faz algo tipo public static boolean procura(String [] procurar, String fonte){ for(String s : procurar){ if( fonte.contains(s) ){ return true; } } return false; } I haven’t lost my mind; it’s backed up on DVD somewhere! Link to comment Share on other sites More sharing options...
Rui Carlos Posted November 19, 2007 at 07:17 PM Report Share #148710 Posted November 19, 2007 at 07:17 PM Ou seja, por exemplo, quando a letra procurada é a primeira posição do array faz "encontrado" e para o resto do array faz "não encontrado", já quando a letra a procurar esta na ultima posição do array faz "não encontrado" até há última posição do array onde nesse caso faz "encontrado". Não é isso que está a acontecer... O que está a acontecer é, se a primeira string pertencer há argumento e mais nenhuma das restantes string pertencer, aparece "encontrado" uma vez e "não encontrado" nas outras. Mas se passares como argumento a string "kwy", vai aparecer encontrado para todas. Afinal o que é que pretendes? Saber quais as strings que estão na string argumento, ou se alguma das strings está na string argumento? Se for o primeiro caso, é o que o programa faz. Se for o segundo, um break não é suficiente, pois continuará a mostrar "não encontrado" para as strings que não encontrar. Neste caso acho que é melhor uma variável que te indique se a string já ocorreu ou não, e quando saíres do ciclo, testas o valor dessa variável (podes também usar essa variável para saber se podes ou não sair do ciclo). Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
javanoob Posted November 20, 2007 at 01:54 PM Author Report Share #148871 Posted November 20, 2007 at 01:54 PM Seguindo as vossas sugestões cheguei a isto: public class Strings { static String[] s = { "k", "w", "y" }; static String string; static boolean b; public static void main(String[] args) { string = args[0]; b = false; for(int i=0; i<s.length; i++) if(string.contains(s[i])) b = true; if(b == true) System.out.println("encontrado"); else System.out.println("não encontrado"); } } Parece funcionar, ainda estou a pensar em formas de o quebrar... agora, será que existe outra forma de fazer isto? Desde já obrigado pela ajuda! ps. Como faço para o meu código aparecer colorido como o código postado por vocês? Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now