我正在读这本书,像个程序员一样思考。但是,一切都在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);
}
答案 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
为您得到了一个字符。在您的代码中,您正在阅读整行。