none
tipo de erro é esse? RRS feed

  • Pergunta

  • Eu estou estudando orientação objeto porém me deparei com esse erro

    Error 1 Cannot implicitly convert type 'int' to 'bool'

    gostaria de saber o que é ele, pois não faz sentindo nunca usei o tipo bool nesse codigo

    domingo, 21 de agosto de 2016 03:14

Respostas

  • Cara, eu fiz um exemplo aqui com base no programa que voce ta fazendo. Crie um novo projeto de console, copie o codigo a seguir e cole no método Main:

    EscolhaDestino:
        Console.WriteLine("Escolha um destino: São Paulo (SP), Paraná (PR)");
        string destino = Console.ReadLine();
    
        if ( (!Regex.IsMatch(destino, "SP", RegexOptions.IgnoreCase) ) && (!Regex.IsMatch(destino, "PR", RegexOptions.IgnoreCase)) ) {
            Console.WriteLine("Escolha inválida");
            goto EscolhaDestino;
        }
    
    EscolhaNumPessoas:
        Console.WriteLine("Escolha o número de pessoas [digite apenas números]: ");
        string sPessoas = Console.ReadLine();
        int nPessoas = 0;
    
        if (Regex.IsMatch(sPessoas, @"^\d")) {
            nPessoas = Int32.Parse(sPessoas);
        } else {
            Console.WriteLine("Digite apenas números");
            goto EscolhaNumPessoas;
        }
    
        Console.WriteLine("Destino: " + destino + ", Numero de Pessoas: " + nPessoas);
        Console.ReadLine();

    Talvez você não conheça algumas coisas usadas no exemplo, então abaixo tem alguns links falando a respeito deles.

    Labels (Rótulos) e comando goto: https://msdn.microsoft.com/pt-br/library/13940fs2.aspx

    Expressão Regular (Regex): https://msdn.microsoft.com/pt-br/library/system.text.regularexpressions.regex(v=vs.110).aspx

    para o exemplo funcionar, você deve incluir as seguintes diretivas:

    using System.Text.RegularExpressions

     

    Com tudo, se não funcionar como esperado ou acontecer algum erro, mande uma resposta


    segunda-feira, 22 de agosto de 2016 16:24

