首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我没有按enter,但ReadLine()说我按了

我没有按enter,但ReadLine()说我按了
EN

Stack Overflow用户
提问于 2021-03-04 14:21:19
回答 2查看 40关注 0票数 0

修复了,但现在当它到达Main();的时候,它会自动按enter,而我实际上不能及时输入任何东西。有人知道哪里出问题了吗?

代码语言:javascript
运行
复制
using System;
using System.Linq;

namespace Bruh
{
    class Program
    {
        static void Main()
        {
            int pog = 0;
            int pog2 = 0;
            Random r = new Random();
            Console.WriteLine("Input a whole number");
            string poggers = Console.ReadLine();
            if (int.TryParse(poggers, out pog))
            {
                pog = int.Parse(poggers);
            }
            else
            {
                Console.WriteLine("ERROR: Not a number. Please input a number and not letters.");
                Console.Read();
                System.Environment.Exit(1);
            }
            Console.WriteLine("Input a number higher than the previous");
            string poggers2 = Console.ReadLine();
            if (int.TryParse(poggers2, out pog2))
            {
                pog2 = int.Parse(poggers2);
            }
            else
            {
                Console.WriteLine("ERROR: Not a number. Please input a number and not letters.");
                Console.Read();
                System.Environment.Exit(1);
            }
            int genRand = r.Next(pog, pog2);
            Console.WriteLine("This number was randomly generated between " + pog + " and " + pog2 + " and we got: " + genRand);
            Console.Read();
            Console.WriteLine("Would you like to try again? Y/N");
            ConsoleKeyInfo answer = Console.ReadKey();
            if (answer.KeyChar == 'y' || answer.KeyChar == 'Y')
            {
                Console.WriteLine("\n");
                Main();
            }
            else if (answer.KeyChar == 'n' || answer.KeyChar == 'N')
            {
                System.Environment.Exit(1);
            }
            else
            {
                Console.WriteLine("ERROR: Y/N not any other character");
                Console.Read();
                System.Environment.Exit(1);
            }
        }
    }
}
EN

回答 2

Stack Overflow用户

发布于 2021-03-04 14:29:43

不要将int.TryParse(poggers2, out pog2)的值赋给pog2。因为pog2intint.tryParse返回bool

根据user @ 41686d6564的建议,您不需要此检查poggers2.All(char.IsDigit)

票数 1
EN

Stack Overflow用户

发布于 2021-03-04 17:20:29

在第29行使用TryParse(),而不是普通的Parse()

解析()

直接返回值,但如果输入无效(字符串无法解析为所需类型),则抛出异常。

TryParse()

这不会抛出异常,但如果字符串不能被解析,则只返回false。解析后的值将通过out标记指定的变量返回,如果您得到的是true返回。

代码语言:javascript
运行
复制
int result;

// This will throw an exception
result = int.Parse("Hello");

// This will just return false
if (int.TryParse("Hello", out result)
    Debug.WriteLine("Result now has a valid int value!");
else
    Debug.WriteLine("Sorry, could not parse the text");

使用TryParse时,您可以使代码更具可读性,并且不需要在解析之前验证字符串(poggers2.All(char.IsDigit)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66469626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档