How to use if Else in the code below

Asked

Viewed 498 times

0

Starting I type the artist’s id and the other data, then I will enter the repairman’s id, I need that when typing the repairman’s id, if it is equal to the artist he should not accept and ask for another id, I managed to do a part, but it does not ask for another id and goes straight to the name.

Console.WriteLine("Digite o ID do artista:");
int idArtista = int.Parse(Console.ReadLine());
Console.WriteLine("Digite o nome do artista:");
string nomeArtista = Console.ReadLine();
Console.WriteLine("Digite o sobrenome do artista:");
string sobrenomeArtista = Console.ReadLine();

Console.WriteLine("Digite o ID do reparador:");
int idReparador = int.Parse(Console.ReadLine());
bool condição = true;
if (idArtista == idReparador)
{
    Console.WriteLine("Id existente.");
}
if (!condição)
{
    Console.WriteLine("Digite o ID do reparador:");
}

Console.WriteLine("Digite o nome do reparador:");
string nomeReparador = Console.ReadLine();
Console.WriteLine("Digite o sobrenome do reparador:");
string sobrenomeReparador = Console.ReadLine();

2 answers

3


Your logic, in the block below, makes no sense.

bool condição = true;  // <- condição recebe o valor 'true'
if (idArtista == idReparador) // <- Aqui é comparado se os ids são iguais, certinho
{
    Console.WriteLine("Id existente."); // <- mostrar a mensagem. Certo!
}
if (!condição) // <- Chechar se condição é 'false', mas como poderia ser????
{
    Console.WriteLine("Digite o ID do reparador:");// <- Pede pelo ID, mas não lê a entrada
}

The code should be something like this:

public static void Main()
{
    Console.WriteLine("Digite o ID do artista:");
    int idArtista = int.Parse(Console.ReadLine());

    Console.WriteLine("Digite o nome do artista:");
    string nomeArtista = Console.ReadLine();

    Console.WriteLine("Digite o sobrenome do artista:");
    string sobrenomeArtista = Console.ReadLine();

    int idReparador;

    do
    {
        Console.WriteLine("Digite o ID do reparador:");
        idReparador = int.Parse(Console.ReadLine());
        if(idArtista == idReparador)                
            Console.WriteLine("Id existente.");            
    }
    while(idArtista == idReparador); 
    // (^) Repetir o passo acima sempre que os ids forem iguais

    Console.WriteLine("Digite o nome do reparador:");
    string nomeReparador = Console.ReadLine();
    Console.WriteLine("Digite o sobrenome do reparador:");
    string sobrenomeReparador = Console.ReadLine();
}

See working on . NET Fiddle.

3

Not quite if that you have to use, is while since the person can type wrong several times, then have to repeat until it is in accordance with the desired.

In addition there is another problem, if the person typing something that is not a number and cannot be converted will give an error, this needs to be treated as well. I did with the TryParse() which is the right thing to do.

I took the opportunity to modernize the code and make it more concise.

using static System.Console;

public class Program {
    public static void Main() {
        var idArtista = 0;
        while (true) {
            WriteLine("Digite o ID do artista:");
            if (int.TryParse(ReadLine(), out idArtista)) break;
        }
        WriteLine("Digite o nome do artista:");
        var nomeArtista = ReadLine();
        WriteLine("Digite o sobrenome do artista:");
        var  sobrenomeArtista = ReadLine();
        var  idReparador = 0;
        while (true) {
            WriteLine("Digite o ID do reparador:");
            if (int.TryParse(ReadLine(), out idReparador) && idArtista != idReparador) break;
        }
    }
}

Behold working ideone. And in the .NET Fiddle. Also put on the Github for future reference.

If you want to keep the error message switch to:

        while (true) {
            WriteLine("Digite o ID do reparador:");
            if (!int.TryParse(ReadLine(), out idReparador) continue;
            if (idArtista == idReparador) {
                WriteLine("Id existente.");
            } else {
                break;
            }
        }
  • Wow, very well remembered. Thank you so much for your help.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.