尝试检查是否有用户输入

时间:2020-05-04 02:59:19

标签: c# c++ string character

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

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

编写一个程序以逐个字符读取一个数字,然后仅使用一个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);
            }

1 个答案:

答案 0 :(得分:0)

我认为近似的等效词更像这样:

            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为您得到了一个字符。在您的代码中,您正在阅读整行。

相关问题