我的If- else语句只运行else部分

时间:2015-10-03 13:49:56

标签: c#

我在几本书的帮助下教自己c#我很好奇,所以我尝试构建一个小的控制台应用程序,让用户将两个数字加在一起并使用if else语句,具体取决于结果打印其中一个消息但我的代码要求输入第二个数字并打印else语句并按任意键同时继续所有操作而不获取我的第二个数字或进行数学运算

    using System;

namespace helloworldwcond
{
    class Program
    {
        public static void Main(string[] args)
        {
            int a;
            int b;
            int c;
            Console.Write("Enter a Number: ");
            a = Console.Read ();
            Console.Write ("Enter another Number: ");
            b = Console.Read ();
            c = a + b;

            if (c == 7) {
                Console.WriteLine("Hello World!");
            } else {
                Console.Write("We Are DOOMED");
            }



            // TODO: Implement Functionality Here

            Console.Write ("Press any key to continue . . . ");
            Console.ReadKey (true);
        }
    }
}

4 个答案:

答案 0 :(得分:1)

Console.Read将下一个字符作为整数返回。 所以0是ASCII 48,所以输入0将返回48。 使用Convert.ToInt32()将字符转换为整数值。

a = Convert.ToInt32(Console.Read());

当然,您可能还想添加检查字符输入的数字是否为数字。这只适用于1位数字。

无论哪种方式,可能想要做一个Console.ReadLine(),它会返回一个键入的所有内容的字符串,直到它们输入为止。然后将字符串转换为int.Parse(字符串值)

的数字
Console.Write("Enter a Number: ");
string temp = Console.ReadLine();
a = Int32.Parse(temp);  // Or could use
                        bool isThisANumber = Int32.TryParse(temp, a);

答案 1 :(得分:1)

问题在于您获得输入的方式。您应该使用padding-bottom代替Console.ReadLine()。正确的代码应该是:

Console.Read()

为什么使用 int a; int b; int c; Console.Write("Enter a Number: "); a = Int32.Parse(Console.ReadLine()); Console.Write("Enter another Number: "); b = Int32.Parse(Console.ReadLine()); // The rest are the same 代替Console.ReadLine()

  1. Console.Read()返回输入字符的ASCII码。例如,您为Console.Read()输入4,然后获得的是a,而不是a = 52,因为a = 4字符的ASCII代码 52
  2. 4仅从输入流中读取 1 字符。因此,当您输入Console.Read()的值时,请键入:a。那时,您的输入流有 2 个字符:3 enter3。然后,当您为enter致电Console.Read()时,它会读取下一个字符b,然后继续。这是您的计划行为的原因。
  3. 总之,您应该使用enter来读取一行,然后根据需要进行解析。

    要详细了解这两项功能之间的区别,请阅读此post

答案 2 :(得分:0)

正如Mike上面回答的那样,Console.Read返回输入中第一个字符的ASCII值。您可以使用Console.ReadLine代替并将字符串解析为整数。迈克在我发布这篇文章时也提出了建议。

using System;

namespace helloworldwcond
{
    class Program
    {
        public static void Main(string[] args)
        {
            int a;
            int b;
            int c;
            Console.Write("Enter a Number: ");
            a = int.Parse(Console.ReadLine());
            Console.Write("Enter another Number: ");
            b = int.Parse(Console.ReadLine());
            c = a + b;

            if (c == 7)
            {
                Console.WriteLine("Hello World!");
            }
            else
            {
                Console.Write("We Are DOOMED");
            }

            // TODO: Implement Functionality Here

            Console.Write("Press any key to continue . . . ");
            Console.ReadKey(true);
        }
    }
}

答案 3 :(得分:-2)

Console.Read返回给定输入的ascii值。对于快速而肮脏的解决方案,请尝试以下方法:

        int a;
        int b;
        int c;
        Console.Write("Enter a Number: ");
        a = Console.Read() - '0';
        Console.Write("Enter another Number: ");
        b = Console.Read() - '0';
        c = a + b;

        if (c == 7)
        {
            Console.WriteLine("Hello World!");
        }
        else
        {
            Console.Write("We Are DOOMED");
        }