我正在用 C# 語言在 Visual Studio 2022 中做兩個數字的總和練習。
這是當前代碼:
class Program
{
static void Main(string[] args)
{
int x, y, sum;
Console.Write("Enter the value of X: ");
x = Console.Read();
Console.Write("Enter the value of Y: ");
y = Console.Read();
Console.WriteLine();
sum = x y;
Console.WriteLine("SUM = " sum);
Console.WriteLine();
Console.WriteLine("Press any key to close...");
Console.ReadKey();
}
}
發生這種情況,在輸入 x 的值并按 ENTER 后,它會直接跳到總和計算并給我一個莫名其妙的結果 66,但正確的做法是期望我輸入 y 的值,然后將兩個值相加.
這是控制臺的列印:

我不理解這個錯誤,我想解釋一下代碼中有什么問題!
uj5u.com熱心網友回復:
Console.Read正在從輸入中提取單個字符。當您將字符提取到int變數中時,int將保存字符的 ascii 值。
在您的情況下,您輸入'5'然后ENTER(在 Windows 中轉換為回車 換行)。
您的第一個Read()提取了字符'5',第二個提取了回車符。
'5'的 ascii 值為53,而回車符的 ascii 值為13,因此您看到的結果是:66.
相反,您應該使用Console.ReadLine. 它將整個輸入行提取到一個string變數中。這string可以轉換為intwithint.Parse方法。
固定版本:
class Program
{
static void Main(string[] args)
{
int x, y, sum;
Console.Write("Enter the value of X: ");
x = int.Parse(Console.ReadLine());
Console.Write("Enter the value of Y: ");
y = int.Parse(Console.ReadLine());
Console.WriteLine();
sum = x y;
Console.WriteLine("SUM = " sum);
Console.WriteLine();
Console.WriteLine("Press any key to close...");
Console.ReadKey();
}
}
輸出示例:
Enter the value of X: 45
Enter the value of Y: 30
SUM = 75
注意: int.Parse如果字串不包含有效的整數值,則可能會失敗并引發例外。在您的最終代碼中,您應該處理此類例外,或使用替代方法:int.TryParse.
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/497713.html
