【问题标题】:C# ReadLine problemC# ReadLine 问题
【发布时间】:2009-12-14 18:48:54
【问题描述】:

我想要做的是,当使用我的程序的人在没有任何内容的情况下点击输入时,它不会导致错误这是程序的一部分:

Console.WriteLine("4.-Ya no quiero jugar >.<");
int opc = Convert.ToInt16(Console.ReadLine());

switch (opc)
{
    case 1:
        Console.WriteLine("omg");
        break;

    case 2:
        Console.WriteLine("wtf");
        break;

    default:
        Console.WriteLine("Cant do that  >.>");
        Console.ReadKey();
        break;

    etc.
}

问题是我使用整数,我尝试这样做

string opc1=console.readline();

if (opc =="")
{
    console.writeline("nope,try again");
}
else
{ // Brace was omitted in original - Jon
    int opc = Convert.ToInt16(Console.ReadLine());

    switch (opc)

    blah blah.

以及它的不同组合 >.

希望有人能帮我解决一下>.

【问题讨论】:

  • 在Java中比较我用equals方法,对c#一窍不通,你试过if opc.equals("")吗?
  • 没有尝试过,但如果 tryparse 不起作用,我会尝试 tyvm

标签: c# readline


【解决方案1】:

检查Int16.TryParse 方法。

如果用户输入不是Int16 允许的范围内的数字(负32768 到正32767),这将允许您退出程序或执行其他操作。

示例代码可在 MSDN 条目 (Int16.TryParse Method) 中找到。

【讨论】:

    【解决方案2】:

    首先,将您的Console.ReadLine() 设置为一个变量。 然后检查您设置的变量是否为空或为空。另外,我建议使用 Int16 类的 TryParse 方法,因为它根据转换是否成功返回 true 或 false。

    另外,您不需要将ReadLine 转换为整数,因为您也可以打开字符串。由于ReadLine 已经是String,因此无需转换。但是,如果您需要整数,请尝试以下操作:

    String lineIn = Console.ReadLine();
    
    if (!String.IsNullOrEmpty(lineIn))
    {
        Int16 myNum;
        if (Int16.TryParse(lineIn , out myNum))
        {
                switch(myNum)
                {
                        case 1:
                        ...
                        default:
                        ...
                }
        }
    }
    

    【讨论】:

    • 从技术上讲,您不需要示例中的任何 if 语句。如果只执行 Int16.TryParse(lineIn, out myNum);那么您最终将得到用户输入的整数作为 myNum 的值,如果输入为 null、空、字符串或 Int16 的最小值/最大值之外的数字,则为 0。然后默认情况下会选择 0 的值。
    【解决方案3】:

    我认为你想要的是 int.Parse(...)

    【讨论】:

      【解决方案4】:

      您可能会考虑使用 try catch 语句进行错误处理...

      【讨论】:

        【解决方案5】:

        尝试解析:

        string str;
        short val;
        while(!short.TryParse(str=Console.ReadLine(), out val))
        {
            Console.WriteLine("Cant do that  >.>");
        }
        

        【讨论】:

        • 嗨。如果您希望您的代码 sn-p 看起来漂亮,请尝试将其包含在
           标记中。 <pre>我的代码
          。所见即所得编辑器中还有一个工具(101010 之一)。我只提到它是因为我尝试了几次才找到它。
        【解决方案6】:

        为了得到一个整数,我通常使用这样的递归函数

        private int GetInt()
        {
             try
             {
                 return int.parse(Console.Readline().Trim());
             } 
              catch (exception e) 
             {
                 Console.WriteLine(string.format("{0} Please try again", e.message);
                 return GetInt();
             }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多