Ir ao conteúdo

Ajuda em programa - String


ctbalearning

Posts recomendados

Postado

Boa Tarde pessoal..estou começando a estudar java...estou tentando fazer um programa em que o usuário entra com 3 frases no teclado...o programa armazena as 3 frases,após isso o usuário entre com uma palavra para buscar..se essa palavra estiver contida em alguma das 3 frases ou até mesmo nas 3 frases o programa irá imprimir a frase..fiz um codigo mas nao esta dando muito certo..alguém pode me ajudar e me dizer o que esta errado???

muito obrigado

abraços

import java.util.Scanner;

public class frase1 {

public static void main( String args[] ) {

Scanner sc = new Scanner(System.in);

System.out.println("digite a primeira frase= ");
System.out.println("digite a segunda frase= ");
System.out.println("digite a terceira frase= ");


String[] frasesLidas = new String[] { "primeira frase lida"
, "segunda frase lida"
, "terceira frase lida" };

fraseslidas = sc.next();

System.out.println("digite a palavra procurada= ");
String palavraProcurada = " ";

palavraprocurada = sc.next();

String result = buscaPalavra( frasesLidas, palavraProcurada );
System.out.println( "A frase que contem a palavra é/são: " + result );
}


private static String buscaPalavra( String[] frasesLidas, String palavraProcurada ) {

for ( int i = 0; i < frasesLidas.length; i++ ) {
if ( frasesLidas[ i ].contains( palavraProcurada ) ) {
return frasesLidas[ i ];
}
}

return "";
}
}

  • Membro VIP
Postado

Amigo, seu código está um pouco confuso.:( Tente fazer o seguinte:

Inicialize o array de strings antes, e depois de cada pedido pela palavra, dê um scan na posição i do array, por exemplo:

String arrayFrases = new String[3];

System.out.print("Digite a primeira palavra: ");

arrayFrases[0] = sc.next();

Após isso declare uma outra String, que será digitada pelo usuário e faça um loop para percorrer as três frases procurando pelas palavras. Note que o método buscaPalavra criado por você apresenta uma falha: assim que ele encontra uma palavra em alguma das frases o loop pára e o método retorna esta frase, ou seja, pode ser que nem todas as frases sejam percorridas, então ao invés de retornar a frase que contém a palavra, você poderia realizar a impressão da frase naquele mesmo instante.

Tente um pouco aí, se não conseguir é só avisar que eu dou mais umas dicas.

Abraço.

  • Membro VIP
Postado

Quebre mais um pouco a cabeça(acredite, isso é ótimo :P), e lembre-se sempre de "dividir pra conquistar": divida o problema em partes e vá atacando cada uma por vez. Se mesmo depois de tentar um bocado você ainda não conseguir, pode voltar aqui que eu te dou mais umas dicas.

Abraço.

  • Membro VIP
Postado

Boa Tarde pessoal..estou começando a estudar java...estou tentando fazer um programa em que o usuário entra com 3 frases no teclado...o programa armazena as 3 frases,após isso o usuário entre com uma palavra para buscar..se essa palavra estiver contida em alguma das 3 frases ou até mesmo nas 3 frases o programa irá imprimir a frase..fiz um codigo mas nao esta dando muito certo..alguém pode me ajudar e me dizer o que esta errado???

muito obrigado

abraços



public class frase1 {

public static void main( String args[] ) {

Scanner sc = new Scanner(System.in);

System.out.println("digite a primeira frase= ");
System.out.println("digite a segunda frase= ");
System.out.println("digite a terceira frase= ");


String[] frasesLidas = new String[] { "primeira frase lida"
, "segunda frase lida"
, "terceira frase lida" };

fraseslidas = sc.next();

System.out.println("digite a palavra procurada= ");
String palavraProcurada = " ";

palavraprocurada = sc.next();

String result = buscaPalavra( frasesLidas, palavraProcurada );
System.out.println( "A frase que contem a palavra é/são: " + result );
}


private static String buscaPalavra( String[] frasesLidas, String palavraProcurada ) {

for ( int i = 0; i < frasesLidas.length; i++ ) {
if ( frasesLidas[ i ].contains( palavraProcurada ) ) {
return frasesLidas[ i ];
}
}

return "";
}
}
import java.util.Scanner;

Complementando com a ajuda de Goliathvv, o código pode ficar mais ou menos assim:

1) Declara a array de Strings com 3 posições;

String[] frasesLidas = new String[3]; 

E não assim:

String[] frasesLidas = new String[] { "primeira frase lida"  
, "segunda frase lida"
, "terceira frase lida" };

Desta forma acima, vocês já está definindo os valores para cada frase, ou seja, está utilizando a estrutura de forma inadequada. Neste caso, se após essa declaração você imprimir "fraseLidas[2]", por exemplo, vai exibir "terceira frase lida". (Esse tipo de declaração entre chaves serve para pré-definir os valores!)

2) Solicita frase por frase, ou seja, solicita a primeira e joga o que foi lido na primeira posição (frasesLida[0]), e assim por diante.

3) Para a questão da busca, como Goliathvv comentou, se uma das frases conter a palavra, o laço será interrompido (chamado o "return"), independente da quantidade de vezes que foi executada. Daí você tem que achar uma forma de, ou armazenar as frases ou a posição dela e exibir elas depois, ou exibir a frase, se for o caso, para o usuario detro do próprio "for".

Tente fazer e post o que conseguiu, mesmo não sendo totalmente satisfatório.

Qualquer dúvida é só perguntar.

Abraços

  • Membro VIP
Postado

Caso o autor do tópico necessite, o mesmo será reaberto, para isso deverá entrar em contato com a moderação solicitando o desbloqueio.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!