Jump to content

Strings e Strings


javanoob

Recommended Posts

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

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

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

É 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

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).

Link to comment
Share on other sites

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.