Todas as Respostas

  • Posta o código, para podermos te ajudar. 

    o erro se refere a conversão implícita do tipo INT Inteiro em BOOL boleano, é usado para verdadeiro ou falso. 

    Agora pra te ajudar mesmo, só vendo o cod que vc escreveu. 

    Att,Wsti.

    domingo, 21 de agosto de 2016 03:32
  • program.cs

     class Program
        {
            static void Main(string[] args)
            {
                string nomecompradorpassagem;
                int pessoasviajens;
                double Chamaoutraclasse;
                int respostass;
    
                Console.WriteLine("Você vai querer uma passagem");
                respostass = int.Parse(Console.ReadLine());
    
                Console.WriteLine("Digite o nome do Responsavel");
                nomecompradorpassagem = Console.ReadLine();
    
                Console.WriteLine("Digite o número de pessoas que iram viajar");
                pessoasviajens = int.Parse(Console.ReadLine());       
    
                onibus onibus = new onibus(respostass, nomecompradorpassagem, pessoasviajens);
                Chamaoutraclasse = onibus.CalculoViange();
    
                Console.ReadKey(true);
    
            }
        }

    Onibu.cs

    namespace Onibus
    {
        class onibus
        {
            private int resposta { get; set; }
            private string nome { get; set; }
            private int pessoa { get; set; }
    
            public onibus(int respostas, string nomes, int pessoas)
            {
                resposta = respostas;
                nome = nomes;
                pessoa = pessoas;
            }
            
            public double CalculoViange()
            {
                int respostass = 0;
                double resultado = 0;
                if(respostass = 1)
                {
                    Console.WriteLine("Destino");
                    String destino = Console.ReadLine();
    
                    switch(destino)
                    {
                       case "PR": 
                       double precopassagem = 7;
                       Convert.ToDouble(pessoa);
                       resultado = precopassagem * pessoa;
                       Console.WriteLine("Resultado da conta deu" + resultado);
                       break;
    
                       case "SP":
                       double precosp = 10;
                       Convert.ToDouble(pessoa);
                       resultado = precosp * pessoa;
                       Console.WriteLine("Resultado da conta deu" + resultado);
                       break;
    
                       return resultado;
                    }
                }
                else
                {
                    Console.Write("Não foi escolhido nada");
                }
            }


    • Editado Csharphard domingo, 21 de agosto de 2016 05:13
    domingo, 21 de agosto de 2016 05:12
  • Conversão implícita (implicitly) é aquela que o próprio compilador faz automaticamente, Conversão explícita (explicit) é aquela que Você deve fazer manualmente, no código.

    Os valores booleanos válidos são só true ou false, não teria como converter em bool implicitamente, mas você poderia fazer essa conversão com base nos valores que o usuário digitou manualmente, por exemplo:

    int opc;
    bool escolha;
    
    Console.WriteLine("Digite 1 para prosseguir, 2 para sair");
    opc = Int32.Parse(Console.ReadLine());
    
    if (opc == 1) {
        escolha = true;
    } else if (opc == 2) {
        escolha = false;
    } else {
        Console.WriteLine("Opção inválida");
    }

    Não consegui criar um exemplo com base no programa que você está criando, mas de qualquer maneira é fácil entender. Use if, else if e else para mudar o valor da variável booleana com base no valo numérico (ou string) que o usuário digitou. Você também pode usar o switch, que nesses casos é melhor.

    Referencia sobre IF: https://msdn.microsoft.com/pt-br/library/5011f09h.aspx

    Referencia sobre o switch: https://msdn.microsoft.com/pt-br/library/06tc147t.aspx


     
    • Editado Cliffinho domingo, 21 de agosto de 2016 17:32 erro
    domingo, 21 de agosto de 2016 17:18
  • Blz aqui eu consegui mas aqui deu um pequeno problema

     case 1:
                    Console.WriteLine("Escolha seu destino São Paulo, Paraná Sr."+nome);
                    string destino = Console.ReadLine();
                   if (destino == "SP")
                   {
                        Console.WriteLine("Numero de pessoas");
                        int npessoas = int.Parse(Console.ReadLine());
                        double resultado = npessoas * 10;

                        Console.Write(resultado);
                   }
                   if(destino == "PR")
                   {
                       Console.WriteLine("Numero de pessoas");
                       int npessoas = int.Parse(Console.ReadLine());
                       double resultado = npessoas * 7;

                       Console.Write(resultado);
                   }
                   else if (destino != "PR" || destino != "SP")
                   {
                       Console.WriteLine("Erro");
                   }
                    break;

    nessa condição ele sempre mostra o resultado caso eu escolha algum mas dessa opções, mas por exemplo ele sempre exibe a mensagem de "erro", por exemplo eu escolhi SP 10 pessoas ai ele da o resultado da conta seguida da mensagem erro que esta no else if o que eu devia fazer pra arrumar?

    segunda-feira, 22 de agosto de 2016 02:20
  • Cara, eu fiz um exemplo aqui com base no programa que voce ta fazendo. Crie um novo projeto de console, copie o codigo a seguir e cole no método Main:

    EscolhaDestino:
        Console.WriteLine("Escolha um destino: São Paulo (SP), Paraná (PR)");
        string destino = Console.ReadLine();
    
        if ( (!Regex.IsMatch(destino, "SP", RegexOptions.IgnoreCase) ) && (!Regex.IsMatch(destino, "PR", RegexOptions.IgnoreCase)) ) {
            Console.WriteLine("Escolha inválida");
            goto EscolhaDestino;
        }
    
    EscolhaNumPessoas:
        Console.WriteLine("Escolha o número de pessoas [digite apenas números]: ");
        string sPessoas = Console.ReadLine();
        int nPessoas = 0;
    
        if (Regex.IsMatch(sPessoas, @"^\d")) {
            nPessoas = Int32.Parse(sPessoas);
        } else {
            Console.WriteLine("Digite apenas números");
            goto EscolhaNumPessoas;
        }
    
        Console.WriteLine("Destino: " + destino + ", Numero de Pessoas: " + nPessoas);
        Console.ReadLine();

    Talvez você não conheça algumas coisas usadas no exemplo, então abaixo tem alguns links falando a respeito deles.

    Labels (Rótulos) e comando goto: https://msdn.microsoft.com/pt-br/library/13940fs2.aspx

    Expressão Regular (Regex): https://msdn.microsoft.com/pt-br/library/system.text.regularexpressions.regex(v=vs.110).aspx

    para o exemplo funcionar, você deve incluir as seguintes diretivas:

    using System.Text.RegularExpressions

     

    Com tudo, se não funcionar como esperado ou acontecer algum erro, mande uma resposta


    segunda-feira, 22 de agosto de 2016 16:24
  • Aki funcionou
    segunda-feira, 22 de agosto de 2016 19:07
  • Que bom Csharphard, agora é só estudar mais um pouquinho e colocar em prática sua ideia! :)
    quarta-feira, 24 de agosto de 2016 01:07