Denis Bittencourt Muniz Postado Novembro 5, 2005 Denunciar Share Postado Novembro 5, 2005 Fala galera.net!Tenho esse código:using System; public class Texto{ public string Valor; public void Imprimir(){ Console.Write(Valor); } public void Som(uint repetir){ uint x; for(x=0; x!=repetir; x++){ Console.Write("\a"); } } public static void Main(){ uint vezes; Texto obj = new Texto(); obj.Valor = "Denis\n"; obj.Imprimir(); obj.Valor = "Teste\n"; obj.Imprimir(); obj.Valor = "Digite o número de Beep's que quer ouvir: "; obj.Imprimir(); if(System.Convert.ToUInt16(Console.ReadLine()) > 32767){ System.Console.Write("Número inválido!\a"); }else{ vezes = System.Convert.ToUInt16(Console.ReadLine()); } obj.Som(vezes); //Dá erro, linha 47 System.Windows.Forms.Application.Run(); } }Queria saber porque a linha 47 dá o seguinte erro: "Use of unassigned local variable 'vezes' "Falows! Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Novembro 5, 2005 Denunciar Share Postado Novembro 5, 2005 Porque você não atribui valor nenhum à variável. Note que somente se entrar no else é que "vezes" terá algum valor. No caso, você tinha que trocar...if(System.Convert.ToUInt16(Console.ReadLine()) > 32767){ System.Console.Write("Número inválido!\a"); }else{ vezes = System.Convert.ToUInt16(Console.ReadLine()); } ... por: try { vezes = System.Convert.ToUInt16(Console.ReadLine()); } catch (Exception erro) { vezes = 0; // Não tenho certeza se isso é válido para uint, se não for basta converter System.Console.Write("Número inválido!\a"); }Certo? Graymalkin Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Bittencourt Muniz Postado Novembro 5, 2005 Autor Denunciar Share Postado Novembro 5, 2005 valeu Graymalkin! Deu certo! mas uma última dúvida:Eu digitei '33000' e o programa aceitou... No caso, o programa iria fazer 32767 BEEP's e depois iria aparecer a frase "Número inválido"?Mais uma coisa:if(System.Convert.ToUInt16(Console.ReadLine()) > 32767){ System.Console.Write("Número inválido!\a"); }else{ vezes = System.Convert.ToUInt16(Console.ReadLine()); }No Visual Basic, esse trecho não daria erro, certo? Mas porque dá erro em C#?valeu! Falows! Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Novembro 6, 2005 Denunciar Share Postado Novembro 6, 2005 valeu Graymalkin! Deu certo! mas uma última dúvida:Eu digitei '33000' e o programa aceitou... No caso, o programa iria fazer 32767 BEEP's e depois iria aparecer a frase "Número inválido"?Por que isso ocorreria? O "u" na frente do tipo é de unsigned (ou seja, "sem sinal"), o que significa que um uint16 pode guardar um valor entre 0 e 65535.Mais uma coisa:if(System.Convert.ToUInt16(Console.ReadLine()) > 32767){ System.Console.Write("Número inválido!\a"); }else{ vezes = System.Convert.ToUInt16(Console.ReadLine()); }No Visual Basic, esse trecho não daria erro, certo? Mas porque dá erro em C#?Na verdade, achei esse trecho de código muito estranho. Note que no if você pede um valor que não será utilizado em lugar algum (não está sendo atribuído à ninguém). E somente se o cara digitar um valor maior que 32767 é que lhe será requisitado *novamente* um valor (o ReadLine() dentro do else) e aí sim esse valor será guardado em "vezes". Ou seja, se o cara digitar 120 (no ReadLine() do if), este valor não será utilizado em lugar algum e "vezes" continuará vazio.E sim, no VB não daria erro porque "vezes" teria o valor de 0. Já em C# todas as referências são inicializadas com null.Abraços,Graymalkin Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Bittencourt Muniz Postado Novembro 6, 2005 Autor Denunciar Share Postado Novembro 6, 2005 valeu Graymalkin!Vacilei, pensei que estava usando int, mas nem vi a declaração uint! : ) Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Denis Bittencourt Muniz
Fala galera.net!
Tenho esse código:
Queria saber porque a linha 47 dá o seguinte erro: "Use of unassigned local variable 'vezes' "
Falows!
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados