Exercício – Adicionar uma pesquisa de cães
Neste exercício, você adicionará o recurso "Exibir todos os cães com uma característica especificada" (item de menu nº 2) ao aplicativo. O exercício usa o projeto de solução do exercício anterior que adicionou suggestedDonation dados.
Observação
Este projeto é um recurso de "produto mínimo viável" (MVP). Os recursos de MVP destinam-se a ser um protótipo de trabalho básico de um recurso que permite entrega rápida e fácil. Um MVP geralmente não é um produto final, sua finalidade é ajudá-lo a trabalhar em uma ideia, testá-la e reunir mais requisitos.
O recurso de pesquisa solicita ao usuário um único termo de entrada de pesquisa (ou frase) que descreve uma característica desejada em um animal de estimação para adotar. Em seguida, as descrições para cães adotáveis são pesquisadas para correspondências exatas da entrada do usuário. As informações sobre os cães correspondentes são exibidas no console. Se nenhuma correspondência for identificada, uma mensagem "Nenhum dos nossos cães é uma correspondência" será exibida junto com o termo de pesquisa usado.
As tarefas que você concluir durante este exercício são:
- Reunir a entrada do usuário para o termo de pesquisa de característica do animal de estimação
- Percorra o array de animais e identifique "cães"
- Pesquisar uma correspondência de termo na descrição de cada cachorro
- Exibir os cães com uma correspondência de termo
No Visual Studio Code, abra o arquivo de Project.cs concluído do exercício anterior que adicionou as informações de doação para começar.
Reunir a entrada do usuário para a pesquisa de características do animal de estimação
Revise a instrução switch do menu após o comentário nº 5 no código de Project.cs. Você descobre o código que exibe a mensagem "UNDER CONSTRUCTION ".
Exclua o código
Console.WriteLine("\nUNDER CONSTRUCTION - please check back next month to see progress.");entrecase "2":e aConsole.WriteLine("Press the Enter key to continue.");instrução para que o código corresponda ao seguinte exemplo:case "2": // Display all dogs with a specified characteristic Console.WriteLine("Press the Enter key to continue."); readResult = Console.ReadLine(); break;Adicione código para coletar a entrada do usuário para a
dogCharacteristiccadeia de caracteres. Para coletar o dado, é necessário umwhileloop que continue solicitando ao usuário até que ele envie o dado. O loop instrui o usuário aEnter one desired dog characteristic to search for. Inserir uma cadeia de caracteres vazia repete o loop. Coloque o seguinte código a seguircase "2:pouco antes dabreak;instrução, conforme mostrado:case "2": // Display all dogs with a specified characteristic string dogCharacteristic = ""; while (dogCharacteristic == "") { // have the user enter physical characteristics to search for Console.WriteLine($"\nEnter one desired dog characteristics to search for"); readResult = Console.ReadLine(); if (readResult != null) { dogCharacteristic = readResult.ToLower().Trim(); } } Console.WriteLine("Press the Enter key to continue."); readResult = Console.ReadLine(); break;Examine o código adicionado. Os principais recursos do
case "2":código incluem:- O código começa com uma declaração
string dogCharacteristic = "";de cadeia de caracteres que tem como escopocase "2":. Você não pode utilizardogCharacteristicem nenhum lugar fora do código da declaração de caso. - Depois que
Console.ReadLine()reúne a entrada do usuário comodogCharacteristic, ele garante que o valor não seja nulo, define a cadeia de caracteres para usar minúsculas e corta os espaços ao redor. - Se
dogCharacteristictiver um valor nulo, o loop repetirá a coleta de entrada.
- O código começa com uma declaração
Salve seu código e, em seguida, compile usando
dotnet buildo TERMINAL (você pode consultar as etapas no exercício anterior) e corrija os erros.Execute o código usando
dotnet run.Para testar a funcionalidade de entrada do termo de pesquisa do aplicativo, insira
2, selecionando a opção Menu2, para pesquisar.Pressione "Enter" sem inserir dados no prompt "Inserir uma característica de cão desejada para pesquisar ". O programa deve retornar ao
Enter one desired dog characteristics to search forprompt.O programa deve retornar ao prompt até que os caracteres sejam inseridos.
Na solicitação, teste a entrada do termo de pesquisa, com
goldencomo sua entrada. O programa deve retornar ao menu sem erros.No menu, digite "Sair" para sair do programa.
Identificar quais animais são cães
Agora você adicionará um recurso para pesquisar usando a entrada do usuário dogCharacteristic nas descrições de cães seguindo o código anterior em case "2". Mas primeiro você precisa identificar os cães.
No final do
case "2"código, logo antes do códigoConsole.WriteLine("\n\rPress the Enter key to continue");, que é anterior aobreak;, adicione o seguinte código:// #6 loop through the ourAnimals array to search for matching animals for (int i = 0; i < maxPets; i++) { if (ourAnimals[i, 1].Contains("dog")) { // #7 Search combined descriptions and report results } }Reserve um minuto para examinar o loop adicionado ao final do
case "2":código.O código filtra "cães" usando
ourAnimals[i,1], onde os dadosanimalSpeciessão armazenados. SeanimalSpeciesarmazenar "cachorro" como valor, então o código se moverá para as chaves da instrução if, onde a busca nas descrições combinadas pode ocorrer.Compile seu código usando
dotnet builde corrija erros.
Pesquisar as informações de descrição combinadas de cães
O código anterior garante que você pesquise apenas descrições de cachorro. Agora é necessário pesquisar as descrições do cachorro e obter informações sobre correspondências.
Ao pensar nas descrições, você percebe que há duas descrições animalPhysicalDescription e animalPersonalityDescription;. A equipe discute a funcionalidade e decide que uma descrição combinada é apropriada para a pesquisa.
Observação
Alguns desenvolvedores se referem à adição de requisitos durante o desenvolvimento como "aumento do escopo". Embora combinar as descrições não seja muito trabalho, isso ainda adiciona tempo e complexidade. Por esse motivo, você deve informar a equipe que os requisitos adicionados geralmente atrasam a conclusão do projeto.
Combinar as descrições de cachorro para facilitar a pesquisa
Você precisa declarar uma cadeia de caracteres, dogDescription para manter os dados combinados provenientes de animalPhysicalDescription e animalPersonalityDescription;.
Declare
dogDescriptionantes do comentário nº 6 com o seguinte código:string dogDescription = "";Agora, use a cadeia de caracteres declarada
dogDescriptionanteriormente e preencha-a com as descrições físicas e de personalidade de cada animalPreencha a
dogDescriptionvariável com os valores paraanimalPhysicalDescriptioneanimalPersonalityDescription;.Adicione o seguinte código após o comentário 7:
dogDescription = ourAnimals[i, 4] + "\n" + ourAnimals[i, 5];
Pesquisar as descrições combinadas dos cães e exibir
Agora você adiciona a pesquisa de dogCharacteristic nos dados combinados de dogDescription. É necessário adicionar uma instrução if para determinar se há uma correspondência para a pesquisa de cada cachorro.
Atualize o código após o comentário nº 7, depois
dogDescription = ourAnimals[i, 4] + "\n" + ourAnimals[i, 5];com o código:if (dogDescription.Contains(dogCharacteristic)) { Console.WriteLine($"\nOur dog {ourAnimals[i, 3]} is a match!"); Console.WriteLine(dogDescription); }Examine o exemplo de código anterior; quando a instrução
ifencontrar uma correspondência paradogCharacteristicemdogDescription, uma mensagem sobre a correspondência de cachorro e a descrição será exibida no console. Ainda é necessário levar em conta a mensagem "nenhuma correspondência encontrada".Adicione o código
noMatchesDog = true:Adicione o seguinte código pouco antes do comentário nº 6:
bool noMatchesDog = true;Agora você pode acompanhar quando nenhuma correspondência é encontrada com essa variável de acompanhamento. Quando o padrão é definido como
trueisso significa "é verdade que nenhum cachorro corresponde à pesquisa". Agora, quando um cão é encontrado você pode "virar" onoMatchesDogdetrueparafalseNos colchetes da
if (dogDescription.Contains(dogCharacteristic))instrução, adicione o seguinte código:noMatchesDog = false;Revise se o código dentro dos colchetes de
if (dogDescription.Contains(dogCharacteristic))foi inserido corretamente.Você deve ter o seguinte código:
if (dogDescription.Contains(dogCharacteristic)) { Console.WriteLine($"\nOur dog {ourAnimals[i, 3]} is a match!"); Console.WriteLine(dogDescription); noMatchesDog = false; }Por fim, é necessário criar um código que decida se a mensagem "nenhuma correspondência encontrada" deverá ser gravada no console.
No final do
case "2"código, logo antes do códigoConsole.WriteLine("\n\rPress the Enter key to continue");, que é anterior aobreak;, adicione o seguinte código:if (noMatchesDog) { Console.WriteLine("None of our dogs are a match found for: " + dogCharacteristic); }Este exemplo de código é o código final deste exercício!
Salve suas alterações.
Verifique seu trabalho
No prompt de comando TERMINAL, para criar o código do projeto, insira o seguinte comando:
dotnet build.Se houver erros, você precisará ler as mensagens de erro, diagnosticar problemas e fazer correções ou revisar o código da solução na pasta "Final".
Execute o código do projeto no terminal com
dotnet run.
Depois que o código é executado, dois itens de menu são exibidos.
No menu, insira "
2" e pressione "Enter" para testar repetidamente a pesquisa de cachorro.- Enter nothing as input to test the null entry behavior - Enter "scuba" as input to test the "match not found" - Enter "golden" to get two matches - Enter "medium" to get one matchSe tudo funcionou conforme o esperado em ambas as etapas, parabéns! Caso contrário, procure os erros revisando as etapas do exercício. Se necessário, comece de novo ou verifique o código na pasta Final para encontrar a solução para este exercício.
Digite
exit, no menu do aplicativo, para encerrar o programa e feche o painel “Terminal”.