【问题标题】:Trying to check if there is user input尝试检查是否有用户输入
【发布时间】:2020-08-18 10:08:32
【问题描述】:

我正在读这本书,就像一个程序员一样思考。然而,一切都是用 C++ 完成的,我正在用 C# 做练习。我在将部分转换为 c# 时遇到问题。我将发布问题、本书的 c++ 代码以及我在 c# 中的尝试。 if 语句为空,我最初尝试使用 Readline,然后转换为 char,现在切换到将其作为字符串读取,然后转换为 char。

问题:用三个或读取一个数字 四位数,进一步简化

编写一个程序来逐个字符地读取数字并将其转换为整数,只使用一个 char 变量和两个 int 变量。该号码将有三位数或四位数。

cout << "Enter a three-digit or four-digit number: ";
char digitChar = cin.get();
 int threeDigitNumber = (digitChar - '0') * 100;
 int fourDigitNumber = (digitChar - '0') * 1000;
digitChar = cin.get();
threeDigitNumber += (digitChar - '0') * 10;
fourDigitNumber += (digitChar - '0') * 100;
digitChar = cin.get();
threeDigitNumber += (digitChar - '0');
fourDigitNumber += (digitChar - '0') * 10;
digitChar = cin.get();
if (digitChar == 10) {
cout << "Numbered entered: " << threeDigitNumber << "\n";
} else {
fourDigitNumber += (digitChar - '0');
cout << "Numbered entered: " << fourDigitNumber << "\n";
}

我的代码:

Console.WriteLine("Enter in your 3 or 4 digit number");
            string stringDigit = Console.ReadLine();

            char charDigit = char.Parse(stringDigit);


            //convert the char to an int and the correct place value
            int threeDigitNumber = (charDigit - '0') * 100; 
            int fourDigitNumber = (charDigit - '0') * 1000;

            stringDigit = Console.ReadLine();
            charDigit = char.Parse(stringDigit);

            threeDigitNumber += (charDigit - '0') * 10;
             fourDigitNumber += (charDigit - '0') * 100;

            stringDigit = Console.ReadLine();
            charDigit = char.Parse(stringDigit);

            threeDigitNumber += (charDigit - '0');
            fourDigitNumber += (charDigit - '0') * 10;

            stringDigit = Console.ReadLine();
            charDigit = char.Parse(stringDigit);

            //check if the number is a 3 or 4 digit number
            if ()//unsure what to check
            {
                Console.WriteLine("Numbered entered is: " + threeDigitNumber);
            }
            else
            {
                fourDigitNumber += (charDigit - '0');
                Console.WriteLine("Numbered entered is: " + fourDigitNumber);
            }

【问题讨论】:

    标签: c# c++ string character


    【解决方案1】:

    我认为更接近的等价物应该是这样的:

                Console.WriteLine("Enter in your 3 or 4 digit number");
    
                char charDigit = Console.ReadKey().KeyChar;
    
    
                //convert the char to an int and the correct place value
                int threeDigitNumber = (charDigit - '0') * 100;
                int fourDigitNumber = (charDigit - '0') * 1000;
    
                charDigit = Console.ReadKey().KeyChar;
    
                threeDigitNumber += (charDigit - '0') * 10;
                fourDigitNumber += (charDigit - '0') * 100;
    
                charDigit = Console.ReadKey().KeyChar;
    
                threeDigitNumber += (charDigit - '0');
                fourDigitNumber += (charDigit - '0') * 10;
    
                charDigit = Console.ReadKey().KeyChar;
    
                //check if the number is a 3 or 4 digit number
                if (charDigit == '\r') //you get a CR character on Enter
                {
                    Console.WriteLine("Numbered entered is: " + threeDigitNumber);
                }
                else
                {
                    fourDigitNumber += (charDigit - '0');
                    Console.WriteLine("Numbered entered is: " + fourDigitNumber);
                }
    

    因为Console.ReadKey().KeyChar 正在为您获取一个字符。在您的代码中,您正在阅读整行。

    【讨论】:

    • 感谢您的帮助。我的印象是“。”运算符用于访问类的方法和属性。我不认为 KeyChar 是 Console 的属性
    • ReadKey() 是方法,它返回一个“ConsoleKeyInfo”结构作为结果。该结构又具有一个“KeyChar”属性,您可以使用“.”访问该属性
    猜你喜欢
    • 2013-11-30
    • 1970-01-01
    • 2014-06-30
    • 1970-01-01
    • 1970-01-01
    • 2014-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多