主方法中if / else条件出错

时间:2012-08-15 11:18:43

标签: c#

我需要按 t 两次才能获得任何输出;否则程序直接进入else条件或给出异常处理程序错误。我在这做错了什么?

你们可以看到有两个类twotable和其他program包含主要方法。我试图使用twotable类的invoke方法获取输出。

namespace ConsoleApplication6
{               
    class twotable        
    {        
        public static void two()
        {
            int i;
            int j;
            for (i = 1; i <= 10;i++)
            {
                for (j = 2; j <= 2;j++ )
                {
                    Console.WriteLine(i * j);
                }
            }
        }
    }

    class Program
    {
        static void Main()
        {
            Console.WriteLine("Press t for two table");
            char c = Convert.ToChar(Console.ReadLine());
            {
                char t = Convert.ToChar(Console.ReadLine());
                if (c == t)
                {

                    twotable.two();
                }
                else
                {

                    Console.WriteLine("i hate u");
                }
            }
        }
    }
}

5 个答案:

答案 0 :(得分:1)

您正在从控制台阅读两次。

而不是

char t = Convert.ToChar(Console.ReadLine());
if (c == t)

你需要

if (c == 't')

答案 1 :(得分:1)

您是否希望用户在单独的ReadLine()上输入字符't'两次以显示输出?如果是这样的话:

    static void Main()
    {

        Console.WriteLine("Press t for two table");
        char c1 = Convert.ToChar(Console.ReadLine());
        char c2 = Convert.ToChar(Console.ReadLine());

        if (c1 == 't' && c2 == 't')
        {
            twotable.two();
        }
        else
        {
            Console.WriteLine("i hate u");
        }
    }

或者您想在一个ReadLine()中读取'tt'吗?

    static void Main()
    {

        Console.WriteLine("Press t for two table");
        string input = Console.ReadLine();

        if (input.Equals("tt"))
        {
            twotable.two();
        }
        else
        {
            Console.WriteLine("i hate u");
        }
    }

答案 2 :(得分:0)

我认为你的问题就在这里 - char c。您将char cchar t

进行了比较

两行都要求用户输入。

char c = Convert.ToChar(Console.ReadLine());

答案 3 :(得分:0)

代码有点乱,但即使在这个代码

上也是如此
char c = Convert.ToChar(Console.ReadLine());
...
{
    char t = Convert.ToChar(Console.ReadLine());
.....
}

你拨打Console.ReadLine(...) 2次,所以你需要按t 2次。 很难说,但是可能你想做的事情如下:

char t = 't';
...
{
    char consoleChar = Convert.ToChar(Console.ReadLine());
    if(consoleChar == t) // or simple if(consoleChar == 't')
    {
       //do something here, we get a t symbol from console
    }
.....
}

答案 4 :(得分:0)

我需要改为使用Console.ReadKey,并测试c == 't'

  

获取用户按下的下一个字符或功能键。

和您的代码如下:

var cki = Console.ReadKey();
if (cki.KeyChar == 't')
{
    ...
}